Ошибка: [Synth 8-2576] процедурное присвоение незарегистрированному операнду не разрешено

Я работаю над проектом Cordic, но, похоже, у меня проблемы с мультиплексором 16:1.

Я уже пытался переписать код, но до сих пор не понял.

модуль mux_16(операнд, reg_in, select);

output operand;
input [15:0] reg_in;
input [3:0] select;

always@(select, reg_in) begin
case(select)
0: operand = reg_in[0];
1: operand = reg_in[1];
2: operand = reg_in[2];
3: operand = reg_in[3];
4: operand = reg_in[4];
5: operand = reg_in[5];
6: operand = reg_in[6];
7: operand = reg_in[7];
8: operand = reg_in[8];
9: operand = reg_in[9];
10: operand = reg_in[10];
11: operand = reg_in[11];
12: operand = reg_in[12];
13: operand = reg_in[13];
14: operand = reg_in[14];
15: operand = reg_in[15];
default: operand = 0;
endcase
end

конечный модуль


person Francisco    schedule 28.07.2019    source источник
comment
operand должен быть объявлен как reg, чтобы быть назначенным внутри блока always.   -  person Serge    schedule 29.07.2019
comment


Ответы (1)


В вашем коде output operand должно быть объявлено как reg, потому что в процедурном блоке "always" вы не можете присвоить какое-либо значение типу, отличному от reg. Дополнительная информация здесь

person user11961612    schedule 22.08.2019