0

乗算器のハードウェア実装用の Verilog コードを作成しようとしています...しかし、特定のエラーが発生しています私のコードは

ここで、4 ビットの入力と 4 ビットの出力を取得します....次に、乗数の最初のビットを被乗数で乗算し、結果を p に格納します...同様に、乗数の 2 番目のビットを被乗数で乗算し、q に格納します...さらに私は1つの5ビットレジスタとその中の値を取得しました....残りのコードについてはansdなど

    module multiplier(a,b,c
        );

    input [3:0]a;
    input [3:0]b;
    output [7:0]c;

    wire [3:0]p;
    wire [3:0]q;
    wire [3:0]r;
    wire [3:0]s;
    wire [4:0]t;
     wire [5:0]u;
     wire [6:0]v;
     assign [3:0]p = {4{b[0]}} & [3:0]a ;   ////////ERROR///////
    assign [3:0]q = {4{b[1]}} & [3:0]a ;


    assign [3:0]r = {4{b[2]}} & [3:0]a ;
    assign [3:0]s = {4{b[3]}} & [3:0]a ;

    assign [4:1]t = [3:0]q;
    assign [5:2]u = [3:0]r;
    assign [6:3]v = [3:0]s;
    endmodule

    ERROR:HDLCompilers:26 - "multiplier.v" line 34 unexpected token: '['
    ERROR:HDLCompilers:26 - "multiplier.v" line 34 unexpected token: '['
    ERROR:HDLCompilers:26 - "multiplier.v" line 34 expecting ';', found ':'
    ERROR:HDLCompilers:26 - "multiplier.v" line 34 expecting 'endmodule', found '0'
4

1 に答える 1

2

[]信号名の左側にある括弧 ( ) は、パック配列の定義でのみ使用されます。その後、ブラケットは信号の右側で使用されます。

例、あなた:

assign [3:0]p = {4{b[0]}} & [3:0]a ;

次のようにする必要があります。

assign p[3:0] = {4{b[0]}} & a[3:0] ;

または全範囲を使用します。

assign p = {4{b[0]}} & a ;
于 2014-04-07T20:23:02.620 に答える