0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

《Xilinx—UG471中文翻译》(3)OSERDESE2原语介绍

C29F_xilinx_inc 来源:赛灵思 作者:赛灵思 2022-02-16 16:21 次阅读

FPGA大部分拿来做接口,不就是靠的SelectIO么~

二、输出(并-转-串)逻辑资源
7系列设备中的OSERDESE2是专用的 并-转-串 转换器,使用特定的时钟和逻辑资源设计来使得高速源同步接口实现变得容易。每个OSERDESE2模块都包含一个特定的串化器(serializer)用于数据和三态(3-state)控制。数据和3态(3-state)串化器都可以配置成SDR和DDR模式。数据串行化的位宽可以达到8:1(如果使用原语模块级联,则可以到10:1和14:1)。3态的串行化最高可达14:1,有一个专用的DDR3模式可用于支持高速内存应用程序。

The OSERDESE2 in 7 series devices is a dedicated parallel-to-serial converter with specific

clocking and logic resources designed to facilitate the implementation of high-speed

source-synchronous interfaces. Every OSERDESE2 module includes a dedicated serializer

for data and 3-state control. Both data and 3-state serializers can be configured in SDR and

DDR mode. Data serialization can be up to 8:1 (10:1 and 14:1 if using OSERDESE2 Width

Expansion). 3-state serialization can be up to 14:1. There is a dedicated DDR3 mode to

support high-speed memory applications.

Figure 3-13 shows a block diagram of the OSERDESE2, highlighting all the major

components and features of the block.

下图是 OSERDESE2的模块图,显示了主要的组成部件和特性:

pYYBAGIMohSAekpWAADG7NZR0NU226.png

2.1数据(并-转-串)转换器
在一个OSERDESE2块中,数据(并-转-串)转换器接收2-8位的并行数据 (14位:使用OSERDESE2 位宽扩展),将数据串行化,然后通过OQ输出接口传递给IOB。并行数据串行化是从从最低位开始。也就是说:从D1管脚输入的数据最先传输到OQ输出管脚。数据并串转换器支持两种模式:SDR和DDR。

OSERDESE2数据比率转换使用两个时钟:CLK 和 CLKDIV。CLK是高度的串行时钟,CLKDIV是分频并行时钟。CLK和CLKDIV必须相位对齐。

在使用之前,必须对OSERDESE2进行复位操作。OSERDESE2包含一个内部计数器用来控制数据流。如果没有成功对复位同步(CLKDIV时钟域)释放,则会引起非预期的输出。

The data parallel-to-serial converter in one OSERDESE2 blocks receives two to eight bits of

parallel data from the fabric (14 bits if using OSERDESE2 Width Expansion), serializes the

data, and presents it to the IOB via the OQ outputs. Parallel data is serialized from lowest

order data input pin to highest (i.e., data on the D1 input pin is the first bit transmitted at

the OQ pins). The data parallel-to-serial converter is available in two modes: single-data

rate (SDR) and double-data rate (DDR).

The OSERDESE2 uses two clocks, CLK and CLKDIV, for data rate conversion. CLK is the

high-speed serial clock, CLKDIV is the divided parallel clock. CLK and CLKDIV must be

phase aligned. See OSERDESE2 Clocking Methods.

Prior to use, a reset must be applied to the OSERDESE2. The OSERDESE2 contains an

internal counter that controls dataflow. Failure to synchronize the reset deassertion with

the CLKDIV will produce an unexpected output

2.2 3-State Parallel-to-Serial Conversion
除了数据的并串转换之外,一个OSERDESE2模块还包含了一个3态并串转换器。与数据的并串转换不同,3态转换器串行化最高只能支持4位的并行3态信号。3态转换器不能进行级联。

In addition to parallel-to-serial conversion of data, an OSERDESE2 module also contains a

parallel-to-serial converter for 3-state control of the IOB. Unlike data conversion, the

3-state converter can only serialize up to four bits of parallel 3-state signals. The 3-state

converter cannot be cascaded.

三、OSERDESE2原语介绍

3.1 OSERDESE2框图

poYBAGIMohaAQ9_cAAD4qNA6nKY323.png

3.2 OSERDESE2例化
扫一眼,直接看3.3

OSERDESE2 #(
.DATA_RATE_OQ("DDR"), // DDR, SDR
.DATA_RATE_TQ("DDR"), // DDR, BUF, SDR
.DATA_WIDTH(4), // Parallel data width (2-8,10,14)
.INIT_OQ(1'b0), // Initial value of OQ output (1'b0,1'b1)
.INIT_TQ(1'b0), // Initial value of TQ output (1'b0,1'b1)
.SERDES_MODE("MASTER"), // MASTER, SLAVE
.SRVAL_OQ(1'b0), // OQ output value when SR is used (1'b0,1'b1)
.SRVAL_TQ(1'b0), // TQ output value when SR is used (1'b0,1'b1)
.TBYTE_CTL("FALSE"), // Enable tristate byte operation (FALSE, TRUE)
.TBYTE_SRC("FALSE"), // Tristate byte source (FALSE, TRUE)
.TRISTATE_WIDTH(4) // 3-state converter width (1,4)
)
OSERDESE2_inst (
.OFB(OFB), // 1-bit output: Feedback path for data
.OQ(OQ), // 1-bit output: Data path output
// SHIFTOUT1 / SHIFTOUT2: 1-bit (each) output: Data output expansion (1-bit each)
.SHIFTOUT1(SHIFTOUT1),
.SHIFTOUT2(SHIFTOUT2),
.TBYTEOUT(TBYTEOUT), // 1-bit output: Byte group tristate
.TFB(TFB), // 1-bit output: 3-state control
.TQ(TQ), // 1-bit output: 3-state control
.CLK(CLK), // 1-bit input: High speed clock
.CLKDIV(CLKDIV), // 1-bit input: Divided clock
// D1 - D8: 1-bit (each) input: Parallel data inputs (1-bit each)
.D1(D1),
.D2(D2),
.D3(D3),
.D4(D4),
.D5(D5),
.D6(D6),
.D7(D7),
.D8(D8),
.OCE(OCE), // 1-bit input: Output data clock enable
.RST(RST), // 1-bit input: Reset
// SHIFTIN1 / SHIFTIN2: 1-bit (each) input: Data input expansion (1-bit each)
.SHIFTIN1(SHIFTIN1),
.SHIFTIN2(SHIFTIN2),
// T1 - T4: 1-bit (each) input: Parallel 3-state inputs
.T1(T1),
.T2(T2),
.T3(T3),
.T4(T4),
.TBYTEIN(TBYTEIN), // 1-bit input: Byte group tristate
.TCE(TCE) // 1-bit input: 3-state clock enable
);

3.3 OSERDESE2端口

为了便于查看,后文对端口的进一步介绍一并写到表格。

poYBAGIMohiAUDMIAAITqpKKNg0517.jpg

下图为原文:

pYYBAGIMoh2AT2yQAAL23OKY9Kg856.png

3.4 OSERDESE2属性

poYBAGIMoiCAJ_RgAAFgLhGOnkg380.jpg

下图为原文:

pYYBAGIMoiOAB6kOAAI_GiTzLWI853.png

下图为OSERDESE2属性组合:

poYBAGIMoiSABW1rAABE7VyZGLc757.png

3.5 OSERDESE2时钟

在并转串过程中,CLK和 CLKDIV的相位关系是非常重要的。理想情况下,CLK和 CLKDIV是相位对齐的。在FPGA中有好几种时钟设置方式来帮助设计满足CLK和 CLKDIV的相位关系要求。对于OSERDESE2来说,只有一种是有效的:

  • CLK由BUFIO驱动,CLKDIV由BUFR驱动
  • CLK和CLKDIV由同一个MMCM或PLL驱动 (常用)

当使用一个MMCM来驱动OSERDESE2的CLK 和CLKDIV时,buffer类型不能混用。举个栗子:如果CLK由BUFG驱动,CLKDIV也必须由BUFG驱动。

The phase relationship of CLK and CLKDIV is important in the parallel-to-serial

conversion process. CLK and CLKDIV are (ideally) phase-aligned within a tolerance.

There are several clocking arrangements within the FPGA to help the design meet the

phase relationship requirements of CLK and CLKDIV. The only valid clocking

arrangements for the OSERDESE2 are:

• CLK driven by BUFIO, CLKDIV driven by BUFR

• CLK and CLKDIV driven by CLKOUT[0:6] of the same MMCM or PLL

When using a MMCM to drive the CLK and CLKDIV of the OSERDESE2 the buffer types

suppling the OSERDESE2 can not be mixed. For example, if CLK is driven by a BUFG,

CLKDIV must be driven by a BUFG as well.

3.6 OSERDESE2级联
用两个OSERDESE2模块级联来构造一个超过8:1的并-串转换器。通过连接主OSERDESE2的SHIFTIN端口和从OSERDESE2的SHIFTOUT端口,转换器可以扩展为10:1和14:1(仅DDR模式)。(注:笔者感觉有点懵,曾在项目用主的SHIFTOUT端口接到从的SHIFTIN端口 = =||)。对于差分输出,连接_P管脚。当输出不是差分信号时,从OSERDESE2的输出buffer是不允许的,位宽扩展无法使用。

当使用补充的signal-ended标准时(也就是说DIFF_HSTL和DIFF_SSTL),位宽扩展可能不能使用。这是因为在I/O块的OLOGICE2/3块全部用作补充的signal-ended标准来传输这两个补充的信号,没有多余的OLOOGICE2/3资源可用来位宽扩展。

The OSERDESE2 modules be used to build a parallel-to-serial converter larger than 8:1. In

every I/O tile there are two OSERDESE2 modules; one master and one slave. By

connecting the SHIFTIN ports of the master OSERDESE2 to the SHIFTOUT ports of the

slave OSERDESE2, the parallel-to-serial converter can be expanded to up to 10:1 and 14:1

(DDR mode only). For a differential output, the master OSERDESE2 must be on the

positive (_P pin) side of the differential output pair. When the output is not differential, the

output buffer associated with the slave OSERDESE2 is not available and width expansion

cannot be used.

When using complementary single-ended standards (e.g., DIFF_HSTL and DIFF_SSTL),

width expansion might not be used. This is because both OLOGICE2/3 blocks in an I/O

tile are used by the complementary single-ended standards to transmit the two

complementary signals, leaving no OLOGICE2/3 blocks available for width expansion

purposes.

下图是10:1DDR模式并-串转换器,使用一主一从两个OSERDESE2模块。在这个例子中中从OSERDES端口D3-D4被用作并行数据接口的最后两位。

pYYBAGIMoieAFs29AAENdLub_bk445.png

注:位宽扩展时,从OSERDESE2模块使用端口D3-D8; D1-D2不用。

3.7 OSERDESE2潜伏期
之前文章也介绍过:

Delay:延迟,延迟时间后才发生

Latency:潜伏,潜伏时间后信号才稳定

OSERDESE2块输入到输出的潜伏期由DATA_RATE和DATA_WIDTH属性决定。潜伏期被定义为事件a到事件b的一段时间:(a)当CLKDIV的上升沿,D1-D8的数据输入到OSERDESE2,(b)当串行数据流的第一位出现在OQ。简单解释下:就是输入到输出的时间。下图整理了不同OSERDESE2潜伏期的值。

The input to output latencies of OSERDESE2 blocks depend on the DATA_RATE and

DATA_WIDTH attributes. Latency is defined as a period of time between the following

two events: (a) when the rising edge of CLKDIV clocks the data at inputs D1–D8 into the

OSERDESE2, and (b) when the first bit of the serial stream appears at OQ. Table 3-11

summarizes the various OSERDESE2 latency values.

pYYBAGIMoimAZCnjAAFDhphQa50531.png

四、图解OSERDES串行化数据流

4.1 案例①SDR模式
2:1 SDR 数据串行化的时序图:

poYBAGIMoiuAV_CaAADhxULQYeI084.png

Clock Event 1:

在CLKDIV的上升沿,由FPGA逻辑驱动的字AB给到OSERDESE2的输入端D1和D2(经过一些传播延迟)

Clock Event 2 :

在CLKDIV的上升沿,由D1和D2输入的字AB被采样到OSERDES。

Clock Event 3

在AB被采样进入OSERDESE2后,数据A在OQ输出一个CLK时钟周期。这个潜伏期由3.7章节的表格查询可知。

4.2 案例②DDR模式
8:1 DDR数据串行化时序图:

pYYBAGIMoi6ACK1mAAFbyKtgZ7s480.png

Clock Event 1:

在CLKDIV的时钟上升沿,由FPGA逻辑驱动的字ABCDEFGH给到OSERDESE2的输入管脚D1-D8。

Clock Event 2:

在CLKDIV的时钟上升沿,D1-D8输入的ABCDEFGH被采样进OSERDESE2。

Clock Event 3:

在ABCDEFGH被采样进OSERDESE2后,数据位A首先在OQ输出4个CLK周期。这个潜伏期由3.7章节的表格查询可知。

D1-D8输入的第二个字 IJKLMNOP 被采样进入 OSERDESE2 。

Clock Event 4

在Clock Events 3和4之间, ABCDEFGH整个字被连续的传输到OQ,,一个完整的8位传输在一个CLKDIV周期内完成。

4.3 案例③3-state
The operation of a 3-state controller:

pYYBAGIMojKAXcBYAAEAopB6ghs172.png

Clock Event 1

T1,T2,T4被驱动位低电平来释放3-态条件。OSERDESE2的T1-T4和D1-D4串行化路径是完全相同的(包括潜伏期),所以EFGH和0010在Clock Event 1是始终对齐的。

Clock Event 2

在EFGH被采样进入OSERDESE2后,数据位E出现在OQ一个CLK周期,潜伏期可看3.7。

在0010被采样进入OSERDESE2 3态块后,三态输入的0在TQ输出一个CLK周期,潜伏期可看3.7。

看图得知:OBUFT的输出端O输出EFH,对应三态输入0释放掉三态条件时候的D1-D4输入,并且输出在TQ为低时有效。(这是笔者根据上图猜测的结论,实际上笔者还没使用过 = =)

五、后记
最后的I/O FIFO先略过。

加上前两篇,《UG471-SelectIO》(1-3) 基本翻译完成。

算是小小的成就,给自己打Call~

如有错误,欢迎拍砖~

但是,本系列UG471文章还停留在翻译介绍阶段,下一步我会将其整理到LVDS接口的使用中进行介绍。未完待续。

审核编辑:符乾江

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1622

    文章

    21522

    浏览量

    599637
  • Xilinx
    +关注

    关注

    70

    文章

    2138

    浏览量

    120519
收藏 人收藏

    评论

    相关推荐

    OV6946中文手册

    电子发烧友网站提供《OV6946中文手册.pdf》资料免费下载
    发表于 08-05 17:29 2次下载

    MSP430F471x3,MSP430F471x6, MSP430F471x7混合信号微控制器数据表

    电子发烧友网站提供《MSP430F471x3,MSP430F471x6, MSP430F471x7混合信号微控制器数据表.pdf》资料免费下载
    发表于 08-01 12:49 0次下载
    MSP430F<b class='flag-5'>471x3</b>,MSP430F<b class='flag-5'>471</b>x6, MSP430F<b class='flag-5'>471</b>x7混合信号微控制器数据表

    IPC-6012E CN 2020中文 CN 刚性印制板的鉴定及性能规范

    *附件:IPC-6012E CN 2020中文 CN 刚性印制板的鉴定及性能规范.pdf IPC-6012E CN 2020中文 CN 刚性印制板的鉴定及性能规范
    发表于 07-27 10:16

    FPGA | Xilinx ISE14.7 LVDS应用

    今天给大侠带来 Xilinx ISE14.7 LVDS应用,话不多说,上货。 最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用。Xilinx FPGA,主要通过原语
    发表于 06-13 16:28

    xilinx的carry4原语在高云FPGA中用什么原语替代?

    xilinx的carry4原语在高云FPGA中用什么原语替代
    发表于 05-09 16:13

    Xilinx ISE14.7 LVDS的应用

    最近项目需要用到差分信号传输,于是看了一下FPGA上差分信号的使用。Xilinx FPGA,主要通过原语实现差分信号的收发:OBUFDS(差分输出BUF),IBUFDS(差分输入BUF)。
    的头像 发表于 05-07 17:17 628次阅读
    <b class='flag-5'>Xilinx</b> ISE14.7 LVDS的应用

    W5500V1.3中文数据手册

    电子发烧友网站提供《W5500V1.3中文数据手册.pdf》资料免费下载
    发表于 05-06 15:04 6次下载

    Xilinx SelectIO资源内部的IDELAYE2应用介绍

    本文我们介绍Xilinx SelectIO资源内部IDELAYE2资源应用。IDELAYE2原句配合IDELAYCTRL原句主要用于在信号通过引脚进入芯片内部之前,进行延时调节,一般
    的头像 发表于 04-26 11:33 1542次阅读
    <b class='flag-5'>Xilinx</b> SelectIO资源内部的IDELAYE<b class='flag-5'>2</b>应用<b class='flag-5'>介绍</b>

    开关式升压3A双节锂电充电管理E6483中文手册

    电子发烧友网站提供《开关式升压3A双节锂电充电管理E6483中文手册.pdf》资料免费下载
    发表于 03-22 17:21 0次下载

    STM32H723中文和英文手册TIMx_BDTR寄存器的26到29位不一致是为什么?

    STM32H723中文和英文手册TIMx_BDTR寄存器的26到29位不一致,为什么?
    发表于 03-21 08:19

    AT89S51中文资料介绍

    电子发烧友网站提供《AT89S51中文资料介绍.pdf》资料免费下载
    发表于 02-20 09:24 7次下载

    你知道压敏电阻10D 471K与20D 471K的区别在哪吗?

    你知道压敏电阻10D 471K与20D 471K的区别在哪吗? 压敏电阻是一种特殊的电阻器件,其电阻值会受到外部压力或力的变化而发生变化。在压敏电阻,10D 471K和20D
    的头像 发表于 02-02 10:40 1708次阅读

    如何用RTL原语实现MUX门级映射呢?

    对于前端设计人员,经常会需要一个MUX来对工作模式,数据路径进行明确(explicit)的声明,这个对于后端工程师下约束也很重要。这里介绍一种巧用的RTL原语,实现MUX的方法。
    的头像 发表于 12-14 16:26 1142次阅读
    如何用RTL<b class='flag-5'>原语</b>实现MUX门级映射呢?

    STM32中文显示有什么抗锯齿方法?

    STM32中文显示有什么抗锯齿方法
    发表于 10-15 11:49

    UC3842中文资料电路汇总

    UC3842中文资料电路汇总
    发表于 10-07 10:02 22次下载