verilog output端口不能声明为reg类型

博主在实现Verilog HDL除法器时遇到编译错误,错误提示为不能在模块体内重新声明已在端口列表中声明的变量RX。问题出在混用了Verilog 95和2001的语法。解决方案是遵循Quartus官方文档,调整代码以符合单一Verilog标准。博客提到了CX变量没有报错,可能是因为CX在模块内部是新声明的。博主通过查阅文档找到了解决代码冲突的方法。
摘要由CSDN通过智能技术生成

做除法器时代码如下

module divider(input [4:0]AX,//被除数
input [3:0]BX, //除数

output [4:0]RX,//商
output[3:0]cX); //余数
reg [4:0]TA;
reg [4:0]RX;
reg [3:0]TB;
reg [3:0]CX;
reg [0:0]QX; //验证最后商的符号
always@(AX or BX)
begin
	TA=AX[4]?(~AX+1'b1):AX;//如果被除数为负数就取其相反数,反之不变
	TB=(BX[4])?BX:(~BX+1'b1);//如果除数是正数就取其负数,反之不变
	QX=AX[4]+BX[4];//判断商的符号
	RX=0; //商初始化为0
		while(TA>(~TB+1'b1))
		begin
		TA=TA+TB;
		RX=RX+1;
		end
	CX={TA[4],TA[2:0]};
	RX=QX?(~RX+1'b1):RX;
end
endmodule

暂且不管我除法器代码对不对,其中声明RX时编译报错,报错为

Error (10759): Verilog HDL error at divider.v(7): object RX declared in a list of port declarations cannot be redeclared within the module body
说我不能声明RX

但是却没有报错我的CX 不知道是什么原因?

查阅quartus官方文档发现 是因为我混用了vetilog95 和2001

所以按文档可修改为

官方文档地址:https://www.intel.com/content/www/us/en/programmable/support/support-resources/knowledge-base/solutions/rd09012005_260.html

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值