数字信号处理-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



目录
相关文章
|
10月前
|
数据采集 移动开发 算法
【硬件测试】基于FPGA的QPSK调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现QPSK调制与软解调系统,包含Testbench、高斯信道、误码率统计模块,并支持不同SNR设置。硬件版本新增ILA在线数据采集和VIO在线SNR设置功能,提供无水印完整代码及测试结果。通过VIO分别设置SNR为6dB和12dB,验证系统性能。配套操作视频便于用户快速上手。 理论部分详细解析QPSK调制原理及其软解调实现过程,涵盖信号采样、相位估计、判决与解调等关键步骤。软解调通过概率估计(如最大似然法)提高抗噪能力,核心公式为*d = d_hat / P(d_hat|r[n])*,需考虑噪声对信号点分布的影响。 附Verilog核心程序代码及注释,助力理解与开发。
332 5
|
11月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的MSK调制解调系统系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于FPGA实现MSK调制解调系统,采用Verilog开发,包含同步模块、高斯信道模拟、误码率统计等功能。相比仿真版本,新增ILA数据采集与VIO在线SNR设置模块。通过硬件测试验证,展示不同SNR(如10dB和16dB)下的性能表现。研究聚焦软件无线电领域,优化算法复杂度以适应硬件限制,利用MSK恒定包络、相位连续等特性提升频谱效率。核心代码实现信号生成、调制解调、滤波及误码统计,提供完整的硬件设计与分析方案。
390 19
|
11月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4ASK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文介绍了基于FPGA的4ASK调制解调系统的硬件测试版本,该系统包括testbench、高斯信道模块和误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置功能。通过VIO设置不同SNR(如15dB和25dB),实现了对系统性能的实时监测与调整。4ASK是一种通过改变载波幅度表示数据的数字调制方式,适用于多种通信场景。FPGA平台的高效性和灵活性使其成为构建高性能通信系统的理想选择。
304 17
|
11月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的16QAM调制+软解调系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前开发的16QAM调制与软解调系统,增加了硬件测试功能。该系统包含FPGA实现的16QAM调制、软解调、高斯信道、误码率统计模块,并新增了ILA在线数据采集和VIO在线SNR设置模块。通过硬件测试,验证了不同SNR条件下的系统性能。16QAM软解调通过比较接收信号采样值与16个调制点的距离,选择最近的调制点来恢复原始数据。核心Verilog代码实现了整个系统的功能,包括SNR设置、信号处理及误码率统计。硬件测试结果表明系统在不同SNR下表现良好,详细操作步骤可参考配套视频。
297 13
|
11月前
|
数据采集 算法 数据安全/隐私保护
【硬件测试】基于FPGA的4FSK调制解调通信系统开发与硬件片内测试,包含信道模块,误码统计模块,可设置SNR
本文基于之前的文章《基于FPGA的4FSK调制解调系统》,增加了ILA在线数据采集模块和VIO在线SNR设置模块,实现了硬件测试版本。通过VIO设置不同SNR(如10dB和20dB),并展示了ILA采集的数据结果。四频移键控(4FSK)是一种数字调制方法,利用四个不同频率传输二进制数据,具有较高的频带利用率和抗干扰性能。输入的二进制数据分为两组,每组两个比特,对应四个频率f1、f2、f3、f4,分别代表二进制组合00、01、10、11。调制过程中选择相应频率输出,并进行幅度调制以增强抗干扰能力。接收端通过带通滤波器提取信号并还原为原始二进制数据。
295 7
|
算法 数据安全/隐私保护 异构计算
基于FPGA的变步长LMS自适应滤波器verilog实现,包括testbench
### 自适应滤波器仿真与实现简介 本项目基于Vivado2022a实现了变步长LMS自适应滤波器的FPGA设计。通过动态调整步长因子,该滤波器在收敛速度和稳态误差之间取得良好平衡,适用于信道均衡、噪声消除等信号处理应用。Verilog代码展示了关键模块如延迟单元和LMS更新逻辑。仿真结果验证了算法的有效性,具体操作可参考配套视频。
468 74
|
10月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于FPGA的SNN脉冲神经网络之LIF神经元verilog实现,包含testbench
本项目展示了 LIF(Leaky Integrate-and-Fire)神经元算法的实现与应用,含无水印运行效果预览。基于 Vivado2019.2 开发,完整代码配有中文注释及操作视频。LIF 模型模拟生物神经元特性,通过积分输入信号并判断膜电位是否达阈值产生脉冲,相较于 Hodgkin-Huxley 模型更简化,适合大规模神经网络模拟。核心程序片段示例,助您快速上手。
|
11月前
|
算法 数据安全/隐私保护 异构计算
基于LSB最低有效位的音频水印嵌入提取算法FPGA实现,包含testbench和MATLAB对比
本项目展示了一种基于FPGA的音频水印算法,采用LSB(最低有效位)技术实现版权保护与数据追踪功能。使用Vivado2019.2和Matlab2022a开发,完整代码含中文注释及操作视频。算法通过修改音频采样点的最低有效位嵌入水印,人耳难以察觉变化。然而,面对滤波或压缩等攻击时,水印提取可能受影响。该项目运行效果无水印干扰,适合实时应用场景,核心逻辑简单高效,时间复杂度低。
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16QAM调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于FPGA实现了16QAM基带通信系统,包括调制、信道仿真、解调及误码率统计模块。通过Vivado2019.2仿真,设置不同SNR(如8dB、12dB),验证了软解调相较于传统16QAM系统的优越性,误码率显著降低。系统采用Verilog语言编写,详细介绍了16QAM软解调的原理及实现步骤,适用于高性能数据传输场景。
608 69
|
11月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的2ASK+帧同步系统verilog开发,包含testbench,高斯信道,误码统计,可设置SNR
本内容展示了基于Vivado2019.2的算法仿真效果,包括设置不同信噪比(SNR=8db和20db)下的结果及整体波形。同时,详细介绍了2ASK调制解调技术的原理与实现,即通过改变载波振幅传输二进制信号,并提供数学公式支持。此外,还涉及帧同步理论,用于确定数据帧起始位置。最后,给出了Verilog核心程序代码,实现了2ASK解调与帧同步功能,结合DDS模块生成载波信号,完成信号处理流程。
220 0

热门文章

最新文章