数字信号处理-05- FPGA常用运算模块-复数乘法器(二)

简介: 数字信号处理-05- FPGA常用运算模块-复数乘法器

非阻塞模式


非阻塞意味着如果在另一个输入通道上接收到数据,则一个输入通道上缺少数据不会阻止操作的执行。并非总是需要 AXI4-Stream 的完整流量控制。 使用 FlowControl 参数或 GUI 字段选择阻塞或非阻塞行为。 复乘法器支持 NonBlocking 模式,其中 AXI4-Stream 通道没有 TREADY,即它们不支持背压。Blocking 或 NonBlocking 的选择适用于整个IP,而不是单独的每个通道。 通道仍然具有非可选的 tvalid 信号,这类似于采用 AXI4-Stream 之前许多内核上的新数据 (ND) 信号。 由于没有阻止数据流的功能,内部实现大大简化,因此这种模式需要的资源更少。 对于希望从 AXI 之前的版本迁移到此版本且更改最少的用户,建议使用此模式。

当所有当前输入通道都接收到一个有效的 tvalid时,并且输出 tvalid(适当地被内核的延迟)被断言,从而输出计算的结果。 操作发生在每个启用的时钟周期,并且无论 tvalid是状态,数据都显示在输出通道有效载荷字段中。 这是为了允许从 v3.1 的最小迁移。 下图显示了延迟为一个周期的情况下的 NonBlocking 行为。

image.png

阻塞模式


术语“阻塞”意味着每个通道都在缓冲数据以供使用。 AXI4-Stream 的完整流控制有助于系统设计,因为数据流是自我调节的。使用 FlowControl 参数选择阻塞或非阻塞行为。 背压(tready)的存在可以防止数据丢失,因此只有在下游数据路径准备好处理数据时才会传播数据。

复数乘法器有两个或三个输入通道和一个输出通道。当所有输入通道都有可用的有效数据时,会发生一个操作,并且输出结果可用。如果由于tready为低而阻止输出卸载数据,则数据会累积在堆芯内部的输出缓冲区中。当输出缓冲区几乎满时,内核停止进一步的操作。这可以防止输入缓冲区卸载新操作的数据,以便在输入新数据时填充输入缓冲区。当输入缓冲区填满时,其各自的tready将被置为无效,以防止进一步输入。

这三个输入绑定在一起,每个输入都必须在进行运算操作之前接收经过有效的数据。因此,有一个额外的阻塞机制,其中至少一个输入通道不接收有效数据,而其他通道接收有效数据。在这种情况下,有效数据存储在通道的输入缓冲区中。在该情况下的几个周期后,接收数据的通道的缓冲区将填满,该通道的TREADY将被取消断言,直到饥饿通道接收到一些数据。

image.png

上图显示了阻塞行为和背压。通道 A 上的第一个数据与通道 B 上的第一个数据配对,第二个与第二个数据配对,依此类推。 这演示了阻塞概念。 该图进一步显示了数据输出如何不仅因延迟而延迟,而且还因握手信号 DOUT_TREADY 而延迟。 这是背压输出上的持续背压以及输入上的数据可用性最终导致核心缓冲区饱和,从而导致核心通过取消置位输入通道TREADY 信号来表示它无法再接受进一步的输入。

这个例子中的最小延迟是两个周期,但在Blocking 操作中的延迟并不是一个有用的概念。每个通道都充当一个队列,确保每个通道上的第一个、第二个、第三个数据样本与每个操作的其他通道上的相应样本配对。

TDATA包


AXI4-Stream 接口中的遵循特定的命名法。通常情况下,与应用相关的信息(在本例中为复数乘法)在TDATA字段中携带。

在IP核中,复数操作数分量(实操作数分量和虚操作数分量)都通过通道TDATA端口传入或传出IP,其中实操作数分量位于最低有效位置。为了简化与面向字节的协议的互操作性,如果需要时,首先扩展TDATA中可独立使用的每个子字段,以适合8位的倍数的位字段。例如,如果将复数乘法器配置为具有11位的操作数宽度。A的每个实部和虚部都是11位宽。实分量将占用位10到0。位15到11将被忽略。位26到16将保持虚部,位31到27同样将被忽略。对于输出DOUT通道,结果字段符号扩展到字节边界。按字节方向添加的位被内核忽略,不会导致额外的资源使用。

A、B和DOUT通道的TDATA结构


输入端口A、B和输出端口D在其TDATA字段中携带复杂数据。对于每一个,实际组件占用最低有效位。虚部占据一个位域,该位域从实部上方的下一个字节边界开始。

image.png

CTRL通道的TDATA结构


CTRL通道仅在选择舍入时存在,且仅用于传递舍入位。此位占用此通道TDATA的位0。但是,由于TDATA面向字节的特性,这意味着TDATA的宽度为8位。将舍入系数添加到舍入常数0.01111…,使舍入常数为0.01111…或0.100…因此,将该位设置为0会导致舍入为负无穷大;将其设置为1将使其四舍五入为正无穷大,并为每个样本设置一个新的随机值,从而实现无偏随机四舍五入。

TLAST and TUSER握手


AXI4-Stream 中的 tlast 用于表示数据块的最后一次传输。 tuser 用于限定或扩充 tdata 中的主要数据的辅助信息。复数乘法器基于每个采样进行操作,其中每个操作独立于任何之前或之后的操作。因此,在复数乘法器上不需要tlast,也不需要tlast。

在每个信道上支持tlast和tlast信号,通过复数乘法器的数据流确实具有一些分组化或辅助字段,但不是与复数乘法器相关。 传递 tlast 或 tuser 的功能消除了通过复数乘法器将延迟匹配到 tdata 路径的负担,该路径可以是可变的。

TLAST Options

每个输入通道的 tlast 是可选的。 每个存在时,都可以通过复数乘法器,或者,当多个通道启用了 tlast 时,可以通过 tlast 输入的逻辑 AND 或逻辑 OR。 当任何输入通道上不存在 tlasts时,输出通道也没有 tlast。

TUSER Options

t每个输入通道的接收器是可选的。每个都有用户可选择的宽度。这些字段连接在一起,没有任何字节方向或填充,以形成输出通道TUSER字段。通道A中的TUSER字段形成连接的最低有效部分,然后是通道B中的TUSER,然后是通道CTRL中的TUSER。

如果通道 A 和 CTRL 都有宽度分别为 5 位和 8 位的 TUSER,则输出 TUSER 是 A 和 CTRL TUSER 字段的适当延迟串联,13 位宽,带有 A 在最低有效的 5 位位置(4 到 0)。

如果 B 和 CTRL 的 TUSER 宽度分别为 4 和 10,但 A 没有 TUSER,则 DOUT TUSER (m_axis_dout_tuser) 将适当延迟位置 3 到 0 与 CTRL_TUSER (s_axis_ctrl_tuser) 位将适当延迟位置13 下到4。

复数乘法器IP配置


复数乘法器IP配置界面如下:

image.png

输入和实现选项卡


Channel A Options:


AR/AI Operand Width: AR/AI操作数宽度。选择第一个操作数宽度。宽度应用于复数操作数的实部和虚部。

Has TLAST: Has TLAST:选择通道是否具有TLAST。为了简化系统设计,内核将任何TLAST和TUSER传递到输出,延迟等于TDATA字段。

Has TUSER: 选择通道是否有TUSER。为了简化系统设计,内核将任何TLAST和TUSER传递到输出,延迟等于TDATA字段。

TUSER Width: 选择此通道的TUSER字段的宽度(以位为单位)。

Channel B Options:

BR/BI Operand Width: BR/BI操作数宽度。选择第一个操作数宽度。宽度应用于复数操作数的实部和虚部。

Has TLAST: Has TLAST:选择通道是否具有TLAST。为了简化系统设计,内核将任何TLAST和TUSER传递到输出,延迟等于TDATA字段。

Has TUSER: 选择通道是否有TUSER。为了简化系统设计,内核将任何TLAST和TUSER传递到输出,延迟等于TDATA字段。

TUSER Width: 选择此通道的TUSER字段的宽度(以位为单位)。

Multiplier Construction Options: 乘法器构造选项。允许选择使用LUT(切片逻辑)构造复数乘法器,或使用DSP切片。

优化目标。在资源优化和性能优化之间进行选择。

  • 此选择会影响AXI4流接口中的内部体系结构决策和性能/资源权衡。
  • 对于基于乘法器的实现,资源优化通常使用三个实数乘法器结构。当三实数乘法器结构使用更多的乘法器资源时,核心使用四实数乘法器结构。性能优化始终使用四实乘法器结构,以实现最佳时钟频率性能。

Flow Control Options: 流量控制选项。选择AXI4流接口的阻塞和非阻塞行为。

配置和输出选项卡


Output Product Range: 输出宽度。选择输出运算结果的实部和虚部的宽度。设置A和B操作数宽度时,会自动初始化这些值以提供全精度乘积。复数乘法的自然宽度是输入宽度加上一的总和。如果输出宽度设置为小于此自然宽度,则根据下一个GUI字段的选择,将截断或舍入最低有效位。

Output Rounding: 如果选择了全精度运算结果(输出宽度等于自然宽度),则没有舍入选项可用。否则,可以选择截断或随机舍入。选择“随机舍入”后,将启用CTRL通道。此通道的TDATA字段的第0位决定了相关操作的特定舍入类型。

Channel CTRL Options:

控制通道用于提供决定舍入类型的位。

  • Has TLAST: Has TLAST:选择通道是否具有TLAST。为了简化系统设计,内核将任何TLAST和TUSER传递到输出,延迟等于TDATA字段。
  • Has TUSER: 选择通道是否有TUSER。为了简化系统设计,内核将任何TLAST和TUSER传递到输出,延迟等于TDATA字段。
  • TUSER Width: 选择此通道的TUSER字段的宽度(以位为单位)。

Output TLAST Behavior: TLAST行为。确定哪个输入通道的TLAST或哪个输入通道TLAST组合被传送到输出通道TLAST。可用选项包括传递任何一个输入通道的TLAST或传递所有可用输入TLAST的逻辑or或传递所有可用输入TLAST的逻辑AND。

Core Latency: Core Latency为Core选择所需的延迟。

  • Latency Configuration: 延迟配置。在自动和手动之间进行选择。自动时,延迟设置为使核心完全流水线化以获得最大性能。手动允许用户选择最小延迟。当值集小于完全流水线延迟时,性能会下降。当值集大于完全流水线时,内核使用SRL延迟输出。选择阻塞流控制后,核心延迟不是固定的,因此只能指定最小延迟。
  • Minimum Latency: 最小延迟。手动延迟配置的值。

Control Signals

控制信号。当内核的最小延迟为零时,这些选项将被禁用。

  • ACLKEN: 启用内核上的时钟启用(ACLKEN)引脚。核心中的所有寄存器都由该信号启用。
  • ARESETn: 启用内核上的活动低同步清除(ARESETn)引脚。内核中的所有寄存器都通过该信号复位。这会增加资源使用并降低性能,因为可以使用的基于SRL的移位寄存器数量会减少。aresetn始终优先于aclken。

Implementation Details(实现详细信息)选项卡


单击Implementation Details(实现详细信息)选项卡,查看用于特定复杂乘法器配置的DSP片资源的估计值。该值随GUI中的更改而即时更新,从而允许立即评估实现中的权衡。

reference


  1. PG104



目录
相关文章
|
15天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16QAM调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于FPGA实现了16QAM基带通信系统,包括调制、信道仿真、解调及误码率统计模块。通过Vivado2019.2仿真,设置不同SNR(如8dB、12dB),验证了软解调相较于传统16QAM系统的优越性,误码率显著降低。系统采用Verilog语言编写,详细介绍了16QAM软解调的原理及实现步骤,适用于高性能数据传输场景。
114 69
|
20天前
|
移动开发 算法 数据安全/隐私保护
基于FPGA的QPSK调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的QPSK调制解调系统,通过Vivado 2019.2进行仿真,展示了在不同信噪比(SNR=1dB, 5dB, 10dB)下的仿真效果。与普通QPSK系统相比,该系统的软解调技术显著降低了误码率。文章还详细阐述了QPSK调制的基本原理、信号采样、判决、解调及软解调的实现过程,并提供了Verilog核心程序代码。
53 26
|
6天前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的2FSK调制解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的2FSK调制解调系统,包含高斯信道、误码率统计模块及testbench。系统增加了ILA在线数据采集和VIO在线SNR设置模块,支持不同SNR下的硬件测试,并提供操作视频指导。理论部分涵盖频移键控(FSK)原理,包括相位连续与不连续FSK信号的特点及功率谱密度特性。Verilog代码实现了FSK调制解调的核心功能,支持在不同开发板上移植。硬件测试结果展示了不同SNR下的性能表现。
31 6
|
26天前
|
算法 异构计算
基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的4-ASK调制解调系统的算法仿真效果、理论基础及Verilog核心程序。仿真在Vivado2019.2环境下进行,分别测试了SNR为20dB、15dB、10dB时的性能。理论部分概述了4-ASK的工作原理,包括调制、解调过程及其数学模型。Verilog代码实现了4-ASK调制器、加性高斯白噪声(AWGN)信道模拟、解调器及误码率计算模块。
50 8
|
1月前
|
算法 物联网 异构计算
基于FPGA的4FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的4FSK调制解调系统的Verilog实现,包括高斯信道模块和误码率统计模块,支持不同SNR设置。系统在Vivado 2019.2上开发,展示了在不同SNR条件下的仿真结果。4FSK调制通过将输入数据转换为四个不同频率的信号来提高频带利用率和抗干扰能力,适用于无线通信和数据传输领域。文中还提供了核心Verilog代码,详细描述了调制、加噪声、解调及误码率计算的过程。
52 11
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的1024QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的1024QAM调制解调系统的仿真与实现。通过Vivado 2019.2进行仿真,分别在SNR=40dB和35dB下验证了算法效果,并将数据导入Matlab生成星座图。1024QAM调制将10比特映射到复数平面上的1024个星座点之一,适用于高数据传输速率的应用。系统包含数据接口、串并转换、星座映射、调制器、解调器等模块。Verilog核心程序实现了调制、加噪声信道和解调过程,并统计误码率。
45 1
|
2月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的64QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的64QAM调制解调通信系统的设计与实现,包括信号生成、调制、解调和误码率测试。系统在Vivado 2019.2中进行了仿真,通过设置不同SNR值(15、20、25)验证了系统的性能,并展示了相应的星座图。核心程序使用Verilog语言编写,加入了信道噪声模块和误码率统计功能,提升了仿真效率。
56 4
|
2月前
|
监控 算法 数据安全/隐私保护
基于三帧差算法的运动目标检测系统FPGA实现,包含testbench和MATLAB辅助验证程序
本项目展示了基于FPGA与MATLAB实现的三帧差算法运动目标检测。使用Vivado 2019.2和MATLAB 2022a开发环境,通过对比连续三帧图像的像素值变化,有效识别运动区域。项目包括完整无水印的运行效果预览、详细中文注释的代码及操作步骤视频,适合学习和研究。
|
7月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。
|
2月前
|
存储 算法 数据处理
基于FPGA的8PSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统在原有的8PSK调制解调基础上,新增了高斯信道与误码率统计模块,验证了不同SNR条件下的8PSK性能。VIVADO2019.2仿真结果显示,在SNR分别为30dB、15dB和10dB时,系统表现出不同的误码率和星座图分布。8PSK作为一种高效的相位调制技术,广泛应用于无线通信中。FPGA凭借其高度灵活性和并行处理能力,成为实现此类复杂算法的理想平台。系统RTL结构展示了各模块间的连接与协同工作。
63 16