小技巧一种简单的办法在verilog中处理小数运算
Posted fpga&matlab
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小技巧一种简单的办法在verilog中处理小数运算相关的知识,希望对你有一定的参考价值。
很多情况下,我们需要在FPGA中处理小数,而不是直接量化。这里介绍一种自己以前常用的处理方法。感觉还不错,可以试试。
我们定义一个二进制,总共12位宽:
A1A2A3A4B1B2B3B4B5B6B7B8.
其中A1A2A3A4为整数,B1B2B3B4B5B6B7B8为小数。
做加法减法的时候,不考虑整数位位宽不够用的情况,那么可以直接相加:
A1A2A3A4B1B2B3B4B5B6B7B8.+A1A2A3A4B1B2B3B4B5B6B7B8.
这个就维持了加减法小数位不增加的原则。
如果是乘法,不考虑整数位位宽不够用的情况
A1A2A3A4B1B2B3B4B5B6B7B8.*A1A2A3A4B1B2B3B4B5B6B7B8.
将得到A1A2A3A4A1A2A3A4,B1B2B3B4B5B6B7B8B1B2B3B4B5B6B7B8
此时,只要将结果的低8位去掉,,高位的4位去掉就可以了。
这样处理之后,小数位还是8位,整数位还是4位。
如果整数位考虑溢出情况,那么进行位宽扩展就可以了。
比较简单的经验,可能大家都知道,随便写写,有需要的参考参考。
创作打卡挑战赛 赢取流量/现金/CSDN周边激励大奖以上是关于小技巧一种简单的办法在verilog中处理小数运算的主要内容,如果未能解决你的问题,请参考以下文章