2013-07-31 45 views
-2

我寫了代碼複製堆積陣列爲低於解壓數組:複製打包數組解壓縮陣列

module m1; 

bit [2:0] temp; 
bit temp1[2:0]; 
initial 
begin 
temp=3'b011; 
temp1='{temp}; 
end 
endmodule 

但它顯示了一個錯誤:
「爲給定任務太少分配模式的項目」 請解決。

回答

3

打包數組和解壓數組是不同的數據結構,它不能直接從其他類型分配。

對數組使用賦值模式必須是基於位置的或基於索引的。例如,

temp1 = '{temp[2], temp[1], temp[0]}; 

該解決方案使用流式操作符LHS的作業。

{>>{temp1}} = temp; 
+0

{>> {temp1}} = temp; 這不起作用。 而對於上面的那個,我們可以直接用「'」運算符或者轉換賦值。 ,如temp1 = {temp [2],temp [1],temp [0]}; 但我需要另一個直接分配值。 – Thunderstromz

+0

請評論你正在使用的模擬器。 LHS上的流式運算符可能無效或在某些模擬器或合成器中實現。 – jclin

0

您可能需要使用size參數。這應該工作:

parameter MYSIZE = 3; 
bit [MYSIZE-1:0] temp1; 
bit temp2[0:MYSIZE-1]; 

{>> MYSIZE{temp2}} = temp1; 

我知道這適用於VCS。