码迷,mamicode.com
首页 > 其他好文 > 详细

verilog求倒数-ROM实现方法

时间:2018-07-27 21:04:51      阅读:886      评论:0      收藏:0      [点我收藏+]

标签:bubuko   image   结果   占用   alt   仿真   分享图片   步骤   左移   

采用线性逼近法结合32段线性查找表的方式来实现1/z的计算。

首先将1/32-1/64的定点化数据存放到ROM中,ROM中存放的是扩大了2^20 次方的数字四舍五入后的整数部分。n值越大,精度越大,误差越小。这里取n=20;

ROM中存储的数据是1/(32+i)*2^20的四舍五入的整数部分。

32-64间的数据可以通过查表来实现,其他的数据则采用的是线性逼近的方法。

线性逼近的步骤为:

1.确定最高非零比特位的位置

2.对z进行左移或者右移,得到zp

3.zp查找ROM,得到1/zp,以及1/(zp+1),

4.求的1/zp-1/(zp+1),为误差A

5.N=z-zp*2^(m-5)

6.B=A/2^(m-5)*N

7.将扩大的部分缩小回去,或者缩小了的放大回去,那么1/z=(1/zp-B)*(1/2^(m-5))

 

那么最终的仿真结果:如果直接查询的话,结果输出延时一个时钟周期,如果线性逼近的方法得到,延时3-5个时钟周期,这里周期设定为20ns;

技术分享图片

占用资源报告:

技术分享图片

verilog求倒数-ROM实现方法

标签:bubuko   image   结果   占用   alt   仿真   分享图片   步骤   左移   

原文地址:https://www.cnblogs.com/Dinging006/p/9378856.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!