- 1 基于恢复余数(Restoring)算法的除法器
- 1.1 原理
- 1.1 Verilog 实现
- 2 基于不恢复余数(Non-Restoring)算法的除法器
- 2.1 原理
- 2.1 Verilog 实现
- 2.2 用于有符号数的改进
- 3 基于级数展开算法的除法器
- 4.2 Verilog 实现
- 4 基于 Newton-Raphson 算法的除法器
- 4.1 原理
参考《基于FPGA的数字信号处理(第二版)》,对其中的除法器算法进行仿真。
1 基于恢复余数(Restoring)算法的除法器Restoring 算法无法直接用于与有符号数,对于有符号数需要先转换为无符号数。然后根据除数与被除数的符号判断商与余数的符号。
1.1 原理被除数(Dividend)5621 / 除数(Divisor)3 = 商(Quotient)1873 … 余数(Remainder)2
1873
_______
3 | 5621
/ 3000
____
2621
2400
____
221
210
___
11
9
_
2
r i = r i + 1 − q i ⋅ D ⋅ 1 0 i r_i = r_{i+1}-q_i·D·10^i ri=ri+1−qi⋅D⋅10i
q i q_i qi通过部分余数的正负确定,如果余数为负表示 q i q_i qi较大,需要将其恢复到部分余数为正以获取正确的 q i q_i qi,这便是“恢复”的含义。
用恢复余数算法表示上式计算过程:
q i q_i qi余数是否恢复 q 3 = 1 q_3=1 q3=15621-3×10^3×1=2621 q 3 = 2 q_3=2 q3=25621-3×10^3×2=-379 q 3 q_3 q3恢复为1,余2621 q 2 = 1 q_2=1 q2=12621-3×10^2×1=2321 q 2 = 2 q_2=2 q2=22621-3×10^2×2=2021………… q 2 = 8 q_2=8 q2=82621-3×10^2×8=221 q 2 = 9 q_2=9 q2=92621-3×10^2×9=-79 q 2 q_2 q2恢复为8,余221………… q 1 = 7 q_1=7 q1=7221-3×10^1×7=11 q 1 = 8 q_1=8 q1=8221-3×10^1×8=-19 q 1 q_1 q1恢复为7,余11………… q 0 = 3 q_0=3 q0=311-3×10^0×3=2 q 0 = 4 q_0=4 q0=411-3×10^0×4=-1 q 0 q_0 q0恢复为3,余2得 q 3 q 2 q 1 q 0 {q_3q_2q_1q_0} q3q2q1q0 = 1873,R=2。
以上是十进制算法,对于二进制:
r i = r i + 1 − q i ⋅ D ⋅ 2 i r_i = r_{i+1}-q_i·D·2^i ri=ri+1−qi⋅D⋅2i
q i q_i qi只能取0或1,所以每位只需一次运算即可判断是否恢复。
此外还需确定各参数的字长:假定除数D为 nbit,商Q为 nbit,则 Q ≤ 2 n − 1 Q\le2^n-1 Q≤2n−1。由于R
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?