新手求助 关于verilog定点小数计算中数值计算的设计方法

不能识别小数的,都是当成整数来处理然后再来截位的,
比如A+B A=1.8, B=2.5
那先你自己规定下想用几位来代表小数精度,比如1.8=1+0.5+0.25+(后面还有0.05)
你要是想精度更深的话,把这0.05再这样展开,如果只想用两位小数,那1.8就按1.75来看待,{3'bA, 2'bB},也就是5'b00111 B=5'b01010 两个相加,5'b10001,也就是4.25, 拿着这个数你就知道前三位整数,后两位小数了。
要是不要想小数了,再右移两位,四舍五入,就得4了。
UID353886&帖子145&精华0&积分1107&资产1107 信元&发贴收入1055 信元&推广收入0 信元&附件收入0 信元&下载支出38 信元&阅读权限30&在线时间157 小时&注册时间&最后登录&
& & 多谢大侠回复。我是不是可以这样理解:
& &小数的加减乘除,和整数的加减乘除一模一样,只是我得用人脑记住小数点位置(就像您刚才举的定点数例子)。
& & 假设我只是人脑记好 “嗯,前3位是整数部分,后2位是小数部分”,然后事先把$readmemb所读取分件中的数都这么表示,然后全当整数在verilog里面算,最后输出的结果也用&&“嗯,前3位是整数部分,后2位是小数部分” 来解释就行了吧?
对于乘除运算是不是会麻烦一些?而且 一般大侠们做真实项目的时候,是不是这样:
A(5位)X B(5位)= C(10位),一般想让C仍然是5位,然后结掉后5位。。。?。。。(我这里有点乱了)?
UID378283&帖子1194&精华0&积分10838&资产10838 信元&发贴收入6255 信元&推广收入0 信元&附件收入16528 信元&下载支出12070 信元&阅读权限70&在线时间1214 小时&注册时间&最后登录&
是的,对于加减是这样,不管整数小数都这样处理,心里知道后面几位代表小数就行。注意加减时,因为要考虑进位的位置,SUM会扩展到高一位的,如果你对和的值心里有数,不会发生溢出,或者溢出后可以直接截取高位,比如3位相加,010+010也就是2+2等于4嘛,那应该变成4位,0100, 如果你还写成三位的,100,那就变成-4了,
对于乘法更复杂些,A*B,都是前三位整数,后2位小数的,那乘出来10位数,应该是前6位是整数,后四位是小数了,不是5位……
对于除法,这个比较难,你直接用CORE使用就行,如果真要用,可以使用叠迭法,就是如果A/B,如果一个值D*B还小于A,但(D+1)*B就大于A了,那A/B就是D这个值了。
UID811802&帖子52&精华0&积分1635&资产1635 信元&发贴收入300 信元&推广收入0 信元&附件收入1072 信元&下载支出1722 信元&阅读权限30&在线时间375 小时&注册时间&最后登录&
硬件小数运算可以用浮点运算单精度和双精度的都可以。
IEEE754标准,
opencores上有FPU的core可以下来看看。
UID353886&帖子145&精华0&积分1107&资产1107 信元&发贴收入1055 信元&推广收入0 信元&附件收入0 信元&下载支出38 信元&阅读权限30&在线时间157 小时&注册时间&最后登录&
谢谢回复。关于截断,那就意味着小数点的位置一定就变化了吧?
我知道您那个例子里两个数相乘后四位是小数,但是为了整齐,我下意识地希望所有寄存器都是5位的,所以就要把A*B也截成5位的(不知道大侠平时做大项目的时候也是这样做的吗?)所以我不可能只把4位小数丢掉,还剩下6位整数。 如果我把后5位都丢掉,那么我得到的数就是错的,但是位数对。如果我丢掉3位小数,和高位的2位整数,看起来错误就小多了(符号位另算,当然高位的2位应该是0)请问我这么想对吗?
看来数字只要相乘,位数就会变长,小数点位置就会变化,截断的话注意的问题也很多。。。。。。不知道大侠们用的比较专业的设计方法是怎么的呢?
UID67163&帖子112&精华1&积分2400&资产2400 信元&发贴收入645 信元&推广收入0 信元&附件收入340 信元&下载支出373 信元&阅读权限50&在线时间224 小时&注册时间&最后登录&
拿笔算,用精度的最后一位的数值衡量误差。
把误差表示出来,带入到系统中,累加起来看总误差是否满足需求。
每一次定点运算也好,截位也好,误差都不超过一个ulp (unit of least precision)
0.截位到0.00001,总误差小于0.00001,也就是2^-5。
UID378283&帖子1194&精华0&积分10838&资产10838 信元&发贴收入6255 信元&推广收入0 信元&附件收入16528 信元&下载支出12070 信元&阅读权限70&在线时间1214 小时&注册时间&最后登录&
对于乘法,建议直接使用CORE,对于位数的处理,通常就是砍掉前面和砍后面的,两者同时进行来保证value正确,同时对于符号位这个要留神,
如果你是两个变量相乘的话,按上面的方法,如果仅是一个定量乘以变量,就不需要花费乘法器了,
比如A*1.8, 那就是A*(1+1/2+1/4+...),也就是等于A + A&&1 + A&&2
UID378283&帖子1194&精华0&积分10838&资产10838 信元&发贴收入6255 信元&推广收入0 信元&附件收入16528 信元&下载支出12070 信元&阅读权限70&在线时间1214 小时&注册时间&最后登录&
每次都要手工地去截位太复杂,可以的话,你可以自己去写一个模块,可以参数化地配置截位的,最好分为signed, unsigned,前面截多少位,后面多少位,你输入的数据多少位等, 配置下即可,
UID858951&帖子5&精华0&积分1303&资产1303 信元&发贴收入25 信元&推广收入0 信元&附件收入0 信元&下载支出267 信元&阅读权限30&在线时间68 小时&注册时间&最后登录&
建议仔细阅读 《verilog 最后的私私细雨》中第一章“不同的自然”,对浮点数加减乘除有详细的讲解。
[通过 QQ、MSN 分享给朋友]
欢迎访问 TI 热门产品应用指南新手求助 关于verilog中数值计算的设计方法_百度知道
新手求助 关于verilog中数值计算的设计方法
个模块没有问题,有没有重命名,或者用同样的模块名调用这个模块两次的,工程里其他模块检查一下
其他类似问题
为您推荐:
数值计算的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁新手求助,关于verilog_百度知道
新手求助,关于verilog
cannot be declared more than once请问是为什么啊: module &quot://a./zhidao/pic//zhidao/wh%3D450%2C600/sign=/zhidao/wh%3D600%2C800/sign=6b6be5c24936acaf59b59efa4ce9a128/d6d55fb127fd0dd6f224f4a21a4dd94.jpg" target="_blank" title="点击查看大图" class="ikqb_img_alink">这么简单的程序还是要报错Error (10228).hiphotos.jpg" esrc="http<a href="http://a.baidu: Verilog HDL error at project1.baidu?
提问者采纳
个模块没有问题,或者用同样的模块名调用这个模块两次的,工程里其他模块检查一下,有没有重命名
这个问题解决了,但是仿真的时候不是应该有input output嘛?怎么是no matches?
提问者评价
啊,谢谢,还是应该自己研究研究
其他类似问题
为您推荐:
verilog的相关知识
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁Verilog的135个经典设计实例.pdf - FPGA|CPLD|ASIC论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
Verilog的135个经典设计实例.pdf
12:43:56  
希望对你学习有帮助
15:59:37  
楼上,谢谢了。为什么一定要这么多字
20:17:42  
在哪里可以下载????
14:53:23  
11:57:05  
学习了 谢谢。。。。。。。。,,,,,,,
13:17:45  
谢谢,学习中
助理工程师
15:00:07  
没看见呢& && && && && && && &
17:20:05  
我是初学者,实在不会
18:15:53  
第三方打发说法
18:38:51  
其实我想问,下载的东西到底在哪里啊?
23:15:45  
菜鸟学习ing
13:15:10  
不错 学习中
13:37:34  
谢谢楼主,实用资料
13:57:04  
没看到下载的地方啊
20:13:55  
在哪呢?楼主发出来呀
等待验证会员
16:40:41  
感谢楼主分享!!
09:10:49  
感谢分享,用来入门非常好
23:15:11  
03:36:46  
怎么下载呀楼主
高级工程师
07:57:41  
谢谢楼主分享!
Powered byVerilog的135个经典设计实例.pdf - FPGA|CPLD|ASIC论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
Verilog的135个经典设计实例.pdf
12:43:56  
希望对你学习有帮助
15:59:37  
楼上,谢谢了。为什么一定要这么多字
20:17:42  
在哪里可以下载????
14:53:23  
11:57:05  
学习了 谢谢。。。。。。。。,,,,,,,
13:17:45  
谢谢,学习中
助理工程师
15:00:07  
没看见呢& && && && && && && &
17:20:05  
我是初学者,实在不会
18:15:53  
第三方打发说法
18:38:51  
其实我想问,下载的东西到底在哪里啊?
23:15:45  
菜鸟学习ing
13:15:10  
不错 学习中
13:37:34  
谢谢楼主,实用资料
13:57:04  
没看到下载的地方啊
20:13:55  
在哪呢?楼主发出来呀
等待验证会员
16:40:41  
感谢楼主分享!!
09:10:49  
感谢分享,用来入门非常好
23:15:11  
03:36:46  
怎么下载呀楼主
高级工程师
07:57:41  
谢谢楼主分享!
Powered by

我要回帖

更多关于 基于verilog的计算器 的文章

 

随机推荐