1.利用system generator 生成vivado ip—以低通滤波器举例
2.Libero使用点滴(自定义IP核实现)
3.VIVADO IPAXI QUAD SPI
4.FIFO IP核(1)——IP核参数配置
5.VIVADO IPIBERT Ultrascale GTH
6.vivado ILA(在线逻辑分析仪)IP核详解
利用system generator 生成vivado ip—以低通滤波器举例
利用System Generator生成Vivado IP的自制实例,特别是按键按键针对低通滤波器设计,能显著提升数字信号处理的源码用开发效率。以下步骤将引导你完成一个1MHz通带和1.2MHz阻带的自制低通滤波器IP创建。
首先,按键按键确保安装了System Generator,源码用网狐源码群通过Matlab命令行启动Simulink。自制创建一个新的按键按键模型,添加信号源模块,源码用设置采样率,自制例如3.Mcps的按键按键WCDMA码速率。
进入设计,源码用选择Gateway In作为IP输入,自制保持Register默认设置,按键按键滤波器部分是源码用关键。打开FDA Tool,设计一个1MHz截止频率,1.2MHz阻带起点的低通滤波器。接着,使用FIR Compiler设置滤波器参数,如位量化,并选择跟随FDATool量化。
进行截断处理时,注意控制IP输出位宽。勾选Provide enable port以引入截断使能信号,原始位输出经截断后降为位,可能影响精度,但可以减小数据传输量。查看数据位宽,点击Model菜单的Display > signals&Ports > Ports Data Type。
在System Generator中,匹配目标FPGA芯片类型,为IP配置输入时钟,例如3.MHz。exagear源码连接所有模块后,进行仿真,观察波形和频谱,如需关注双边谱,对比理论衰减。
实验结果显示,尽管单级低通滤波器将信号源的无限带宽限制在1MHz,实际衰减与理论预测有差距,可能是由于信号复杂性或滤波器设计的不完全匹配。最后,生成IP,将其存放在指定文件夹,Vivado导入IP的教程网上资源丰富,这里不再详述。
Libero使用点滴(自定义IP核实现)
探索Libero自定义IP核的实战之旅</ 在进行Microsemi Smartfusion2 FPGA项目的开发时,我遇到了Libero这款工具的使用挑战。作为Xilinx Vivado的资深用户,我本想无缝迁移已有的模块,然而,由于国内对Libero的使用相对较少,能找到的资料较为陈旧,我决定记录下这个过程,希望能为同样在摸索中的你提供一些宝贵的实践经验。 模块复用的关键:封装自定义IP</ 在Libero中,自定义IP核的复用是项目迁移的核心。首先,让我们从创建HDL文件开始。无配置参数的IP核生成相对直接,只需在Design Flow中创建HDL文件,然后通过图形化界面直接拖拽或右键例化。对于带参数的IP核,右键选择"Edit Core Definition",配置端口和参数,源码租用最后例化即可。值得注意的是,为了生成可重用的模块,需要在项目设置中启用"Block Creation",经过综合、布局布线并发布,得到的.cxz文件可直接导入到工程中。导出时,布局布线版本仅适用于同FPGA工程,而网表版本则适用于所有项目。 模块复用的实践操作</ 每个工程都可以通过.cxz文件实现模块复用,但在导入时,务必确保所有相关自定义模块的.cxz和.cxf文件都被包含,否则可能会遇到找不到模块的问题。如图所示,绿色方框代表.cxf文件,**方框代表已综合的.cxz文件。 参考资料</Libero SoC Design Flow User Guide</
UG User Guide SmartDesign Libero SoC v.3</
尽管Libero的学习曲线可能较为陡峭,但只要耐心探索,你会发现自己可以逐步掌握这个工具,并成功地将已有模块移植到Smartfusion2 FPGA项目中。希望这些经验能帮助你节省时间,顺利进行项目开发。VIVADO IPAXI QUAD SPI
本文记录了关于VIVADO IP核AXI QUAD SPI的部分使用和配置方式,主要参考了IP手册PG。该IP核功能较为简单,本文仅记录了使用到的部分。AXI Quad SPI内核将AXI4接口连接到支持标准、双或四SPI协议指令集的SPI从设备,为主机和从机之间的数据交换提供了简单的方法。内核在标准SPI模式下配置时,是一个全双工同步通道,支持主机和选定从机之间的JDBCInputFormat源码四线接口。当配置为Dual/Quad SPI模式时,该内核支持用于与外部存储器连接的额外引脚,这些引脚的使用取决于控制寄存器的设置和使用的命令。
在不同配置模式下,参数情况和频率限制有所不同。当外部SPI时钟过慢时,建议使用FIFO深度,以适应频率在到范围内的情况。AXI Quad SPI内核支持的命令在XIP模式下特别有用,它允许直接以内存形式访问flash数据,简化了软件访问方式,特别适用于读取操作。
本文还介绍了IP核的配置选项,包括AXI接口选项、性能模式、SPI选项和模式设置等。在配置时,需要根据具体需求选择合适的参数,如模式、数据宽度、频率比例等。在软件复位、SPI控制、SPI状态、数据发送和接收、从设备选择、FIFO数据数量和中断功能等方面,需要正确设置寄存器值。
在寄存器映射中,每个寄存器都有特定的功能,如软件复位、SPI控制、状态读取、cypress源码数据发送和接收、从设备选择等。正确配置这些寄存器对于IP核的正常工作至关重要。
在IP仿真例程中,提供了写操作和读操作的详细流程,以帮助理解和验证配置。写操作包括对从设备选择寄存器的写入、数据发送、中断信号触发和中断状态复位等步骤。读操作则涉及到数据读取和中断状态管理。
最后,通过AXI流量生成器产生的发送和接收命令,进行了测试。测试中发现,由于发送FIFO深度限制和传输事务宽度设置,导致写操作时只能发送前个数据。在读操作中,由于SPI设置了环回模式,发送和接收数据在同一端口,测试结果表明了正确读取了写入的数据。
FIFO IP核(1)——IP核参数配置
在Vivado的IP Catalog中选择FIFO Generator IP核,打开参数配置界面。
配置FIFO的基本参数,包括接口类型、时钟类型和资源类型。尽管不同资源能提供多种选择,但需注意类型不同可能导致功能受限,如Built-in FIF资源组成的异步FIFO,仅支持特定数据宽度的读、写操作。
调整FIFO接口参数,设置读模式(标准模式或先入先出模式),配置数据接口的位宽和深度。根据需要选择是否启用ECC和输出寄存器,以及初始化设置。
根据实际应用需求,设置状态信号接口,利用Programmable Flags自定义FIFO缓存深度的信号,用于设定半满或半空信号。
选择是否配置计数端口以监控FIFO已缓存数据深度。查看设置参数总览,了解资源消耗、宽度、深度、读延迟等关键信息。
生成FIFO IP核后,接口包括:wr_clk(写时钟)、rd_clk(读时钟)、din(数据输入端口)、wr_en(写使能信号)、rd_en(读使能信号)、dout(数据输出端口)、full(满标志)、empty(空标志)、almost_full(几乎满标志)、almost_empty(几乎空标志)、valid(有效数据标志)、rd_data_count(读计数)、wr_data_count(写计数)、overflow(写溢出标记)和underflow(读溢出标记)。
VIVADO IPIBERT Ultrascale GTH
本文详细记录了VIVADO IP核IBERT Ultrascale GTH的使用过程,主要参考IP手册PG中的相关介绍以及GT中的实例使用。
IBERT Ultrascale GTH与In-System IBERT的功能基本相似,但也有一些不同之处,将在后续内容中详细说明。In-System IBERT的相关文章可以参考。
该IP可以通过访问PMA属性和端口绘制眼睛扫描图。GTH/GTY收发器的PMA特性是支持和可控的,包括:
而部分PCS的特性IP不支持查看,包括:
除了上述提到的In-System IBERT不支持的内容外,其他内容与In-System IBERT一致。
系统的最大时钟频率为 MHz,且设计会自动将任何输入的系统时钟进行分频以满足此约束。
系统时钟可以由FPGA引脚选择,也可以由GTH收发器的专用REFCLK输入选择。如果系统时钟运行速度超过 MHz,则使用MMCM进行内部分频。系统时钟用于核心通信,并作为系统测量的参考。
IBERT Ultrascale GTH与In-System IBERT在实际使用上有几个明显的不同点:
在功能上,有几个需要特别提到的:
IBERT Ultrascale GTH的配置非常简单,只有几项。
以下是IBERT Ultrascale GTH与UltraScale FPGAs Transceivers Wizard配置的对应关系,具体内容在手册中未提及,参考社区回答得到:
从图中可以看出,IBERT Ultrascale GTH中的参考时钟对应实际的参考时钟,由于无法支持小数分频,因此在. Gb/s的线速情况下无法选择 MHz的参考时钟。
那么如何根据实际的参考时钟来选择线速呢?根据UG,线速的计算公式如下:
参数M、D和N都是整数,其中M和D的最小值为1,N的最大值为。
因此可以根据公式尽可能选择与实际所需线速接近的值,当然也要注意PLL支持的范围(具体芯片对应的参数需要参考对应的DC/AC手册,例如Zynq UltraScale+ MPSoC对应的DS)。
PG由于建议使用QPLL进行8 Gb/s以上的线速,因此可以为0.5 Gb/s至.3 Gb/s范围内的每个线速选择QPLL/CPLL。
这里我们配置为.5 Gb/s,采用 MHz的参考时钟。
这里的配置与UltraScale FPGAs Transceivers Wizard的RX Advanced一致,包括均衡方式以及端接电压等配置,更详细的内容可以在UG中找到。
在protocol definition中可以实例化多个协议,从而在选择中可以有多个选项。这里主要是确定参考时钟源,需要与硬件设计对应。
选择Add RXOUTCLK Probes可以用Quad对应的某个lane驱动一个/对输出引脚。
采用例程进行验证,原理图如下:
系统时钟根据设置由参考时钟MGTREFCLK1分出。
正常下载后,可以看到链路状态(In-System IBERT不支持,需要使用VIO来查看链路状态)。
使用Auto-detect Links可以检测链路状态。
可以提供误码率检测,实时速率显示,并且可以设置PRBS类型,以及环回模式(In-System IBERT不支持,需要通过配置GT修改)。
选定链路使用create scan可以查看眼图。
关于眼图相关的内容,可以参考之前的文章。
其他内容未提及。
vivado ILA(在线逻辑分析仪)IP核详解
逻辑分析仪(ILA)是监测内部信号设计的重要工具。ILA核心具备现代逻辑分析仪的多种功能,如BOOL触发器方程和Trigger转换触发器。与被监视端口同步,设计的所有时钟约束同样适用于ILA组件。
ILA IP核通过时钟与输入探针连接,信号以设计速度深度采样并存储于BRAM。调试核心集线器通过自动实例化进行通信,连接至FPGA的JTAG接口。在设计加载至FPGA后,通过Vivado逻辑分析器软件设置测量触发事件。触发后,样本缓冲区填充并上传至Vivado逻辑分析器,用户可使用波形窗口查看数据。
每个探针输入端配备触发比较器,支持多种操作,如=、!=、x0xx模式、边缘检测(R、F、B、N)以及复杂比较(>、<、≥、≤)。比较器运行时通过Vivado逻辑分析器配置,操作符选择在“Operator”中设置。
触发条件由ILA Probe触发比较器的布尔运算(AND或OR)计算得出。在Vivado逻辑分析器中,用户选择AND或OR,设置“AND”时,仅在所有探测比较满足时触发采样,“OR”时,任意探测比较满足即可。
ILA核心可配置为支持个探针,每个宽度范围1至。探针端口应连接至用户设计信号,以便运行期间监控。
设计时钟端口(clk)驱动触发和存储逻辑。探针(probe)输入端口支持宽度1至的向量声明。trig_out输出端口根据触发条件或外部trig_in端口生成。trig_in端口用于处理器系统,如Zynq- AP SoC的嵌入式交叉触发,允许创建级联触发器链。
ILA参数描述包括组件名称、探针数量、存储深度、探针宽度、触发功能启用、输入管道阶段、捕获限定符、高级触发器选项、所有探针相同匹配单元、每个探针匹配单元数量、触发类型,以及比较值单元数量限制(最大)。这些参数允许用户自定义ILA功能和性能。
创建步骤包括选择组件名称、配置探针参数、设置存储深度和宽度、启用触发功能、选择输入管道阶段、启用捕获限定符、选择高级触发器选项、设置匹配单元数量、定义触发类型,以及确保时钟路径约束适当。最后,通过XDC文件约束ILA内核,包含适当的假路径约束,防止时钟域跨越同步路径的过度约束。连接到ILA内核CLK输入端口的时钟信号也应受到适当限制。