为什么串口比并口快?

发布者:乐观向前最新更新时间:2016-06-20 来源: eefocus关键字:串口  并口 手机看文章 扫描二维码
随时随地手机看文章
作为一个电路设计师,我整个职业生涯都花在接口电路上,串行并行都做过,且速度不慢(DDR3-1600Mbps, SerDes 30Gbps),这个问题不答实在技痒难耐。已经看到的答案中,大家基本上都命中了关键的知识点,但是没有把背后的逻辑说清楚,也没有人从电学特性和经济 的角度分析这个问题。大言不惭,欢迎大家拍砖。


----------补充--------
名词解释:
Mbps, Gbps: 一百万比特每秒,十亿比特每秒
skew:时间偏差,A比B快/慢一秒,就叫skew一秒
PCB:印刷电路板,也就是大多数电路板
IO: 输入输出电路
cable: 线缆
SerDes:串行转并行,并行转串行

还有人说贯口最快的,我们来算一算。业界目前大量应用的28Gbps SerDes,传一个比特只要35.7皮秒,这点时间光在真空中可以走上一厘米,连角膜到视网膜都不够。哪个快?

----------正式答案的分割线--------
先说我的答案,串行接口为啥比并行接口快?是因为串口的特性和应用场景,决定了它更加适合采用一些提高单根信道速率的设计方法,这些方法用在并口上并不合适。

讨论这个问题,首先要搞清楚定义,什么叫并行接口(parallel link)? 什么叫串行接口(serial link)?这就可以吵一天。

并 口代表DDR说:“我是并口的纯正血统杰出代表,每8bit要附带一对DQS线作为时钟,每个bit都要同步到这对DQS上去,skew超标就不能工 作,64位DDR3-1600总带宽可以到100Gbps,哪个串口做得到”?鄙人冷笑,说:“别以为我不知道你的底细,别看你IO是1.6G,内存控制 器给你的一般都是4位并行的400M,你要先悄悄做一下并行转串行,再输出。何况你传64bit数据需要80根全速率的DQ/DQS线,还要20多根半速 率命令地址线,平均下来一根线1G还不到”。

XAUI举手问:“我算串口么?XAUI一定是8组16根差分线,4组读4组写,缺任何一组都不符合协议,看着很并行啊?” 32位的PCI-E也一脸关心的等着答案。

我们先这么定义:在一个独立的信道上,每次同时传输1bit为串口,每次同时传输多个bit为并口。 标准的串口如XAUI,HDMI等,每对差分线组成一个信道(channel),每个信道是否能成功传输并不取决于其他信道。而DDR这种,10根线组成 一个信道,每次同时传8bit,错了某一bit只能重新传,便是标准并口,芯片内部的并转串和IO并不相关,不影响定性。按照这个定义,大家看看各种接口 协议怎么划分呢?我觉得已经很清楚了,以单个channel的传输速率衡量,串口一般来说更快。下一个问题就是,为什么呢?

这是一个电学问题,但首先是一个经济问题。

对 任何一种协议,提高总带宽不过是两种办法,首先要提高单根线的传输速率,其次只能增加电线的数目。增加线的数目实在费钱,首先现在的芯片往往IO都很紧 张,增加了IO PAD还要搭上额外的ESD和面积;封装和PCB上增加额外的线更复杂更贵这就不用说了,对于某些用cable的协议基本就是不可接受的。你是愿意插16 根网线还是一根?接电视机的时候喜欢一根线的HDMI,还是五根线的RGB+音频?还有 @Arthur Wang 提到的150米长线。。。。。。何况并口还要对这些线进行长度匹配,想想头就大了。

历史上,工程师们确实是先做了串口,速度不够没办法只好含泪加电线上并口,直到他们发现了三大法宝来提速,并口的动力就不那么强劲了,正如 @auxten 所言。但是在芯片内部,增加总线宽度的代价并不高,因此CPU里面有个1024位的数据总线也不奇怪。

为了提高单根线的传输速率,必须要讲到我们模拟电路工程师的三大法宝,差分信号(differential signaling),时钟-数据恢复(Clock-Data Recovery,简称CDR),和信道均一化(Channel Equalization,Eq)。

差分信号的好处 ,不外乎抗干扰能力强,引入的噪声也比较小,虽然必须要两根线,但速度从几百M提高到几G,还是很值得的。

CDR的好处 @龚黎明 也说过了,消灭了skew,减少了时钟的功耗和噪声(但多出了CDR电路本身的功耗和噪声),同时避免了电磁干扰。想想在PCB或者电线上传一个15G的时钟,太带感了,幸亏我们不用做这种事。

信道均一化 相当值得一提,这才是SerDes高速发展的决定性因素,所以我决定花点文字讲一下。
一般来说,真实世界中的信道都是低通特性的,到处都是小电容,所谓绝缘体中的分子在高频情况下吸收电场能量,再加上金属线中的趋肤效应,所以我们想要的高频信号走不了多远就不像样子了,比如下面某信道的频率特性(绿线)。

如图所示,在对应28Gbps的频点上,信号能量被衰减了30db,电压幅度只剩3%了;在对应56Gbps的频点上更惨,65db意味着信号电压摆幅剩下不到千分之一。在这种信道中,发送端一个完美漂亮的数据眼图:


到了接收端会变成这样的一堆垃圾:


什么都辨认不出来对吧。但是,经过我们聪明的工程师们一番努力,均一化开关打开,信号就变成了这样:



神奇么?我觉得挺神奇的,我认识的电子工程师们第一次看到这个,没人觉得不神奇。

下面一个重要的问题,既然有了三大法宝,他们只能用在串口上吗?
答案很显然,不是,串口可以用的,我们并口一样可以用。那为什么并口不用呢?

差分信号这条不用说了,并口的电线本来已经够多了,数目还要再翻一倍?系统工程师会杀人的。

CDR 意义也不大,反正你并口速度也不高,一堆数据线中顺便传下时钟,比做接收端做CDR再采样每一位数据省事多了。

信道均一化属于屠龙之技,不用差分信号的话也就传几百M,本来就没啥衰减,用这个干啥?还是考虑下各种噪声串扰的问题吧。

于是答案就呼之欲出了。串口为啥比并口快?是因为串口的特性和应用场景,决定了它更加适合采用一些可以提高单根信道速率的设计方法,这些方法用在并口上并不合适。

从 现有的应用看来,需要持续稳定高带宽的应用,往往使用高速串行接口,一根带宽不够再加一根,各种视频网络应用,基本如此。而一些历史遗留速度不高的应用, 还有一些需要突发性高带宽的应用,并口仍然存活,比如很特殊的DDR。虽然XDR/GDDR/HMC/HCM这些新标准都在试图引入SerDes, 但DRAM行业的特殊性还是让并口继续存活着。

关键字:串口  并口 引用地址:为什么串口比并口快?

上一篇:高速串行总线知多少…
下一篇:基于MicroBlaze的AXI总线实时时钟IP核设计

推荐阅读最新更新时间:2024-05-03 00:28

STM32中USART 串口简单使用
  使用查询方式的USART:   设置时钟:   RCC_APB2Periph_AFIO 功能复用IO时钟   RCC_APB2Periph_GPIOA GPIOA时钟   RCC_APB2Periph_USART1 USART1时钟   你可以用   //使能串口1,PA,AFIO总线 RCC_APB2PeriphClockCmd (RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO|RCC_APB2Periph_USART1 ,ENABLE);   或直接   RCC_APB2PeriphClockCmd(RCC_APB2Periph_ALL,ENABLE); //全部APB
[单片机]
51单片机IO口模拟串口通讯2-计数法
硬件环境:STC89C52 软件环境:IDE Keil uVision V4.10 编译器 C51 V9.0 代码如下: /********************************************** 方法2:计数法 硬件:11.0592MHz晶振,STC89C52,RXD P1.0 TXD P1.1 波特率:9600 描述:所谓计数法是指根据模拟出的波特率,每1位持续的时间的长短是通过定时器计数 溢出来置标志位,查询该标志位来实现的。 测试1:上电发送1个0x02的字符 测试2:上电先发送1个0x02的字符,然后等待接收,将收到的字符再发送出去(分别一个一个发送0x01,0x02,0x03,0x0
[单片机]
51单片机IO口模拟<font color='red'>串口</font>通讯2-计数法
MSP430按键控制串口发送数据
#include msp430.h //MSP430G2553 - 使用USCI_A0,Up Mode, DCO SMCLK // // 介绍: 该程序利用USCI_A0来与计算机通信 通过接在P1.3口的按键来实现按一次发送一个数据 // 波特率9600,数据格式8N1 // // ACLK = 32768, SMCLK = 32768 MCLK = DCO-16M // // MSP430G2553 // ----------------- // /|\| XIN|- // | | | // --|RST XOUT|- // |
[单片机]
嵌入式硬件通信串口启用流程
一、串口启用流程 开讲前,先找几款芯片的串口demo程序瞄一眼。 依次有STM32的V3.5标准库、nRF52832的官方demo以及51核的STC15系列单片机的官方DEMO。 从以上的部分demo例程来看,在启用串口的时候,需要配置的那几个参数有波特率、数据位、校验位、停止位等,从demo的源码中也是能够体现出来的。 而略有不同的是,在引脚配置灵活的ARM中,需要针对引脚进行配置。 二、验证输入输出 完成了串口的初始化,即可对输入输出进行操作,来验证串口是否可以正常的发送和接收数据。 一般的,最直接的方式就是向输出寄存器写入数据,就可以让芯片去完成UART信号输出到对应的引脚上。 如下图依次有STM32的V3.5标
[单片机]
嵌入式硬件通信<font color='red'>串口</font>启用流程
基于串口透明传输的无线射频收发系统设计
目前市场上各类无线产品种类及应用越来越广泛,如何让广大学生、电子研发人员及一些小公司能快速在自己的产品中使用无线技术、降低无线技术的门槛,是本设计的初衷。对一些没有接触无线技术的人,从学到最后的设计应用需要比较长的时间。本文设计了一种基于无线收发芯片Si4432和单片机C8051F340的无线射频收发系统。基于串口透明传输,用户只需要了解一些串口指令即可方便实现无线收发。多种标准接口方便用户把模块嵌入到自己的产品中去。模块经过大量的试验、改进,能实现较远距离的稳定传输。 1、系统总体方案 无线射频收发系统结构框图如图1所示,由单片机C8051F340控制Si4432实现无线数据的收发。 发送模块中的C8051F340将数据
[单片机]
基于<font color='red'>串口</font>透明传输的无线射频收发系统设计
对FPGA设计进行编程并不困难
      最新的C语言工具可让不精通硬件开发的您快速完成算法密集型应用的设计。   硬件设计者已经开始在高性能DSP的设计中采用FPGA技术,因为它可以提供比基于PC或者单片机的解决方法快上10-100倍的运算量。以前,对硬件设计不熟悉的软件开发者们很难发挥出FPGA的优势,而如今基于C语言的方法可以让软件开发者毫不费力的将FPGA的优势发挥得淋漓尽致。这些基于C语言的开发工具可以比基于HDL语言的硬件设计更节省设计时间,同时不需要太多的硬件知识。   由于具有这些优势,FPGA技术不仅可使这些器件作为I/O器件的前端,FPGA还可实现大量的高带宽和运算密集型应用的实时处理。此外,FPGA还可很紧密地与板上存储器结合,并在
[医疗电子]
对FPGA设计进行编程并不困难
Connective Peripherals USB Type-C串口适配器电缆问市
Connective Peripherals现在可以向全球市场提供配备USB - C型终端的转换器电缆解决方案。这些来自FTDI批准的模块/电缆分包商的新电缆将对工程师具有相当大的价值,有助于促进现代电子硬件与传统设备和外设的互连。覆盖USB-to-RS232, USB-to-TTL和USB-to-MPSSE数据接口,它们可以提供在全速或高速版本。 Connective Peripherals是目前市场上唯一一家提供C型终端高速成型电缆的供应商。这些电缆重量轻,但结构坚固可靠,长度多种多样,包括0.1米、0.5米、1.0米和1.8米(取决于特定型号指定)。 这些符合FCC和CE标准的电缆的关键用途与嵌入式系统开发和评估活
[网络通信]
Connective Peripherals USB Type-C<font color='red'>串口</font>适配器电缆问市
韦东山ARM裸机学习笔记——S3C2440的串口驱动编程原理
前言 讲解韦东山JZ2440开发板的串口驱动原理,对韦东山在维基教程串口使用内容的一些补充,串口使用点击这里进入。这里主要讲的是串口驱动的编程思路,如何根据s3c2440的芯片手册编写出最简单的串口驱动。 一、串口的初始化 串口初始化包括引脚初始化、串口时钟初始化和中断模式、波特率配置以及参数配置等。 1、引脚初始化 (1)看JZ2440开发板的原理图,可知UART0的引脚是GPH2(TXD0)和GPH3(RXD0)。 (2)到s3c2440芯片手册295页,看GPHCON(GPH控制寄存器),可以需要把GPH2也就是GPHCON 配置为10,GPH3也就是GPHCON 配置为10。 (3)配置引脚为内部上拉,
[单片机]
韦东山ARM裸机学习笔记——S3C2440的<font color='red'>串口</font>驱动编程原理
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved