<Verilog实现除法器> Verilog实现牛顿-拉夫逊(Newton-Raphson)除法器

本文介绍了在数字电路中,特别是CPU计算单元中的基础电路——除法器的Verilog实现,重点讲解了使用牛顿-拉夫逊算法的除法器设计。通过迭代求解,虽然迭代次数影响精度,但32位除法器经过优化,仅需11次迭代就能获得精确结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一,内容介绍

除法器是数字电路中的基础电路之一,也是CPU计算单元的核心功能之一。下面我们用verilog实现三种常用的除法器。

Verilog实现恢复余数(restoring)除法器
Verilog实现不恢复余数(non-restoring)除法器
目前:Verilog实现牛顿迭代法除法器
verilog实现判断有限除法器之单时钟周期改进版

二,牛顿-拉夫逊(Newton-Raphson)除法器实现

module NR_DIV 
#(parameter WIDTH = 32,
  parameter IT = 10  //calculate interation times		
)
(
	input				   clk_i,
	input				   rst_i,
	input 				   data_valid_i,
	input 	   [WIDTH-1:0] dividend_i,
	input 	   [WIDTH-1:0] divisor_i,
	output reg 		 	   qr_valid_o,
	output reg [WIDTH-1:0] quotient_o,
	output reg [WIDTH-1:0] remainder_o
);
reg [WIDTH-1:0] dividend  [IT-1:0];
reg [WIDTH-1:0] divisor   [IT-1:0];
reg             dat_valid [IT-1:0];
genvar i;

always @ (posedge clk_i or posedge rst_i) begin
	if (rst_i) begin
		dividend [0] <= {
   WIDTH{
   1'b0}};
		divisor  [0] <= {
   WIDTH{
   1'b0}};
		dat_valid[0] <= 	   1'b0  ;
	end else begin
		dat_valid[0] <= data_valid_i && |divisor_i;
		if (data_valid_i && |divisor_i) begin
			dividend [0] <= dividend_i;
			divisor  [0] <= divisor_i;
		end else begin
			dividend [0] <= {
   WIDTH{
   1'b0}};
			divisor  [0] <= {
   WIDTH{
   1'b0}};
		end
	end
end

generate
	for (i=
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值