IDDR和ODDR使用

IDDR和ODDR原语是针对7系列芯片使用,spand可以使用IDDR2和ODDR2IDDR三种模式OPPOSITE_EDGEMode传统的输入DDR解决方案或OPPOSITE_EDGE模式是通过ILOGIC模块中的单个输入实现的。数据在时钟的上升沿通过输出Q1提供给FPGA逻辑,在时钟的下降沿通过输出Q2提供给FPGA逻辑。该结构类似于Virtex-6FPGA实现。图1显示…

大家好,又见面了,我是你们的朋友全栈君。

IDDR和ODDR原语是针对7系列芯片使用,spand可以使用IDDR2和ODDR2

IDDR三种模式

OPPOSITE_EDGE Mode
传统的输入DDR解决方案或OPPOSITE_EDGE模式是通过ILOGIC模块中的单个输入实现的。 数据在时钟的上升沿通过输出Q1提供给FPGA逻辑,在时钟的下降沿通过输出Q2提供给FPGA逻辑。 该结构类似于Virtex-6 FPGA实现。 图1 显示了使用OPPOSITE_EDGE模式的输入DDR的时序图。
OPPOSITE_EDGE Mode
SAME_EDGE Mode
在SAME_EDGE模式下,数据在同一时钟边沿上呈现给FPGA逻辑。 该结构类似于Virtex-6 FPGA实现。
图2显示了使用SAME_EDGE模式的输入DDR的时序图。 在时序图中,输出对Q1和Q2不再是(0)和(1)。 相反,第一对呈现的是Q1(0)和Q2(不关心),然后是下一个时钟周期的对(1)和(2)。
SAME_EDGE
SAME_EDGE_PIPELINED Mode
在SAME_EDGE_PIPELINED模式下,数据在同一时钟边沿上呈现给FPGA逻辑。
与SAME_EDGE模式不同,数据对不会分开一个时钟周期。 但是,需要额外的时钟延迟来消除SAME_EDGE模式的分离效果。 图3显示了使用SAME_EDGE_PIPELINED 模式的输入DDR的时序图。 输出对Q1和Q2同时提供给FPGA逻辑。
SAME_EDGE_PIPELINED

ODDR

在介绍ODDR之前,我们先简单了解一下OLOGIC。

OLOGIC块在FPGA内的位置紧挨着IOB,其作用是FPGA通过IOB发送数据到器件外部的专用同步块。OLOGIC 资源的类型有OLOGIC2(位于HP I/O banks)和OLOGIC3(位于HR I/O banks)。

OLOGIC2和OLOGIC3不属于原语,正因为这样,所以它们不能被直接例化。它包含在布局布线后用户可例化的一些元素,例如一个输出触发器(OFD–output flip-flop)或者一个ODDR(output DDR element)。

OLOGIC主要由两个block组成,一个用于配置输出路径。另外一个用于配置三态控制路径。这两个block具有共同的时钟,但是具有不同的使能信号OCE和TCE。两者具有由SRVAL属性精致的异步和同步set和reset(S/R信号)。

输出路径和三态控制路径可以 以 下列模式之一独立配置:

1.边沿触发的D触发器

2.DDR模式(ASAME_EDGE 或 OPPOSITE_EDGE)

3.电平敏感锁存器

4.异步电路/组合逻辑

7系列器件在OLOGIC中有专用寄存器来实现输出DDR寄存器。这个功能在例化ODDR时可见。在使用OLOGIC时,DDR的复用是自动的,不需要手动控制多路复用。这个控制是从时钟产生的。

ODDR原语是由一个时钟输入,下降沿数据由输入时钟的本地反转来计时。反馈到I/O块的所有的时钟被完全复用。例如:在ILOGIC和OLOGIC块之间没有时钟共享。ODDR原语支持OPPOSITE_EDGE 模式、SAME_EDGE模式。

SAME_EDGE模式与Virtex-6架构相同,这个模式允许设计者在ODDR时钟的上升沿向ODDR原语提供数据输入,从而节省CLB和时钟资源,并提高性能。此模式使用DDR_CLK_EDGE属性实现。它也支持三态控制。

通过ODDR把两路单端的数据合并到一路上输出,上下沿同时输出数据,上沿输出a路下沿输出b路;如果两路输入信号一路恒定为1,一路恒定为0,那么输出的信号实际上就是输入的时钟信号。

OPPOSITE_EDGE模式:

在此模式中,时钟边沿被用来以两倍的吞吐量从FPGA逻辑中捕获数据。这种结构与virtex-6的实现比较相似。两个输出都提供给IOB的数据输入或者三态控制输入。

IDDR和ODDR使用

SAME_EDGE模式:

在此模式下,数据可以在相同的时钟边沿从给IOB。相同的时钟沿将数据送给IOB可以避免建立时间违规,并允许用户使用最小的寄存器来执行更高的DDR频率来进行寄存器的延迟,而不是使用CLB寄存器。

 IDDR和ODDR使用

注意:

1、set和reset不能同时置位;

2、ODDR原语的复位需要约12个clock,第一次输入的数据可能会有问题(亲测),但亲测是如此。

3、ODDR的输出必须直接连到输出pad上,不可以再引进逻辑内部。因此会出现do_oddr的输出无法连入OLOGIC中

实际使用中,如果需要引入其他逻辑,可以考虑使用ibuf

 

ODDR原语结构图如下。

Xilinx原语ODDR概述和使用

表2-10列出了ODDR端口信号。

Xilinx原语ODDR概述和使用

表2-11描述了各种属性和ODDR原语的默认值。

Xilinx原语ODDR概述和使用

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/126173.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 扫清盲点,如何正确的从HttpClient 3.x系统升级到HttpClient 4.x

    扫清盲点,如何正确的从HttpClient 3.x系统升级到HttpClient 4.x如果周期比较长的项目,或者这个项目开发人员换过了好几拨人,很有可能出现一些奇怪的问题,比如一个项目中出现了多种Spring注入bean的方式,不同版本的jar冲突等等爬虫项目有的时候更是过犹不及,拿模拟登陆来说,开发人员的迭代,每个人的风格和技术各不相同,模拟登陆的方式也是五花八门,早在之前看到过一个项目的源码,其中使用HttpClient也是各种风格,虽然官方已经强烈建议使用HttpClie…

    2022年7月22日
    13
  • 时间戳转换为Date

    时间戳转换为Date本章主要讲解的是,因为数据库储存时间是以int(11)的形式去储存,后期获取之后转化成DATE形式老是与正确时间对不上。1、获取当前时间的时间戳//除以1000为了获取精确到秒的时间戳,不除以1000得到毫秒的时间戳Stringtimestamp=String.valueOf(newDate().getTime()/1000);returnInteger.va…

    2022年6月17日
    28
  • 视频讲解数学题目的软件哪个好_leetcode简单题

    视频讲解数学题目的软件哪个好_leetcode简单题终于将LeetCode的大部分题刷完了,真是漫长的第一遍啊,估计很多题都忘的差不多了,这次开个题目汇总贴,并附上每道题目的解题连接,方便之后查阅吧~博主还制作了一款网页版APP,方便大家进行查阅,

    2022年8月6日
    5
  • pyquery学习笔记[通俗易懂]

    pyquery学习笔记[通俗易懂]frompyqueryimportPyQueryaspqdata=”’豆瓣

  • 2022年6月5日
    33
  • 开启 MySQL 慢查询日志

    开启 MySQL 慢查询日志开启MySQL慢查询日志开启mysql的慢查询日志,可以记录查询超过指定时间的sql语句,可以方便更好的优化数据库系统的性能。一、参数说明slow_query_log:慢查询日志开启状态slow_query_log_file:慢查询日志存放位置long_query_time:查询超过多少秒才记录二、设置步骤1、查询相关参数配置mysql>showvariab…

    2022年10月9日
    2
  • c语言push_back_pushback是什么意思

    c语言push_back_pushback是什么意思push_back()函数的用法函数将一个新的元素加到vector的最后面,位置为当前最后一个元素的下一个元素push_back()在Vector最后添加一个元素(参数为要插入的值)//在vec尾部添加10vector<int>vec;vec.push_back(10);//在容器中添加10intnum=10;vector<int&gt…

    2025年7月8日
    4
  • 发表回复

    您的邮箱地址不会被公开。 必填项已用 * 标注

    关注全栈程序员社区公众号