Verilog补码一位除法,加减交替法

module t(clk,in1,in2,out,WR,result);
input[7:0] in1;//输入1
input[7:0] in2;//输入2
output reg[7:0] out;//多余的可删
input clk;
input WR;//0读1算
reg flag;
reg[8:0] reg_A;
reg[8:0] reg_B;
reg[8:0] reg_Bfan;
reg[7:0] reg_C;
reg[4:0] i;
output reg[7:0] result;//结果
always@(posedge clk)
begin
	if(WR==0)
	begin
		reg_A={in1[7],in1[7:0]}; flag=1; reg_B={in2[7],in2[7:0]}; reg_Bfan=~reg_B+1; reg_C=0;
	end
	else if(flag==1)
	begin
		flag=0;
		if(reg_A[8]==reg_B[8])
				begin reg_A=reg_A+reg_Bfan; end 
		else
				begin reg_A=reg_A+reg_B;end
		
		for(i=1;i<=7;i=i+1)
		begin
			if(reg_A[8]==reg_B[8])
				begin reg_C[0]=1; reg_C={reg_C[6:0],1'b0}; reg_A={reg_A[7:0],1'b0}; reg_A=reg_A+reg_Bfan; end 
			else
				begin reg_C[0]=0; reg_C={reg_C[6:0],1'b0}; reg_A={reg_A[7:0],1'b0}; reg_A=reg_A+reg_B;end
		end
		reg_C[0]=1;
		result=reg_C;
	end
end
endmodule

如有不正确的地方,感谢指正

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值