我需要爲模塊中的座標系統使用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