Hai*_* Bi 4 arrays verilog initialization constants vhdl
在VHDL中,我可以轻松地做到这一点:
constant cmdbytes : bytearray(0 to Total) := (x"05", x"00", x...};
Run Code Online (Sandbox Code Playgroud)
我想要可合成的常量,这样当FPGA启动时,这个数组就有我提供的数据.这些寄存器连接到VCC或接地以表示1或0.然后我可以使用它们来生成波形.另外我想在verilog世界中拥有2D字节数组,这是3D.
如果您只是使用数组一次提取一个值,那么使用case语句怎么样?当然,这是一个冗长的方式,但你总是可以编写一个脚本来为你编写RTL.
reg [7:0] value;
reg [7:0] i;
always @(posedge clk or negedge rst_n) begin
if(!rst_n)
i <= 8'd0;
else
i <= i + 1;
end
always @(*) begin
case(i)
8'h00: value = 8'd0;
8'h01: value = 8'd34;
...
endcase
endcase
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用initial语句.据我所知,FPGA综合工具允许您以下列方式设置数组的初始值.再一次,写这个的脚本可能是要走的路.
reg [0:35][7:0] my_array;
initial begin
my_array[0] = 8'd45;
my_array[1] = 8'd26;
...
end
Run Code Online (Sandbox Code Playgroud)
如果您的FGPA综合工具支持某些SystemVerilog,您将能够像这样初始化数组:
reg [0:34][7:0] my_array = '{ 8'd90, 8'd34, ... }; // note the '{
Run Code Online (Sandbox Code Playgroud)