3.4.2 除法器模块
对于FPGA设计来讲,除法是四则基本运算中最复杂的,也是最难实现的运算方式。除法可以被看成乘法的逆运算,但除法和乘法在很多方面是不同的,最大的区别在于乘法中很多操作可以并行执行,而除法中商的每位都必须是顺序得到的,所以也是最耗时间的运算。本书不打算详细介绍FPGA等硬件平台实现除法的原理,读者可以通过查阅相关文献来了解具体实现细节。本节先讨论FPGA实现除法的几种特殊情况,而后介绍FPGA设计中最常用的除法器IP核的使用方法。
1.FPGA 中的除法运算
如果按照二进制除法的原理设计除法器电路,不可避免需要耗费工程师们大量的精力。但当被除数或除数是一个常量时,可以利用LUT的强大功能,设计一个预先定义好的存储器,将不是常量的输入信号当做地址输入,在存储器的相应位置存放对应的输出结果,则整个除法器其实就是一个基于查找表或ROM的存储器而已。这样,除法运算转变成了读取存储器的操作,不仅可节约硬件资源,且可以极大地提高运算速度。这样的设计思想也可以广泛应用于乘法操作等其他系统的设计中。
如果除数是2的整数次幂方时,在FPGA中实现除法运算还有更为简便的方式,即采用移位操作实现。即,将除数右移N位,即可得到除以2~的近似运算结果。当然,由于存在移位时的直接截位处理ÿ