我正在尝试编写一个verilog代码用于harware实现乘法器...但我得到了一定的错误 我的代码是
这里我采用4位输入和4位输出....然后多次使用被乘数多次乘法...并将结果存储在p ...类似于乘数的第二位乘用并存储在q .. 。进一步我拿了一个5位寄存器和sote值....等等等待休息代码
module multiplier(a,b,c
);
input [3:0]a;
input [3:0]b;
output [7:0]c;
wire [3:0]p;
wire [3:0]q;
wire [3:0]r;
wire [3:0]s;
wire [4:0]t;
wire [5:0]u;
wire [6:0]v;
assign [3:0]p = {4{b[0]}} & [3:0]a ; ////////ERROR///////
assign [3:0]q = {4{b[1]}} & [3:0]a ;
assign [3:0]r = {4{b[2]}} & [3:0]a ;
assign [3:0]s = {4{b[3]}} & [3:0]a ;
assign [4:1]t = [3:0]q;
assign [5:2]u = [3:0]r;
assign [6:3]v = [3:0]s;
endmodule
ERROR:HDLCompilers:26 - "multiplier.v" line 34 unexpected token: '['
ERROR:HDLCompilers:26 - "multiplier.v" line 34 unexpected token: '['
ERROR:HDLCompilers:26 - "multiplier.v" line 34 expecting ';', found ':'
ERROR:HDLCompilers:26 - "multiplier.v" line 34 expecting 'endmodule', found '0'
答案 0 :(得分:2)
信号名称左侧的括号([]
)仅用于定义打包数组。之后,括号用于信号的右侧。
示例,您的:
assign [3:0]p = {4{b[0]}} & [3:0]a ;
应该是:
assign p[3:0] = {4{b[0]}} & a[3:0] ;
或使用全范围:
assign p = {4{b[0]}} & a ;