当前位置:网站首页>FPGA的虚拟时钟如何使用?
FPGA的虚拟时钟如何使用?
2022-08-10 08:42:00 【yundanfengqing_nuc】
在我之前写的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后去采输入的数据。
image-20211206203529124
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
中指定,简单又方便
image-20211206212729797
在设置完成后,可以看到Tcl Command Preview
中提示的约束指令。
边栏推荐
- 浅析JWT安全问题
- FFT模板
- PHP笔记 28 29 30 31
- DAY25: Logic vulnerability recurrence
- 1-31部 1-31套 和硬件工程师90天学习资料及笔记汇总
- 【Unity入门计划】Collision2D类&Collider2D类
- 菜鸟、小白在autojs和冰狐智能辅助之间如何选择?
- 本地生活商家如何通过短视频赛道,提升销量曝光量?
- Uni applet Tencent map polygon background transparency
- A File Online Query Display and Download Function Realized by Delphi
猜你喜欢
Spotify expresses its architectural design using the C4 model
PTA 习题2.2 数组循环左移
详解构建mock服务最方便的神器——Moco
J9 Number Theory: Macro Analysis of DAO Characteristics
How to use [jmeter regular expression extractor] to solve the problem of returning the value as a parameter
DAY25: Logic Vulnerability
1 活动时间与安排
2022-08-01 Advanced Network Engineering (23) Advanced VLAN Technology - VLAN Aggregation, MUX VLAN
js函数聚合的三种实现方式
【OAuth2】十九、OpenID Connect 动态客户端注册
随机推荐
PTA 习题2.1 简单计算器
1 活动时间与安排
Unity—UGUI控件
ShardingSphere入门
Uni-app develops WeChat applet using local images as background images
J9 digital science: Web 3.0 is about data ownership or decentralized?
ARM Architecture 2: Processor Core and Assembly Instruction Set
【OAuth2】二十、OAuth2扩展协议 PKCE
2022-08-01 网工进阶(二十四) STP进阶知识
debezium-connector-mysql拉起docker报错:debezium启动docke
阿里云数据库 RDS SQL Server 版的服务器绑定域名www.cxsdkt.cn.的呢?
刷题工具h
Delphi实现的一个文件在线查询显示下载功能
VMware ESX Server常用命令行
[深入研究4G/5G/6G专题-56]: L3信令控制-5-无线承载管理
1-31部 1-31套 和硬件工程师90天学习资料及笔记汇总
js reduce
SQL SERVER 数据库,表的数据发生增删改,该表的索引会在ldf日志中记录吗?
Ask next CDC mysql to Doris. Don't show the specific number of lines, how to do?
Is the write performance of raid5 faster than raid10?