我需要为模块中的坐标系统使用2D数组,并且我已经创建了下面的测试代码来测试创建和访问数组中的值。当LED输出为1'b1时,此代码应打开LED的led输出,但目前LED保持关闭状态(除了2D阵列外,我还排除了所有其他代码的故障,这在我使用1D阵列时起作用)。如何在Verilog中访问二维数组中的值?
input clk;
reg [7:0] check[9:0];
reg ledreg;
output led;
initial begin
check[0][0] = 1'b1;
ledreg = 1'b0;
end
always @(posedge clk) begin
if (check[0][0] == 1'b1) begin
ledreg = 1'b1;
end
end
assign led = ledreg;
我不知道如果我的数组初始化语法是关闭reg [7:0] check[9:0]
或值检查语法关check[0][0] == 1'b1
,或者如果这是一个SystemVerilog的功能,不只有的Verilog工作(我没有SystemVerilog但这个代码编译没有错误,所以我不认为这是它)。
如何检查二维数组中的值,以便在具有特定值时可以执行操作?
该代码看起来是正确的。在你的代码中是'clk'吗?请确保它确实如此。另外,请在posedge逻辑中使用非阻塞赋值'<='。 – Serge
您正在运行模拟还是直接使用FPGA?我记得试图回答一个先前的问题,结果他们的FPGA缩减为只读一个2D阵列。解决方案是将数据缓存到1D数组中,然后读取该数据。而FYI,你应该开始你的整个阵列,而不仅仅是你使用的位;添加一个for-loop,将每个条目分配给初始块顶部的0。 – Greg