《Xilinx - UG471中文翻译》(1)IDELAYE2原语介绍

news/2024/7/5 14:26:04 标签: fpga

目录

一、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延迟控制

  1. FIXED模式: 固定模式,延迟值为输入的VALUE
  2. 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原语介绍​​​​​​​


http://www.niftyadmin.cn/n/1076209.html

相关文章

范数 L1 L2

在线性代数,函数分析等数学分支中,范数(Norm)是一个函数,是赋予某个向量空间(或矩阵)中的每个向量以长度或大小的函数。对于零向量,令其长度为零。直观的说,向量或矩阵的…

Xilinx FPGA平台DDR3设计保姆式教程(1)DDR3基础简介

如果我们只是拿来用ddr搬砖,那么它就简单,知道IP怎么使用就好,但是要想知其所以然,理论知识是必备的,这也是我们初学者所欠缺的东西,慢慢修炼吧! 汇总篇: Xilinx平台DDR3设计保姆式…

python学习资料资源

廖雪峰python教程: http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 简明python教程: http://www.kuqin.com/abyteofpython_cn/index.html 菜鸟教程: http://www.runoob.com/python/python-tutorial.html 知乎: https://www.zhihu.com/qu…

如何将hive表中的数据导出

近期经常将现场的数据带回公司测试,所以写下该文章,梳理一下思路。 1.首先要查询相应的hive表,比如我要将c_cons这张表导出,我先查出hive中是否有这张表。 查出数据,证明该表在hive中存在。 2.查询该表的表结构&#x…

Docker容器技术概述

Docker容器技术概述Docker简介Docker的应用场景Docker 的优点理解Docker的工作原理Docker简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c…

cpu_ops、suspend_ops、arm_idle_driver以及machine_restart/machine_power_off到底层PSCI Firmware分析...

在内核中针对的cpu的操作,比如arm_cpuidle_init、arm_cpuidle_suspend、boot_secondary、secondary_start_kernel、op_cpu_disable、op_cpu_kill、cpu_die、smp_cpu_setup、smp_prepare_cpus的都会回落到对cpu_ops的调用。 cpu_ops将针对底层cpu的操作抽象为一系列回…

docker--基础环境安装

docker--基础环境安装安装docker环境准备环境查看1、卸载旧的版本2、需要的安装包3、设置镜像仓库4、安装DOCKER引擎(docker-ce 社区版的 -ee 企业版的)5、 启动docker6、使用docker version查看是否安装成功7、容器镜像加速安装docker 环境准备 1、会…

Asp.net mvc 知多少(四)

本系列主要翻译自《ASP.NET MVC Interview Questions and Answers 》- By Shailendra Chauhan,想看英文原版的可访问http://www.dotnettricks.com/free-ebooks自行下载。该书主要分为两部分,ASP.NET MVC 5、ASP.NET WEB API2。本书最大的特点是以面试问答…