当前位置:网站首页>FPGA的虚拟时钟如何使用?
FPGA的虚拟时钟如何使用?
2022-06-24 06:55:00 【碎碎思】
在我之前写的FPGA时序约束教程中,有一篇中讲到了虚拟时钟:
但文中对虚拟时钟的应用介绍的还不够详细,因此这里我们再对虚拟时钟做一个更加细致的介绍。
首先,虚拟时钟用于什么地方?
虚拟时钟通常用于设定输入和输出的延时,即set_input_delay和set_output_delay。可能有同学忘记这两个约束的用法了,这里我们再展示一下:
set_input_delay 0.5 -clock clkA [get_ports A]
set_output_delay 1 -clock clkB [get_ports B]其中clkA和clkB就是我们使用create_clock创建的主时钟或者虚拟时钟。
主时钟在创建的时候需要指定时钟输入端口,虚拟时钟不需要指定端口,所以称之为虚拟时钟。那什么场景下要用到虚拟时钟呢?
外部IO的参考时钟并不是设计中的时钟
下图中,外部IO的参考时钟比设计中主时钟的路径上多了一个BUFFER,因此我们需要使用虚拟时钟来进行约束。

create_clock -name sysclk -period 10 [get_ports clkin]
create_clock -name virtclk -period 10
set_clock_latency -source 1 [get_clock virtclk]
set_input_delay -clock virtclk -max 4 [get_ports dina]
set_input_delay -clock virtclk -min 2 [get_ports dina]FPGA I/O路径参考时钟来源于内部衍生时钟,但与主时钟的频率关系并不是整数倍
如果I/O路径参考时钟源于内部的衍生时钟,那set_input_delay和set_output_delay约束中-clock参数后的时钟不能是衍生时钟,比如下图的例子中,输入10MHz时钟经过了MMCM后去采输入的数据。

a) 如果MMCM没有负的相移而且输出的频率也是10MHz,那么直接使用主时钟来约束input delay。
create_clock -period 100.000 -name clk [get_ports clk]
set_input_delay -clock clk -max 2.000 [get_ports datain]
set_input_delay -clock clk -min 1.000 [get_ports datain]b) 如果MMCM输出频率是60MHz,那么这个衍生时钟跟主时钟并不是整数倍关系,这时就需要用到虚拟时钟了
create_clock -period 100.000 -name clk [get_ports clk]
create_clock -name clk_port_vclk -period 16.67
set_input_delay -clock clk_port_vclk -max 2 [get_ports datain]
set_input_delay -clock clk_port_vclk -min 1 [get_ports datain]在不修改时钟特性的情况下针对I/O指定不同的jitter和latency
这个需求我们可以在Constraints Wizards中指定,简单又方便

在设置完成后,可以看到Tcl Command Preview中提示的约束指令。
完

边栏推荐
- [data update] Xunwei comprehensively upgraded NPU development data based on 3568 development board
- Analysis of abnormal problems in domain name resolution in kubernetes
- The monthly salary of two years after graduation is 36K. It's not difficult to say
- 解决笔记本键盘禁用失败问题
- Swift extension networkutil (network monitoring) (source code)
- You get in Anaconda
- Interview tutorial - multi thread knowledge sorting
- Chapitre 2: dessiner une fenêtre
- Notes on the use of date and time base
- decltype用法介绍
猜你喜欢

首次曝光 唯一全域最高等级背后的阿里云云原生安全全景图

Basics of reptile B1 - scrapy (learning notes of station B)
![[data update] Xunwei comprehensively upgraded NPU development data based on 3568 development board](/img/10/6725b51120a6ae8b16d60f5b1ae904.jpg)
[data update] Xunwei comprehensively upgraded NPU development data based on 3568 development board

Screenshot recommendation - snipaste

The first exposure of Alibaba cloud's native security panorama behind the only highest level in the whole domain

对于flex:1的详细解释,flex:1

Examples of corpus data processing cases (reading multiple text files, reading multiple files specified under a folder, decoding errors, reading multiple subfolder text, batch renaming of multiple fil

Signature analysis of app x-zse-96 in a Q & a community

2022 PMP project management examination agile knowledge points (1)

Vulnhub target: boredhackerblog: social network
随机推荐
Chapter 3 curve graph of canvas
不止于观测|阿里云可观测套件正式发布
Chapter 2 line graph of canvas
Vulnhub靶机:BOREDHACKERBLOG_ CLOUD AV
Gossip: what happened to 3aC?
L1-019 who goes first (15 points)
Swift 基础 闭包/Block的使用(源码)
Jenkins is too old try it? Cloud native ci/cd Tekton
研究生英语期末考试复习
In the post epidemic era, the home service robot industry has just set sail
解决笔记本键盘禁用失败问题
1-4metaploitable2 introduction
热赛道上的冷思考:乘数效应才是东数西算的根本要求
1-4metasploitable2介绍
Los Angeles p1051 who won the most Scholarships
Chapter 3: drawing triangles
Swift extension networkutil (network monitoring) (source code)
Unity culling related technologies
Chapter 4 line operation of canvas
Upgrade Mysql to the latest version (mysql8.0.25)