7系列 之 OSERDESE2

背景

《ug471_7Series_SelectIO.pdf》介绍了Xilinx 7 系列 SelectIO 的输入/输出特性及逻辑资源的相关内容。

第 1 章《SelectIO Resources》介绍了输出驱动器和输入接收器的电气特性,并通过大量实例解析了各类标准接口的实现。
第 2 章《SelectIO Logic Resources》介绍了输入输出数据寄存器及其双倍数据速率(DDR)操作,以及可编程输入延(IDELAY)和可编程输出延迟(ODELAY)。
第 3 章《Advanced SelectIO Logic Resources》介绍了ISERDESE2 、OSERDESE2与IO_FIFO。

了解了这个手册充分介绍的SelectIO架构和资源,以及所支持的电平标准。就可以利用相应的架构和资源实现与不同电平标准、通信速率间的外设建立起联系。


系列目录与传送门

  • 基于Xilinx的7系列,
  • 笔者学习、研究FPGA的过程、笔记,记录为:《凡人修FPGA传》。

说明1:本系列基于文档文档《ug471_7Series_SelectIO.pdf》而写,翻译和感悟,会出现中英文混合的情况。

说明2:虽然文中会出现一些原文的部分截图,非常支持并推荐大家去看原汁原味的官方文档

说明3:在查阅相关资料过程中,发现一些关于相关知识点的介绍零零散散,本系列会对其进行整合,力求详尽。

说明4:本博客是笔者用来记录学习过程的一个形式,并非专业论文。因此,在本博客中不会太注重图文格式的规范。

说明5:如果文章有误,欢迎诸位道友指出、讨论,笔者也会积极改正,希望大家一起进步!


文章目录

  • 背景
  • 系列目录与传送门
  • 前言
  • 1、OSERDESE2 总述
    • 1.1、数据并串转换器(Data Parallel-to-Serial Converter)
    • 1.2、三态并串转换器(3-State Parallel-to-Serial Conversion)
  • 2 ··· OSERDESE2 原语
  • 3 ··· OSERDESE2 端口
  • 4 ··· OSERDESE2 属性
  • 5、OSERDESE2 时钟配置方法
  • 6、OSERDESE2 位宽扩展
  • 7、输出反馈(Output Feedback)
  • 8、OSERDESE2 延迟
  • 9、Timing Characteristics
  • 10、OSERDESE2 原语例化
  • 11、参考文献


前言

输入串并转换器 (Input serial-to-parallel converters,ISERDESE2) ,
输出并串转换器(output parallel-to-serial converters ,OSERDESE2),
支持极高的 I/O 数据速率,使内部逻辑的运行速度可以到 I/O 速率的1/8。

1、OSERDESE2 总述

  • OSERDESE2是7系列FPGA中专用的并串转换器,集成特定的时钟与逻辑资源,专为高速源同步接口设计。

  • 每个 OSERDESE2 模块都包含:
    一个专用的数据串行器(a dedicated serializer for data)
    和 一个三态控制串行器(3-state control),
    可以被配置成SDR和DDR模式。

在这里插入图片描述
如图 3-3 所示,OSERDESE2 的输入比特顺序与 ISERDESE2 的输出顺序互为镜像。例如:
在这里插入图片描述
OSERDESE2的输入:字 FEDCBA 的最低有效位(LSB) A 输入至 D1 端口。
ISERDESE2 的输出:同一比特 A 从 Q8 端口输出。

如果,CLK频率为200 MHz:
‌SDR模式(8-bit)‌:并串转换速率为 200 MHz × 8 = 1.6 Gbps‌。
‌DDR模式(8-bit)‌:并串转换速率为 200 MHz × 8 × 2 = 3.2 Gbps

  • 数据串行器:串行化比最高8:1(若使用OSERDESE2位宽扩展,则可达10:1和14:1)。

  • 三态控制串行器:支持最高14:1串行化比。

  • OSERDESE2 模块有一个DDR3专用模式,针对高速存储器应用。

在这里插入图片描述

1.1、数据并串转换器(Data Parallel-to-Serial Converter)

OSERDESE2模块内的数据并串转换器接收来自FPGA逻辑的2至8位并行数据(若启用OSERDESE2位宽扩展,可支持14位),将数据串行化后通过OQ引脚输出至IOB。并行数据从最低位输入引脚(D1)开始串行传输(即D1引脚数据最先从OQ引脚输出)。该转换器支持两种工作模式:single-data rate (SDR) and double-data rate (DDR)。

OSERDESE2 使用 CLK 和 CLKDIV 这两个时钟信号来进行数据速率转换。CLK 是高速串行时钟,CLKDIV 是分频后的并行时钟。CLK 和 CLKDIV 必须相位对齐。

使用前,必须对OSERDESE2施加复位信号。 OSERDESE2 包含一个控制数据流的内部计数器。 如果未将复位信号的释放与 CLKDIV 同步,可能会产生意外输出。

此外OSERDESE2内部还有一个计数器,用来计数当前dout输出的是输入信号的第几位数据了,所以在使用OSERDESE2前,必须对OSERDESE2进行复位,复位信号可以是同步复位,也可以是异步复位,但是复位信号无效边沿必须与CLKDIV同步(即使用异步复位时,要考虑同步释放复位)。(《xilinx原语详解及仿真之OSERDESE2》)

1.2、三态并串转换器(3-State Parallel-to-Serial Conversion)

OSERDESE2模块除了具有数据并串转换功能外,还包括三态控制并串转换器,用于IOB的三态信号控制。最大支持4位并行三态信号串行化,不可级联。

2 ··· OSERDESE2 原语

在这里插入图片描述

3 ··· OSERDESE2 端口

  • 1、Data Path Output - OQ

OQ 是 OSERDESE2 模块的数据输出端口。输入端口 D1 的数据将首先出现在 OQ。此端口将数据并串转换器的输出连接至 IOB 的数据输入端口。OQ 不能直接驱动 ODELAYE2,必须通过 OFB 引脚实现延迟控制。

  • 2、Output Feedback from OSERDESE2 - OFB

OFB 是 OSERDESE2 的串行(高速)数据反馈端口,用途包括:连接至 ODELAYE2 原语实现输出延迟,或者将串行数据回传至 ISERDESE2。

  • 3、3-state Control Output - TQ

TQ 是 OSERDESE2 的三态控制输出端口,用于将三态并串转换器的输出连接至 IOB 的三态控制输入。

  • 4、3-state Control Output - TFB

TFB 是 OSERDESE2 的三态状态反馈端口,可向 FPGA 逻辑端反馈当前三态状态(当 IOB 处于高阻态时有效)。

  • 5、High-Speed Clock Input - CLK

CLK 是驱动并串转换器串行端的高速时钟信号。

  • 6、Divided Clock Input - CLKDIV

CLKDIV 是驱动并串转换器并行端的分频时钟信号,为 CLK 的分频信号且与CLK相位对齐。

  • 7、Parallel Data Inputs - D1 to D8

所有并行数据通过 D1-D8 端口输入 OSERDESE2,支持配置为 2 至 8 位(即 8:1 串行化)。通过从模式 OSERDESE2 级联可扩展至 10 或 14 位。

  • 8、Reset Input - RST

复位生效(高电平):使 CLK/CLKDIV 域所有数据触发器异步输出低电平。

复位释放(同步要求):需与 CLKDIV 同步释放,内部逻辑在 CLK 第一次上升沿重新同步。

在多比特输出结构中的每个 OSERDESE2 应由相同的复位信号驱动,该信号异步断言,并与 CLKDIV 同步去断言,以确保所有 OSERDESE2 元素同步退出复位。

复位释放时,需确保 CLK/CLKDIV 已稳定。

  • 9、Output Data Clock Enable - OCE

OCE 为数据路径的高电平有效时钟使能信号。

  • 10、3-state Signal Clock Enable - TCE

TCE 为三态控制路径的高电平有效时钟使能信号。

  • 11、Parallel 3-state Inputs - T1 to T4

所有并行三态信号通过 T1 至 T4 端口进入 OSERDESE2 模块。这些端口连接到 FPGA 内部结构。它们可配置为一位、两位或四位,或者直通。DATA_RATE_TQ 和 TRISTATE_WIDTH 属性控制这些端口的行为。

  • 在博客《xilinx原语详解及仿真之OSERDESE2》中,看到如下一段话。
    在这里插入图片描述

4 ··· OSERDESE2 属性

在这里插入图片描述

  • 1、DATA_RATE_OQ

此属性定义数据以单数据速率(SDR)或双数据速率(DDR)处理。允许值为 SDR 或 DDR,默认值为 DDR。

  • 2、DATA_RATE_TQ

此属性定义三态控制以单数据速率(SDR)、双数据速率(DDR)或直通模式(BUF)处理。允许值为 SDR、DDR 或 BUF,默认值为 DDR。

SDR/DDR 模式下:使用全部四个三态输入(T1-T4),其行为由 TRISTATE_WIDTH 属性配置。

BUF 模式下:
旁路 SDR/DDR 模式寄存器,因此应使用 T1 输入。T1 输入信号与所有其他信号异步,因为它仅通过 OSERDESE2 传递。

  • 3、DATA_WIDTH

DATA_WIDTH 属性定义并行转串行转换器的并行数据输入位宽。

当 DATA_RATE_OQ 设置为 SDR 时,DATA_WIDTH 属性的可能取值为 2、3、4、5、6、7 和 8。当 DATA_RATE_OQ 设置为 DDR 时,DATA_WIDTH 属性的可能取值为 4、6、8、10 和 14。

当 DATA_WIDTH 设置为大于 8 的位宽时,必须将一对 OSERDESE2 配置为主从模式。

  • 4、SERDES_MODE

此属性定义位宽扩展时 OSERDESE2 的主从模式,允许值为 MASTER(主)或 SLAVE(从),默认值为 MASTER。

  • 5、TRISTATE_WIDTH

此属性定义三态并串转换器的并行输入位宽,其取值范围取决于 DATA_RATE_TQ:
DATA_RATE_TQ=SDR 或 BUF,TRISTATE_WIDTH=1;
DATA_RATE_TQ=DDR,TRISTATE_WIDTH=1或4;

在这里插入图片描述

5、OSERDESE2 时钟配置方法

理想情况下,CLK与CLKDIV需保持相位对齐(允许一定容差)‌。

OSERDESE2模块的有效时钟配置方案仅包含以下两种:
1、由 BUFIO 驱动 CLK , 由 BUFR 驱动 CLKDIV 。
2、CLK和CLKDIV由同一MMCM或PLL的CLKOUT[0:6]驱动。

若使用MMCM驱动OSERDESE2的CLK和CLKDIV,则供给OSERDESE2的缓冲类型不能混用。例如,若CLK由BUFG驱动,则CLKDIV也必须由BUFG驱动。

6、OSERDESE2 位宽扩展

每个I/O单元(I/O tile)有两个OSERDESE2模块:一个主模块和一个从模块。

将主OSERDESE2的SHIFTIN端口连接到从OSERDESE2的SHIFTOUT端口,可以把并串转换器扩展到10:1和14:1(仅限DDR模式)。

对于差分输出,主OSERDESE2必须位于差分输出对的正端(_P引脚)。

非差分输出时,与从OSERDESE2相关的输出缓冲区不可用,位宽扩展也无法使用。

在这里插入图片描述
使用互补单端标准(例如DIFF_HSTL和DIFF_SSTL)时,可能无法使用位宽扩展。这是因为互补单端标准会使用 I/O单元 内中的两个OLOGICE2/3模块(OLOGICE2/3 blocks)来传输两个互补信号,从而没有可用的OLOGICE2/3模块用于位宽扩展。

  • 位宽扩展指南:
    • 1、两个 OSERDESE2 模块必须是相邻的主从对。
    • 2、将主 OSERDESE2 的 SERDES_MODE 属性设置为 MASTER,
      从 OSERDESE2 的 SERDES_MODE 属性设置为 SLAVE。
    • 3、用户必须将从模块的 SHIFTIN 引脚连接到主模块的 SHIFTOUT 引脚。
    • 4、从模块使用 Q3 到 Q8 引脚作为输出。
    • 5、主模块和从模块的DATA_WIDTH相等。
    • 6、属性INTERFACE_TYPE设置为DEFAULT。

在这里插入图片描述

7、输出反馈(Output Feedback)

OSERDESE2引脚OFB具有以下两种功能:
• 作为反馈路径至ISERDESE2的OFB引脚。。
• 与ODELAYE2连接。OSERDESE2的输出可以通过OFB引脚路由至ODELAYE2模块,然后通过ODELAYE2进行延迟。

8、OSERDESE2 延迟

  • DEFAULT Interface Type Latencies(默认接口类型延迟)

OSERDESE2模块的输入到输出延迟取决于DATA_RATE和DATA_WIDTH属性。

延迟被定义为以下两个事件之间的时间间隔:
事件(a):CLKDIV的上升沿将数据从输入端D1-D8时钟输入到OSERDESE2。
事件(b):串行流的第一位出现在OQ。

表3-11总结了各种OSERDESE2延迟值。
在这里插入图片描述

当CLK和CLKDIV的相位对齐时,延迟可能相差一个CLK周期,如果CLK和CLKDIV的相位没有对齐时,延迟的值取决于DATA_RATE和DATA_WIDTH的值。

9、Timing Characteristics

  • 2:1 SDR Serialization
    在这里插入图片描述
  • 8:1 DDR Serialization
    在这里插入图片描述- 4:1 DDR 3-State Controller Serialization
    在这里插入图片描述

时钟事件1:
T1、T2和T4被置0以解除三态条件。
T1-T4和D1-D4在OSERDESE2中的串行化路径相同(包括延迟),因此在时钟事件1期间,EFGH位始终与T1-T4引脚上呈现的0010对齐。

时钟事件2:
在EFGH被采入OSERDESE2后的一个时钟周期,数据位E出现在OQ。
此延迟与表3-11中列出的4:1 DDR模式OSERDESE2延迟一个时钟周期一致。

在时钟事件1期间,T1上的三态位0在0010被采入OSERDESE2三态块后的一个时钟周期出现在TQ。此延迟与表3-11中列出的 4:1 DDR模式OSERDESE2延迟一个时钟周期一致。

10、OSERDESE2 原语例化

// OSERDESE2: Output SERial/DESerializer with bitslip
// 7 Series
// Xilinx HDL Libraries Guide, version 13.4
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
);
// End of OSERDESE2_inst instantiation

11、参考文献

1、《ug471_7Series_SelectIO.pdf》
2、《xilinx原语详解及仿真之OSERDESE2》

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/79044.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ansible 流程控制

条件语句(判断) 当满足什么条件时,就执行那些tasks when 当...时ansible获取主机名 # 主机名中,不包含.没有区别 ansible_hostname # 包含.只显示第一个.前面的名字 ansible_fqdn # 包含.显示完整的主机名不管是shell还是各大编程语言中&#xf…

git命令积累(个人学习)

如何将docx文件不上传? 创建或编辑 .gitignore 文件 打开 .gitignore 文件,添加以下内容来忽略所有 .docx 文件: *.docx清除已追踪的 .docx 文件 git rm --cached "*.docx"这将从 Git 仓库中删除 .docx 文件,但不会删…

springboot应用大批量导出excel产生oom处理措施实践(适用于poieasyexcel)

一、背景: 在某些信息管理场景中,存在大批量导出需求,例如一次性导出10~100w行excel数据,如果不做特殊的处理,很容易导致Out Of Memory,特别是堆内存溢出。 oom复现 例如修改IDEA运行配置,VM…

谷歌在即将举行的I/O大会之前,意外泄露了其全新设计语言“Material 3 Expressive”的细节

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

深入理解负载均衡:传输层与应用层的原理与实战

目录 前言1. 传输层(Layer 4)负载均衡1.1 工作层级与核心机制1.2 实现方式详解1.3 优缺点分析1.4 典型实现工具 2. 应用层(Layer 7)负载均衡2.1 工作层级与核心机制2.2 实现方式解析2.3 优缺点分析2.4 常用实现工具 3. Layer 4 与…

PyTorch 版本、torchvision 版本和 Python 版本的对应关系

PyTorch 版本、torchvision 版本和 Python 版本的对应关系 在深度学习领域,PyTorch 及其配套库 torchvision 的使用极为广泛。但不同版本的 PyTorch、torchvision 与 Python 之间存在严格的对应关系,若版本搭配不当,会导致代码运行出错…

【hadoop】Hbase java api 案例

代码实现: HBaseConnection.java package com.peizheng.bigdata;import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.hadoop.hbase.client.Connection; import org.apache.hadoop.hbase.client…

荣耀A8互动娱乐组件部署实录(第3部分:控制端结构与房间通信协议)

作者:曾在 WebSocket 超时里泡了七天七夜的苦命人 一、控制端总体架构概述 荣耀A8控制端主要承担的是“运营支点”功能,也就是开发与运营之间的桥梁。它既不直接参与玩家行为,又控制着玩家的行为逻辑和游戏规则触发机制。控制端的主要职责包…

Vue3路由模式为history,使用nginx部署上线后刷新404的问题

一、问题 在使用nginx部署vue3的项目后,发现正常时可以访问的,但是一旦刷新,就是出现404的情况 二、解决方法 1.vite.config.js配置 在vite.config.js中加入以下配置 export default defineConfig(({ mode }) > {const isProduction …

企业级UI测试的“双保险”:TestComplete的智能对象识别与详细报告功能

企业级UI测试真是让人头疼!界面元素变来变去,测试脚本动不动就报错,测试工作根本没法顺利推进。而且,测试结果的管理和共享也麻烦得很,团队协作效率大打折扣。别急!TestComplete的智能对象识别和详细测试报…

SpringBoot的自动配置和起步依赖原理

关于Spring Boot的自动配置和起步依赖,我想结合最新的实现机制来展开说明。先说自动配置——这是Spring Boot最核心的"约定优于配置"思想的落地体现。举个例子,当我们创建一个新的Spring Boot项目时,只要在pom.xml里添加了spring-b…

《MATLAB实战训练营:从入门到工业级应用》高阶挑战篇-《5G通信速成:MATLAB毫米波信道建模仿真指南》

《MATLAB实战训练营:从入门到工业级应用》高阶挑战篇-5G通信速成:MATLAB毫米波信道建模仿真指南 🚀📡 大家好!今天我将带大家进入5G通信的奇妙世界,我们一起探索5G通信中最激动人心的部分之一——毫米波信…

一、Redis快速入门

Redis的常见命令和客户端使用 一、初识Redis Redis是一种键值型的NoSql数据库,这里有两个关键字: 键值型 NoSql 其中键值型,是指Redis中存储的数据都是以key、value对的形式存储,而value的形式多种多样,可以是字符…

gitcode 上传文件报错文件太大has exceeded the limited size (10 MiB) in commit

登陆gitcoe,在项目设置->提交设置 ,勾选提交文件限制,修改限制的大小。 修改完后,重新提交代码。

【运维】构建基于Python的自动化运维平台:用Flask和Celery打造高效管理工具

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 随着企业IT基础设施的复杂性不断增加,手动运维已无法满足高效管理的需求。本文详细介绍如何基于Python构建一个自动化运维平台,利用Flask…

基于大模型预测的产钳助产分娩全方位研究报告

目录 一、引言 1.1 研究背景与意义 1.2 研究目的与方法 二、产钳助产分娩概述 2.1 产钳助产定义与历史 2.2 适用情况与临床意义 三、大模型预测原理与数据基础 3.1 大模型技术原理 3.2 数据收集与处理 3.3 模型训练与验证 四、术前预测与准备 4.1 大模型术前风险预…

css使用aspect-ratio制作4:3和9:16和1:1等等比例布局

文章目录 1. 前言2. 用法2.1 基本语法2.2. 与max-width、max-height等属性结合使用2.3. 动态计算比例 3. 应用场景4. 兼容性和替代方案5. 总结 1. 前言 在网页制作过程中,有时候我们只知道宽度,或者只知道高度,这时候需要制作一个4:3和9:16这…

【国产化】在银河麒麟ARM环境下离线安装docker

1、前言 采用离线安装的方式。 关于离线安装的方式官网有介绍,但是说的很简单,网址:Binaries | Docker Docs 官网介绍的有几种主流linux系统的安装方式,但是没有kylin的,所以在此记录一下。 在安装过程中也遇到了些…

从一城一云到AI CITY,智慧城市进入新阶段

AI将如何改变城市面貌?AI能否为城市创造新的商业价值?AI的落地应用将对日常生活有什么样的影响? 几乎在每一场和城市发展相关的论坛上,都会出现以上几个问题。城市既是AI技术创新融合应用的综合性载体,普罗大众对AI产…

鸿蒙知识总结

判断题 1、 在http模块中,多个请求可以使用同一个httpRequest对象,httpRequest对象可以复用。(错误) 2、订阅dataReceiverProgress响应事件是用来接收HTTP流式响应数据。(错误) 3、ArkTS中变量声明时不需要…