5コードに多くの誤りがあります。これに代えて
A):
wire [64:0] temp,mem [0:256];
おそらくあなたは、このことを意味ここではいくつかは何ですか?
wire [64:0] mem [0:256]; // this might be a reg, too, one cannot tell from your code snippet
reg [64:0] temp;
i)は、私はあなたが65x257配列だけでなく、mem
するtemp
を意味だと思いませんか?そして、あなたは "64"を意味しましたか?または "63"?または(下記参照) "71"?そして、あなたは "256"を意味しましたか?または "255"?
ii)手順ブロック内からwire
に割り当てることはできません。
b)手順ブロック内からwire
に割り当てることができないため、これもreg
である必要があります。
reg [7:0] block_nr;
C)このコードは、手続きブロック内で行くことinitial
またはalways
のいずれかが必要です。どちらがあなたの設計意図にかかっていますか?私はコードのスニペットからこれを伝えることはできません。さんはinitial
を想定してみましょう:
initial begin
for (i=0; i <3; i = i + 1) begin
temp = mem [i];
data_mem [i] = {block_nr, w0,w1, w2, w3 }; // what is "data_mem"? Did you mean "mem"?
// if you did mean "mem", did you notice that "{block_nr, w0,w1, w2, w3 }" is 72 bits wide?
block_nr = block_nr +1;
end
end
をこれが合成されることを意図されている場合は、initial
を使用することはできません。これを合成するつもりなら、実用的なソリューションから遠く離れています。
しかし、これらは単なる提案に過ぎないことを強調する必要があります。設計意図がわからないコードのエラーを完全に修正することはできません。
どのようなエラーがありますか? forループは、最初のブロックまたはalwaysブロックのいずれかにする必要があります。 – toolic
Temp = mem [i]のこのエラーは、レジスタのないtempへの手続き代入は許可されず、左側はreg/integer/time/genva、 –
でなければなりません。利用される。どの割り当ても手順ブロックで行う必要があります。 regと配線の使用方法については、(http://stackoverflow.com/questions/5360508/using-wire-or-reg-with-input-or-output-in-verilog)を参照してください。 – sharvil111