专栏首页OpenFPGA从PCI被“拍在沙滩上”谈并行总线和串行总线

从PCI被“拍在沙滩上”谈并行总线和串行总线

串行总线和并行总线接口

在高速串行总线流行起来之前,芯片之间的互联通过系统同步或者源同步的并行接口传输数据,而所谓的并行接口,是指通信中一个或几个字节(8位)数据是在n*8条并行传输线上同时由源端传到目的地,也可以说有多个数据线(几根就是几位),在每个时钟脉冲下可以发送多个数据位(几位的并行口就发送几位)。

串行通信指数据在单条一位宽的传输线上,一比特接一比特地按顺序传送的方式,在早期的定义里也有说只有一根数据线,每个时钟脉冲下只能发送一位数据的方式。

所以早期对串行通信与并行通信的理解为:同样的一个字节数据(8位),串行通信要分8次由低位到高位按顺序一位位地传送,而并行通信由于有8根线路,所以只要一次就可以传送过去,形象的说,把线路(通道)比作道路,能并排开几辆车的就可以说是“并行”,只能一辆一辆开的就属于“串行”了。

并行总线与串行总线的区别对比及优缺点

很明显,并行通信的速度要比串行通信的速度快得多,效率更高,费时更少。不过这些都是早期I/O速率都不高的情况下的理论理解,随着信息技术的飞速发展,之前的理解放在现在来看已经过时了,因为现在是高速串行信号时代了。

按照理论分析并行总线可以一次传多个数据位,而且时钟远远低于串行,理论应该成为目前高速传输信号的首选,那为什么像PCI、IEEE 1284、PATA等并行总线被PCIe、USB、SAT等串行总线所取代呢?

下面就针对并行总线为什么不能成为目前总线接口的主流?

图1‑5演示了系统同步(共同时钟)方式及源同步时钟方式并行总线接口。

图1‑5 系统同步(共同时钟)方式及源同步时钟方式并行总线接口

随着接口频率的提高,在系统同步接口方式中,有几个因素限制了有效数据窗口宽度的继续增加。

Ø时钟到达两个芯片的传播延时不相等(clock skew)

Ø并行数据各个bit的传播延时不相等(data skew)

Ø时钟的传播延时和数据的传播延时不一致(skew between data and clock)

虽然可以通过在目的芯片(chip #2)内用PLL补偿时钟延时差(clock skew),但是电压和温度(PVT)变化时,时钟延时的变化量和数据延时的变化量是不一样的,这又进一步恶化了数据窗口。

源同步接口方式中,发送侧Tx把时钟伴随数据一起发送出去,限制了clock skew对有效数据窗口的危害。通常在发送侧芯片内部,源同步接口把时钟信号和数据信号作一样的处理,也就是让它和数据信号经过相同的路径,保持相同的延时。这样PVT变化时,时钟和数据会朝着同一个方向增大或者减小相同的量,对skew最有利。

我们来做一些合理的典型假设,假设一个32bit数据的并行总线,

a)发送端的数据skew = 50 ps ---很高的要求

b)pcb走线引入的skew = 50ps ---很高的要求

c)时钟的周期抖动jitter = +/-50 ps ---很高的要求

d)接收端触发器采样窗口 = 250 ps ---Xilinx V7高端器件的IO触发器

可以大致估计出并行接口的最高时钟 = 1/(50+50+100+250) = 2.2GHz (DDR)或者1.1GHz (SDR)。

利用源同步接口,数据的有效窗口可以提高很多。通常频率都在1GHz以下。在实际应用中可以见到如SPI4.2接口的时钟可以高达DDR 700MHz x 16bits位宽。DDR Memory接口也算一种源同步接口,如DDR3在FPGA中可以做到大约800MHz的时钟。

要提高接口的传输带宽有两种方式,一种是提高时钟频率,一种是加大数据位宽。那么是不是可以无限制的增加数据的位宽呢?这就要牵涉到另外一个非常重要的问题-----同步开关噪声(SSN)。

这里不讨论SSN的原理,直接给出SSN的公式:SSN = L *N* di/dt

L是芯片封装电感,N是数据宽度,di/dt是电流变化的斜率。

随着频率的提高,数据位宽的增加,SSN成为提高传输带宽的主要瓶颈。图1.2是一个DDR3串扰的例子。图中低电平的理论值在0V,由于SSN的影响,低电平表现为震荡,震荡噪声的最大值达610mV,因此噪声余量只有1.5V/2-610mV=140mV。

图1‑6 DDR3串扰演示

因此也不可能靠无限的提高数据位宽来继续增加带宽。一种解决SSN的办法是使用差分信号替代单端信号,使用差分信号可以很好的解决SSN问题,代价是使用更多的芯片引脚。这在早期是可以接受的。但是摩尔定律的现象使得与几十年前相比可生产的芯片中硅电路的数量大幅增加,而芯片封装技术的pin密度并没有像硅密度一样以相同的速度在增加,因此I/O pin的封装实际上比硅电路还贵,这就意味着对于大多数芯片来说pin管脚越来越多变得不可接受。就好像我们都知道车道越多我们的通行效率就会更快,但随着现在的城市空间越来越小以及地价越来越贵,更多的车道慢慢的只能变得越来越难以实现。况且并行本身的I/O速率不高,就像拖拉机或毛马路,速度上不去再多车道也是枉然。

并且使用差分信号仍然解决不了数据skew的问题,很大位宽的差分信号再加上严格的时序限制,给并行接口带来了很大的挑战。

经上所述,并行总线在发高速传输的今天遇到了很多瓶颈,而这些瓶颈因为不能被解决,所以被串行总线所取代,但是将来随着一些工艺问题的解决,并行总线可能又被抬上“舞台”,像《PCIe“拍了拍”PCI- PCI和PCIe发展历史》这篇文章的演练历史一样。

PS:将来的DDR接口或许也会被串行总线所取代。。。(意淫ing)

这篇文章,没有过多的介绍串行总线,并不是串行总线并无缺点,高速的时钟带来的问题也很多,只不过后面要花大量篇幅介绍串行总线,以及他带来的问题及解决方式,所以这篇文章就没有进行过多介绍。

—END

本文分享自微信公众号 - OpenFPGA(OpenFPGA),作者:碎碎思

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-07-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FPGA全局时钟系统的设计

    在使用QuartusII设计Altera的FPGA时,对于时钟的考虑一般很少。我们想得到一个固定频率的时钟,无非就是将晶振从某个时钟管脚输入:若晶振频率即为期望...

    碎碎思
  • 高级FPGA设计技巧!多时钟域和异步信号处理解决方案

    有一个有趣的现象,众多数字设计特别是与FPGA设计相关的教科书都特别强调整个设计最好采用唯一的时钟域。换句话说,只有一个独立的网络可以驱动一个设计中所有触发器的...

    碎碎思
  • xilinx平台DDR3设计中文版教程

    使用ISE对 Xilinx 板子进行DDR3测试,从仿真篇、综合篇、设计篇、应用篇、最终提升五部分详细讲解,给出带图教程。

    碎碎思
  • 纯CSS实现吸附效果

    「吸附效果」就是网页滚到到某个位置,元素固定在该位置,后续不随网页滚动而滚动。吸附效果很常见,譬如吸顶效果和吸底效果,经常用在跟随导航、移动广告和悬浮提示等场景...

    JowayYoung
  • 你会不会分布式系统进程间通信?

    关于进程间通信,我前前后后写了不下十篇,后来整理成了一两篇,无非是写:shm共享内存、消息队列、管道等方式。 但是今天我接触到了另外一种以前确实没有想过的进程...

    看、未来
  • TOS中安装 SuperSU

    drunkdream
  • 今日头条PK艾瑞:数据机构和企业为何总是争论不休?

    临近年底科技新闻已经少了许多,全中国都在陆续放假,事情少了,所以能看到的话题几乎都是围绕春节红包的。 今天还是迎来了羊年最后一次撕逼:今日头条和艾瑞。 ? 今日...

    罗超频道
  • JVM之Parallel Scavenge收集器

    WindWant
  • uni-app禁止滑动滚动条穿透效果

    在做聊天页面的时候 用到了表情,这个位置没有做左右轮播滑动效果,就直接做了上下滑动,但是上下滑动的话 会导致外部的页面也跟着滑动,所以就写了个方法:@touch...

    〆 千寻、
  • Flash背景透明的代码

          我觉得这个应该不是太难,结果DW中死活设置不成功,网上搜索到的都是一些互相抄了抄去的不知所云的东西,懒得去学习研究,还不如在自己原来做过的网站中找代...

    用户1075292

扫码关注云+社区

领取腾讯云代金券