- 一 设计思路
-
- (一)求商的符
- (二)求商的数值部分
- (三)商的最后一位恒置1
- 二 verilog代码
-
- (一)程序代码变量说明
- (二)程序代码结构说明
-
- 1. 除法器
- 2. 根据余数和除数的符 进行加法操作和商的操作
- 3. 移位
- 4. 截取最终的商和余数
- (三)程序代码
- (四)时序模拟图
一 设计思路
(一)求商的符
- 若[X]补与[Y]补同 ,[X]补 – [Y]补;
若[X]补与[Y]补异 (即不够减),[X]补 + [Y]补。 - 如果所得余数与除数同 ,商上1;
若余数与除数异 ,商上0;
商即结果的符 位。
(二)求商的数值部分
- 若[Ri]补与[Y]补同 ,商上“1”,下次操作为:[Ri+1]补=2[Ri]补 – [Y]补
- 若[Ri]补与[Y]补异 ,商上“0”,下次操作为:[Ri+1]补=2[Ri]补 + [Y]补
如此重复执行n-1次(设数值部分有n位,符 位1位)。
(三)商的最后一位恒置1
商的最后一位一般采用恒置1的办法,并省略了最低位+1的操作,此时最大的误差为±2-n。
二 verilog代码
(一)程序代码变量说明
(二)程序代码结构说明
1. 除法器
2. 根据余数和除数的符 进行加法操作和商的操作
3. 移位
4. 截取最终的商和余数
(三)程序代码
组合逻辑,加减交替法定点补码一位除法
软件:Quartus II 9.0
(四)时序模拟图

被除数x | 0.5 | 0.25 | -0.25 | -0.125 |
---|---|---|---|---|
除数y | 0.75 | -0.5 | 0.375 | -0.4375 |
商q | 0.666656494140625 | 0.666656494140625 | -0.666656494140625 | 0.285736083984375 |
正确答案 | 0.666666666666666 | -0.5 | -0.666666666666666 | 0.285714285714285 |
误差 | 0.000010172526041 | 0.000030517578125 | 0.000010172526041 | 0.000021798270089 |
误差均小于最大误差=|2-n|=|2-15|=0.000030517578125
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!