Virtex系列的FPGA的 基本I/O逻辑资源都包括组合输入、输出资源,三态输出控制、寄存器输入输出控制、SDR输入输出、DDR输出三态控制等。此外V5、V6器件还包括了IODELAY提供了对高分辨率可调整延迟单元的用户控制、SAME_EDGE 输出DDR模式,SAME_EDGA和SAME_EDGA_PIPELINED输入DDR模式等,以下主要是总结个人学习记录。

一、输入输出延迟单元IODELAY

每个I/O模块都包含一个可编程绝对的延迟单元IODELAY。它可以连接到ILOGIC/ISERDES或者OLOGIC/OSERDES模块。IODELAY有64个tap的环绕单元。通过选择IDELAYCTRL的参考时钟,可以改变这64个tap的延迟分辨率。IODELAY可以用于组合输入/输出通路、寄存器输入/输出通路,也可以在内部资源中直接使用。

(1) 当用作IDELAY时,数据从IBUF或者内部资源输入,然后输出到ILOGIC/ISERDES。

*零保持时间模式,此时IDELAY_TYPE =Default,这种模式不需要例化IDELAYCTRL基元。

*固定时间延迟模式,此时IDELAY_TYPE= FIXED,这种模式下,配置时将延迟值预设置成由属性IDELAY_VALUE确定的Tap数。使用时必须例化IDELAYCTRL基元。

*可变延迟模式,可以在配置后通过控制信号CE和INC来改变延迟,使用时必须例化IDELAY_CTRL。

(2) 当中ODELAY时,数据从OLOGIC/OSERDES输入。配置时将预设值成由ODELAY_VALUE确定的Tap数,使用时必须例化IDELAYCTRL元件。

(3) 当中双向延迟时,将IOB配置成双向模式,IODELAY交替延迟输入输出通过的延迟。有下面两种可配的模式

*固定时间延迟模式,此时IDELAY_TYPE= FIXED,这种模式下,配置时将延迟值预设置成由属性IDELAY_VALUE确定的Tap数。使用时必须例化IDELAYCTRL基元。

*可变延迟模式,可以在配置后通过控制信号CE和INC来改变延迟,使用时必须例化IDELAY_CTRL。

一般情况下,如果只是例化了一个IDELAYCTRL,那么可以不添加LOC约束,但是当例化的IDELAYCTRL超过一个的时候就必须添加位置约束,否则会ISE软件在综合实现的时候就会报错。

二、IDELAYCTR的使用

如果IOBDELAY_TYPE属性被设置为FIXED或者VARIABLE,则必须在代码中例化IDELAYCTRL模块,IDELAYCTRL模块在其区域里连续标定各个延迟单位,简单总结下IDELAYCTRl的使用方法。

(1)    无LOC约束的IDELAYCTRL

当例化无LOC约束的IDELAYCTRL时,HDL代码中必须只例化一个IDELAYCTRL实例,ISE实现时会自动复制到整个器件的延迟单元时钟区域当中,这样每一个时钟区域都有消耗一个全局时钟资源比,使用的布局布线资源也比较高,进而使得芯片的功耗也比较大。

当忽略RDY端口时,所以复制的IDELAYCTRL实例的RDY信号均不连接,但是当连接RDY端口时,例化一个宽度等于时钟区域数的与门,ISE实现时会自动连接到已经例化的所有IDELAYCTRL实例的RDY端口的信号与门输出。

(2)    有LOC约束的IDELAYCTRL

使用IDELAYCTRL模块最有效的方法是定义并且锁定代码中例化的所有的IDELAYCTRL实例的位置,Xilinx官方推荐在使用延迟单元时,应该定义并且锁定所有的ISERDES和IDELAY元件的位置,使用有LOC约束的IDELAYCTRL

添加有LOC的IDELAYCTRL需要注意:

一个IDELAYCTRL基元可同时覆盖一个clock region,而一个clock region包含不止一个IOB,在约束IDELAYCTRL基元LOC时,需要仔细定位该IOB属于哪个LOC的IDELAYCTRL。

(3)    位置约束

每一个IDELAYCTRL模块都有XY坐标位置,为了约束位置,IDELAYCTRL实例可以附带LOC属性,为IDELAYCTRL附加LOC属性可以在UCF文件中加入 INST “Instance name” LOC = IDELAYCTRL_X#Y#; 或者在HDL设计文件中直接嵌入LOC约束

下列语法用于在HDL设计文件中嵌入LOC约束。

// synthesis attribute loc of instance_name is "IDELAYCTRL_X#Y#";

比如一个完整的实例:

IODELAY #(

.DELAY_SRC       ( "O"            ),    //IODELAY源是ODATAIN

.IDELAY_TYPE            ( "FIXED"   ),    //静态延迟

.ODELAY_VALUE ( 16             ),    //固定延迟数为16个tap

.REFCLK_FREQUENCY ( 200.0 )    //IDELAYCTRL参考时钟200MHz

)IODELAY_INST

(

.C                       ( 1'b0          ),            //可变模式下使用的时钟输入

.CE                    ( 1'b0          ),            // 是否启动递增/递减功能

.DATAIN          ( 1'b0           ),

.IDATAIN         ( 1'b0          ),

.INC                   ( 1'b0           ),           //tap延迟的递增/递减选择

.ODATAIN       ( LED          ),           //来自OLOGIC/OSERDES的信号

.RST                    ( 1'b0           ),

.T                         ( 1'b0           ),           //用作ODELAY

.DATAOUT      ( LED          )

);

IDELAYCTRL IDELAYCTRL_inst

(

.RDY                 ( RDY                ), // 1-bit ready output

.REFCLK           ( System_Clk      ), // 1-bit reference clock input

.RST                   ( 1'b0                  ) // 1-bit reset input

);

三、高级的SelectIO逻辑资源(ChipSync)

高级SelectIO逻辑资源包括ISERDES和OSERDES,它可以支持非常高的I/O数据速率,允许内部逻辑以低于I/O的速率运行。BitSlip子模块,可以根据培训模式检测数据重新对齐边界。

(1)    ISERDES功能

专用的解串器/串并转换器:ISERDES可以实现高速数据传输,完全不需要FPGA内部逻辑与输入数据频率匹配,此转换器支持SDR、DDR两种模式。在SDR模式下,串并转换器可以创建2、3、4、5、6、7、8位宽的并行字,在DDR模式下,串并转换器可以创建4、6、8、10位宽的并行字。

BitSilp子模块:这个模块支持对进入FPGA内部资源的并行数据进行重新排序的功能,可以用来培训模式的源同步端口。

(2)    ISERDES宽度拓展方法

每一个I/O模块中都有一主一从两个ISERDES模块,对于构建大于1:6串行转换器时需要用级联的方式将两个ISERDES连接起来。通过主ISERDES的SHIFOUT端口连接到从ISERDES的SHIFIN端口,可以将串并转换器的最大扩展到1:10(DDR模式)和1:8(SDR模式)。   扩展串并转换器位宽的原则如下:

A、              两个ISERDES模块必须是相邻的主从对。

B、 将主ISERDES的SERDES_MODE设置为MASTER,将从ISERDES的SERDES_MOD设置为Slaver。

C、 将Slave的shifin端口连接到master的shifout端口。

D、              Slave仅仅使用端口Q3~Q6作为输入端口。

E、 Master和Slave的数据宽度相等。

(3)    OSERDES模块

每一个OSERDES模块都包括一个用于数据和三态控制的专用转换器。数据和三态都可以配置成SDR和DDR模式,数据串行化可达6:1 ,如果使用宽度扩展的话,可以到达10:1,三端口串行化可达4:1。

(4)    OSERDES模块的扩展方法:Oserdes扩展和Iserdes扩展方式一致。

Xilinx Select IO的介绍相关推荐

  1. 5种网络IO模型介绍

    5种网络IO模型介绍 IO 模型分为以下几种: 阻塞IO 非阻塞IO 信号驱动IO IO多路复用 异步IO 前四个为同步IO 1 阻塞IO 一个IO操作需要两步: 等待数据和拷贝数据. blockin ...

  2. IO流介绍、java常用的几个IO流类之间的区别,以及各自的用法、使用场景

    1. IO流介绍 IO流(Input Output Stream,输入输出流),表示数据在程序内存和磁盘之间的传输.按照数据流的流向不同分为输入.输出流,输入流表示程序从磁盘读入数据,输出流表示程序往 ...

  3. Xilinx平台Aurora IP介绍(汇总篇)

    Aurora IP核使用超简单的,COME ON! 目录 一.Xilinx平台Aurora IP介绍(一)Aurora基础知识 二.Xilinx平台Aurora IP介绍(二)时钟与复位 三.Xili ...

  4. PCIe基础知识及Xilinx相关IP核介绍

    补发以下以前学习PCIe总结的知识. PCIe学习笔记系列: PCIe基础知识及Xilinx相关IP核介绍 概念了解:简单学习PCIe的数据链路与拓扑结构,另外看看有什么相关的IP核. [PG054] ...

  5. 学习PCL库:PCL库中的IO模块介绍

    公众号致力于点云处理,SLAM,三维视觉,高精地图等领域相关内容的干货分享,欢迎各位加入,有兴趣的可联系dianyunpcl@163.com.未经作者允许请勿转载,欢迎各位同学积极分享和交流. IO模 ...

  6. Xilinx平台Aurora IP介绍(一)Aurora基础知识

    Aurora IP使用起来超简单的,Come On! 汇总篇: Xilinx平台Aurora IP介绍(汇总篇) 目录 一.Aurora协议 二.Xilinx平台Aurora  IP介绍 三.Auro ...

  7. Xilinx平台Aurora IP介绍(三)Aurora配置及接口介绍

    来咯来咯,搬砖全靠它! 汇总篇: Xilinx平台Aurora IP介绍(汇总篇) 目录 一.Aurora配置 1.1第一页配置 1.2第二页配置 1.3第三页配置 二.Framing接口 2.1 接 ...

  8. Spring IO 平台介绍

    Spring IO 平台介绍 Spring IO是可集成的,构建现代化应用的版本平台.它是一个模块化的.企业级分布式系统,包含一系列的依赖,使得开发者仅对自己需要的部分进行完全的部署控制.Spring ...

  9. Xilinx FPGA用户原语介绍

    原语,即primitive.不同的厂商,原语不同:同一家的FPGA,不同型号的芯片,可以也不一样:原语类似最底层的描述方法.使用原语的好处,可以直接例化使用,不用定制IP:即可通过复制原语的语句,然后 ...

最新文章

  1. java basicstroke_使用java.awt.BasicStroke动画化虚线
  2. -bash: /usr/java/jdk1.8.0_101/bin/java: Permission denied
  3. 蓝桥杯练习系统习题-基础训练
  4. ubuntu9.04换源
  5. sql取出某一列不重复数据的ID解决办法
  6. 腾讯吃鸡 android,腾讯吃鸡手游《光荣使命》正式上线:安卓/iOS不限号测试
  7. mac编译安装php环境,在Mac上编译安装PHP7的开发环境
  8. python安装itchat包_Python与微信——itchat包
  9. MAC Mail签名添加图片,不显示为附件操作
  10. matlab做拉普拉斯反演,拉普拉斯变换性质和反演.ppt
  11. Python人脸识别黑科技(二):教你使用python+Opencv完成人脸解锁
  12. 知识图谱介绍-我的学习笔记
  13. linux--Flex and Bison
  14. 文章标题ffmpeg文档37-视频滤镜
  15. Html标签分类及总结
  16. 电网电压的三相静止对称坐标系和三相电网电压的相量表示法
  17. 分享:笔记本花屏的解决方法
  18. 数据库(DataBase)-数据库备份
  19. spire.office.for.net 5.9.2完美解决WEB部署问题,用于Crack版!
  20. Flask——创建表单模型类与模板使用

热门文章

  1. 你曾经是那手握烙铁的少年
  2. 第十六届全国大学生智能车安徽赛区承办学校参赛队伍
  3. 检测不到信号,是加点噪声?还是滤除噪声?
  4. 联想win10摁F2一直无法进入BIOS
  5. js php 实现日历签到_PHP 可能在未来十年内消失?
  6. 注解 java 反射_java注解和反射
  7. axure中怎么把图片变圆_orcad中怎么创建带图片的Title Block?
  8. flutter 按钮_flutter好用的轮子推荐二-点赞按钮动画
  9. 防火墙 linux 端口,Linux配置防火墙端口 8080端口
  10. css 图片居中放大,不同比例图片居中缩放显示的三种方法