Vivado
文章平均质量分 74
jk_101
不停的学习。
展开
-
vivado hdmi 1024x600时序
参考链接:vivado hdmi 1024x600时序_hdmi上电时序-CSDN博客原创 2024-01-15 20:52:10 · 621 阅读 · 1 评论 -
FPGA芯片内部结构
参考链接:FPGA的进阶之第二章FPGA芯片内部结构(2)原创 2023-11-04 10:36:12 · 160 阅读 · 0 评论 -
Modelsim与Vivado版本匹配说明
参考链接:AMD Customer Community原创 2023-10-25 10:00:00 · 969 阅读 · 0 评论 -
谁说配置难?这篇文章让你轻松掌握xilinx 7系列FPGA配置技巧
通过上述讲解,可知xilinx7系列FPGA配置方式有7种,其中JTAG优先级最高,在其他模式下也可以直接进行JTAG配置。然后六种其实可以根据外设区分,如果是flash对FPGA进行配置,那么FPGA只能作为主机,根据数据线的宽度可分为SPI模式和BPI模式,其中SPIx1和BPI模式支持菊花链方式。转载 2023-07-31 11:16:46 · 4062 阅读 · 1 评论 -
Vivado编译过程中出现[DRC MDRV-1] Multiple Driver Nets: Net POSITIONLOOP/OVRTRVMON/TxdDB_reg[0]_0错误
就是有多个端口驱动一个网络,也就是说你程序中出现了相同变量的网络号,可以看你在哪里更改的程序,一般在那里查找问题就可以了。原创 2023-07-20 10:40:44 · 11707 阅读 · 0 评论 -
set_input_delay中-add_delay的作用
在默认情况下,一个port只需要一个min和max的dealy值,如果我们设置两次,那么第二次设置的值会覆盖第一次的值:下面的第一行就无效了。但其实,第一行也是无效的,因此2.5比2.1要大,如果满足2.5了,那一定满足2.1。参数,那么第二条会覆盖第一条约束,那么上升沿的约束就没有了。但有时也会在后面增加一个。转载 2023-05-19 08:49:43 · 787 阅读 · 0 评论 -
数字信号处理——FIR IP应用实例
FIR滤波器广泛应用于数字信号处理中,主要功能就是将不感兴趣的信号滤除,留下有用信号。FIR滤波器是全零点结构,系统永远稳定;并且具有线性相位的特征,在有效频率范围内所有信号相位上不失真。相比IIR滤波器,FIR滤波器更容易用数字域进行实现。在数字滤波的应用中, 绝大部分接触的都是使用 FIR Filter,其相对于 IIR Filter 要简单的多。FIR Filter 的核心思想就是卷积运算,然后了解一下卷积的时域卷积定理,就可以想象出 FIR 滤波器的原理。转载 2023-03-21 09:40:10 · 2244 阅读 · 1 评论 -
数字信号处理——串行FIR滤波器MATLAB与FPGA实现
本文介绍了设计滤波器的FPGA实现步骤,并结合杜勇老师的书籍中的串行FIR滤波器部分进行一步步实现硬件设计,对书中的架构做了简单的优化,并进行了仿真验证。转载 2023-03-23 10:00:00 · 2046 阅读 · 2 评论 -
数字信号处理——并行FIR滤波器MATLAB与FPGA实现
本文介绍了设计滤波器的FPGA实现步骤,并结合杜勇老师的书籍中的并行FIR滤波器部分进行一步步实现硬件设计,对书中的架构做了复现以及解读,并进行了仿真验证。转载 2023-03-21 14:20:26 · 3053 阅读 · 1 评论 -
数字信号处理——FPGA FFT IP应用实例
本文根据FFT相关原理进行设计构建工程,仿造前文的工程构建的混频功能的工程,设计工程显示该混频信号的功率谱,然后进行仿真分析。转载 2023-03-25 10:00:00 · 727 阅读 · 0 评论 -
CAN总线为什么要有两个120Ω的终端电阻
高速CAN所加的两个120欧的电阻实际上模拟的是线束连接无穷远的时候在传输线上产生的特性阻抗(而不是实际阻抗),这是个典型经验值,具体值取决于所采用的线束类型。高速CAN之所以要加终端电阻,是因为高频信号传输时,信号波长相对传输线较短,信号在传输线终端会形成反射波,干扰原信号,所以需要在传输线末端加终端电阻,使信号到达传输线末端后不反射。但低速CAN系统的控制单元会有自己独立的终端电阻,它不是连接在CAN-high导线与CAN-low导线之间,而是连接在每根导线对地或对+5V电源之间。转载 2022-12-02 14:35:17 · 4943 阅读 · 0 评论 -
FPGA学习-FIFO使用小结
data port parameters处,有actual write depth和actual read depth,他们都比我们设置的要小,在实际的工程应用中,FIFO深度确实要比预设的小1,即当写入了Write Width-1个数据之后,FIFO的满信号full会拉高,这个时候如果还要写入数据,则写入的数据丢失。该FIFO数据深度为16,从aabb0002到aabb0011共写入16个数据,当写入到第15个时,FULL信号拉高,数据不能被有效的写入,从读状态可以看出。转载 2022-12-05 12:00:00 · 2280 阅读 · 0 评论 -
FPGA学习-m序列信号发生器
m序列是目前广泛应用的一种伪随机序列,其在通信领域有着广泛的应用,如扩频通信,卫星通信的码分多址,数字数据中的加密、加扰、同步、误码率测量等领域。m序列在所有的伪随机序列里面的地位是最基础同样也是最重要的。它的特点就是产生方便快捷,有很强的规律特性,同时自相关性、互相关特性也很好。在IS-95的反向信道中,选择了m序列的PN码作为地址码,利用不同相位m序列几乎正交的特性来为每个用户的业务信道分配了一个相位。转载 2022-12-04 20:03:11 · 2542 阅读 · 0 评论 -
Vivado工程经验与时序收敛技巧
Levels指的是逻辑级数logic level,一个logic level的延迟对应的是一个LUT和一个Net的延迟,对于不同的器件,不同频率的设计能容纳的logic level是不同的。假设7系列的-2速度等级250MHz的设计,电路设计的大部分levels最好不要超过8,否则会造成时序收敛困难。FPGA工程师的工作不只是将电路功能实现,由于器件和工具不是理想的,所以还需要研究器件特性和工具的局限,尤其是在如今算法结构越来越成熟的背景下,不断被工具折磨,也许这也是FPGA工程师的悲哀吧。转载 2022-12-06 12:30:00 · 2019 阅读 · 1 评论 -
FPGA数字信号截位分析和位宽设计
可以看出,在FPGA 中采用直接截位法对数据进行截位,截位是按照向下取整的方式进行的,由截位导致的近似方式对正数和负数来言是不同的,即15/(22)=3.75≈3,而-15/(22)=-3.75≈-4,因此截位后的信号会整体向下偏移,导致出现直流偏置,频谱上表现为在0 频出现误差尖峰。这种方式在实际的应用测试中很好用,因此就简单的写了出来,严格的证明毕竟麻烦,需要很大的篇幅来写,这里就不详细写了,但是这个结果是通过MATLAB仿真和实际的应用测试验证的,是能直接用的。④ 截掉数据的低n 位。转载 2022-12-07 10:00:00 · 2081 阅读 · 1 评论 -
DDR3地址和容量计算、Bank理解
bank是存储库的意思,也就是说,一块内存内部划分出了多个存储库,访问的时候指定存储库编号,就可以访问指定的存储库,内存中划分了多少个bank,要看地址线中有几位BA地址,如果有两位,说明有4个bank,如果有3位,说明有8个bank。DDR3为减少地址线,把地址线分为行地址线和列地址线,在硬件上是同一组地址线;地址线和列地址线是分时复用的,即地址要分两次送出,先送出行地址,再送出列地址。行地址线数量根据内存大小,BANK数目,数据线位宽等决定(感觉也应该是行地址决定其他);转载 2023-01-27 21:31:42 · 1409 阅读 · 0 评论 -
Vivado修改IP源文件的注意事项
最好的设计方法是创建一个新的XDC或Tcl文件,将所有的XDC/Tcl命令放在该文件中,用来改写IP的XDC文件,并且设置相应的SCOPED_TO_REF和SCOPED_TO_CELLS属性。虽然IP子系统的IS_MANAGED属性不允许修改,但可以通过如下途径完成对IP子系统的源文件修改:其余步骤都相同,只是设置属性步骤替换为将Vivado的编辑器设置为其它编辑器(不用默认文本编辑器),在磁盘中直接编辑IP核的RTL源文件。总而言之,修改IP核的源文件是一件很危险的事,因为可能会导致IP核不能正常工作。转载 2022-12-08 12:00:00 · 1882 阅读 · 0 评论 -
FPGA学习-CRC校验
原文作者:FPGA设计论坛一、CRC原理。 CRC校验的原理非常简单,如下图所示。 其中,生成多项式是利用抽象代数的一些规则推导出来的,而模2加(也就是异或),是对应于有限域的除法。二、CRC算法。 那么在FPGA当中,也有好几种算法。1、比特型算法。 这种算法,跟手算的差不多,一个时钟周期处理一个bit,速度慢,但消耗的面积小。 可能你会有疑问,本来是第15位(对应于x^15),再移位就是第16位,怎样把第16位转化成低于16位的数?转载 2022-12-10 10:00:00 · 1038 阅读 · 0 评论 -
PCIe传输速率和可用带宽(吞吐量)计算
而PCIe 3.0的物理层协议中使用的是128b/130b编码方案,即每传输128个Bit,需要发送130个Bit,那么,PCIe 3.0协议的每一条Lane支持8*128/130=7.877GB/s=984.6MB/s的速率。传输速率为每秒传输量GT/s,而不是每秒位数Gbps,是因为传输量包括不提供额外吞吐量的开销位,比如PCIe 1x和PCIe 2x使用8b/10b编码方案,导致占用了20%(=2/10)的原始信道带宽。GT/s和Gbps之间不存在成比例的换算关系。由此可计算出上表中的数据。转载 2023-01-28 09:21:23 · 2925 阅读 · 0 评论 -
FPGA学习-FIFO深度H的计算
假设数据一直发,下游一直读,读频率小于写频率时,fc(flow control)流控后,最坏的情况下,下游不读了。如果写指针同步到rclk为M个时延,读指针同步到wclk也为M个时延,则fifo深度H=2N+3+M+M=2N+2M+3。上述场景下,当发生流控时,过冲的数据个数是N+1,当取消流控时,产生数据的时延是N+2,因此fifo的深度H=N+1+N+2=2N+3。当引入fc后,极端场景下,当达到反压水位线后,马上停止写入,有一拍的读出后,反压撤销。既要保证功能性,不溢出丢数,也要保证性能流水。转载 2024-04-28 15:22:49 · 89 阅读 · 1 评论 -
verilog基础—规范化参数定义parameter
defparam这个单独拿出来说一下,其实这个参数,个人觉得意义不大,因为你用parameter参数实例化就可以很好的解决问题,defparam用于重定义参数的数,可以通过。参数传递经常用于顶层的参数传递给子模块,这样我们只需要关注顶层实体的内容,把子模块的内容当做一个黑箱子即可,这也是非常实用的。这样的语法格式更改,从而实现专门针对某一个子模块更改,这样有助于例化了多个相同的子模块,但我只更改一个子模块的问题。这段说了,defparam适用于改变指定层次模块下的参数,不影响其他模块的参数。转载 2022-12-09 10:00:00 · 2883 阅读 · 0 评论 -
Verilog学习笔记
在ModelSim仿真中,时钟是很严格的,但是在真实的晶振所产生的clock却是不严格的,比如高电平和低电平的时间跨度不一样,甚至非周期性的微小波动。正确做法是,先将原信号用采样时钟delay 2次(打两拍),得到和采样时钟同时钟域的信号delay2,然后再按上述方法获取上升沿和下降沿信号,这时得到的上升沿或下降沿就可以被原采样时钟采样。FPGA内部有专门的CLK“线”,和一般的逻辑门的走法不一样,目的是为了保证整个FPGA片内的时钟一致,这个东西就叫Global CLK。对于典型的counter逻辑。转载 2023-01-28 10:31:39 · 654 阅读 · 0 评论 -
基于Verilog的DDS波形发生器的分析与实现(三角波、正弦波)
例如现在ROM中存储波形一个周期数据每个数据位宽8位,则数据范围为0-2^8(256),但是要产生一个周期波形需要512个,因为0-256一般是上升期,256-0处于下降期,那么现在ROM深度为512,则地址位宽应为9位,2的9次方=512,则32位累加器只需高9位即可[31:23]寻址,其余位用来控制地址改变的频率。(解释:定义一个N位寄存器,一般为32位,如果来一个时钟计一次,那就要计2^32次才满,这样太慢,因此引入频率控制字设为A,以前以1为单位,现在以A为单位计数累加,可以控制计数更新的速度)转载 2022-12-03 10:00:00 · 5841 阅读 · 1 评论 -
移位寄存器(左移、右移、双向)的Verilog实现
移位寄存器的功能和电路形式较多,按移位方向分有左移、右移、和双向移位寄存器;按接收数据方式分为串行输入和并行输入;按输出方向分为串行输出和并行输出。如果将若干个触发器级联成如下图所示电路,则构成基本的移位寄存器。图中是一个4位移位寄存器,串行二进制数据从输入端Dsi输入,左边触发器的输出作为右邻触发器的数据输入。若将串行数码D3D2D1D0从高位(D3)至低位(D0)按时钟脉冲间隔依次送到Dsi端,经过第一个时钟脉冲后,Q0=D3。转载 2022-12-02 10:00:00 · 6928 阅读 · 1 评论 -
Vivado中FFT IP核的使用
还有一些可选的附加信号,如时钟使能(ACLKEN),复位信号(ARESETn,低有效)等。为了直观验证fft是否正确,可将输入的时域数据的实部和做完fft后信号功率值的数据格式均设置为anolog(模拟),如下图,可以看到fft后的功率谱为两根独立的谱线,分别代表50Hz和200Hz两个频率点,和matlab仿真结果一致。本设计使用的软件编程环境是Xilinx公司的Vivado 2018.3,笔者将从FFT IP核的创建,模块文件的编写,波形仿真等方面来具体讲解FFT在Xilinx FPGA上的实现。转载 2022-12-01 10:00:00 · 4337 阅读 · 4 评论 -
Xilinx 7 系列FPGA 的存储资源优势
设计中存储资源的使用 不同的用户可能需要不同容量的RAM来构建他们的特定应用。所以FGPA底层的RAM基块大小就是一个有意思的话题。如果太大,则不够灵活,难以满足小容量的应用,当然可以直接用大容量RAM来实现小容量应用,但这难免造成大量的资源浪费;如果基块太小,则中等或者大型RAM应用会需要大量的小型RAM来构成,小型RAM为了普适性,也会配备同样的信号输入接口,这样一来则会大大消耗FPGA内部的布线资源,甚至会造成布线拥挤和时序问题。 几乎所有在 FPGA 中构建的设计都需要转载 2022-11-25 10:00:00 · 1565 阅读 · 1 评论 -
FPGA学习-PL控制PS端DDR的设计
FPGA设计论坛 2022-09-16 10:15 发表于陕西构建SoC系统,毕竟是需要实现PS和PL间的数据交互,而像上一讲那样PL主机与PL从机之间通过AXI4-Lite总线进行交互有点杀鸡用牛刀了。如果PS与PL端进行数据交互,可以直接设计PL端为从机,PS端向PL端的reg写入数据即可,但是对于图像处理等大数据量的数据交互来说,PL端的BRAM毕竟容量有限,很难用BRAM作为两者间的数据缓存器。对于这样的应用来说,利用DDR3作为PS端与PL端之间交互的数据缓存器是最合适不过的。 1.工程规划再Ze转载 2022-11-27 10:00:00 · 5483 阅读 · 3 评论 -
FPGA学习-从D触发器的角度说明建立和保持时间
我们假设Tsu=5ns,如果D输入信号在CP跳变为1之前4ns(转载 2022-11-28 10:00:00 · 294 阅读 · 0 评论 -
AXI DMA收发数据过程和时序关系
这个函数是把数据从指定内存数据通过S_AXI_HP总线发送到AXI SmartConnect这个总线互联IP中,然后这个IP把数据通过S00_AXI这个接口到M_AXI_MM2S接口,从而实现了数据到DMAIP核的传输过程。如上图所示主要是完成PS端数据通过DMA到axis_data_fifo中,然后把axis_data_fifo中数据通过DMA传输到PS端,实现数据的回环传输。2、DMAIP的S_AXIS_S2MM接口接收数据完成后通过s2mm_introut接口输出接收完成中断,等待PS端读取数据。转载 2024-06-12 08:37:07 · 370 阅读 · 1 评论 -
FPGA的虚拟时钟如何使用?
如果I/O路径参考时钟源于内部的衍生时钟,那set_input_delay和set_output_delay约束中。下图中,外部IO的参考时钟比设计中主时钟的路径上多了一个BUFFER,因此我们需要使用虚拟时钟来进行约束。主时钟在创建的时候需要指定时钟输入端口,虚拟时钟不需要指定端口,所以称之为虚拟时钟。后的时钟不能是衍生时钟,比如下图的例子中,输入10MHz时钟经过了MMCM后去采输入的数据。但文中对虚拟时钟的应用介绍的还不够详细,因此这里我们再对虚拟时钟做一个更加细致的介绍。转载 2022-10-17 10:00:00 · 762 阅读 · 1 评论 -
【Vivado那些事儿】从小白到专家:网友亲身实践教您上手 ZYNQ 开发 | Zynq 常用外设快速上手指南(下)
ZYNQ有专用的DDR Controller接口,如果外部硬件连接了DDR器件,于是在ZYNQ Processing System中正确配置了相应的信号和参数后,DDR就可以成为ZYNQ的内存,在SDK中可以直接使用memcpy、memset以及类似的函数对于Memory空间进行操作。该值可以在UG585中断的相关章节查询到,如下图所示。于是,与“将用户逻辑设计封装成IP”中的实验相比,同样是控制外部4个LED,就不需要另外设计一个逻辑模块,并封装成IP作为PS的外设了,可以直接通过SDK的程序进行控制。.转载 2022-10-16 10:00:00 · 713 阅读 · 0 评论 -
【Vivado那些事儿】从小白到专家:网友亲身实践教您上手 ZYNQ 开发 | Zynq 常用外设快速上手指南(上)
基本思路是对于PL端的Customized IP而言,控制端是ZYNQ中的ARM内核还是普通FPGA中的MicroBlaze都是一样的,所以可以将Customized IP例化到以MicroBlaze为处理器的Block Design中,由于MicroBlaze的仿真无需额外的License,所以可以将SDK的程序导入到MicroBlaze的内核,进而仿真Customized IP。首先封装的IP有自己在AXI总线上的地址,于是IP内部的所有寄存器的地址就是IP的Base地址加上各个寄存器的偏移量。...转载 2022-10-15 10:00:00 · 829 阅读 · 0 评论 -
【Vivado那些事儿】ZYNQ开发基本流程
其实“Xil_Out32()”和“Xil_In32()”这两个函数分别是写读底层硬件寄存器的两个函数,所有的上层与底层的寄存器级别的通信,也就是绝大多数的外设控制,都是依靠这两个函数完成的。当在Vivado平台中设计完成硬件,将其导入到SDK平台时,工具会根据硬件设计中使用到的外设,自动生成相应的板级支持包。该模板生成的代码中,在主函数中找到相应外设的测试函数,例如本例中GPIO的测试函数“GpioOutputExample()”,再通过追述该函数的具体实现,可以一定程度上作为最基本的范例代码。...转载 2022-09-06 10:00:00 · 2067 阅读 · 0 评论 -
【Vivado那些事】如何查找官网例程及如何使用官网例程
目前官网下载下来的参考例程异常“简单",主要通过TCL脚本提供,对于不熟悉使用该脚本的人可能会比较懵,但是不需要过于担心,只需要按照下面的步骤就可以轻松利用该脚本构建Vivado工程。这两个位置可以下载相关参考例程,直接点击下载即可,建议该文档直接使用Chrome打开,点击链接会知道跳转,其他PDF阅读器也可。主要分为:1、分类窗口;不清楚使用哪些IP或者不清楚需要参考哪个文档。...转载 2022-09-07 10:00:00 · 667 阅读 · 1 评论 -
【Vivado那些事儿】XilinxCEDStore介绍
CED Store 是一个开源示例设计存储库,主要用于 Xilinx Vivado 设计套件。xitem 对应于由所有者发布和维护的一个或多个示例设计的组或集合。xitem 所有者充当该代码的看门人,我们只接受所有者对应用程序的贡献。此外,整个存储库由 Xilinx 管理,控制对私有和公共存储库的推送。从 Vivado 2019.2 版本开始支持此功能。说白了就是一个由xilinx把控和审核的一个开源项目集合。这个项目的初衷真的非常完美,但是从今天看效果并不好,因为项目太少了~(也可能审核太严了)...转载 2022-09-08 10:00:00 · 237 阅读 · 0 评论 -
【Vivado那些事儿】MicroBlaze最小系统搭建及程序固化
今天简单演示了一个MB小例子。转载 2022-09-05 10:00:00 · 6846 阅读 · 1 评论 -
Vivado 的IP:Global 和 Out-Of-Context选项问题
OOC选项是Vivado给我们的默认选项,在OOC模式下,Vivado将会把生成的IP当成一个单独的模块来进行综合,生成.dcp (design checkpoint)文件,工程要用到IP的时候,只需从.dcp文件中解析出对应IP的网表文件即可,而不需对IP进行重新综合,这样的方式可以加快综合的速度;除了生成.dcp文件,OOC还会生成一个以”stub.v”结尾的HDL文件,是当前IP设计的一个黑盒文件,只有输入输出端口,工程调用这个的时候实际上是在解析.dcp中的网表文件,进而继续综合和布局布线。....转载 2022-08-22 21:03:02 · 1193 阅读 · 1 评论 -
VIVADO IDDR与ODDR原语的使用
这里说明一下,FPGA内部处理的数据都是单沿数据,那么双沿数据的变换只能发生在FPGA的IOB上面,这里有特定的硬件结构可以实验上面单沿变双沿的方法,也就是使用原语进行一些列的操作。经过之前博客的理解,我们可以知道RGMII的协议是双沿传输,那么我们将以此为例实现双沿4bit数据变单沿8bit数据——FPGA接收,单沿8bit数据变双沿4bit数据——FPGA发送。这里特别注意,一个时钟的上升沿和下降沿的两个数据在Q1、Q2的表示分别在下一个时钟与下下一个时钟体现出来,原来的两个数据被分裂成两个时钟表示。.转载 2022-08-16 10:00:00 · 4048 阅读 · 2 评论 -
VIVADO使用ila抓取的波形转换成Modelsim打开
在线逻辑分析仪的界面操作和VIVADO自带的仿真工具一摸一样,同样正是因为VIVADO自带的仿真工具操作不方便而且运行速度较慢,我们使用了Modelsim仿真软件。但是我们一般使用ila抓取的信号还是在VIVADO中,这就造成了操作的不方便。这篇博客我们主要讲解讲ila抓取的包在Modelsim中打开,这样可以增加工具的灵活性。因为这里只涉及软件的操作,不设计理论或者原理性的操作,这里我们直接给出相应的操作步骤。然后就在Modelsim中打开ila抓取的文件,方便大家分析。2、选择文件放置的路径。.....转载 2022-08-15 10:00:00 · 847 阅读 · 0 评论 -
xilinx FPGA 固化代码流程
XilinxVIVADO固化流程 纯verilog工程,不涉及SDK代码的固化流程: 综合,实现,生成比特流后,点击Tools—Generate Memory Cinfiguration File… 如图,选择所用FLASH的类型,设置生成mcs文件名,选择生成的比特流文件,文件保存路径自动显示为如图。板子上电,连好JTAG,Open Target后,点击Add Configuration Memory Device如图,...转载 2022-05-23 09:34:17 · 2529 阅读 · 2 评论