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



目录
相关文章
|
1月前
|
算法 测试技术 开发工具
基于FPGA的QPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
该系统在原有的QPSK调制解调基础上,新增了高斯信道和误码率统计模块,验证了不同SNR条件下的QPSK误码性能。系统包括数据生成、QPSK调制与解调等模块,使用Vivado 2019.2进行仿真,展示了SNR分别为15dB、10dB、5dB和1dB时的误码情况。系统采用Verilog语言实现,具有高效、可靠的特点。
37 3
|
16天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的2ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于Vivado 2019.2实现了2ASK调制解调系统,新增高斯信道及误码率统计模块,验证了不同SNR条件下的ASK误码表现。2ASK通过改变载波振幅传输二进制信号,其调制解调过程包括系统设计、Verilog编码、仿真测试及FPGA实现,需考虑实时性与并行性,并利用FPGA资源优化非线性操作。
27 0
|
3月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
升级版FPGA MSK调制解调系统集成AWGN信道模型,支持在Vivado 2019.2中设置不同SNR仿真误码率。示例SNR值从0到15,结果展示解调质量随SNR提升。MATLAB仿真验证了MSK性能,图片显示了仿真结果。 ### 理论概要 研究聚焦于软件无线电中的MSK调制解调,利用Verilog实现。MSK是一种相位连续、恒包络的二进制调制技术,优点包括频谱效率高。系统采用无核设计,关键模块包括调制器、解调器和误码检测。复位、输入数据、中频信号等关键信号通过Verilog描述,并通过Chipscope在线观察。
75 6
基于FPGA的MSK调制解调系统verilog开发,包含testbench,同步模块,高斯信道模拟模块,误码率统计模块
|
2月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的BPSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统基于Vivado2019.2,在原有BPSK调制解调基础上新增高斯信道及误码率统计模块,可测试不同SNR条件下的误码性能。仿真结果显示,在SNR=0dB时误码较高,随着SNR增至5dB,误码率降低。理论上,BPSK与2ASK信号形式相似,但基带信号不同。BPSK信号功率谱仅含连续谱,且其频谱特性与2ASK相近。系统采用Verilog实现,包括调制、加噪、解调及误码统计等功能,通过改变`i_SNR`值可调整SNR进行测试。
31 1
|
2月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的2FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本系统基于FSK调制解调,通过Vivado 2019.2仿真验证了不同信噪比(SNR)下的误码率表现。加入高斯信道与误码统计模块后,仿真结果显示:SNR=16dB时误码极少;随SNR下降至0dB,误码逐渐增多。FSK利用频率变化传输信息,因其易于实现且抗干扰性强,在中低速通信中有广泛应用。2FSK信号由连续谱与离散谱构成,相位连续与否影响功率谱密度衰减特性。Verilog代码实现了FSK调制、加性高斯白噪声信道及解调功能,并计算误码数量。
46 5
|
5月前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
138 7
|
5月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
168 2
|
5月前
|
编解码 算法 异构计算
基于FPGA的NC图像质量评估verilog实现,包含testbench和MATLAB辅助验证程序
在Vivado 2019.2和Matlab 2022a中测试的图像质量评估算法展示了效果。该算法基于NC指标,衡量图像与原始图像的相似度,关注分辨率、色彩深度和失真。提供的Verilog代码段用于读取并比较两个BMP文件,计算NC值。
|
5月前
|
算法 异构计算
m基于FPGA的MPPT最大功率跟踪算法verilog实现,包含testbench
该内容包括三部分:1) 展示了Vivado 2019.2和Matlab中关于某种算法的仿真结果图像,可能与太阳能光伏系统的最大功率点跟踪(MPPT)相关。2) 简述了MPPT中的爬山法原理,通过调整光伏电池工作点以找到最大功率输出。3) 提供了一个Verilog程序模块`MPPT_test_tops`,用于测试MPPT算法,其中包含`UI_test`和`MPPT_module_U`两个子模块,处理光伏电流和电压信号。
55 1
|
3月前
|
C语言 芯片 异构计算
FPGA新起点V1开发板(六-语法篇)——verilog简介+基础语法
FPGA新起点V1开发板(六-语法篇)——verilog简介+基础语法

热门文章

最新文章

下一篇
无影云桌面