tag 标签: 并行总线

相关博文
  • 热度 19
    2017-5-25 13:27
    1984 次阅读|
    0 个评论
    虽然随着技术的发展,现代的数字芯片已经集成了越来越多的功能,但是对于稍微复杂一点的系统来说,很多时候单独一个芯片很难完成所有的工作,这就需要和其它芯片配合起来工作。比如我们现在的CPU的处理能力越来越强,很多CPU内部甚至集成了显示处理的功能,但是仍然需要配合外部的内存芯片来存储临时的数据、需要配合桥接芯片扩展硬盘、USB等外围接口;现代的FPGA内部也可以集成CPU、DSP、RAM、高速收发器等,但有些场合可能还需要配合专用的DSP来进一步提高浮点处理效率、配合额外的内存芯片来扩展存储空间、配合专用的物理层芯片来扩展网口、USB等,或者需要多片FPGA互连来提高处理能力。所以的这一切,都需要用到相应的总线来实现多个数字芯片间的互连。如果我们把各个功能芯片想象成人体的各个功能器官的话,总线就是血脉和经络,通过这些路径,各个功能模块间才能进行有效的数据交换和协同工作。 我们经常使用到的总线根据数据传输方式的不同,可以分为并行总线和串行总线。 并行总线: 并行总线是数字电路里最早也是最普遍采用的总线结构。在这种总线上,要传输的数据线、地址线、控制线等都是并行传输,比如要传输8位的数据宽度,就需要8根数据信号线同时传输,如果要传输32位的数据宽度就需要32根数据信号线同时传输。除了数据线以外,如果要寻址比较大的地址空间,还需要很多根地址线的组合来代表不同的地址空间。下图是一个典型的微处理器的并行总线的工作时序,其中包含了1根时钟线、16根数据线、16根地址线以及一些读写控制信号。 很多经典的处理器都采用了并行的总线架构。比如大家熟知的51单片机就采用了8根并行数据线和16根地址线;CPU的鼻祖,Intel 公司的8086微处理器最初推出时具有16根并行数据线和16根地址线;现在很多嵌入式系统中广泛使用的ARM处理器则大部分使用32根数据线以及若干根地址线。 并行总线的最大好处是总线的逻辑时序比较简单,电路实现起来比较容易,但是缺点也是非常明显的。比如并行总线的信号线数量非常多,会占用大量的管脚和布线空间,因此芯片和PCB板的尺寸很难实现小型化,特别是如果要用电缆进行远距离传输时,由于信号线的数量非常多,使得电缆变得非常昂贵和笨重。 采用并行总线的另外一个问题在于总线的吞吐量很难持续提升。对于并行总线来说,其总线吞吐量=数据线位数×数据速率。我们可以通过提升数据线的位数来提高总线吞吐量,也可以通过提升数据速率来提高总线吞吐量。以个人计算机里曾经非常流行的PCI总线为例,其最早推出时总线是32位的数据线,工作时钟频率是33MHz,其总线吞吐量=32bit×33MHz;后来为了提升其总线吞吐量推出的PCI-X总线,把总线宽度扩展到64位,工作时钟频率最高提升到133MHz,其总线吞吐量=64bit×133MHz。下图是PCI插槽和PCI-X插槽的一个对比,可以看到PCI-X由于使用了更多的数据线,其插槽更长(来源:网络图片)。 但是随着人们对于总线吞吐量的要求的不断提高,这种提升总线带宽的方式遇到了瓶颈。首先由于芯片尺寸和布线空间的限制,64位数据宽度已经几乎是极限了。另外一方面,这64根数据线是共用一个采样时钟,为了保证所有的信号都满足其建立保持时间的要求,在PCB上布线、换层、拐弯时需要保证精确等长。而总线工作速率越高,对于各条线的等长要求就越高,对于这么多根信号要实现等长的布线是很难做到的。 下图是用逻辑分析仪采集到的一个实际的8位总线的工作时序,我们可以看到在数据从0x00跳变到0xFF状态过程中,这8根线实际并不是精确一起跳变的。 对于并行总线来说,更致命的是这种总线上通常挂有多个设备,且读写共用,各种信号分叉造成的反射问题使得信号质量进一步恶化。 串行总线: 为了解决并行总线占用尺寸过大且对布线等长要求过于苛刻的问题,随着芯片技术的发展和速度的提升,越来越多的数字接口开始采用串行总线。所谓串行总线,就是并行的数据在总线上不再是并行地传输,而是时分复用在一根或几根线上传输。比如在并行总线上传输1个Byte的数据宽度需要8根线,而如果把这8根线上的信号时分复用在一根线上就可以大大减少需要的走线数量,同时也不需要再考虑8根线之间的等长关系。 采用串行总线以后,就单根线来说,由于上面要传输原来多根线传输的数据,所以其工作速率一般要比相应的并行总线高很多。比如以前计算机上的扩展槽上广泛使用的PCI总线采用并行32位的数据线,每根数据线上的数据传输速率是33Mbit/s,演变到PCI-E(PCI-Express)的串行版本后每根线上的数据速率至少是2.5Gbit/s(PCI-E 1代标准),现在PCI-E的数据速率已经达到了5Gbit/s(PCI-E 2代标准)或8Gbit/s(PCI-E 3代标准)。采用串行总线的另一个好处是在提高数据传输速率的同时节省了布线空间,同时芯片的功耗也降低了,所以在现代的电子设备中,当需要进行高速数据传输时,使用串行总线的越来越多。 数据速率提高以后,对于阻抗匹配、线路损耗和抖动的要求就更高,稍不注意就很容易产生信号质量的问题。下图是一个典型的1Gbps的信号从发送端经过芯片封装、PCB板、连接器、背板传输到接收端的信号路径,从中我们可以看到在发送端的接近理想的0、1跳变的数字信号到达接收端后由于高频损耗、反射等的影响信号波形已经变得非常恶劣,所以串行总线的设计对于数字电路的工程师来说是个很大挑战。 使用串行总线的设备的体积、功耗和数据传输速度都比使用并行接口的设备更有优势,因此得到了广泛的应用。比如以前在计算机上广泛使用的连接打印机的DB25的并口已经被USB和网口取代,以前连接硬盘的40pin的PATA接口已经被串行的SATA接口取代,以前计算机上的PCI扩展槽已经被PCI-Express取代。但是如前所述,采用串行总线以后信号的数据速率一般都会有几倍甚至几百倍的提升,对于电路的设计和测试都提出了很高的要求,因此需要设计和测试工程师掌握大量的高速设计的相关知识和技能。 更多高速测试问题,可关注微信公众号:‘数字科技’
  • 热度 16
    2013-3-25 09:07
    2542 次阅读|
    0 个评论
    PCI-X总线仍采用并行总线技术。PCI-X总线使用的大多数总线事务基于PCI总线,但是在实现细节上略有不同。PCI-X总线将工作频率提高到533MHz,并首先引入了PME(Power Management Event)机制。除此之外,PCI-X总线还提出了许多新的特性。 1.5.1 Split总线事务 Split总线事务是PCI-X总线一个重要特性。该总线事务替代了PCI总线的Delayed数据传送方式,从而提高了Non-Posted总线事务的传送效率。下文以存储器读为例,说明PCI-X设备如何使用Split总线事务。 PCI-X总线在进行存储器读总线事务时,总线事务的发起方(Requester)使用Split总线事务与总线事务接收端(Completer)进行数据交换,其步骤如下。 (1) Requester向Completer发起存储器读请求总线事务。 (2) 这个存储器读请求在到达Completer之前,可能会经过多级PCI-X桥。这些PCI-X桥使用Split Response周期结束当前总线事务,释放上游PCI总线。之后继续转发这个存储器读请求,直到Completer认领这个存储器读请求总线事务。 (3) Completer认领存储器读请求总线事务后,将记录将Requester的ID号,并使用Split Response周期结束存储器读请求总线事务。 (4) Completer准备好数据后,将重新申请总线,并使用存储器读完成总线事务主动地将数据传送给Requester。在这个完成报文中包含Requester的ID号,因为完成报文使用ID路由而不是地址路由。 (5) 这些完成报文根据ID路由方式,最终到达Requester。Requester从完成报文中接收数据并完成整个存储器读请求。 与Delayed总线事务相比,Requester获得的数据是Completer将数据完全准备好后,由Completer主动传递的,而不是通过Requester通过多次重试获得的,因此能够提高PCI-X总线的使用效率。PCI-X总线提出的Split总线事务被PCIe总线继承。 1.5.2 总线传送协议 PCI-X总线改变了PCI总线使用的传送协议。目标设备可以将主设备发送的命令锁存,然后在下一个时钟周期进行译码操作。与PCI总线事务相比,PCI-X总线采用的这种方式,虽然在总线时序中多使用了一个时钟周期,但是可以有效提高PCI-X总线的运行频率。 因为主设备通过数据线将命令发送到目标设备需要一定的延时。如果PCI总线频率较高,目标设备很难在一个时钟周期内接收完毕总线命令,并同时完成译码工作。而如果目标设备能够将主设备发出的命令先进行锁存,然后在下一个时钟周期进行译码则可以有效解决这个译码时间Margin不足的问题,从而提高PCI-X总线的频率。PCI-X 1.0总线可以使用的最高总线频率为133MHz,而PCI-X 2.0总线可以使用的最高总线频率为533Mhz,远比PCI总线使用的总线频率高。 除了信号传送协议外,PCI-X总线在进行DMA读写时,可以不进行Cache共享一致性操作,而PCI总线进行DMA读写时必须进行Cache一致性操作。在某些特殊情况下,DMA读写时进行Cache共享一致性不但不能提高总线传送效率,反而会降低。第3.3节将详细讨论与Cache一致性相关的PCI总线事务。 此外PCI-X总线还支持乱序总线事务,即Relaxed Ordering,该总线事务被PCIe总线继承。对于某些应用,PCI-X设备使用Relaxed ordering方式,可以有效地提高数据传送效率。但是支持Relaxed Ordering的设备,需要较多的数据缓存和硬件逻辑处理这些乱序,这为PCI-X设备的设计带来了不小的困难。 1.5.3 基于数据块的突发传送 在PCI总线中,一次突发传送的大小为2个以上的双字,一次突发传送所携带的数据越多时,突发传送的总线利用率也越高。 而PCI总线的突发传送仍然存在缺陷。在PCI总线中,数据发送端知道究竟需要发送多少字节的数据,但是接收端并不清楚到底需要接收多少数据。这种不确定性,为接收端的缓冲管理带来了较大的挑战。 为此PCI-X总线使用基于数据块的突发传送方式,发送端以ADB(Allowable Disconnect Boundary)为单位,将数据发送给接收端,一次突发读写为一个以上的ADB。采用这种方式,接收端可以事先预知是否有足够的接收缓冲,接收来自发送端的数据,从而可以及时断连当前总线周期,以节约PCI-X总线的带宽。在PCI-X总线中,ADB的大小为128B。 由于ADB的引入,PCI总线与Cache相关的总线事务如Memory Read Line、Memory Read Multiline和Memory Write and Invalidate,都被PCI-X总线使用与ADB相关的总线事务替代。因为通过ADB,PCI-X桥(HOST主桥)可以准确地预知即将访问的数据在Cache中的分布情况。 PCI-X总线还增加了一些其他特性,如在总线事务中增加传送字节计数,限制等待状态等机制,并增强了奇偶校验的管理方式。但是PCI-X总线还没有普及,就被PCIe总线替代。因此在PC领域和嵌入式领域很少有基于PCI-X总线的设备,PCI-X设备仅在一些高端服务器上出现。因此本节不对PCI-X总线做进一步描述。事实上,PCI-X总线的许多特性都被PCIe总线继承。 1.6 小结 本章主要介绍了PCI总线的基本组成部件,PCI设备如何提交中断请求,以及PCI-X总线对PCI总线的功能增强。本章的重点在于PCI总线的Posted和Non-Posted总线事务,以及PCI总线如何使用Delayed传送方式处理Non-Posted总线事务,请读者务必深入理解这两种总线事务的不同。
相关资源