OFFSET IN 使用举例
本文将结合具体实例阐述OFFSET IN的使用方法。注意:这是我第一次写OFFSET IN约束,本文仅供参考。阅读本文前需要了解时序收敛的基本概念,OFFSET IN和Period的相关知识,可先阅读时序收敛:基本概念,OFFSET约束(OFFSET IN 和OFFSET OUT)这两篇内容。
系列目录
建立时间和保持时间(setup time 和 hold time)
OFFSET约束(OFFSET IN 和OFFSET OUT)
Clock Skew , Clock uncertainly 和 Period
1. 分析
某器件(Device)有信号RXD0-RXD15,RKLSB,RKMSB需要输入到FPGA内,同时有与数据同步的RXCLK,数据为SDR输入。如下图所示,这是一个典型的源同步输入方式,需要给出OFFSET IN约束。

OFFSET IN的相关参数可以到与器件对应的Datasheet内寻找,该器件的输入满足以下关系。RXD0-RXD15,RKLSB,RKMSB在RXCLK上升沿到达前3ns有效,同时在上升沿之后保持3ns。(这一情况对应TXCLK=80MHz,TXCLK = RXCLK)


综合这两点考虑,RXD0-RXD15,RKLSB,RKMSB的OFFSET IN Before 是 3ns(80MHz),同时数据的有效时间为tsu+th = 6ns(80MHz)。
2. 建立时序约束
可以之间在UCF文件中写时序约束,也可以通过软件指定生成。这里介绍后一种方法,采用ISE开发环境,首先打开工程,点击Create Timing Constraints。

由于RXD0-RXD15,RKLSB,RKMSB满足的OFFSET IN是一致的,这里先定义TIMEGRP。点击左侧Grop Constraints by Instance,出现如下界面。由于RXD0-RXD15,RKLSB,RKMSB都是输入pad,选择Input Pads,建立Time name为tlk1_rxd,选择对应的RXD0-RXD15,RKLSB,RKMSB完成即可。(注:该工程中有两个器件,这里对应tlk1_dclkin为RXCLK,tlk1_rklsb为RKLSB,tlk1_rkmsb为RKMSB,tlk1_rxd[15:0]为RXD0-RXD15.)

之后选择OFFSET IN,定义OFFSET IN约束。打开界面,选择源同步,SDR方式,Clock edge为Center aligned(这个可以通过右侧的时序图确定)。点击下一步。(注,tlk1_dclkin在FPGA内部作为时钟,需要先写时序约束,这里假设频率为100MHz,占空比1:1。)

之后确定相关参数,Input clock pad为tlk1_dclkin(时钟约束已经写好),输入pad为tlk1_rxd。第1节分析结果可得在135MHz下offset in为2.5ns,数据有效时间为5ns。这里采用这一数值,填入对应方框中,确认保存即可。

3. 结果
生成约束后,可以打开UCF文件,观察生成结果如下所示。首先是tlk1_dclkin的周期约束,同时定义了占空比为1:1。之后确定了TIMEGRP,最后指定了OFFSET IN约束。
NET "tlk1_dclkin" TNM_NET = tlk1_dclkin;
TIMESPEC TS_tlk1_dclkin = PERIOD "tlk1_dclkin" 10 ns HIGH 50%;
TIMEGRP "tlk1_rxd" = PADS("tlk1_rxd<15>") PADS("tlk1_rxd<0>") PADS("tlk1_rxd<1>") PADS("tlk1_rxd<2>") PADS("tlk1_rxd<3>") PADS("tlk1_rxd<4>") PADS("tlk1_rxd<5>") PADS("tlk1_rxd<6>") PADS("tlk1_rxd<7>") PADS("tlk1_rxd<8>") PADS("tlk1_rxd<9>") PADS("tlk1_rxd<10>") PADS("tlk1_rxd<11>") PADS("tlk1_rxd<12>") PADS("tlk1_rxd<13>") PADS("tlk1_rxd<14>") PADS("tlk1_tklsb") PADS("tlk1_tkmsb");
TIMEGRP "tlk1_rxd" OFFSET = IN 2.5 ns VALID 5 ns BEFORE "tlk1_dclkin" RISING;
OFFSET IN 使用举例的更多相关文章
- OFFSET约束(OFFSET IN 和OFFSET OUT)
OFFSET 的意思是偏移.对于同步时序电路来说,数据和时钟之间的偏移量是必须要关注的.OFFSET IN和OUT分别对应的是输入和输出FPGA数据和时钟之间的偏移关系,本文将分析这一种关系.阅读本文 ...
- 特殊约束From To
说实话这个不太懂,没用过也没有遇到相应的情况(或者说我不知道).大家可以更多的去参考特定约束FROM TO和MicroZed开发板笔记,第72部分:多周期约束等内容. 本文待修正 系列目录 ...
- Clock Skew , Clock Uncertainty和 Period
本文将介绍FPGA中和时钟有关的相关概念,阅读本文前需要对时序收敛的基本概念和建立.保持关系有一定了解,这些内容可以在时序收敛:基本概念,建立时间和保持时间(setup time 和 hold tim ...
- 建立时间和保持时间(setup time 和 hold time)
建立时间和保持时间贯穿了整个时序分析过程.只要涉及到同步时序电路,那么必然有上升沿.下降沿采样,那么无法避免setup-time 和 hold-time这两个概念.本文内容相对独立于该系列其他文章,是 ...
- iOS 一些struct类型的NSLog输出格式-b
我们经常会输出一些坐标尺寸信息之类的,比如view的frame,是CGRect类型的,用frame.oringial.x 和frame.size.width来做NSLog参数好麻烦,还好苹果对这些常用 ...
- 读书笔记:php_tizag_tutorial
昨天在实验室花了一天时间看了英文版的php_tizag_tutorial,因为上学期用php和bootstrap写过一个租房网站,对php还是比较熟悉.现在总结一下php_tizag_tutorial ...
- MySQL中如何实现select top n ----Limit
Mysql中limit的用法详解 在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. LIMIT 子句可以被用于强制 S ...
- iOS 一些struct类型的NSLog输出
我们经常会输出一些坐标尺寸信息之类的,比如view的frame,是CGRect类型的,用frame.oringial.x 和frame.size.width来做NSLog参数好麻烦,还好苹果对这些常用 ...
- Go语言调度器之盗取goroutine(17)
本文是<Go语言调度器源代码情景分析>系列的第17篇,也是第三章<Goroutine调度策略>的第2小节. 上一小节我们分析了从全局运行队列与工作线程的本地运行队列获取goro ...
随机推荐
- JavaScript Patterns 5.2 Declaring Dependencies
It’s a good idea to declare the modules your code relies on at the top of your function or module. T ...
- 编译hadoop2.6.0
具体情况比较曲折:hadoop2.6.0编译不过 错误如下: 这个kms模块始终编译不过,最后得出结论国内的aliyun maven仓库有问题, 在编译hadoop2.2.0 可以通过,因为这个版本的 ...
- PKG_COLLECTION_LHR 存储过程或函数返回集合类型
存储过程或函数可以返回集合类型,方法很多,今天整理在一个包中,其它情况可照猫画虎. CREATE OR REPLACE PACKAGE PKG_COLLECTION_LHR AUTHID CURREN ...
- MySQL binlog 组提交与 XA(两阶段提交)
1. XA-2PC (two phase commit, 两阶段提交 ) XA是由X/Open组织提出的分布式事务的规范(X代表transaction; A代表accordant?).XA规范主要定义 ...
- iOS 解决导航栏左右 BarButtonItem偏移位置的问题
iOS7 之后,我们直接在导航栏添加barbuttonItem时候,会发现有一定偏移量, 比如: self.navigationItem.leftBarButtonItem = UIBarButton ...
- linux cpu占有率居高不下 调试
今天调试程序,使用top命令后,发现程序的cpu占有率很高,一直在99,这很可怕,所以来调试. 使用top命令,得如下结果 PID USER PR NI VIRT RES SHR S %CPU %ME ...
- mysql全量备份脚本
#!/bin/bash# Program# use mysqldump to Fully backup mysql data per week!# History# PathBakDir=/data/ ...
- mysql服务器配置
mysql的配置文件 /etc/mysql/my.cnf 发现如下配置 # Instead of skip-networking the default is now to listen only ...
- 开发Eclipse自定义控件
摘自:http://www.ibm.com/developerworks/cn/opensource/os-eclipcntl/ 我们在开发自定义控件时主要考虑以下问题: 1. 自定义控件的绘制:通常 ...
- USACO1.2Milking Cows
题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...