【4】除法器

该文章介绍了一个使用Verilog编写的16bit无符号除法器,通过补零扩展被除数和除数,然后进行逐位比较来求解商和余数。在每次迭代中,根据A_tmp和B_tmp的比较更新商和余数。最终,余数由A_tmp的高16位表示,商则存储在变量res中。
摘要由CSDN通过智能技术生成

除法器

基于减法的除法器:对于16 bit的无符号被除数A以及8 bit的无符号除数B,A/B的商和余数的位宽不会超过16 bit。

  • 运算流程

在这里插入图片描述

在A的高位补16-bit 0是为了存放余数,在B的低位补16-bit 0是因为商只有在A_tmp左移8 bit才有可能为1。

  • verilog代码
module division(
	input [15:0] A,
	input [7:0] B,
	output[15:0] result,
	output[15:0] reminder
);
reg[31:0] A_tmp;
reg[31:0] B_tmp;
reg[15:0] res;
integer i;
always@(*)begin
	A_tmp = {16'b0, A};
	B_tmp = {B, 16'b0};
	res   = 16'b0;
	for(i=0; i<16; i=i+1)begin
		A_tmp = A_tmp << 1'b1;
		res = res << 1'b1;
		if(A_tmp<B_tmp)begin
			A_tmp = A_tmp;
			res[0] = 1'b0;
		end
		else begin
			A_tmp = A_tmp - B_tmp;
			res[0] = 1'b1;
		end
   end
end

assign reminder= A_tmp[31:16];
assign result = res;
endmodule

  • 仿真结果

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值