做除法器时代码如下
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
所以按文档可修改为