verilog实现16位硬件除法器(加减交替法定点补码一位除法)

  • 一 设计思路
    • (一)求商的符
    • (二)求商的数值部分
    • (三)商的最后一位恒置1
  • 二 verilog代码
    • (一)程序代码变量说明
    • (二)程序代码结构说明
      • 1. 除法器
      • 2. 根据余数和除数的符 进行加法操作和商的操作
      • 3. 移位
      • 4. 截取最终的商和余数
    • (三)程序代码
    • (四)时序模拟图

一 设计思路

(一)求商的符

  1. 若[X]与[Y]同 ,[X] – [Y]
    若[X]与[Y]异 (即不够减),[X] + [Y]
  2. 如果所得余数与除数同 ,商上1;
    若余数与除数异 ,商上0;
    商即结果的符 位。

(二)求商的数值部分

  1. 若[Ri]与[Y]同 ,商上“1”,下次操作为:[Ri+1]=2[Ri] – [Y]
  2. 若[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

(四)时序模拟图

verilog实现16位硬件除法器(加减交替法定点补码一位除法)
被除数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进行处理,非常感谢!

上一篇 2021年1月25日
下一篇 2021年1月25日

相关推荐