verilog - 错误:[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
端模块
解决方案
在您的代码中, output operand
应声明为reg
,因为在程序块"always"
中,您不能将任何值分配给非 reg 类型。更多信息在这里
推荐阅读
- javascript - 如果动态文本框为空,如何禁用按钮
- html - SVG 作为内嵌在样式属性中的背景图像
- c# - C#以int数组为索引过滤for循环的更快方法?
- java - 验证上传的 jpg 和 png 文件并保存到静态文件夹
- javascript - 使 SQLite 错误具体化,而不仅仅是 express/node.js 中的 SQLITE_ERROR
- python - 如何从数据框动态生成 excel 并在 Python 中作为电子邮件发送?
- javascript - 如何使用javascript在嵌套对象数组中按属性分配值
- asp.net - 在 MVC5 的列表中显示 Ping 状态
- angular - Angular - 在父容器内打开底部表 (MatBottomSheet)
- c# - NuGet 中传递包引用的最佳实践