-1

Verilog で 10 個のスペースを持つ 32 ビット配列を作成しようとしています。コードは次のとおりです。

reg [31:0] internalMemory [0:9];

次に、そのレジスタ内のさまざまな場所に 32 ビット値を割り当てようとします。コードサンプルは次のとおりです。

internalMemory[0] = 32'b00000000001000100001100000100000;
internalMemory[1] = 32'b00000000001000100001100000100001;

コンパイルすると、次のエラーが発生します。

IR.v:21: syntax error
IR.v:21: error: Invalid module instantiation

その 21 行目は、アクセスしようとしている私を表していますinternalMemory[1]

なぜこれが起こっているのか、それを修正する方法について何かアドバイスはありますか?

ありがとう!

更新 1:

ここで要求されているように、実装しようとしている命令レジスタのコードがあります。

`include "IRTester.v"
module instruction_register(IREnable, programCounter, controlUnit, RS, RT, RD, immediate);

parameter  dataWidth = 32; //input size

input wire IREnable;
input wire  [31:0] programCounter; //instruction to be read
output wire [5:0] controlUnit;
output wire [4:0] RS;
output wire [4:0] RT;
output wire [4:0] RD;
output wire [15:0] immediate;


wire [31:0] temp;
reg [31:0] internalMemory [0:9];

always @ (posedge IREnable)

    internalMemory[0] = 32'b00000000001000100001100000100000;
    internalMemory[1] = 32'b00000000001000100001100000100001;

    assign temp = internalMemory[programCounter];
    assign controlUnit = temp[31:26];
    assign RS = temp[25:21];
    assign RT = temp[20:16];
    assign RD = temp[15:11];
    assign immediate = temp[15:0];

endmodule
4

3 に答える 3

0

開始/終了を使用する必要があります

always @ (posedge IREnable) begin
    internalMemory[0] = 32'b00000000001000100001100000100000;
    internalMemory[1] = 32'b00000000001000100001100000100001;
end
于 2015-04-16T05:57:41.370 に答える
0
    always @ (posedge IREnable)

    internalMemory[0] = 32'b00000000001000100001100000100000;
    internalMemory[1] = 32'b00000000001000100001100000100001;

    assign temp = internalMemory[programCounter];
    assign controlUnit = temp[31:26];
    assign RS = temp[25:21];
    assign RT = temp[20:16];
    assign RD = temp[15:11];
    assign immediate = temp[15:0];

endmodule

このコードでは、alwaysブロックを何も指定せず にコーディングしbegin - endました。コードを実行すると、always( ) のすぐ隣の行がブロックinternalMemory[0] = 32'b00000000001000100001100000100000;内と見なされます。always行動として。これが、次の行にエラーが表示される理由です。これは、データ フローに含まれているはずだからです。

.

于 2015-04-22T20:22:46.627 に答える
-1

always ブロック内で assign ステートメントを使用することはできません。それらを取得します。

于 2015-04-16T19:02:15.350 に答える