аппаратная реализация мультипликатора

я пытаюсь написать код verilog для аппаратной реализации множителя... но я получаю определенную ошибку, мой код

здесь я беру 4-битный ввод и 4-битный вывод... и затем умножаю первый бит множителя на множимое... и сохраняю результат в p... аналогично второму биту множителя с множителем и сохраняю в q... что дальше я взял один 5-битный регистр и соте значение в нем .... и так далее для остального кода

    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'

person user3212932    schedule 07.04.2014    source источник


Ответы (1)


Скобки ([]) слева от имени сигнала используются только при определении упакованного массива. После этого скобки используются справа от сигналов.

Пример, ваш:

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 ;
person Greg    schedule 07.04.2014