首页 > 解决方案 > 错误:[Synth 8-2576] 不允许对非寄存器操作数进行过程分配

问题描述

我正在做一个cordic项目,但似乎我在使用 16 对 1 多路复用器时遇到了问题。

我已经尝试重新编写代码,但仍然没有任何线索。

模块 mux_16(操作数,reg_in,选择);

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

端模块

标签: verilogvivado

解决方案


在您的代码中, output operand应声明为reg,因为在程序块"always"中,您不能将任何值分配给非 reg 类型。更多信息在这里


推荐阅读