【发布时间】:2021-05-13 02:36:43
【问题描述】:
`timescale 1ns / 1ps
module Signadder(
input wire [3:0] a,
input wire [3:0] b,
output reg [3:0] sum
);
reg [2:0] mag_a, mag_b,mag_sum, max, min;
reg sign_a, sign_b, sign_sum;
always @*
begin
mag_a = [2:0]a;
mag_b = [2:0]b;
sign_a = [3]a;
sign_b = [3]b;
if(mag_a>mag_b)
begin
max = mag_a;
min = mag_b;
sign_sum = sign_a;
end
else
begin
max = mag_b;
min = mag_a;
sign_sum = sign_b;
end
if (sign_a == sign_b)
mag_sum = mag_a +mag_b;
else
mag_sum = max - min;
assign sum = {sign_sum,mag_sum};
end
endmodule
我用 Verilog 描述了一个 Sign_mag 加法器,但是在我合成时出现这些错误:
Line 35: Syntax error near "[".
Line 36: Syntax error near "[".
Line 33: a is not a task
Line 34: b is not a task
我在我的 Verilog 代码中找不到任何语法错误,并且“a 不是任务”,我通过使用中间寄存器来修复它:
reg [3:0] a1;
reg [3:0]b1;
a1 = a;
b1 = b;
但是,它仍然不起作用。我希望有人知道为什么。
【问题讨论】: