[an error occurred while processing this directive]
|
always @(posedge clk)
fs1_reg <= fs1;
неправильно. длительность clken1 должна всегда быть кратна периоду clk
fs1_reg <= {fs1_reg [0], fs1};
always @(posedge clk)
fs2_reg <= {fs2_reg [0], fs2};
assign clken1 = fs1_reg[0] & ~fs1_reg[1];
assign clken2 = fs2_reg[0] & ~fs2_reg[1];
wire [23:0] in_int1,out_int1;
assign in_int1 = { d[15], d[15], d[15], d[15], d[15], d[15], d[15], d[15], d[15:0] };
если знак размножаете, должны быть слова signed по входам выходам проводам,
хотя при расширении разрядной сетки для (сумматора) это без надобности.
Зачем эти мегафункции при суммировании да еще с привязкой к конкретному семейству:
altaccumulate1 altaccum_int1(
assign int_out = out_int1;
Да и кто будет разбираться в проекте где нет символьных элементов на базе мегафункций.
Вот пример : реакция при различном описании одна и таже.
module sum_signed
(
input signed [2:0] a,
input signed [2:0] b,
output reg signed [3:0] res,
input [2:0] aa,
input [2:0] bb,
output reg [3:0] ress,
input [2:0] aaa,
input [2:0] bbb,
output reg [3:0] resss,
input signed [2:0] aaaa,
input signed [2:0] bbbb,
output reg signed [3:0] ressss
);
always @(a or b)
begin
res = a + b;
end
always @(aa or bb)
begin
ress = {aa[2], aa} + {bb[2], bb};
end
always @(aaa or bbb)
begin
resss = {aaa[2], aaa} - {bbb[2], bbb};
end
always @(aaaa or bbbb)
begin
ressss = aaaa - bbbb;
end
endmodule
E-mail: info@telesys.ru