FPGA跨时钟域处理与仿真

2016-10-25 09:06 阅读 357 次 评论 0 条

最近跟着视频学习FPGA知识,前面在zc702板卡上仿照教程写了PL使用LED跑马灯。后来看了vivaod的仿真教程还没实验,正好最近用到了FPGA的跨时钟域处理,决定将这个小模块做一下仿真。

首先新建vivado的工程,和普通的工程新建过程一样

clip_image002

将已经生成cross_clk.v文件添加进来。这个文件在PLDMA的工程中已经使用过,本日志中的工程代码也包含这个文件。

然后添加测试激励文件testtench

clip_image004

选择新建testtench文件。

测试激励中需要增加双路时钟,一个快速时钟,一个慢速时钟。

通常的时钟产生方法写两遍,是不能产生两个时钟源的。正确的方法如下

clip_image006

编写输入din信号,作为一个脉冲信号

clip_image008

实际为两个信号,一个以快速时钟源为参考,另一个以慢速时钟源为参考产生脉冲信号。

然后在“simulation”下选择“Run Behavioral Simulation”进行仿真

clip_image010

对于输入时钟为1个脉宽,即只有一个上升沿的信号,其行为仿真如下

clip_image012

两个脉冲的仿真波形

clip_image014

3个脉冲宽度的情况下,对于慢速时钟下的已经看不出有两次上升沿了,而是合并成了一个两个慢时钟周期的信号。

clip_image016

这个行为仿真这时单纯的逻辑功能仿真,如果与具体器件型号关联后,进行“Post-synthesis Function”仿真,其结果与这个仿真还有所区别,可以自己实验一下。

测试工程下载文件如下:

链接: https://pan.baidu.com/s/1eSke1qi 密码: 2mah

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:FPGA跨时钟域处理与仿真 | 起点博客
分类:应用笔记 标签:

发表评论


表情