串行解串器 SerDes

获得连接:解密串行解串器

时间:2014-11-04 来源: 作者:

关键字:解串  SerDes

串行解串器是可将大位宽并行总线压缩成少量(通常为一条)差分串行链路的器件,该链路可在远远高于低速大位宽并行总线的速率下进行切换。串行解串器对大位宽并行总线进行了串行化,不仅可实现在系统内部、系统间或位于两个不同地点的系统间进行大量数据的点对点传输,同时还可降低功耗、板级空间和成本。下图 1 是串行解串器的基本概念。

图 1:串行∕解串

随着数据速率的增加,有关实施并行总线的问题也随之增多。较快总线比较慢总线功耗高,而且由于定时容差的降低,信道数量的增加,布局难度也越来越大。随着数据速率的增加,保持信道间的时滞也日益重要,原因是较大的时滞差异会导致系统定时问题,因为接收器需要按对齐位组在并行数据总线中进行时钟计时。此外,由于如今的设计日益紧凑,板级空间也格外珍贵,因此大型并行总线会消耗宝贵的 PCB 基板空间。串行解串器能够降低成本、功耗以及板级空间,可为上述设计挑战提供良好的解决方案。

我们首先用一个简单的串行解串器实例来描述基本工作原理,因为当前有些串行解串器器件可能比较难处理。时钟定时对于使用串行解串器的应用来说极为重要,因为一切都不能随机出现,必须在给定的时间内发生。系统时钟可分配给包括串行解串器在内的所有组件,以帮助实现同步工作。网络处理单元 (NPU) 或 FPGA 等终端器件不仅可在所需的系统频率下实现并行数据输出运行,而且还可连接至串行解串器器件的并行接口。并行数据可在系统时钟的时钟上升沿、下降沿或上升及下降沿上、在串行解串器 FIFO 中进行定时。数据怎么在 FIFO 中进行定时,取决于串行解串器厂商以及所针对的最终应用。

并行数据通常将编码为标准编码方案(例如 8B/10B 编码),因而适用于串行化。原始应用数据可能包含病态模式、长期运行的 1 和 0,这会使串行解串器难以捕捉位跳变。对数据进行编码能够消除病态模式,确保数据流的转换密集度平衡和 DC 平衡。未编码数据的另一个挑战是字符描述会在串行化过程中丢失,因此将数据编码为 10 位字符可确保接收器能够判定正确的字符描述。通常使用逗号字符(0011111 或 1100000)或 K28.5(0011111010 或 1100000101),也可使用其它同步字符。K28.5 字符由发送串行解串器针对接收器插入,从而可检测为对齐字符。串行化数据随后将通过介质送达接收串行解串器器件。下图 2 是 8B/10B 编码实例。

图 2:8B/10B 编码

该接收串行解串器可将流入的比特流(表现为电压摆幅)转换为数字比特流。此外,该接收器还整合有时钟数据恢复电路 (CDR),其可从流入的 DC 平衡数据流中恢复字节时钟。接收串行解串器可运行自己的本地参考振荡器,但这不仅要与恢复的字节时钟相位对齐,而且还要用于为接收到的比特流时钟计时。接收到的比特流随后可进行解串,反馈至并行总线,送达等待中的终端器件。

TLK1501 是一款多千兆位收发器,可用于高速点对点数据传输系统。TLK1501 支持 16 位大并行接口,可在参考时钟上升沿读入数据。并行总线经过 8B/10B 编码并经过串行化后,通过差分高速介质进行有序传输。TLK1501 的接收器部分可接受 8B/10B 编码数据,对此,其 CDR 将锁定从输入数据流提取比特时钟并对该数据流进行重定时。串行数据流随后对齐到分开的 10 位字符边界,经过解码后通过 16 位总线传输至等待中的终端器件。TLK1501 是一款简洁的器件,采用它进行设计,可降低系统成本与功耗,缩小板级空间。

来源:http://www.21ic.com/app/rf/201411/606061.htm

时间: 2024-10-27 10:08:41

串行解串器 SerDes的相关文章

拼接字符串;字符反转;统计大串中小串出现的次数

package Homework; import java.util.ArrayList;import java.util.Iterator;import java.util.List;import java.util.Scanner;/** * 把数组中的数据按照指定个格式拼接成一个字符串举例:int[] arr = {1,2,3}; 输出结果:[1, 2, 3] 字符串反转举例:键盘录入"abc" 输出结果:"cba" 统计大串中小串出现的次数举例:在字符串&q

深度学习与计算机视觉系列(9)_串一串神经网络之动手实现小例子

作者:寒小阳&&龙心尘 时间:2016年1月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50521072 声明:版权所有,转载请联系作者并注明出处 1.引言 前面8小节,算从神经网络的结构.简单原理.数据准备与处理.神经元选择.损失函数选择等方面把神经网络过了一遍.这个部分我们打算把知识点串一串,动手实现一个简单的2维平面神经网络分类器,去分割平面上的不同类别样本点.为了循序渐进,我们打算先实现一个简单的线性分类器,然后再拓

String-统计大串中小串出现的次数

package cn.lianxi; public class Count { /* * 统计大串中小串出现的次数 * 举例:在字符串“woaijavawozhendeaijavawozhendejava” * 结果; * java出现了5次 * * 分析: * 前提知道了大串和小串 * 1.定义一个统计变量,初始化值是0: * 2.先在大串中查找一次小串第一次出现的位置 * a.索引是-1,说明不存在了,就返回统计变量 * b.索引不是-1,说明存在,统计变量++ * 3.把刚才的索引+小串的

ThreadLocal遇到线程池时, 各线程间的数据会互相干扰, 串来串去

最近遇到一个比较隐蔽而又简单地问题,在使用ThreadLocal时发现出现多个线程中值串来串去,排查一番,确定问题为线程池的问题,线程池中的线程是会重复利用的,而ThreadLocal是用线程来做Key的所以在使用线程池的时候要特别注意ThreadLocal. ThreadLocal数据是在线程创建时绑定在线程上的, 所以解决方法是在使用数据之前调用remove() 移除掉之前的其他线程产生的数据 解决方法 重构remove方法 @Override public void remove() { 

URLStringGrabber(U R L 字串抓取器)

软件简介: URLStringGrabber 是一个可以扫描所有已打开的 Internet Explorer 窗口和抓取存储在其中的URLs的小工具,包括可点击的链接.图片.脚本文件.CSS文件.RSS提要和Flash(SWF)文件.这些URL列表显示在表中,并且你可以很容易地导出部分URL或整个URL列表为文本/CSV/HTML或XML文件. 图片预览: 下载地址:http://dickmoore.cn/Down/urlstringgrabber.zip 文章作者:DickMoore 文章来源

【基本算法】 KMP文本串模式串的字符串匹配算法

看了两个晚上的KMP,加上基本的“暴力匹配” 今晚看懂next[j]递归求解时,突然觉得算法真的好美妙,虽然觉悟的晚但晚胜过没有是吧! 我的博客都是应试性的学习笔记,不具备指导性,还是大神们写的好,例如July和matrix67的博客(今天还知道了matrix67的传奇) [置顶] 从头到尾彻底理解KMP(2014年8月22日版) [置顶]         从头到尾彻底理解KMP(2014年8月22日版) 实习辞职了,可以全心全意看书找工作了,自由真是好!!为了我们俩以后在一起!! 什么时候努力

杭电1711--Number Sequence(Kmp → → 利用Next数组求串在串中的位置)

Number Sequence Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 15068    Accepted Submission(s): 6606 Problem Description Given two sequences of numbers : a[1], a[2], ...... , a[N], and b[1], b

串、串的模式匹配算法(子串查找)BF算法、KMP算法

串的定长顺序存储#define MAXSTRLEN 255,//超出这个长度则超出部分被舍去,称为截断 串的模式匹配: 串的定义:0个或多个字符组成的有限序列S = 'a1a2a3--.an ' n = 0时为空串串的顺序存储结构:字符数组,串的长度就是数组末尾'\0'前面的字符个数数组需在定义时确定长度,有局限性数组的最大长度二:串的堆分配存储表示typedef struct { char *ch; //若是非空串,则按串长分配存储区 //否则ch为空 int length; //串长度}HS

串---堆串

堆串 字符串包括串名与串值两部分,而串值采用堆串存储方法存储,串名用符号表示存储 存储方法 将一个地址连续,容量很大的存储空间作为字符串的可用空间,执行程序是动态分配 串名符号表 所有串的存储映像构成一个符号表.借助此结构可以在串名与串值之间建立一个对应关系,称为串名的存储映像 插入 #include <stdio.h> #include <stdlib.h> typedef struct { char *str; //一块连续的存储空间 int len; }HString; vo