【发布时间】:2017-07-20 02:24:33
【问题描述】:
我需要为模块中的坐标系使用二维数组,并且我创建了下面的测试代码来测试在数组中创建和访问值。当 LED 输出为 1'b1 时,此代码应打开 LED LED 输出,但当前 LED 保持关闭状态(除了 2D 阵列的东西,我已经对所有其他代码进行了故障排除,当我在这里使用 1D 阵列时它可以工作)。
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,或者这是否是仅与 Verilog 一起使用的 SystemVerilog 功能(我没有SystemVerilog,但是这段代码编译没有错误,所以我不认为是这样)。
如何检查二维数组中的值,以便在它具有特定值时执行操作?
【问题讨论】:
-
代码看起来正确。
clk正在切换您的代码吗?请确保它确实如此。另外,请在posedge逻辑中使用非阻塞赋值<=。 -
您是在运行仿真还是直接运行 FPGA?我记得我曾尝试回答一个先前的问题,结果证明他们的 FPGA 被简化为读取 2D 阵列的单个位。解决方案是将数据缓冲到一维数组中,然后读取该位。仅供参考,您应该启动整个阵列,而不仅仅是您使用的位;在初始块的顶部添加一个 for 循环,将每个条目分配给 0。
标签: arrays multidimensional-array verilog