关于计算机总线,这些你都知道吗?

中科院半导体所 2021-12-30 18:00

图片

来源:公众号 — — — 技术大院

简介:传播知识、开阔视野。技术大杂院。开眼看世界,有种,有趣,有料。


【导读】
工程师为了简化硬件电路设计、简化系统结构,常用一组线路,配置以适当的接口电路,与各部件和外围设备连接,这组共用的连接线路被称为总线。

总线是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束,按照计算机所传输的信息种类。

通俗的讲,总线就是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道。

今天,我们从软件的角度,针对工作中常用的总线,展开讨论。

图片

总线的分类

按功能和规范划分:

  • 数据总线:ISA、EISA、VESA、PCI

  • 地址总线

    • 专门用来传送地址的

    • 总是单向三态的,地址只能从CPU传向外部存储器或I/O端口

    • 地址总线的位数决定了CPU可直接寻址的内存空间大小

  • 控制总线

    • 用来传送控制信号和时序信号

    • 控制信号中,有的是微处理器送往存储器和I/O接口电路的

    • 也有是其它部件反馈给CPU的,比如:中断申请信号、复位信号、总线请求信号、设备就绪信号等

  • 扩展总线

  • 局部总线

数据总线、地址总线、控制总线统称为系统总线,即通常意义上所说的总线。


图片


按照传输数据的方式划分:

  • 串行总线:二进制数据逐位通过一根数据线发送到目的器件

  • 并行总线:并行总线的数据线通常超过2根

    • SPI

    • I2C

    • USB

    • RS232


按照时钟信号是否独立划分:

  • 同步总线:时钟信号独立于数据,SPI、I2C是同步串行总线

  • 异步总线:时钟信号是从数据中提取出来的,RS232是异步串行总线


微机中总线一般包括:

  • 内部总线

    • 微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连

  • 系统总线

    • 微机中各插件板与系统板之间的总线,用于插件板一级的互连

  • 外部总线

    • 微机和外部设备之间的总线,微机作为一种设备,通过该总线和其他设备进行信息与数据交换,它用于设备一级的互连


汽车网络中常用的总线:

  • LIN总线

    • 一种低成本的串行通讯网络,用于实现汽车中的分布式电子控制系统,是一种辅助的总线网络

    • 在不需要CAN总线的带宽和多功能的场合LIN总线可大大节省成本

  • CAN总线

    • 控制单元和控制饭预案之间数据传输

    • 支持从物理层、数据链路层、协议层、应用层等UDS诊断、BT下载测试等


图片


I 2 C总线

I 2 C总线:是由Philips公司开发的两线式串行总线,产生于20世纪80年代,用于连接微控制器及其外围设备。


图片

特点:

  • I 2 C总线简单而有 效,占用的PCB(印制电路板)空间很小

  • 芯片引脚数量少,设计成本低

  • I 2 C总线支持多主控(Multi-Mastering)模式,任何能够进行发送和 接收的设备都可以成为主设备

  • 主控能够控制数据的传输和时钟频率,在任意时刻只能有一个主控

  • 组成I 2 C总线的两个信号为数据线SDA和时钟SCL


为了避免总线信号的混乱,要求各设备连接到总线的输出端必须是开漏输出或集电极开路输 出的结构。

总线空闲时,上拉电阻使SDA和SCL线都保持高电平。


时序:

I 2 C设备上的串行数据线SDA接口电路是双向的,输出电路用于向总线上发送数据,输入电路用于接收总线上的数据。同样地,串行时钟线SCL也是双向的。

  • 作为控制总线数据传送的主机要通过SCL输出电路发送时钟信号,并检测总线上SCL上的电平以决定什么时候发下一个时钟脉冲电 平

  • 作为接收主机命令的从设备需按总线上SCL的信号发送或接收SDA上的信号,它也可以向SCL线发出低电平信号以延长总线时钟信号周期

  • 当SCL稳定在高电平时,SDA由高到低的变化将产生一个开始位,而由低到高的变化则产生一个停止位,如图1所示

图片

图1   I 2 C总线的开始位和停止位


开始位和停止位都由I 2 C主设备产生

  • 在选择从设备时,如果从设备采用7位地址,则主设备在发起传输过程前,需先发送1字节的地址信息, 前7位为设备地址,最后1位为读写标志

  • 之后,每次传输的数据也是1字节,从MSB开始传输

  • 每个字节传完后,在SCL的第9个上升沿到来之 前,接收方应该发出1个ACK位。

  • SCL上的时钟脉冲由I 2 C主控方发出,在第8个时钟周期之后,主控方应该释放SDA,I 2 C总线的时序如图2所示

图片

图2  I 2 C总线的时序

SPI总线

SPI(Serial Peripheral Interface,串行外设接口):是一种同步串行外设接口,它可以使CPU与各种外围设 备以串行方式进行通信以交换信息。一般主控SoC作为SPI的“主”,而外设作为SPI的“从”。


图片


SPI接口一般使用4条线:

  • 串行时钟线(SCLK)

  • 主机输入/从机输出数据线MISO

  • 主机输出/从机输入数据线MOSI

  • 低电平有效的从机选择线SS

    • 在不同的文献里,也常称为nCS、CS、CSB、CSN、nSS、STE、SYNC等


如图3,1个主机连接3个SPI外设:

图片

图3 SPI主、从硬件连接图

时序:

在SPI总线的传输中,SS信号是低电平有效的,当我们要与某外设通信的时候,需要将该外设上 的SS线置低。


此外,特别要注意SPI从设备支持的SPI总线最高时钟频率(决定了SCK的频率)以及外设的 CPHA、CPOL模式,这决定了数据与时钟之间的偏移、采样的时刻以及触发的边沿是上升沿还是下降沿。

图片

图4  SPI总线的时序


SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性(CPOL)和相位(CPHA)可 以进行配置:

  • CPOL=0,串行同步时钟的空闲状态为低电平

    • 在第一个跳变沿(上升或下降)数据被采样

  • CPOL=1,串行同步时钟的空闲状态为高 电平

    • 在第二个跳变沿(上升或下降)数据被采样


USB总线

USB(通用串行总线):是Intel、Microsoft等厂商为解决计算机外设种类的日益增加与有限的主板插槽和端口之间 的矛盾而于1995年提出的。


特点:

  • 控制传输:可靠,时间有保证

  • 批量传输: 可靠, 时间没有保证, 比如:U盘

  • 中断传输:可靠,实时,比如:USB鼠标

  • 实时传输:不可靠,实时,比如:USB摄像头

  • USB通信过程均为主从结构,USB主机发起通信请求,设备进行数据回复

  • USB设备不具备主动向主机通信的能力

  • USB传输的对象为端点(endpoint),每一个端点都有传输类型和方向

  • 端点0用于控制传输,既能输出也能输入

  • 除了端点0,其他每一个端点只支持一个方向的数据传输

  • 输入(IN)、输出(OUT) "都是" 基于USB主机的立场说的,比如鼠标的数据是从鼠标传到PC机,对应的端点称为"输入端点"


USB硬件结构

图片

图5  USB硬件结构

如图5所示:

  • 集线器(USB Root Hub)端两条数据线(D+D-),都接有15K的下拉电阻

  • 当无设备接入时,集线器数据线D+D-的电压为低电平

  • 当设备接入时,由于设备的数据线上接有1.5K上拉电阻,使得1根数据线被拉高

  • 集线器根据数据线被拉高得知有设备接入,并根据D+为高还是D-为高来判断所接入的设备是全速USB设备(D+为高)还是低速USB设备(D-为高)


USB接入识别大致过程:

  1. 硬件插入,在D+或者D-上有电平变化,通知主机

  2. 主机通过端点地址0与usb设备交互,分配地址给usb从设备

  3. 通过端点0获取从设备的信息

  4. 安装对应的设备驱动,提供读写设备的函数


USB 工作模式:

  • 低速:速率为1.5Mbit/s,支持一些数据吞吐量和实时性 不高的设备,如鼠标等

  • 高速:

    • 在USB2.0中,增加了一种高速方式,数 据传输率达到480Mbit/s,半双工,可以满足更高速外设的需要

  • 全速:速率为12Mbit/s,可以外接速率更高的外设

  • Super Speed USB

    • USB 3.0(也被认为是Super Speed USB)的最 大传输带宽高达5.0Gbit/s(即640MB/s),全双工

以太网口

以太网接口:以太网MAC由IEEE 802.3以太网标准定义,实现了 数据链路层,由MAC(以太网媒体接入控制器)和PHY(物理接口收发器)组成。


常用的MAC支持10Mbit/s或100Mbit/s两种速率。


MAC和PHY之间采用MII(媒体独立接口)连接,它是IEEE-802.3定义的以太网行业标准,包括1个数据接口与MAC和PHY之间的1 个管理接口。

  • 数据接口

    • 包括分别用于发送和接收的两条独立信道,每条信道都有自己的数据、时钟和控制信号

    • MII数据接口总共需 要16个信号

  • MII管理接口

    • 包含两个信号,一个是时钟信号,另一个是数据信号

    • 通过管理接口,上层能监视和控制PHY


一个以太网接口的硬件电路原理如图6所示:

从CPU到最终接口依次为CPU、MAC、PHY、以太网隔离变压器、RJ45插座。以太 网隔离变压器是以太网收发芯片与连接器之间的磁性组件,在其两者之间起着信号传输、阻抗匹配、波形修复、信号杂波抑制和高 电压隔离作用。

图片

图6  以太网接口的硬件电路原理


常见的以太网接口类型:

  • SC光纤口:成本却较高,常用于千兆网络

  • RJ-45接口

    • 最常见的网络设备接口,俗称“水晶头”

    • 至少使用超五类线,要保证稳定高速的话还要使用6类线

  • FDDI接口

    • 光纤传输,容量大、传输距离长、抗干扰能力强

    • 常用于城域网、校园环境的主干网、多建筑物网络分布的环境

  • AUI接口:专门用于连接粗同轴电缆,现在较少

  • BNC接口

    • 分离式显示信号接口

    • 已经不再使用于交换机

  • Console接口

    • 可进行网络管理的以太网交换机上一般都有一个“Console”端口,它是专门用于对交换机进行配置和管理

    • 最常用、最基本的交换机管理和配置端口

PCI和PCIE

PCI(外围部件互连):是由Intel于1991年推出的一种局部总线,作为一种通用的总线接口标准,它在目前的计算 机系统中得到了非常广泛应用。


PCI特点:

  • 数据总线为32位,可扩充到64位

  • 可进行突发(Burst)模式传输

    • 指取得总线控制权后连续进行多个数据的传输

    • 只需要给出目的地的首地址,访问第1个数据后,第2~n个数据会在首地址的基础上按一定规则自动寻址和传 输

    • 与突发方式对应的是单周期方式,它在1个总线周期只传送1个数据

  • 总线操作与处理器—存储器子系统操作并行

  • 采用中央集中式总线仲裁

  • 支持全自动配置、资源分配,PCI卡内有设备信息寄存器组为系统提供卡的信息,可实现即插即用

  • PCI总线规范独立于微处理器,通用性好

  • PCI设备可以完全作为主控设备控制总线


一个典型的33MHz的PCI总线系统如上图7所示:

图片

图7  PCI总线系统

  • 处理器通过FSB与北桥相连接,北桥上挂载着图形加速器(显卡)、SDRAM(内存)和PCI总线

  • PCI总线上挂载着南桥、以太网、SCSI总线(一种老式的小型机总线)和若干个PCI插槽

  • CD和硬盘通过IDE连接至南桥,音频设备以及打印机、鼠标和键盘等也连接至南桥

  • 南桥还提供若干的USB接口


PCI总线是一种共享总线,所以需要特定的仲裁器(Arbiter)来决定当前时刻的总线的控制权。


一般该仲裁器位于北桥中,而仲裁器(主机)则通过一对引脚,REQ#(request) 和GNT# (grant)来与各个从机连接。

注:并不是所有的设备都有能力成为仲裁器(Arbiter)或者initiator。


最初的PCI总线的时钟频率为33MHz,但是随着版本的更新,时钟频率也逐渐的提高。但是由于PCI采用的是一种Reflected-Wave Signaling信号模型,导致了时钟频率越高,总线的最大负载越少,如图8所示:

图片

图8  PCI时钟和负载的变化图


PCI Spec规定了每个PCI总线上最多可以连接多达32个PCI设备,但是实际上却远远达不到32个,33MHz的32位PCI总线一般只能连接10到12个负载。


注:如果使用插槽连接,则一个连接算两个PCI设备,插槽和PCI卡分别算作一个PCI设备。也就是说一个33MHz的PCI总线最多只能连接4到5个插槽即PCI卡。


如果需要连接更多设备,可以借助PCI桥,采用PCI-to-PCI的方式,如图9所示:

图片

图9  包含PCI-to-PCI桥的PCI总线系统


为了能够取得更高的带宽,新版本的PCI Spec将PCI总线提高到了64-bit并将频率提高到了66MHz,最高支持533MB/s,如图10所示:

图片

图10 典型的66Mhz,64-bit的PCI系统结构图

注:

  • 总线频率的提高,必然会导致总线负载能力的降低

  • 66MHz 64-bit的PCI总线只能支持一个PCI插卡设备(算作两个PCI设备,插槽和PCI卡各算一个)

  • 为了增加整个系统的PCI设备数,就不得不去增加额外的PCI桥,这又进一步增加了功耗,提高了成本

  • 66MHz基本上算是PCI总线的频率的上限了


PCI总线的三种传输模式:

  • Programmed I/O(PIO)

    • 每次CPU和PCI设备以及SDRAM通信都需要额外的时钟周期

    • 还需要长时间地占用CPU,影响CPU的使用率

  • Peer-to-Peer

    • PCI总线系统中至少存在一个有能力成为主机的设备

    • 在实际的系统中,Peer-to-Peer这一传输方式却很少被使用,这是因为获得主机身份的PCI设备(Initiator)和另一个PCI设备(Target)通常采用不同的数据格式,除非他们是同一个厂家的设备

  • DMA

  • 图片

    图11  PCI总线的三种传输模式



PCI-E总线:Intel公司提出的新一代的总线接口,pcie的提出可以算是代表着传统并行总线向高速串行总线发展的时代的到来。


PCI-E特点:

  • 采用目前业内流行的点对点串行连 接,不像PCI那样共享总线

  • 采用串行方式传输数据

  • 不需要向整个总线请求带宽

  • 可以把数据传输率提高到一个很高的频率,达到PCI所不能提供的高带宽

  • 嵌入式时钟的技术(Embedded Clock)

    • 发送端不再向接收端发送时钟,但是接收端可以通过8b/10b的编码从数据Lane中恢复出时钟

  • PCI Express在软件层面上兼容目前的PCI技术和设备


如图12所示,设备A和设备B之间通过双向的Link相连接,每个Link支持1到32个通道(Lane)。由于是串行总线,因此所有的数据(包括配置信息等)都是以数据包为单位进行发送的。

图片

图12  PCI-E连接示意图

SD和SDIO

SD(Secure Digital): 就是一般常见的SD记忆卡。


特点:

  • 在设计上与MMC(Multi-Media Card)保持了兼容

  • SDHC(SD High Capacity)是大容量SD卡,支持的最大容量为32GB

  • 2009年发布的SDXC(SD eXtended Capacity)则支持最大2TB大小的 容量


SDIO(Secure Digital Input and Output Card):安全数字输入输出卡,在SD标准的基础上,定义了除存储卡以外的外设接口。

特点:
  • SDIO主要有两 类应用——可移动和不可移动

  • 不可移动设备遵循相同的电气标准,但不要求符合物理标准

  • 现在已经有非常多的手机或者手持装置都支 持SDIO的功能,以连接WiFi、蓝牙、GPS等模块


一般情况下,芯片内部集成的SD控制器同时支持MMC、SD卡,又支持SDIO卡,但是SD和SDIO的协议还是有不一样的地方,支持的命令 也会有不同。 


SD/SDIO的传输模式有:
  • SPI模式

  • 1位模式

  • 4位模式

图片

图13  SDIO接口引脚


时序:

  • CLK为时钟引脚,每个时钟周期传输一个命令或数据位

  • CMD是命令引脚,命令在CMD线上串行 传输,是双向半双工的(命令从主机到从卡,而命令的响应是从卡发送到主机)

  • DAT[0]~DAT[3]为数据线引脚

  • 在SPI模式中,第8脚位 被当成中断信号

图片

图14 SDIO单模块读

图片

图15  SDIO单模块读、写的典型时序


总结

计算机总线是一组能为多个部件分时共享的信息传送线,用来连接多个部件并为之提供信息交换通路。总线不仅是一组信号线,从广义上讲,总线是一组传送线路及相关的总线协议
如果说主板(Mother Board)是一座城市,那么总线就像是城市里的公共汽车(bus),连接的设备就是公交站,传输的数据包就是乘客,按照固定行车路线传输。每个乘客都要知道自己从哪站上,到哪站下,然后等到站的时候就下去进入另一个设备进行处理,这样,我们的计算机各部件和设备才能高效的配合,完成数据的传输和管理,更好的为我们所用。


图片


        

-----END-----

编辑:鹿定辞

图片