《Xilinx - UG471中文翻译》(1)IDELAYE2原语介绍
目录
一、7 系列FPGAs SelectIO 资源
二、selectIO的逻辑资源
2.1 ILOGIC
2.2 IDELAY
2.3 IDELAYCTRL
2.4 ODELAY
2.5 OLOGIC
三、IDELAYE2原语
3.1IDELAYE2属性
3.2IDELAYE2端口
3.2.1延迟控制
3.3时序图
3.4仿真测试
四、高级selectIO逻辑资源
一、7 系列FPGAs SelectIO 资源
SelectIO,就是I/O接口以及I/O逻辑的总称。《UG471--SelectIO》 篇可以分成3部分:第1部分介绍I/O的电气特性,第2部分介绍I/O逻辑资源,第3部分介绍高级的I/O逻辑资源(serializer/deserializer)。
说到I/O,必须先提到FPGA的BANK。在7系列的FPGA中,BANK分为HR(High-range)BANK和HP(High-performance) BANK。HP BANK只能支持小于等于1.8V电平标准的I/O信号,HR BANK则支持小于等于3.3V电平标准的I/O信号。HP BANK专为高速I/O信号设计,支持DCI(数控阻抗),而HR BANK则适合更大众化的所有I/O信号设计。下表列出了HP BANK 和HR BANK的特性。
无论是HR或者HP BNANK,每个BANK都包含50个I/O管脚,每个I/O管脚都可配置成输入、输出。每个BANK的首尾管脚只能作为单端I/O,其余48个I/O则可配置成24对差分I/O。
二、selectIO的逻辑资源
下图为HP BANK的IO 模块,HR BANK与之相比,没有输出延迟ODELAYE2;
I/O逻辑资源主要包含5部分:
2.1 ILOGIC
ILOGIC即输入信号处理逻辑,紧挨着IOB,外界的输入信号最先经过的就是ILOGIC。ILOGIC是由许多的数据选择器和一个IDDR(input Double Data Rate)触发器构成。该触发器既可以双沿捕获输入数据也可以拆分成普通单沿触发器。在HP BANK中,ILOGIC被称为ILOGICE2,在HR BANK中,ILOGIC被称为ILOGICE3。下图给出了ILOGICE3的示意图:
ILOGICE2与ILOGICE3的区别是:ILOGICE3包含了ZHOLD(Zero Hold) delay。
2.2 IDELAY
IDELAY被称为信号延迟模块,它的作用就是把信号延迟一段时间。对于一些需要对齐的输入信号来说,这至关重要。在7系列FPGA中,它被称为IDELAYE2。IDELAYE2可以将信号延迟0~31节,在这区间任意可调,并且在参考时钟为200M时,每节的延迟精度为78ps(1/(32×2×FREF),FREF为IDELAYCTRL的参考时钟)。下图为IDELAYE2例化框图。
IDELAY后文详细讲解。
2.3 IDELAYCTRL
IDELAYCTRL其实是个辅助模块,这么说吧,只要使用了IDELAY或者ODELAY,IDELAYCTRL必须被使用,要不然就无法正常工作。因为IDELAY或者ODELAY的延迟精度是由IDELAYCTRL的输入时钟决定的,一般为200MHz。下图为IDELAYCTRL例化框图。
2.4 ODELAY
ODELAY和IDEALY的使用方式差不多,只不过ODELAY是用作输出信号的延迟。另外,HR BANK内没有ODELAY,HP BANK才有,被称为ODELAYE2。使用ODELAYE2时同样需要例化IDELAYCTRL。下图为ODELAYE2例化框图:
2.5 OLOGIC
LOGIC包括2个部分:一个用于配置输出路径。另外一个用于配置三态控制路径。输出路径和三态控制路径都可以独立配置成沿触发器、ODDR以及组合逻辑输出。
总的来说,I/O逻辑资源就是用来获取或者输出信号。对于一般的低速信号而言,I/O逻辑资源体现不出优势,用不用都不影响最终结果,但是对于高速信号而言,就必须使用I/O逻辑资源了,不能够正确使用它,整个FPGA逻辑代码完全无用。
三、IDELAYE2原语
使用IDELAYE2原语必须例化IDELAYCTRL原语
IDELAYCTRL IDELAYCTRL_inst (.RDY(RDY), // 1-bit output: Ready output.REFCLK(REFCLK), // 1-bit input: Reference clock input.RST(RST) // 1-bit input: Active high reset input);
再看IDELAYE2原语:
3.1IDELAYE2属性
属性 |
值 |
默认值 |
描述 |
IDELAY_TYPE |
FIXED VARIABLE VAR_LOAD VAR_LOAD_PIPE |
FIXED |
FIXED: 固定的延迟值 VAR_LOAD: 动态加载tap值 VARIABLE: 动态调节延时值 VAR_LOAD_PIPE: 与VAR_LOAD模式类似,并CNTVALUEIN值 |
DELAY_SRC |
IDATAIN DATAIN |
IDATAIN |
IDATAIN:输入数据来自IBUF DATAIN:输入数据来自FPGA逻辑 |
HIGH_PERFORMANCE_MODE |
TRUE FALSE |
TRUE |
TRUE: 减少输出抖动 |
IDELAY_VALUE |
0-31 |
0 |
在IIXED模式,指定延时taps; 在VARIABLE模式,加载的tap初始值;另外两种模式,不使用,并置0 |
SIGNAL_PATTERN |
DATA CLOCK |
DATA |
数据or时钟 |
REFCLK_FREQUENCY |
190 to 210, 290 to 310, or 390 to 410 |
200 |
参考时钟,确定每个延时tap的精度; 200M时,1个tap=78ps |
CINVCTRL_SEL |
TRUE FALSE |
FALSE |
使能CINVCTRL_SEL管脚来动态切换输入时钟的极性。 |
PIPE_SEL |
TRUE FALSE |
FALSE |
选择pipeline模式,只用于VAR_LOAD_PIPE模式 |
3.2IDELAYE2端口
端口名称 |
I/O |
位宽 |
描述 |
C |
I |
1 |
时钟输入,用于VARIABLE, VAR_LOAD, VAR_LOAD_PIPE模式 |
REGRST |
I |
1 |
Pipeline寄存器的复位,只用于VAR_LOAD_PIPE 模式。 |
LD |
I |
1 |
在VARIABLE 模式,加在IDELAYE2延时的值; LD,CD,INC配合使用 |
CE |
I |
1 |
使能增加/减少的功能 |
INC |
I |
1 |
增加或减少tap delays数量 |
CINVCTRL |
I |
1 |
动态转换时钟极性 |
CNTVALUEIN |
I |
5 |
动态加载tap值,用于VAR_LOAD模式,见后文 |
IDATAIN |
I |
1 |
输入数据来自IBUF |
DATAIN |
I |
1 |
输入数据来自FPGA逻辑 |
LDPIPEEN |
I |
1 |
使能pipeline寄存器来加载数据 |
DATAOUT |
O |
1 |
延迟后的数据输出 |
CNTVALUEOUT |
O |
5 |
tap值的监控输出 |
3.2.1延迟控制
- FIXED模式: 固定模式,延迟值为输入的VALUE
- VARIABLE模式:由C,LD,CE,INC 共同控制,如下图所示:
3. VAR_LOAD模式:由C,LD,CE,INC,CNTVALUEIN共同控制
3.3时序图
我们再看一个VARIABLE模式,加载延时的时序图:
IDELAY属性如下:
IDELAY_TYPE = VARIABLE,
IDELAY_VALUE = 0,
DELAY_SRC = IDATAIN
时刻t1:
在C的上升沿,检测LD为高,加载IDELAY_VALUE,即输出延时为tap0;
时刻t2:
在C的上升沿,检测到CE &INC同时为高,由上文延时控制部分内容可知,延时为当前值+1,即输出延时为tap1;
时刻t3:
LD,CE,INC均为0,增加延时操作完成,输出延时保持tap1,直到下一次又检测到LD,CE,INC。
3.4仿真测试
Testbench:例化一个idelayctrl,再例化一个idelaye2(VAR_LOAD模式):
IDELAYCTRL IDELAYCTRL_inst (.RDY(rdy), // 1-bit output: Ready output.REFCLK(ref_clk),// 1-bit input: Reference clock input.RST(rst) // 1-bit input: Active high reset input
);IDELAYE2 #(.CINVCTRL_SEL("FALSE"), // Enable dynamic clock inversion (FALSE, TRUE).DELAY_SRC("IDATAIN"), // Delay input (IDATAIN, DATAIN).HIGH_PERFORMANCE_MODE("FALSE"), // Reduced jitter ("TRUE"), Reduced power ("FALSE").IDELAY_TYPE("VAR_LOAD"), // FIXED, VARIABLE, VAR_LOAD, VAR_LOAD_PIPE.IDELAY_VALUE(0), // Input delay tap setting (0-31).PIPE_SEL("FALSE"), // Select pipelined mode, FALSE, TRUE.REFCLK_FREQUENCY(200.0), // IDELAYCTRL clock input frequency in MHz .SIGNAL_PATTERN("DATA") // DATA, CLOCK input signal
)
IDELAYE2_inst_frame_delay (.CNTVALUEOUT(cnt_delay_tap),// 5-bit output: Counter value output.DATAOUT(rx_frame_delay), // 1-bit output: Delayed data output.C(ref_clk), // 1-bit input: Clock input.CE(1'b0), // 1-bit input: Active high enable increment/decrement input.CINVCTRL(1'b0), // 1-bit input: Dynamic clock inversion input.CNTVALUEIN(delay_value), // 5-bit input: Counter value input.DATAIN(1'b0), // 1-bit input: Internal delay data input.IDATAIN(rx_frame_buf), // 1-bit input: Data input from the I/O.INC(1'b0), // 1-bit input: Increment / Decrement tap delay input.LD(delay_load_en[12]), // 1-bit input: Load IDELAY_VALUE input.LDPIPEEN(1'b0), // 1-bit input: Enable PIPELINE register to load data input.REGRST(1'b0) // 1-bit input: Active-high reset tap-delay input
);
可以发现,只要过了idelay,就会增加0.6ns的延迟;
delay_value = 0;Tdelay=0.6ns;
仿真继续往下走,当tap=31时,Tdelay=3.018ns=31x78(ps) +0.6ns;
测试验证正确。
四、高级selectIO逻辑资源
为了方便使用I/O逻辑资源,Xilinx公司专门将几种模块集中起来,构成了功能强大的源语ISERDESE2和OSERDESE2:
《UG471》翻译(2)ISERDESE2原语介绍
《Xilinx - UG471中文翻译》(1)IDELAYE2原语介绍相关推荐
- 《Xilinx - UG471中文翻译》(3)OSERDESE2原语介绍
FPGA大部分拿来做接口,不就是靠的SelectIO么~ 目录 一.前言 二.输出(并-转-串)逻辑资源 2.1数据(并-转-串)转换器 2.2 3-State Parallel-to-Serial ...
- 《Xilinx - UG471中文翻译》(汇总篇)
看到英文手册,内心是虚的,但是真正看进去的时候,发现都是"纸老虎" 目录 前言 一.<Xilinx - UG471中文翻译>(1)IDELAYE2原语介绍 二.< ...
- 《Xilinx - UG471中文翻译》(2)ISERDESE2原语介绍
目录 1.前言 2.ISERDESE2原语介绍 3.原语例化 4.ISERDESE2框图 5. ISERDESE2端口信号 5.1时钟接口 5.2并行数据输出 5.3 数据输出选择 5.4级联接口 6 ...
- 什么意思中文翻译_os常见意思介绍
os是一个英文的缩写在不同环境状态下表达的意思不一样的,比如在计算机中就是操作系统的意思,在聊天情景的时候就是内心独白的意思,下面来看看详细的os是什么意思介绍吧. os是什么意思 一.计算机中的解释 ...
- LAN8742 教程(1) 数据手册 中文翻译
LAN8742 教程(1) 数据手册 中文翻译 LAN8742 教程(1) LAN8742 教程(1) 数据手册 中文翻译 文章目录 LAN8742 教程(1) 数据手册 中文翻译 前言 1.0 介绍 ...
- Notepad++的第三方插件介绍中文翻译
最近发现Markdown编辑器Typora的内测免费版也过期不能使用了,不过这个问题最后通过下载更早的版本解决了. 但是也因此,我彻底了解了一下各大编辑器对Markdown支持的情况,其中了解了一下N ...
- 【转】关于HTTP中文翻译的讨论
http://www.ituring.com.cn/article/1817 讨论参与者共16位: 图灵谢工 杨博 陈睿杰 贾洪峰 李锟 丁雪丰 郭义 梁涛 吴玺喆 邓聪 胡金埔 臧秀涛 张伸 图钉派 ...
- MapReduce:Simplified Data Processing on Large Clusters(中文翻译2)
[注:本人菜鸟一枚,喜欢Hadoop方向的大数据处理,现在正在研读Google影响世界的三篇论文,遂一边阅读一边翻译,错误在所难免,希望大家给予批评,我会增加学习的动力] 1 Introduction ...
- 论文中文翻译——Double-Fetch情况如何演变为Double-Fetch漏洞:Linux内核中的双重获取研究
本论文相关内容 论文下载地址--Web Of Science 论文中文翻译--How Double-Fetch Situations turn into Double-Fetch Vulnerabil ...
最新文章
- 如何提取cocos iOS应用程序APP与游戏安装包里的资源与文件
- 最简单EXT调用WCF
- java 时间l_java中获取系统时间并格式化输出
- PHP的swoole扩展安装方法详细教程
- jQuery与JS的区别,以及jQuery的基础语法
- [html] 可替换元素和不可替换元素有什么不同的特点?
- self 实例对象-代码详细解释
- NDK error Error 126 make: *** Deleting file
- SpringBoot中的文件读取
- eclipse(window平台)快捷键总结
- CSDN博客代码高亮显示
- 数据库技术与应用课程设计-学生信息管理系统
- 计算机高深专业术语,计算机知识专业术语50个
- kodi资源_手把手教您设置KODI播放器,3分钟打造家庭影院级媒体库,流畅播放NAS里的原盘电影!...
- 解决光纤猫恢复出厂功能后的上网问题
- 航测无人机-任务规划模块 竞品分析
- C语言程序设计(第四版,建议复习用,无死角)
- C语言 函数图形绘制系统
- 人工智能领域的会议和期刊(转载)
- ReLuSeLu其他