西电微机原理-第四章 总线技术

4.1 总线概述

Untitled

片内总线:CPU内部总线;连接各个CPU组件【在介绍8086内部结构时已经介绍过了】

系统总线:CPU外部,主机内部总线;连接CPU与内存和外设接口

通信总线:主机外部总线;连接外设接口与外设

并行(PCI):由于时钟偏移和线间串扰,数据传输速率不超过100M

串行(PCIe):不存在上述问题,所以虽然是串行的,数据传输还会更快,可达上G;省IO口

传输线一般不止一条线,采用差分传输,进一步增强抗干扰能力

片内总线

Untitled

端到端:

PCI: 共享带宽,分时使用 ——类似集线器

PCIe:不共享带宽,并行使用——类似于交换机

多通道:一对PCIe差分线叫做一个通道,在单位时间内可传输1bit数据。

PCIe*16:16对差分口,通道间并行,但不需要同步——类似于以太网的帧,发送方发送时打包,附带顺序信息,直接发送,接收方能恢复顺序

向下兼容:软件通过读写寄存器来使用PCI设备,而PCI和PCIe定义的寄存器及其使用方式是一样的,所以,总线协议对于软件时透明的。

通信总线

Untitled

用于软硬件调试:三线的形式很容易在单片机或其他硬件上自行搭建起来,便于硬件调试

LBA:传输的数据位表示的是硬盘的块号,所以如果传输4bit,块的大小是512KB,那么该总线可装载的硬盘大小是 \(2^4 * 512KB\)

USB C口,正反插都可以,中心对称设计

Untitled

3.1:只使用一个收发信号通道(绿色与蓝色)

3.2:使用两个通道,速率提升一倍

USB协议迭代

USB协议迭代

4.2 总线的驱动与控制

总线竞争

Untitled

TTL:Transister-Transister-Logic(晶体管)

TTL:Transister-Transister-Logic(晶体管)

如果负载采用弱上拉模式(各有一个上拉电阻),直接接通的话,容易造成负载烧毁

OC:Open Collector(开放集电极)

OC:Open Collector(开放集电极)

如果负载采用开漏输出(共用一个上拉电阻),那么一方面不会烧坏器件,另一方面可以实现线与逻辑(只有全部负载为高,总线的电平才会为高),省一个与门

也就是说,采用开漏输出时,发生总线竞争对器件和逻辑不会有什么影响;不采用开漏时,发生总线竞争时容易烧毁器件,那么此时有没有什么办法可以避免总线竞争呢

Untitled

总线负载

Untitled

Untitled

Untitled

Untitled

各个参数怎么看?查芯片手册

Untitled

Untitled

总线驱动设计

回顾:8086总线驱动

下面直接看驱动设计的例子

题目:给定一段内存空间的地址,要求对该地址进行读写的数据进行驱动

思路:74LS245双向驱动

用内存地址进行译码,作为245的使能端;

用内存读写信号作为245的方向控制端;

用逻辑门电路进行译码

Untitled

Untitled

Untitled

使用38译码器进行译码

Untitled

Untitled

Untitled

同时使用逻辑门和38译码器进行译码

Untitled

Untitled

两片245驱动16bit数据

两片245驱动16bit数据

为什么要使用AEN接口

首先要明白DMA控制外设读写内存的基本流程

Untitled

  1. 外设要进行读写,向DMA请求DREQ
  2. DMA向CPU放HOLD信号,CPU放弃对总线的控制,然后向CPU发送应答信号HOLDA
  3. DMA接收到CPU的应答信号之后,向外设发送应答DACK,示意外设可以开始使用总线; 此时该外设被默认选中

Untitled

如果外设是要发送数据给内存,那么

  1. DMA发送 内存地址 IOR[io读] MEMW[内存写] 【这些信号和地址DMA怎么会知道?外设发给它的】
  2. 由于发送DREQ的接口被默认选中,所以当它收到 IOR 的时候,它知道是发给自己的,于是向总线发送它要发送的数据
  3. 内存收到 MEMW内存地址 后,从总线中取出数据,存到对应的内存地址中。

但是,上述过程存在一个问题,就是发送DREQ的接口是被默认选中的,这件事情只有它自己知道,其他接口并不知道;所以如果总线中的内存地址恰好和某一个接口的内部地址相等的话,从该接口的视角来看,他收到了 IOR内部地址 ,它就会把总线信号理解为 IO要读它某一个内部地址的数据 ,于是它也会向响应总线信号,往总线发送数据,造成总线冲突

Untitled

所以,原本各个接口对总线信号的响应是自洽的,但是加入了DMA的默认选中后,就冲突了,所以解决的办法就是在DMA上加上一个AEN信号

  • 如果AEN=1,说明此时是DMA控制总线,所以除了那个发送DREQ的接口,其它接口都不回应总线信号
  • 如果AEN=0,说明此时CPU控制接口,各个接口就可以按照自己的理解回应总线信号

示例:

Untitled

  1. 编程题略,自己能看懂
  2. 信号变化

E信号只有在读写接口或内存的时候才会变化,即划线的两条指令。且这两条指令执行的时候是低电平,所以波形如图。

DIR=IOR&MEMR,也就是说,只有在读内存或者读就的时候才会是低电平,程序中只有读接口,没有读内存,所以就只有一个低电平脉冲。

Proteus仿真结果

Proteus仿真结果

总线设计中的工程问题

Untitled

Untitled

增加地线

增加地线

再高就不行了,后来ATA变成SATA(串行)

双绞线

双绞线

100M网线,两对差分信号,用双绞线连接

1000M则八根线全用,全部用双绞线连接

总线优化器

总线优化器

Untitled

方波可以理解为一组高频域低频的正弦波的叠加,其中频率最低的正弦波的频率等于方波的频率,方波边沿的跳转是有高频信号叠加出来的

  • 左图可以理解为加了低通滤波器后,高频正弦波被滤掉了,所以边沿不陡峭了
  • 右图可以理解为,由于高频分量的易反射性,导致高频分量一直叠加,导致边沿出现脉冲
posted @ 2025-09-15 17:06  Miaops  阅读(23)  评论(0)    收藏  举报