FPGA中乘除法运算实现途径

主要介绍在FPGA中实现乘除法的方式

准则

虽然verilog中可以直接写* 或者/来表示乘除,但建议不要这样使用。如果是一个比较简单的话,还可以勉强使用。但遇到浮点之类的,肯定不可以了 。 具体官方给出了三种方式:

1.采用左移或右移的方法实现2的n次方乘法或除法。

2.使用乘法或除法IP核,例如mult与div的IP,使用除法器IP的时候,注意延迟单位。(可参考ug901 88页)

3.HLS生成乘法器IP

参考地址:https://support.xilinx.com/s/question/0D52E00006iHpACSA0/xilinx-fpga怎么处理乘法-除法运算?language=en_US

https://support.xilinx.com/s/question/0D52E00006hpogdSAA/请问怎么能减小dsp资源的使用?language=en_US

实施

在 Xilinx 系列 FPGA 中实现带符号小数的乘除法,一般可以采用以下两种方法:

  1. 定点小数乘除

定点小数是指小数点的位置固定的小数。在 FPGA 中,定点小数通常使用二进制表示,并将其划分为整数部分和小数部分。例如,一个 8 位定点小数可以表示为:

符号位 整数部分 小数部分

其中,符号位表示数字的正负号,整数部分表示小数的整数部分,小数部分表示小数的小数部分。

定点小数的乘法可以分解为以下步骤:

将两个定点小数的整数部分和浮点部分分别相乘;

将两个乘积相加;

对结果进行定点化。

定点小数的除法可以分解为以下步骤:

将被除数乘以除数的倒数;

对结果进行定点化。

定点小数乘除的优点是易于实现,并且具有较高的计算精度。但是,定点小数乘除的缺点是需要人为地选择定点的位置,这可能会导致精度损失。

  1. 浮点小数乘除

浮点小数是指尾数和指数的乘积。在 FPGA 中,浮点小数通常使用 IEEE 754 标准表示。例如,一个单精度浮点数可以使用以下格式表示:

符号位 指数 尾数

其中,符号位表示数字的正负号,指数表示尾数的缩放因子,尾数表示数字的有效数字。

浮点小数的乘法可以分解为以下步骤:

将两个浮点数的指数相加;

将两个浮点数的尾数相乘;

对结果进行归一化。

浮点小数的除法可以分解为以下步骤:

将被除数乘以除数的倒数;

对结果进行归一化。

浮点小数乘除的优点是具有较高的精度范围,并且不需要人为地选择定点的位置。但是,浮点小数乘除的缺点是实现复杂度较高,并且计算速度较慢。

选择哪种方法

在实际应用中,选择哪种方法取决于具体的应用需求。如果精度要求不高,并且需要较高的计算速度,则可以选择定点小数乘除。如果精度要求较高,并且能够接受较低的计算速度,则可以选择浮点小数乘除。

具体的建议

如果需要在 FPGA 中实现数字滤波器或其他信号处理算法,则可以使用定点小数乘除。

如果需要在 FPGA 中实现图形处理或其他科学计算应用,则可以使用浮点小数乘除。

Xilinx 提供的资源

Xilinx 提供了一些工具和资源,可以帮助您在 FPGA 中实现小数乘除。例如:

Vivado HLS:Vivado HLS 是一种用于高层次综合的工具,可以帮助您将 C/C++ 代码转换为 FPGA 设计。Vivado HLS 提供了定点和浮点小数乘除的库函数。

Xilinx DSP IP 核:Xilinx 提供了各种 DSP IP 核,其中包括定点和浮点小数乘除器。

总结

在 Xilinx 系列 FPGA 中实现带符号的小数的乘除法,可以采用定点小数乘除或浮点小数乘除两种方法。选择哪种方法取决于具体的应用需求。Xilinx 提供了一些工具和资源,可以帮助您实现小数乘除。

相关推荐
156082072191 天前
基于7VX690T FPGA实现万兆TCP/IP资源和性能测试
网络协议·tcp/ip·fpga开发
nuoxin1141 天前
GSV1011-富利威-HDMI芯片选型
arm开发·驱动开发·fpga开发·ffmpeg·射频工程
ChipCamp1 天前
FPGA开发入门----1. Mux的三种写法,RTL的认知大提升!
fpga开发·时序逻辑·组合逻辑
XINVRY-FPGA2 天前
XCVP1802-2MSILSVC4072 AMD Xilinx Versal Premium Adaptive SoC FPGA
人工智能·嵌入式硬件·fpga开发·数据挖掘·云计算·硬件工程·fpga
9527华安3 天前
国产安路FPGA开发设计培训课程,提供开发板+工程源码+视频教程+技术支持
fpga开发·fpga·安路·视频教程·培训·安路fpga
UVM_ERROR3 天前
硬件设计实战:解决Valid单拍采样失效问题(附非阻塞赋值与时序对齐核心要点)
驱动开发·fpga开发·github·芯片
brave and determined3 天前
可编程逻辑器件学习(day36):从沙粒到智能核心:芯片设计、制造与封装的万字全景解析
fpga开发·制造·verilog·fpga·芯片设计·硬件设计·芯片制造
步达硬件4 天前
【FPGA】FPGA开发流程
fpga开发
我爱C编程4 天前
【仿真测试】基于FPGA的完整16QAM通信链路实现,含频偏锁定,帧同步,定时点,Viterbi译码,信道,误码统计
fpga开发·16qam·帧同步·卷积编码·viterbi译码·维特比译码·频偏锁定
s09071365 天前
ZYNQ DMA to UDP 数据传输系统设计文档
网络协议·fpga开发·udp