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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 博客园现代化建设——Entity Framework

    博客园现代化建设——Entity Framework

    2021年8月10日
    49
  • Java分布式锁

    Java分布式锁Java分布式锁我的理解应该叫集群锁或者跨实例锁锁的作用是在多线程情况下,控制线程同步访问变量,执行代码块、方法,例如synchronized,在单个jvm进程中,这样是奏效的。但是在分布式环境中,单个服务往往都是要部署多台实例的,在有多个jvm进程的集群里,synchronized就达不到我们的要求了。synchronized只能控制当前jvm进程中的线程,对于其它jvm进程中的线程,它无能为力。也就是说有可能一个jvm中的线程是同步执行的,在此过程中,或许会有集群里其它jvm的线程执行到

    2022年6月10日
    44
  • c语言中console.writeline(console.writeline())

    C#中Console.WriteLine()的用法

    2022年4月17日
    188
  • mysql的端口是多少_如何查看db2数据库的端口

    mysql的端口是多少_如何查看db2数据库的端口查看mysql端口号(mysql端口号是多少)2020-05-0722:11:45共10个回答如何查看mysql的端口号1使用命令showglobalvariableslike’port’;查看端口号2修改端口,编辑/etc/my.cnf文件,早期版本有可能是my.conf文件名,增加端口参数,并且设定端口,注意该端口未被使用,保存退出.总结:注意修改的端口不要被占用,而且要有规划,不要轻意的总…

    2022年10月3日
    0
  • 树莓派python编程自学-树莓派Python编程指南 中文PDF扫描版

    《树莓派Python编程指南》共12章:第1~3章深入介绍如何在树莓派上使用Python,为学习其他知识打下基础;第4章介绍使用Qt工具包开发图形用户界面;第5章介绍在Python中创建游戏;第6章介绍如何利用GPU来使用OpenGL创建3D场景;第7章讲解如何从网页上抓取信息或使用树莓派为全世界提供内容和服务;第8章介绍使用Python在树莓派中构建自己的游戏世界;第9章使用Python在树莓派…

    2022年4月8日
    131
  • 小技巧 – Chrome 浏览器绕过“请在微信客户端打开链接”

    小技巧 – Chrome 浏览器绕过“请在微信客户端打开链接”微信和QQ内置浏览器UA~安卓QQ内置浏览器UAMozilla/5.0(Linux;Android5.0;SM-N9100Build/LRX21V)>AppleWebKit/537.36(KHTML,likeGecko)Version/4.0>Chrome/37.0.0.0MobileSafari/537.36V1_AND_SQ_5.3.1_196_YYB_D>QQ/5.3.1.2335NetType/WIFI安卓…

    2022年6月7日
    38

发表回复

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

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