我是verilog的新手,所以我正在尝试使用它,就像我在Java中一直做的那样,它只是不编译,我尝试了谷歌搜索,但没有出现......所以,谢谢!
module two_to_one_com(SW,LEDR,LEDG);
input [15:0]SW ;
input SW17;
output [7:0]LEDR;
output [7:0]LEDG;
assign X = SW[7:0];
assign Y = SW[15:8];
assign s = SW17;
assign LEDR[7:0] = SW;
assign M = LEDG[7:0];
integer index = 0;
initial
begin
for(index=0;index<=7;index = index+1)
begin
assign M[index] = (~s &X[index])|(s&Y[index]);
end
end
endmodule
所以,它只是告诉我数组M,X和Y不能被索引,因为它们是未声明的......任何人都知道任何解决方案?
答案 0 :(得分:1)
您需要声明具有某种类型和宽度的所有信号(如果大于1位); assign
不是声明关键字。例如,我使用wire
:
module two_to_one_com(SW,LEDR,LEDG,SW17);
input [15:0]SW ;
input SW17;
output [7:0]LEDR;
output [7:0]LEDG;
wire [7:0] X = SW[7:0];
wire [7:0] Y = SW[15:8];
wire s = SW17;
请注意,我还将SW17添加到端口列表中。
我仍然抱怨M
,但我需要知道它应该有多宽(位数)。