当前位置: 首页 > news >正文

SerDes介绍以及原语使用介绍(1)OSERDESE2

文章目录

  • 前言:为什么需要serdes
  • 一、OSERDESE2框图
  • 二、OSERDESE2端口信号
  • 二、OSERDESE2原语参数
  • 三、OSERDESE2时序
    • 3.1、SDR模式
    • 3.2、DDR模式
    • 3.3、DDR模式下三态传输

前言:为什么需要serdes

需要 SerDes(串行器/解串器)主要是为了应对高速数据传输和复杂系统集成的挑战。以下是具体原因和应用场景:

  1. 高速数据传输
    数据带宽需求增加:随着数据处理能力的提升,系统对数据传输带宽的需求不断增加。SerDes可以实现更高的传输速率,满足带宽需求。
    时钟频率提升:串行传输能够以更高的时钟频率工作,从而提高数据传输速度。

  2. 减少引脚和布线
    引脚数量减少:在并行传输中,需要多条数据线和相应的引脚。SerDes通过串行化数据传输,显著减少了所需的引脚数量。
    布线复杂性降低:减少了PCB上的布线数量,简化了设计,降低了成本和干扰。

  3. 改善信号完整性
    降低串扰和噪声:并行传输中,信号线之间的干扰和噪声是一个主要问题。串行传输减少了这些问题,提高了信号的完整性。
    长距离传输:串行信号在长距离传输中更容易保持信号的完整性,适用于芯片间和板间通信。

  4. 节省空间和功耗
    减少芯片面积:通过减少I/O引脚的数量,SerDes可以帮助节省芯片的面积。
    优化功耗:尽管SerDes电路本身可能功耗较高,但整体系统的功耗效率会因为减少并行I/O而得到优化。

  5. 适应现代系统需求
    支持多种标准和协议:SerDes广泛应用于各种高速接口标准,如PCI Express、SATA、USB、以太网、光纤通道等,适应不同的应用需求。
    系统集成:现代系统越来越复杂,需要将多个子系统集成在一起。SerDes能够高效地实现不同模块间的数据传输和通信。

  6. 灵活性和可扩展性
    动态带宽分配:SerDes能够根据需要动态分配带宽,提高系统的灵活性。
    可扩展性:可以通过增加SerDes通道的数量来扩展系统的总带宽,满足未来的需求。

应用场景

  1. 通信网络:用于高速网络接口,如以太网和光纤通道。
  2. 存储系统:如SATA、SAS等存储接口。
  3. 计算机总线:如PCI Express、USB等系统总线。
  4. 多媒体接口:如HDMI、DisplayPort等视频和音频接口。
  5. 芯片间通信:如在多芯片模块(MCM)和系统级封装(SiP)中使用。
  6. 板间通信:用于不同电路板之间的高速数据传输。

总结:
需要SerDes的主要原因在于其能够大幅提升数据传输速率、减少引脚数量和布线复杂性、改善信号完整性、节省空间和功耗,以及满足现代高速系统的需求。通过串行化和解串化,SerDes在各种高速数据传输和复杂系统集成场景中发挥着关键作用。
而我们之前学习的GT(包括GTX、GTH和GTP):是Xilinx在高速SerDes的基础上,增加了其他模块,如8b/10b编解码等(具体可以看Xilinx相关文档,如ug476)形成的一个高速串行收发器,GT是Gigabit Transceiver的意思,它是实现当下一些高速串行接口的基础:如PCIe、RapidIO等

一、OSERDESE2框图

参考:xilinx ug471手册
在这里插入图片描述
上图所示,OSERDESE2(Output Parallel-to-Serial Logic Resources)是7系列FPGA器件中的专用并串转换器,具有特定的时钟和逻辑资源。每个OSERDESE2模块都包含一个用于数据和三态控制的专用串行器。数据和三态串行器输出都可以配置为SDR(在时钟的单沿传输数据)和DDR(在时钟的双沿传输数据)模式。数据序列化最高可达 8:1(如果使用OSERDESE2宽度扩展,则为10:1或14:1)。

二、OSERDESE2端口信号

在这里插入图片描述
在这里插入图片描述

  1. CLK:与输出串行数据对齐的高频时钟信号
  2. CLKDIV:与输入并行数据对齐的低频时钟信号
  3. D1-D8:并行输入数据端口,一个OSERDESE2最多配置8位输入并行输入数据,两个OSERDESE2模块通过级联可以配置10位或14位并行输入数据。其中D1最先转换为串行数据输出。
  4. OQ:串行信号输出,直接与IOB相连,输出到FPGA管脚,若是需要将串行信号输出到2. ODELAYE2或者ISERDESE2,那么使用OFB端口,OFBOQ两个端口的信号一模一样,只是数据走向不同。
  5. T1-T1:OSERDESE2原语还有三态控制输出的功能,那么T1-T4是三态控制信号,与D1-D4数据对应。使用三态功能时,TQ作为串行输出的管脚,用于判断OQ信号此时是作为输入引脚(TQ为高电平)还是输出引脚(TQ为低电平),而TFB与OFB原理类似。
  6. OCE:数据并串转换的时钟使能信号。
  7. TCE:三态转换的时钟使能信号。
  8. RST:是一个异步的高电平复位,RST拉高时,会将CLK和CLKDIV时钟域下的所有触发器清零输出低电平。当设计中存在多个OSERDESE2模块时,推荐所有OSERDESE2均使用同一个复位信号,并且RST拉高应该与CLKDIV信号同步,确保所有OSERDESE2模块能够同时退出复位状态。
  9. TBYTEIN、TBYTEOUT:信号是用于DDR3控制器使用的,直接关闭即可。
  10. SHIFTIN1、SHIFTIN2、SHIFTOUT1、SHIFTOUT2:用于OSERDESE2转换数据时的位扩展,单个OSERDESE2最多只能将8bit并行数据转换位串行数据输出,而两个OSERDESE2级联最多可以将14bit并行数据转换位串行数据输出。如下图所示,是两个OSERDESE2将10bit并行输入转换为串行输出的连接框图。从OSERDESE2的SHIFTOUT1、SHIFTOUT2连接到主OSERDESE2的SHIFTIN1、SHIFTIN2实现扩展。Slave OSERDESE2模块的输入数据从D3开始连接,D1和D2不能使用。
    在这里插入图片描述

二、OSERDESE2原语参数

   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一共有11个参数,分别如下:

  1. DATA_RATE_OQ:定义数据是以单数据速率(SDR)还是双数据速率(DDR)进行串行化处理,默认值为DDR。
  2. DATA_RATE_TQ:定义是否将三态控制作为单数据速率(SDR)还是双数据速率(DDR)进行处理。该属性允许的值为SDR、DDR或BUF,默认为DDR。在SDR和DDR模式下,使用T1~T4输入,并且可以使用TRISTATE_WIDTH配置三态输入宽度。在BUF模式下,SDR和DDR模式寄存器被旁路,使用T1输入。
  3. 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。
  4. INIT_OQ:表示OQ信号的初始状态,默认为1’b0。
  5. INIT_TQ:表示TQ的初始状态,默认为1’b0。
  6. SERDES_MODE:定义使用宽度扩展时OSERDESE2模块是主模块还是从模块。可以为MASTER或SLAVE,默认为MASTER。
  7. SRVAL_OQ:表示OQ信号复位时的值,默认为1’b0。
  8. SRVAL_TQ:表示TQ信号复位时的值,默认为1‘b0。
  9. TBYTE_CTL:用于DDR3控制器使用
  10. TBYTE_SRC:用于DDR3控制器使用
  11. TRISTATE_WIDTH:定义三态控制并串转换器的并行三态输入宽度。当DATA_RATE_TQ设置为SDR或BUF时,TRISTATE_WIDTH属性只能设置为1。当DATA_RATE_TQ设置为DDR时,TRISTATE_WIDTH属性的可能值为1和4。

在这里插入图片描述
OSERDESE2块的输入到输出延迟指的是当CLKDIV的上升沿把输入数据D1~D8端口的数据寄存到OSERDESE2内部时 到 OSERDESE2的OQ端口输出第一位数据的时间间隔。当CLK和CLKDIV的相位对齐时,延迟可能相差一个CLK周期,如果CLK和CLKDIV的相位没有对齐时,延迟的值取决于DATA_RATE和DATA_WIDTH的值,如下图所示:
在这里插入图片描述

三、OSERDESE2时序

3.1、SDR模式

  1. 时钟事件1在CLKDIV的上升沿上,2’bAB从FPGA逻辑驱动到OSERDESE2的D1和D2输入(需要经过一些传播延迟)。

  2. 时钟事件2在CLKDIV的上升沿上,2’bAB从D1和D2输入采样到OSERDESE2。

  3. 时钟事件3数据位A在AB被采样到OSERDESE2后一个CLK周期出现在OQ。

  4. 此延迟与上表当中SDR模式OSERDESE2延迟为一个CLK周期一致。

在这里插入图片描述

3.2、DDR模式

  1. 时钟事件1在CLKDIV的上升沿上,8’bABCDEFGH从FPGA逻辑驱动到OSERDESE2的D1-D8输入。

  2. 时钟事件2在CLKDIV的上升沿上,8’bABCDEFGH从D1-D8采样到OSERDESE2。

  3. 时钟事件3在ABCDEFGH被采样到OSERDESE2后,数据位A出现在4个CLK周期,与上表描述一致。第二个单词IJKLMNOP从D1-D8采样到OSERDESE2。

  4. 时钟事件4在时钟事件3和4之间,整个8’bABCDEFGH在OQ上串行传输,在一个CLKDIV周期中总共传输8位。在IJKLMNOP被采样到OSERDESE2之后,数据位I出现在OQ的四个CLK周期。

  5. 这个延迟与之前时延表中列出的4个CLK周期的8:1 DDR mode下OSERDESE2延迟一致。

在这里插入图片描述

3.3、DDR模式下三态传输

此时最多将4位并行数据转为串行数据输出,在时钟CLKDIV第三个上升沿处,采集到D1-D4的数据位EFGH,与此时T1-T4的数据0010对应。

经过一个CLK时钟周期后,OQ输出第一个串行数据E,而TQ开始输出对应三态数据0,当TQ数据为0时,才会将OQ的数据输出到IOB模块,当TQ为1时,FPGA管脚作为输入,此时不会把OQ的数据输出到IOB。因此下图中当TQ为低电平时,OBUFT.O才输出OQ对应的数据EFH,否则不输出OQ的数据。图片
在这里插入图片描述

相关文章:

SerDes介绍以及原语使用介绍(1)OSERDESE2

文章目录 前言:为什么需要serdes一、OSERDESE2框图二、OSERDESE2端口信号二、OSERDESE2原语参数三、OSERDESE2时序3.1、SDR模式3.2、DDR模式3.3、DDR模式下三态传输 前言:为什么需要serdes 需要 SerDes(串行器/解串器)主要是为了…...

基于单片机和组态王的温度监控系统的设计

摘 要 : 介绍了以 MSP430 单片机为核心 , 建立基于 DS18B20 和组态王的温度采集和监控系统。主要研究了单片机和组态王的通用通讯协议。按照 KingView 提供的通信协议 , 设计组态王与单片机的通信程序 , 实现了组态王与M SP430 单片机的直接串行通讯。在中药提取装置的…...

unity 导入的模型设置讲解

咱们先讲Model这一栏 Model Scene:场景级属性,例如是否导入灯光和照相机,以及使用什么比例因子。 Scale Factor:缩放因子(也就是模型导入后大小如果小了或者大了在这里直接改是相当于该模型的大小的,而且在…...

汽车 vSOC安全运营管理平台开发解决方案

汽车 vSOC 安全解决方案 一、引言 随着汽车行业的快速发展,汽车的智能化和互联化程度越来越高,汽车网络安全问题也日益凸显。汽车 vSOC(Vehicle Security Operations Center)作为汽车网络安全的重要组成部分,其作用越来越受到重视。本方案旨在提供一套可实施落地的汽车 vS…...

python 第三方库

一、什么是第三方库 python的三方库指的是,需要通过pip install 安装后才能使用的 python 工具 三方库有很多: 做web自动化测试的库:selenium单元测试框架:pytest、unittest做app自动化测试:Python-Appium-Client做接…...

VMware Workstation环境下,DHCP服务的安装配置,用ubuntu来测试

需求说明: 某企业信息中心计划使用IP地址17216.11.0用于虚拟网络测试,注册域名为xyz.net.cn.并将172.16.11.2作为主域名的服务器(DNS服务器)的IP地址,将172.16.11.3分配给虚拟网络测试的DHCP服务器,将172.16.11.4分配给虚拟网络测试的web服务器,将172.16.11.5分配给FTP服务器…...

CSS实现文字颜色渐变

直接上代码和效果图&#xff1a; <p class"linecolor">文字颜色渐变</p><style type"text/css">.linecolor{font-size: 30px;background-image:-webkit-linear-gradient(bottom,red,#fd8403,yellow);-webkit-background-clip:text;-web…...

《每天5分钟用Flask搭建一个管理系统》第4章:模板渲染

第4章&#xff1a;模板渲染 4.1 模板的概念和使用 模板是一种用于生成输出的方法&#xff0c;它允许您将Python代码和HTML标记混合在一起&#xff0c;从而创建动态网页。 示例代码&#xff1a;基本模板 <!-- templates/home.html --> <!DOCTYPE html> <html…...

逆向学习汇编篇:指令的操作

本节课在线学习视频&#xff08;网盘地址&#xff0c;保存后即可免费观看&#xff09;&#xff1a; ​​https://pan.quark.cn/s/660c759dea95​​ 在逆向工程中&#xff0c;深入理解汇编语言的指令操作是至关重要的。汇编指令是计算机硬件与软件之间的桥梁&#xff0c;它们直…...

VB.net实战(VSTO):VSTOwpf体验框架打包教程

如果是考虑到Wps用户较多&#xff0c;就不建议采用侧边栏的形式 只是个体验框架&#xff0c;界面未作美化&#xff0c;office的用户可以用任意一种窗体&#xff0c;喜欢那个界面就写那个界面&#xff0c;wps的侧边栏只能弹出一部分&#xff0c;每次需要的手动拖动。 打包了案例…...

Jquery 获得Form下的所有text、checkbox等表单的值

Jquery使用表单我主要是想获得某一个表单下的所有text获得checkbox的值: 可以这样写: var parameter{}; $("input[typetext]",document.forms[0]).each(function(){ alert(this.name); }); 获得所有名为hobby的选中的checkbox的值和form2下的所有text的值 function s…...

stl之string

构造函数 void test1() {string s1;//不传参cout << s1 << endl;string s2("123456");cout << s2 << endl;string s3(s2);cout << s3 << endl;string s4(s2, 1, 5);cout << s4 << endl;string s5("123456&quo…...

Vue3学习笔记<->nginx部署vue项目

安装nginx vue项目通常部署到nginx上&#xff0c;所以先安装一个nginx。为了方便安装的是windows版nginx&#xff0c;解压就能用。 项目参考上一篇文章《Vue3学习笔记&#xff1c;-&#xff1e;创建第一个vue项目》《Vue3学习笔记&#xff1c;-&#xff1e;创建第一个vue项目》…...

使用 WebGL 创建 3D 对象

WebGL Demohttps://mdn.github.io/dom-examples/webgl-examples/tutorial/sample5/index.html 现在让我们给之前的正方形添加五个面从而可以创建一个三维的立方体。最简单的方式就是通过调用方法 gl.drawElements() 使用顶点数组列表来替换之前的通过方法gl.drawArrays() 直接…...

百度地图3d区域掩膜,最常见通用的大屏地图展现形式

需求及效果 原本项目使用的是百度地图3.0,也就是2d版本的那个地图&#xff0c;客户不满意觉得不够好看&#xff0c;让把地图改成3d的&#xff0c;但是我们因为另外的系统用的都是百度地图&#xff0c;为了保持统一只能用百度地图做 经过3天的努力&#xff0c;最后我终于把这个…...

小区物业管理收费系统源码小程序

便捷、透明、智能化的新体验 一款基于FastAdminUniApp开发的一款物业收费管理小程序。包含房产管理、收费标准、家属管理、抄表管理、在线缴费、业主公告、统计报表、业主投票、可视化大屏等功能。为物业量身打造的小区收费管理系统&#xff0c;贴合物业工作场景&#xff0c;轻…...

C++实现一个简单的Qt信号槽机制

昨天写这个文章《深入探讨C的高级反射机制&#xff08;2&#xff09;&#xff1a;写个能用的反射库》的时候就在想&#xff0c;是不是也能在这套反射逻辑的基础上&#xff0c;实现一个类似Qt的信号槽机制&#xff1f; Qt信号槽机制简介 所谓的Qt的信号槽&#xff08;Signals …...

微信小程序常用的传值

1.通过 URL 传参 在页面跳转时&#xff0c;可以在 URL 中携带参数进行传递&#xff0c;然后在目标页面的 onLoad 生命周期中获取参数。 // 在页面 A 中跳转到页面 B 并传递参数 wx.navigateTo({url: /pages/detail/index?id123 });// 在页面 B 的 onLoad 生命周期中获取参数…...

SQL面试真题解答 数据统计分析,求“同比、环比”等(SQL窗口函数使用)

SQL面试真题解答 数据统计分析&#xff0c;求“同比、环比”等&#xff08;SQL窗口函数使用&#xff09; 环比、环比增长率、同比、同比增长率&#xff0c;根据百度百科上的 说明&#xff1a; 环比增长率 环比增长率&#xff0c;一般是指和上期相比较的增长率。 环比增长率&a…...

【递归、搜索与回溯】floodfill算法二

floodfill算法二 1.被围绕的区域2.太平洋大西洋水流问题3.扫雷游戏4.衣橱整理 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603; 1.被围绕的区域…...

MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例

一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…...

Java - Mysql数据类型对应

Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

Spring AI 入门:Java 开发者的生成式 AI 实践之路

一、Spring AI 简介 在人工智能技术快速迭代的今天&#xff0c;Spring AI 作为 Spring 生态系统的新生力量&#xff0c;正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务&#xff08;如 OpenAI、Anthropic&#xff09;的无缝对接&…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

【JVM】Java虚拟机(二)——垃圾回收

目录 一、如何判断对象可以回收 &#xff08;一&#xff09;引用计数法 &#xff08;二&#xff09;可达性分析算法 二、垃圾回收算法 &#xff08;一&#xff09;标记清除 &#xff08;二&#xff09;标记整理 &#xff08;三&#xff09;复制 &#xff08;四&#xff…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...

深度学习之模型压缩三驾马车:模型剪枝、模型量化、知识蒸馏

一、引言 在深度学习中&#xff0c;我们训练出的神经网络往往非常庞大&#xff08;比如像 ResNet、YOLOv8、Vision Transformer&#xff09;&#xff0c;虽然精度很高&#xff0c;但“太重”了&#xff0c;运行起来很慢&#xff0c;占用内存大&#xff0c;不适合部署到手机、摄…...

Unity VR/MR开发-VR开发与传统3D开发的差异

视频讲解链接&#xff1a;【XR马斯维】VR/MR开发与传统3D开发的差异【UnityVR/MR开发教程--入门】_哔哩哔哩_bilibili...