硬件
文章平均质量分 74
月落乌啼霜满天@3760
这个作者很懒,什么都没留下…
展开
-
vcs\verdi三步编译VIVADO库
使用vcs仿真带vivado的IP的设计的时候,经常需要联合编译,vivado的库有的是VHDL文件,这时又需要vcs进行三步编译。VCS三步编译是将两步编译的第一步,拆分成了Analysis+Elaboration,这样做的好处是可以编译VHDL文件。若使用一条命令编译源文件和uvm环境,则uvm环境会默认在最后开始编译,这就导致前面编译源文件的时候会报错,所以。我们刚才使用vivaod生成了一个synopsys_sim.setup文件,该文件主要指定了Xilinx的库。文件的时候,才会使用三步编译。原创 2023-08-28 18:00:50 · 1392 阅读 · 4 评论 -
VCS编译参数说明
VCS常见的编译参数说明原创 2023-08-28 16:34:28 · 1261 阅读 · 0 评论 -
Generate for生成 一系列有细微不同的模块
遇到一个关于Generate 的问题。原创 2022-11-14 12:30:04 · 191 阅读 · 1 评论 -
数字二倍频电路
以异或门为例进行分析。t0时刻:Q=0;此时clk_o = clk ^ Q = clk ^ 0 = clk;t1时刻:clk 时钟上升沿来临,传递到寄存器时钟端。clk_o 拉高,寄存器状态更新。Q=1;t2时刻:Q=1的状态传递到寄存器的时钟端。此时clk 仍然处于高电平状态。clk_o开始拉低。触发器状态不更新。所以clk_o的高电平持续时间就是t2-t1。t3时刻:clk 下降沿来临,此时clk_o = clk ^ Q = clk ^ 1 = ~clk;......原创 2022-08-29 17:26:56 · 2286 阅读 · 1 评论 -
DCM和PLL和MMCM的差别
前言之前移植接触的都是Xilinx7系列的板子。项目需要使用Xilinx5系列的板子,两者的时钟单元不一样。在网上搜集了一些资料,总结一下DCM\PLL\MMCM之间的差别。环境无正文 在 Xilinx FPGA 中,时钟管理器称为时钟管理,简称 CMT。我们使用的DCM /PLL/MMCM都包含在CMT中。 DCM是旧技术,在Spartan-3和Virtex-4系列中使用。Spartan-6和 Virtex-5系列同时使用PLL和DCM。在Virtex-6系列中开始使用MMCM,且V原创 2022-05-14 11:29:06 · 1067 阅读 · 0 评论 -
开源APB2WisnBone UART IP 的使用
前言项目需要使用一个较为完成的UART IP。OpenCores有不少开源的UART IP。但是大多是WishBone总线,项目接口时APB,需要进行一个转换。而且项目使用的IP需要有源码。Github 上WishboneAXI和wb2axip这两个项目都可以进行转换。其中WishboneAXI是以Xilinx IP的形式提供的,使用非常方便。但是我在使用WishboneAxI的时候Vivado仿真失败。最后还是决定自己写一个APB 到 WishBone的总线转换。学习工程中的一大困扰就是网上的资原创 2022-03-03 09:40:03 · 3085 阅读 · 0 评论 -
模块深层调用-避免端口层层穿出的两种方法
前言有的时候,比如设计中调用了DDR。DDR控制器的芯片相关的端口需要连接到管脚上,如果一路穿出来的话太麻烦。然后就想能不能不用引出利用IP约束直接在内部绑定到管脚。约束文件顺序首先IP约束的优先级高于用户约束,IP约束里面的设置可以覆盖用户里面的设置。...原创 2021-12-08 22:19:08 · 543 阅读 · 0 评论 -
xilinx的DDR IP中的自刷新功能
前言SDRAM不刷新数据会丢失,所以看到DDR IP里面的自刷新设置默认没有打开,我很疑惑。结论:例化后的默认配置即可,不用担心刷新问题。解释图中的自刷新功能指的是打开DDR芯片的自刷新功能。而不是DDR controler的刷新功能。DDR CONTROLER的自刷新功能是默认打开的。即不需要外界的刷新命令。即可使用。如果想要手动控制DDR的刷新需要打开下图中的选项。xilinx的建议大概意思是说,让DDR控制器自己控制刷新可能会造成4%的性能损失。但是除非你真的非常有把握否则不建议打原创 2021-12-08 13:01:51 · 2852 阅读 · 1 评论 -
使用JTAG更新BRAM的方法
引言做SOC原型验证的时候,里面块ROM。存储上电后需要加载的信息。如果能够使用JTAG可以通过电脑动态的更新BRAM,就可以避免重复生成位流。我在xilinx 的IP里发现了一种实现方式。也是第一次使用记录一下。文章目录引言block design设计的其他模块JTAG_AXI IP 的使用命令命令相关命令的感想block design因为设计AXI总线,所以用block design 例化IP ,可以省去连线的麻烦。JTAG TO AXI MASTER 模块直接默认。 AXI BRAM CON原创 2021-12-02 20:40:00 · 855 阅读 · 1 评论 -
ila采集时钟波形,引发的关于时序的思考
声明本人经验之谈,仅供参考。文章目录声明引言ila的时钟频率dubug_hub时钟频率和ila_core时钟频率的关系dubug_hub的时钟频率和JTAG时钟频率的关系ila时钟频率和被采样时钟频率时钟路径时序报告分析引言一般来说,我们是不用ila去查看时钟波形的。这会带来时序上的困难。但是在Debug时,我们可能需要判断FPGA内部的某个时钟信号有没有正常工作。在不增加输出管脚的情况下,还是用ila比较方便。这里分析一下,ila抓取时钟波形需要注意的地方和对时序路径的一些分析。ila的时钟频原创 2021-12-01 10:21:39 · 9387 阅读 · 1 评论 -
vivado 对高阻z和不定态x信号的处理
引言最近在做关于FPGA原型验证,不清楚代码中的高阻z和不定态x会被映射成什么样的电路。会不会导致前仿真和综合后仿真的结果不一致。所以自己做了个验证。1,高阻z代码先附上用来验证的源代码和仿真代码。代码结构比较简单,en_zen\_zen_z信号就是我们要验证的信号。源代码module top(input clk,input rst_n,input en,output wire[2:0] led,output wire[1:0] cnt );chip rita( .cl原创 2021-11-26 15:26:11 · 10990 阅读 · 2 评论 -
vivado时序违例相关
标题相关文章Vivado时序违约小结Hold Time违例,该如何解决一种在FPGA设计中解决holdtime违例的方式时序路径分析UG906第五章原创 2021-11-09 14:08:13 · 1054 阅读 · 0 评论 -
门控时钟和时钟MUX
门控时钟和时钟MUX1.门控时钟最近做ASIC的FPGA原型验证,遇到了门控时钟的问题。在这里记录下来。门控时钟在ASIC设计中经常使用。门控时钟可以通过时钟使能信号关闭模块,进而降低功耗。但是在FPGA里面门控时钟会占用较多的时钟资源,按照我的理解FPGA使用组合逻辑生成的门控时钟驱动能力弱,会导致延时较大,时序违例。一般的思路是将门控时钟替换为使能时钟。就是将时钟使能信号改为寄存器使能信号。Vivado软件比较智能,可以通过综合策略中设置“gated_ clock_conversion”为a原创 2021-08-24 00:25:27 · 3714 阅读 · 1 评论