我對下面的代碼有問題。該代碼在ISE 14.2中進行了綜合。如何通過for-variable索引for循環中的reg或內存?
input [1:8176] m_d_in;
reg [1:511] m_d [1:16];
integer i;
always @ (*)
begin
for (i=0; i<16; i=i+1)
begin
m_d[i+1] = m_d_in[ 1+511*i : 511+511*i];
end
end
合成後,此錯誤顯示出來:
HDL編譯器:1660_ <誤差線>「CodeName.v> <的地址」:程序分配到非寄存器I是不允許的,左手側應REG /整數/時間/ genvar
錯誤的行是指這樣的:
reg [4:0] i;
0123:
m_d[i+1] = m_d_in[ 1+511*i : 511+511*i];
我也使用測試
和
genvar i;
代替:
integer i;
,並得到了完全同樣的錯誤我上面寫的!
我知道有一個解決方案通過使用案例而不是上面的代碼,但對我來說它不是正確的解決方案。
非常感謝。