FPGA之ODDR「建议收藏」

通过oddr把两路单端的数据合并到一路上输出上下沿同时输出数据上沿输出a路下沿输出b路 如果两路输入信号一路恒定为1,一路恒定为0,那么输出的信号实际上就是输入的时钟信号ODDRPrimitive:Adedicatedoutputregistertotransmitdualdatarate(DDR)signalsfromV

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



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


ODDR

Primitive: A dedicated output register to transmit dual data rate (DDR) signals from Virtex-4 FPGAs

The ODDR primitive is a dedicated output registers to transmit dual data rate (DDR) signals from Virtex-4 FPGAs. Unlike previous generations of Xilinx FPGAs, ODDR primitive’s interface with the FPGA fabric is not limited to opposite edges. ODDR is available with modes that allow data to be presented from the FPGA fabric at the same clock edge. This feature allows designers to avoid additional timing complexities and CLB usage. In addition, IDDR will work in conjunction with Select I/O features of Xilinx Virtex-4 architecture.

ODDR Ports (Detailed Description)

Q – Data Output (DDR)

These pins are the ODDR output that connects to the IOB pad.

C – Clock Input Port

The C pin represents the clock input pin.

CE – Clock Enable Port

When asserted LOW, this port disables the output clock at port O.

D1 – D2 – Data Input

This pin is where the DDR data is presented into the ODDR module. This pin connects to the IOB pad.

R – Reset

Asynchronous reset pin. Reset is assert HIGH

R – Reset

Depends on how SRTYPE is set. See “Available Attributes” table below.

ODDR Modes

The following section describes the functionality of various modes of ODDR. These modes are set by the DDR_CLK_EDGE attribute.

OPPOSITE_EDGE

In the OPPOSITE_EDGE mode, data transmit interface uses the classic DDR methodology. Given a data and clock at pin D1-2 and C respectively, D1 will be sampled at every positive edge of clock C, and D2 will be sampled at every negative edge of clock C. Q changes every clock edge.

SAME_EDGE

In the SAME_EDGE mode, data is still transmitted by opposite edges of clock C. However, both register are clocked with positive clock edge C and an extra register has been placed in front of the D2 input data register. The extra register is clocked with negative clock edge of clock signal C. Using this feature, DDR data can now be presented into the ODDR at the same clock edge.

Port List and Definitions

Name

Type

Width

Function

Q

Output

1

Data Output (DDR)

C

Input

1

Clock input

CE

Input

1

Clock enable input

D1 – D2

Input (each)

1

Data Input

R

Input

1

Reset

S

Input

1

Set

Available Attributes

Name

Description

Possible Values

DDR_CLK_EDGE

DDR clock mode recovery mode selection

OPPOSITE_EDGE, SAME_EDGE

INIT

Q initialization value

1’b0, 1’b1

SRTYPE

Set/Reset type selection

ASYNC, SYNC

VHDL Instantiation Template

 -- ODDR: Output Double Data Rate Output Register with Set, Reset    --       and Clock Enable. Virtex-4    -- Xilinx HDL Libraries Guide version 6.3i     ODDR_inst : ODDR    generic map (       DDR_CLK_EDGE => "OPPOSITE_EDGE", -- "OPPOSITE_EDGE" or "SAME_EDGE"        INIT => '0',      -- Initial value of Q: '0' or '1'       SRTYPE => "SYNC") -- Set/Reset type: "SYNC" or "ASYNC"    port map (       Q => Q,   -- 1-bit DDR output       C => C,   -- 1-bit clock input       CE => CE, -- 1-bit clock enable input       D1 => D1, -- 1-bit data input (positive edge)       D2 => D2, -- 1-bit data input (negative edge)       R => R,   -- 1-bit reset       S => S    -- 1-bit set );      -- End of ODDR_inst instantiation 

Verilog Instantiation Template

 // ODDR: Output Double Data Rate Output Register with Set, Reset    //       and Clock Enable. Virtex-4    // Xilinx HDL Libraries Guide version 6.3i     ODDR ODDR_inst (       .Q(Q),   // 1-bit DDR output       .C(C),   // 1-bit clock input       .CE(CE), // 1-bit clock enable input       .D1(D1), // 1-bit data input (positive edge)       .D2(D2), // 1-bit data input (negative edge)       .R(R),   // 1-bit reset       .S(S)    // 1-bit set       );     // The following defparams specify the behavior of the ODDR    // component.  If the instance name is changed, that     // change needs to be reflected in the defparam statements.     defparam ODDR_inst.DDR_CLK_EDGE = "OPPOSITE_EDGE"; // "OPPOSITE_EDGE" or "SAME_EDGE"     defparam ODDR_inst.INIT = 1'b0; // Initial value of Q: 1'b0 or 1'b1    defparam ODDR_inst.SRTYPE = "SYNC"; // Set/Reset type: "SYNC" or "ASYNC"       // End of ODDR_inst instantiation










原文链接 http://arlen.opcom.blog.163.com/blog/static/33775037201092722024551/

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

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

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


相关推荐

  • 嵌入式学习路线「建议收藏」

    嵌入式学习路线「建议收藏」嵌入式学习路线1.前言2.嵌入式硬件方向3.嵌入式软件方向4.嵌入式软件学习路线4.1.打好软件基础4.2.学习ARM体系结构编程4.3.嵌入式系统的构建4.4.嵌入式驱动程序的开发4.5.嵌入式应用程序的开发4.6.综合项目5.总结1.前言嵌入式技术是各种电子产品的核心技术,也是工业4.0、远程医疗、3D打印等新兴产业的核心技术,具有广阔的发展前景。很多计算机、电子信息类专业的学生都想把嵌入式开发作为自己的职业目标,但是因为嵌入式涉及的知识太多,太杂,太广,很多嵌入式初学者陷入嵌入式知识的海洋中,东学

    2022年6月11日
    28
  • MVC三层架构各层含义[通俗易懂]

    MVC三层架构各层含义[通俗易懂]1.模拟架构图:2.Action/Service/DAO简介:Action是管理业务(Service)调度和管理跳转的。Service是管理具体的功能的。Action只负责管理,而Service负责实施。DAO只完成增删改查,虽然可以1-n,n-n,1-1关联,模糊、动态、子查询都可以。但是无论多么复杂的查询,dao只是封装增删改查。至于增删查改如何去实现一个功能,dao是不管…

    2022年6月25日
    34
  • 深度学习图像标注工具汇总

    深度学习图像标注工具汇总对于监督学习算法而言,数据决定了任务的上限,而算法只是在不断逼近这个上限。世界上最遥远的距离就是我们用同一个模型,但是却有不同的任务。

    2022年6月1日
    33
  • 多线程(一):创建线程和线程的常用方法

    多线程(一):创建线程和线程的常用方法一:为什么要学多线程应付面试:多线程几乎是面试中必问的题,所以掌握一定的基础知识是必须的。了解并发编程:实际工作中很少写多线程的代码,这部分代码一般都被人封装起来了,在业务中使用多线程的机会也不是很多(看具体项目),但是作为一个高级程序员如果不会多线程是说不过去的。二:进程与线程进程进程是资源(CPU、内存等)分配的基本单位,它是程序执行时的一个实例。程序运行时系统…

    2022年4月28日
    44
  • OSI七层_osi七层模型通俗解释

    OSI七层_osi七层模型通俗解释OSI七层

    2022年4月20日
    54
  • 你知道织梦后台安装插件时为什么会出现这个Character postion 686, ‘item’&n

    你知道织梦后台安装插件时为什么会出现这个Character postion 686, ‘item’&n

    2021年9月24日
    42

发表回复

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

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