Verilog数组语法

我是Verilog的新手,我遇到了很多麻烦。例如,我想要一个包含八个单元的数组,每个单元的宽度为8位。以下不起作用:
reg [7:0] transitionTable [0:7];
assign transitionTable[0] = 10;
既不做
transitionTable[0] = 10;
transitionTable[0] = 8'h10;
任何想法? (如果不明显且相关:我想创建一个有限状态机,并指定数组中的状态转换,因为这似乎比一个大型的情况切换更容易。)     
已邀请:
当使用
assign
时,你应该将数组声明为
wire
而不是a
reg
。     
由于您的目标是设计FSM,因此无需将状态值存储在数组中。这通常使用Verilog
parameter
,一个
state
寄存器和一个带有
case/endcase
语句的
next_state
来完成。 以下文章显示了一个完整的示例:FSM Fundamentals     
如果这是针对综合的: 稍微超出上面的回答,您应该遵循标准的FSM编码样式,以便工具可以执行更好的优化。正如Cummings论文所述,单热通常最适合FPGA器件,事实上ISE(默认设置)将忽略您的编码并实现它认为最能利用设备资源的任何内容。这几乎总是会导致单热编码的FSM,无论您选择哪种状态编码,只要它能识别您的FSM。     
好的,所以为了回答你的问题,让我们深入研究一下Verilog的语法。 首先,要指定一个位范围,要么执行
[MSB:LSB]
[LSB:MSB]
。标准是
MSB:LSB
但是在这里真的取决于你,但要尽量保持一致。 接下来,在数组实例化中,我们有:
reg WIDTH reg_name NUMBER;
其中
WIDTH
是每个元素的“大小”,
NUMBER
是数组中元素的数量。 所以,你首先要做的是:
reg [7:0] transitionTable [7:0];
然后,要分配特定字节(8位= 1字节),请执行:
initial begin
    transitionTable[0] = 8'h10;
end
一本学习Verilog的好书是Pil P. Chu的Verilog示例的FPGA原型。     

要回复问题请先登录注册