Verilog输入和输出数组

时间:2014-01-18 17:30:23

标签: verilog

我是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不能被索引,因为它们是未声明的......任何人都知道任何解决方案?

1 个答案:

答案 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,但我需要知道它应该有多宽(位数)。