SERDES的通用结构是什么
SERDES的通用结构是什么
本篇文章给大家分享的是有关SERDES的通用结构是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
SERDES的基本构造
简单说来,SERDES的基本框图如下:
大概就是由发送线,接收线,串行化模块核解串行化模块,时钟管理模块,编码解码模块,发射接收缓冲模块(FIFO)以及Alignment模块。其实还有一个由用户根据接口协议的具体内容而自定制的用户逻辑模块,用来产生发送数据以及解析接收数据,这是唯一用户可以灵活处理的地方,也是逻辑工程师可以进行电路设计(Verilog设计)的地方。
其中,发送线即图中tx Line interface以及接收线(Rx Line Interface)是与外部芯片进行交互的串行线路,具体可以分别由一对或者多对差分信号线组成。一般而言,1对称之为X1模式,2对X2,以此类推,n对即Xn。这类差分信号线越多,传输数据的带宽就越大,假如一对差分信号线的传输带宽为3.125Gbps,则n对为n*3.125Gbps。
串行化模块(Serializer)即并串转换(PISO)模块,用户逻辑产生待发送数据,经过8B/10B编码或者其他类型的编码,加扰,进入缓冲区等待操作,最终经过并串转换模块,转换成串行数据通过发送线发送出去。同理,解串行化模块(Deserializer)是串行化模块的逆过程,就是将串行差分线接收的串行数据经过串并转换(SIPO)模块转换为并行数据,之后经过解码,解扰,等操作后的并行数据,交给用户接口,用户进行对该并行数据进行解析。
为什么会有上图中的Transmit and Receiver buffers/FIFO呢?
该模块的一个最重要的作用就是进行跨时钟域转换!由于SERDES中涉及的时钟不只有一个,拿我们的Xilinx的Transceiver的一个通道的发射部分而言,如下图:
可以暂时不用管其他部分,关于Xilinx家的Transceiver,后续文章我会专门介绍。我们仅仅看它的时钟域划分就知道,为什么存在跨时钟域处理这回事了。上图中的Phase Adjust FIFO的作用就是通用SERDES中的Transmit and Receiver Buffers/FIFO的具体设计,解决的问题就是要在两个时钟域之间传输数据,必须进行速率匹配,并且要解决两个时钟域之间的所有相位差,简单来说,就是跨时钟域处理。跨时钟域处理中,FIFO是两个不同时钟域之间数据传输的最常用的处理方式,这无论在什么时候都是笔试面试的重点,我在学生时期准备过相关的内容,见:
FPGA基础知识极简教程(7)详解亚稳态与跨时钟域传输
至于时钟管理模块,那就很明显了,它管理了各种时钟的问题,包括时钟分频倍频以及时钟恢复等。
上面对SERDES的一般架构进行了简单的口述,好像没什么条理,下面给出一个通用的SERDES框图,并对各模块进行简单定义。
SERDES的通用框图
如下图,为SERDES的通用框图,它是对上一节中的SERDES框图的一个细化。下面给出各个模块的定义。
串行器(Serializer):获取n位并行数据,其速率为y,然后将它转化为串行数据流,速率为y的n倍; 解串器(Deserializer):以n的y的速率获取串行数据流,并将其转换为速率为y的宽度为n的并行数据; 接收对齐(Rx (Receive) Align):Rx(接收)对齐:将输入的数据对齐到适当的字界。可以使用几种不同的机制,从自动检测和对齐一个特殊的保留位序列(通常称为Comma)到用户控制的位滑移; 时钟管理器(Clock Manager):管理各种时钟需求,包括时钟倍频,时钟分频和时钟恢复; 发送FIFO(Transmit FIFO):允许在发送之前存储传入的用户数据; 接收FIFO(Receive FIFO):允许在删除之前存储接收到的数据(缓存数据);在需要时钟校正的系统中至关重要; 接收线接口:模拟接收电路包括差分接收器,并且可以包括有源或无源均衡; 发送线接口:模拟发射电路通常允许不同的驱动强度。它还可以允许预加重发射; Line Encoder:将数据编码为更友好的数据格式。这通常涉及消除长序列的不变位。可能还会调整数据,以实现一平衡和零平衡。(这是一个可选块,有时不包含在SERDES中。); 线路解码器:从线路编码数据解码为纯数据。(这是一个可选块,有时在SERDES之外完成。); 时钟校正和通道绑定:允许校正发送时钟和接收时钟之间的差异。还允许在多个通道之间进行偏斜校正。(通道绑定是可选的,并不总是包含在SERDES中。)
可以包括其他可能的功能,例如循环冗余校验(CRC)生成器,CRC检查器,4b / 5b,8b / 10b,64b / 66b的多种编码和解码,可设置的加扰器,各种对齐方式和菊花链选项以及可配置时钟的前端和后端。
市场上的SERDES或Transceiver展示
下面列举了两家的吉比特收发器的架构,但本文暂时不做具体解释,具体内容会在本系列的后面介绍。
Xilinx的Transceiver架构展示
为了简化浏览,我们仅仅给出一个通道的Transceiver的结构(7系列FPGA为例):
Altera的SERDES介绍
Virtex™-II Pro X RocketIO™ SERDES结构框图:
Virtex-II Pro RocketIO SERDES结构框图:
以上就是SERDES的通用结构是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
推荐阅读
-
polyfills怎么按需加载
polyfills怎么按需加载本篇内容主要讲解“polyfills...
-
C#数据类型怎么实现背包、队列和栈
-
C#怎么实现冒泡排序和插入排序算法
C#怎么实现冒泡排序和插入排序算法这篇文章主要讲解了“C#怎么实现...
-
C#如何实现希尔排序
-
C#如何实现归并排序
-
C#怎么使用符号表实现查找算法
-
C#类的静态成员怎么用
C#类的静态成员怎么用这篇“C#类的静态成员怎么用”文章的知识点大...
-
C#的静态函数怎么用
C#的静态函数怎么用这篇文章主要讲解了“C#的静态函数怎么用”,文...
-
C#中的析构函数怎么用
C#中的析构函数怎么用这篇文章主要讲解了“C#中的析构函数怎么用”...
-
怎么用CZGL.ProcessMetrics监控.NET应用