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/

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • virtualenv技巧

    virtualenv技巧

  • 解决SQLyog连接MySQL8时报错:错误号码2058

    解决SQLyog连接MySQL8时报错:错误号码2058远在天边,近在眼前。

    2022年10月23日
  • Java异常类型及处理

    Java异常类型及处理前言:Java异常,大家都很熟悉。但是对于具体怎么分类的,JVM对其怎么处理的,代码中怎么处理的,应该怎么使用,底层怎么实现的等等,可能就会有些不是那么清晰。本文基于此详细捋一下异常类型,实现以及使用时应怎么注意。一、异常实现及分类1.先看下异常类的结构图上图可以简单展示一下异常类实现结构图,当然上图不是所有的异常,用户自己也可以自定义异常实现。上图已经足够帮我们解释和理解异常…

  • oracle补位函数 不足位数补0[通俗易懂]

    oracle补位函数 不足位数补0[通俗易懂]不足位数补位的函数:1.左补位函数LPAD(原始字符,填充后长度,填充字符)2.右补位函数RPAD(原始字符,填充后长度,填充字符)如运行selectlpad(‘123’,6,0)col1fromdual;结果selectrpad(‘123’,6,0)col1fromdual;结果…

  • ui bug_行为测试

    ui bug_行为测试在大多数开发、测试眼中,UI测试的重要性远小于功能测试、性能测试等,但只要够细心,总能发现一些UIbug或者UI可以改进的地方提高用户体验。录入界面  1.1输入字段要完整,且要与列表字段相符合(参照数据库进行检查)  1.2必填项一律在后面用*表示(必填项为空在处理之前要有相关的提示信息)  1.3字段需要做校验,如果校验不对需要在处理之前要有相关的

    2022年10月30日
  • 如何在ASP.NET MVC中获取客户端的IP地址?

    如何在ASP.NET MVC中获取客户端的IP地址?I’mtotallynewtotheASP.NETMVCstack,andIwaswonderingwhathappenedtothesimplePageobje

发表回复

您的电子邮箱地址不会被公开。

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