数字信号处理-04- FPGA常用运算模块-除法器(二)

简介: 数字信号处理-04- FPGA常用运算模块-除法器

TDATA包


AXI4-Stream 接口中的遵循特定的命名法。 在该内核中,操作数通过通道 tdata 端口传入或传出内核。 为了简化协议的互操作性,如果需要时,首先扩展 tdata 中可以独立使用的每个子字段,以适应 8 位倍数的位字段。 对于输出 DOUT 通道,结果字段符号扩展到字节边界。 由字节方向添加的位被内核忽略并且不会导致额外的资源使用。

被除数和除数通道的 TDATA 结构


输入通道 Dividend 和 Divisor 仅在其 tdata 字段中携带其操作数。 对于每个操作数占据最低有效位。tdata 端口宽度本身是包含操作数所需的字节宽度的最小倍数。

image.png

输出(DOUT)通道的TDATA结构


m_axis_dout_tdata 的结构比较复杂。 此端口包含商和(余数或小数输出如果存在)。当余数类型设置为余数时,两个输出被认为是分开的,因此在串联以形成 m_axis_dout_tdata 信号之前是面向字节的。 当余数类型为小数时,小数部分被视为商的扩展,因此这两个字段在填充到下一个字节边界之前连接。

image.png

TLAST and TUSER握手


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

在每个输入通道上支持 tlast 和 tuser 信号纯粹是作为系统设计的一个可选辅助,在这种情况下,通过除法器的数据流确实具有一些分组化或辅助字段,但不是与除法器相关。 传递 tlast 或 tuser 的功能消除了通过除法器将延迟匹配到 tdata 路径的负担,该路径可以是可变的。

当选择Divide_by_zero detect(除以零检测)时,指示除以零的信号在输出通道tuser端口的最低有效位上输出。

TLAST Options


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

TUSER Options


每个输入通道的 tuser 是可选的。 每个都有用户可选择的宽度。 Divider IP也可能生成一个 tuser 位。 这是选择divide_by_zero 检测时。divide_by_zero 位占据最低有效位置,然后是来自除数通道的 tuser,然后是来自最高有效位置的被除数通道的 tuser。

image.png

除法器IP配置


除法器IP配置界面如下:

image.png

Common Options


描述了两种实现的参数,并允许选择除法器实现。

Algorithm Type: 算法类型:这在基数 2、LUTMult 和高基数划分解决方案之间进行选择。

Dividend Channel


Dividend Width: 被除数宽度,指定在 DIVIDEND (s_axis_dividend_tdata) 和 QUOTIENT(m_axis_dout_tdata 的子字段)上提供的整数位数。 这必须设置为满足最大可能的商结果。

由于二进制补码表示的非对称性,从被除数到商的位增长是可能的,但仅适用于最大负数除以负数的单个组合(即 -2(M-1)/-1)。 如果需要适应这种情况,被除数(以及商)的宽度可以扩展 1 位。

Has TLAST: 指定此通道是否具有 tlast 端口。 除法器不使用此信息。 该项用于简化系统设计。tlast信息以和数据路径相同的延迟传送到输出通道。

Has TUSER: 指定此通道是否具有 tuser 端口。 与 tlast 一样, 除法器不使用此信息。 该项用于简化系统设计。 tuser 位以和数据路径相同的延迟传送到输出。

TUSER Width: 当 Has tuser 为 TRUE 时可用,这将设置此通道的 tuser 端口的宽度。

Divisor Channel


Divisor Width: 除数宽度。指定在 s_axis_divisor_tdata 的 DIVISOR 字段上提供的整数位数。 当配置有余数输出时,余数的宽度也等于该参数的值。

Has TLAST: 指定此通道是否具有 tlast 端口。 除法器不使用此信息。 该项用于简化系统设计。 tuser 位以和数据路径相同的延迟传送到输出。

Has TUSER: 指定此通道是否具有 tuser 端口。 与 tlast 一样, 除法器不使用此信息。 该项用于简化系统设计。 tuser 位以和数据路径相同的延迟传送到输出。

TUSER Width: 当 Has tuser 为 TRUE 时可用,这将设置此通道的 tuser 端口的宽度。

Output Channel


Remainder Type: 余数类型。这可以在输出 tdata 端口 (m_axis_dout_tdata) 的 FRACTIONAL 上显示的余数类型小数和余数之间进行选择。分数余数类型是高基数的唯一选项。

Fractional Width: 小数宽度。如果选择小数余数类型,这将确定在输出通道 (m_axis_dout_tdata) 的小数字段上提供的位数。 选择高基数时,总输出宽度(商部分加小数部分)限制为 82。

商的宽度等于被除数的宽度,并在被除数通道部分设置。

如果divide_by_zero 检测处于有效状态,tuser 端口的宽度是当前输入通道tuser 字段的总和加上1。 如果任一输入通道具有 tlast 端口,则该通道也具有 tlast 端口。

Detect Divide-by-Zero: 检测被零除。确定内核在输出 tuser 端口 (m_axis_dout_tuser) 中是否有 DIVIDE_BY_ZERO 以在执行除以零时发出信号。

Radix-2 Options


Clocks Per Division: 分频时钟。确定 Radix-2 解决方案的吞吐量(输入(或输出)之间的时钟间隔)。 此参数的低值会导致高吞吐量,但也会导致更多资源使用。

High Radix and LUTMult Options


**Number of iterations (High Radix only) 迭代次数(仅限高基数): ** 只读,报告高基数操作模式为每次除法执行的迭代次数。 这设置了分频器的最大吞吐量。为实现此吞吐量,必须在s_axis_dividend_tready 和 s_axis_divisor_tready 输出请求时立即提供操作数。

Number of iterations (High Radix only)吞吐量(仅限高基数) :只读,报告以恒定速率提供操作数时除法器可维持的最大吞吐量。 在 AXI 阻塞模式下,由于缓冲,吞吐量可能略高。 当FlowControl 设置为 NonBlocking 并且输出通道 DOUT 没有tready 时,此速率适用。

AXI4-Stream Options


Flow Control: 流控制。阻塞或非阻塞。非阻塞模式提供了从之前版本的分频器生成器内核的更简单的迁移路径。 阻塞模式以一些额外的资源和延迟为代价,简化了进出其他 AXI4-Stream 阻塞模式内核的数据流管理。

Optimize Goal: 优化目标。这仅适用于阻塞模式。 选择ACLKEN并优化目标设置为资源时,可能会降低性能。

Output has TREADY: 选择输出通道是否有tready信号。 这是允许来自下游的背压所必需的。例如,如果连接到另一个 AXI4-Stream Blocking内核。 如果没有tready,下游电路无法停止来自分频器的数据流,但会节省一些资源。

Output TLAST Behavior: 输出 TLAST行为。选择输出通道 tlast 信号的来源。 当没有或只有一个输入通道有 tlast 时,输出 tlast 不存在或适当地从输入 tlast 派生。当两个输入通道都有 tlast 时,输出通道 tlast 可以单独从两个输入的逻辑 OR或逻辑 AND 得出。

Latency Options


Latency Configuration: 延迟配置。自动(完全流水线)或手动。Radix2 解决方案的延迟配置仅在每格时钟设置为 1 时才可配置。这是由于迭代反馈,因此当每格时钟大于 1 时非可选寄存器。

Latency :延迟,当Latency Configuration 设置为Automatic 时,提供从输入到输出的延迟,以时钟使能时钟周期为单位。 手动时,此字段用于指定所需的延迟。 当不需要高性能(时钟频率)时,该字段中较低的值可以节省资源。

Control Signals


ACLKEN :确定内核是否具有时钟使能输入 (ACLKEN)。信号ARESETn始终优先于ACLKEN,即无论ACLKEN的状态如何,ARESETn都生效。

ARESETn :确定内核是否具有低电平有效同步清零输入 (ARESETn)。为低电平有效。信号 ARESETn 应保持有效至少两个时钟周期。 这是因为,为了性能,ARESETn 在被馈送到原语的重置端口之前在内部注册。

reference


  1. PG151


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

热门文章

最新文章