微型计算机知识

微型计算机期末复习

第 1 章 微型计算机概述 2学时

在这里插入图片描述

  1. 微处理器
    微处理器(不等同与CPU)是大规模集成电路的CPU(简称up或Mp),是微型计算机的核心。包括三个基本部分:
  • 算术逻辑部件(ALU):它用来执行基本的算术运算逻辑运算
  • 寄存器(register):CPU中有多个寄存器,称为CPU寄存器。用来存放操作数、中间结果以及存储运算结果的状态标志等。
  • 控制器(CU):它具有指挥整个系统操作次序的功能。
  1. 微型计算机
    微型计算机(硬件,主机)是由微处理器、存储器(RAM或ROM)、输入输出(I/O)接口电路和系统总线构成。
    在这里插入图片描述
  2. 以微型计算机为主体,配上系统软件(OS系统等)和外设之后,就构成了微型计算机系统。

问:微处理器、微型计算机、微型计算机系统的区别。
在这里插入图片描述
微处理器一般也称为CPU,它本身具有运算能力和控制功能。微处理器是微处理器的核心。微型计算机是由CPU、存储器、输入/输出接口电路和系统总线构成的裸机系统。微型计算机系统是以微型计算机为主机,配上系统软件和外设之后而构成的计算机系统。三者之间是有很大不同的,微处理器是微型计算机的组成部分,而微型计算机又是微型计算机系统的组成部分。

第 2 章 16位和32位微处理器(考核重点) 10学时

8086/8088微处理器是Intel公司推出的第三代CPU芯片,它们的内部结构基本相同,都采用16位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的40脚双列直插组件(DIP)中。

2.1 8086微处理器的一般性能特点

  • 16位的内部结构,16位双向数据信号线;
  • 20位地址信号线,可寻址1M字节存储单元;
  • 较强的指令系统;
  • 利用第16位的地址总线来进行I/O端口寻址,可寻址64K个I/O端口;
  • 中断功能强,可处理内部软件中断和外部中断,中断源可达256个;
  • 单一的+5V电源,单相时钟5MHz。

2.2 8086/8088CPU的编程结构

(编程结构是指从程序员和使用者的角度看到的结构,亦可称为功能结构。)
从功能上来看,8086/8088CPU可分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。
在这里插入图片描述

2.2.1 总线接口部件(BIU)

功能:负责与存储器(内存)及I/O接口之间的数据传送操作(总线操作,IO读等)。
具体来看,完成取指令送指令队列;CPU执行指令时,总线接口部件配合执行部件的动作,从指定的内存单元或I/O端口取操作数,将数据传送给执行部件,或者将执行部件的操作结果送内存单元或者I/O端口。
包括组成:

  • 段寄存器(DS( DX是通用寄存器,DS:DX=字符串首地址)、CS、ES(附加段寄存器)、SS(堆栈段寄存器,偏移量由栈顶指针SP提供));
  • 16位指令指针寄存器IP(指向下一条要取出的指令代码);
  • 20位地址加法器(用来产生20位地址):20位地址加法器的数据由段寄存器提供段地址、偏移量
  • 6字节(8088为4字节指令队列缓冲器
两点说明:

① 8086/8088的指令队列分别为6/4个字节,在执行指令的同时,可从内存中取出后续的指令代码,放在指令队列中,可以提高CPU的工作效率。
② 地址加法器用来产生20位物理地址。8086/8088可用20位地址寻址1M字节的内存空间,而CPU内部的寄存器都是16 位,因此需要由一个附加的机构来计算出20位的物理地址,这个机构就是20位的地址加法器。
例如:CS=0FE00H,IP=0400H,则表示要取指令代码的物理地址为0FE400H。

2.2.2 执行部件(EU)

功能:负责指令的执行 。
组成:

  • 4个通用寄存器,即 AX、BX、CX、DX ;
  • 4个专用寄存器,即 BP(默认的栈寻址寄存器)、SP(栈顶指针寄存器
    )、SI、DI ;
  • 标志寄存器 ;
  • ALU(算术逻辑单元) 。
2.2.3 BIU与EU的动作协调原则

总线接口部件(BIU)和执行部件(EU)按以下流水线技术原则协调工作,共同完成所要求的信息处理任务:
①每当8086的指令队列中有两个空字节,或8088的指令队列中有一个空字节时,BIU就会自动把指令取到指令队列中。
②每当EU准备执行一条指令时,它会从BIU部件的指令队列前部取出指令的代码,然后用几个时钟周期去执行指令。在执行指令的过程中,如果必须访问存储器或者I/O端口,那么EU就会请求BIU,进入总线周期,完成访问内存或者I/O端口的操作;如果此时BIU正好处于空闲状态,会立即响应EU的总线请求。
③当指令队列已满,且EU又没有总线访问请求时,BIU便进入空闲状态
④在执行转移指令、调用指令和返回指令时,由于待执行指令的顺序发生了变化,则指令队列中已经装入的字节被自动消除,BIU会接着往指令队列装入转向的另一程序段中的指令代码。

从上述BIU与EU的动作管理原则中,不难看出,它们两者的工作是不同步的,正是这种既相互独立又相互配合的关系,使得8086/8088可以在执行指令的同时,进行取指令代码的操作,也就是说BIU与EU是一种并行工作方式,改变了以往计算机取指令→译码→执行指令的串行工作方式,大大提高了工作效率,这正是8086/8088获得成功的原因之一。

2.2.4 086/8088CPU内部寄存器

8086/8088内部的寄存器可以分为通用寄存器和专用寄存器两大类,专用寄存器包括指针寄存器、变址寄存器等。

  • 通用寄存器
  • 指针寄存器
  • 变址寄存器
  • 控制寄存器
  • 段寄存器
  • 标志寄存器

通用寄存器
4个16位的通用寄存器还可以分成高8位和低8位两个独立的寄存器,这样又形成8个通用的8位寄存器
AX: AH AL BX: BH BL
CX: CH CL DX: DH DL
其中AX称为累加器,BX称为基址寄存器,CX称为计数寄存器,DX称为数据寄存器,这些寄存器在具体使用上有一定的差别,如表1-2所示。
在这里插入图片描述
指针寄存器
两个16位的指针寄存器SP和BP,其中SP是堆栈指针寄存器,由它和堆栈段寄存器SS一起来确定堆栈在内存中的位置; BP是基数指针寄存器,通常用于存放基地址。

变址寄存器
两个16位的变址寄存器SI和DI,其中SI是源变址寄存器,DI是目的变址寄存器,都用于指令的变址寻址方式。

段寄存器
系统中共有4个16位段寄存器,即代码段寄存器CS、数据段寄存器DS、堆栈段寄存器SS和附加段寄存器ES。这些段寄存器的内容与有效的地址偏移量一起,可确定内存的物理地址。通常CS划定并控制程序区,DS和ES控制数据区,SS控制堆栈区。

控制寄存器
IP、标志寄存器是系统中的两个16位控制寄存器,其中IP是指令指针寄存器,用来控制CPU的指令执行顺序,它和代码段寄存器CS一起可以确定当前所要取的指令的内存地址。顺序执行程序时,CPU每取一个指令字节,IP自动加1,指向下一个要读取的字节;当IP单独改变时,会发生段内的程序转移;当CS和IP同时改变时,会产生段间的程序转移。
标志寄存器的内容被称为处理器状态字PSW,用来存8086/8088CPU在工作过程中的状态

标志寄存器
8086/8088内部标志寄存器的内容,又称为处理器状态字PSW。其中共有9个标志位,可分成两类:一类为状态标志,一类为控制标志。
其中状态标志表示前一步操作(如加、减等)执行以后,ALU所处的状态,后续操作可以根据这些状态标志进行判断,实现转移;控制标志则可以通过指令人为设置,用以对某一种特定的功能起控制作用(如中断屏蔽等),反映了人们对微机系统工作方式的可控制性。
在这里插入图片描述
状态标志:6个

  • SF—符号标志位,当运算结果的最高位为1,该标志位置1,否则清0。即与运算结果的最高位相同。
  • ZF—零标志位,运算结果为0时,该标志位置1,否则清0。
  • PF—奇偶标志位,当运算结果的低8位中l的个数为偶数时,则该位置1,反之为0。
  • CF—进位标志位,做加法时最高位出现进位或做减法时最高位出现借位,该位置1,反之为0。
  • AF—半进位标志位,做字节加法时,当低四位有向高四位的进位,或在做减法时,低四位有向高四位的借位时,该标志位就置1。通常用于对BCD算术运算结果的调整。
  • OF—溢出标志位,当运算过程产生溢出时,会使OF为1。

控制标志:3个

  • DF—方向标志位,若该位置1,则串操作指令的地址修改为自动减量方向,反之,为自动增量方向。
  • IF—中断允许标志位,若该位置1,则处理器可以响应可屏蔽中断,否则就不能响应可屏蔽中断。
  • TF—陷阱标志位(单步标志位、跟踪标志)。当该位置1时,将使8086/8088进入单步工作方式,通常用于程序的调试。
2.2.5 8086/8088的总线周期的概念

一个最基本的总线周期有4个状态,即T1状态、T2状态、T3状态和T4状态。
① 在T1状态,CPU往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。
② 在T2状态,CPU从总线上撤消地址,而使总线的低16位浮置成高阻状态,为传输数据作准备。总线的最高4位(A19~ A16)用来输出本总线周期状态信息。
③ 在T3状态,多路总线的高4位继续提供状态信息,而多路总线的低16位上出现由CPU写出的数据或者CPU从存储器或端口读入的数据。
④ 在T3,T4期间,数据在CPU和存储器或I/O端口之间传输。若这两个时钟周期为外部逻辑提供的时间不足以响应访问要求,即数据未准备好,则在T3和T4之间可插入1~n个等待周期Tw来延长总线周期。
⑤ 在T4状态,总线周期结束。
在这里插入图片描述

2.3 8086/8088的引脚信号和工作模式

2.3.1 最小模式和最大模式的概念

所谓最小模式,就是系统中只有一个8088/8086微处理器,在这种情况下,所有的总线控制信号,都是直接由8088/8086CPU产生的,系统中的总线控制逻辑电路被减到最少,该模式适用于规模较小的微机应用系统。
最大模式是相对于最小模式而言的,最大模式用在中、大规模的微机应用系统中,在最大模式下,系统中至少包含两个微处理器,其中一个为主处理器,即8086/8086CPU,其它的微处理器称之为协处理器,它们是协助主处理器工作的。
两种工作模式构成两种不同规模的应用系统

  • 最小模式
    构成小规模的应用系统
    8088本身提供所有的系统总线信号
  • 最大模式
    构成较大规模的应用系统,例如可以接入数值协处理器8087
    8088和总线控制器8288共同形成系统总线信号
  • 两种工作模式利用MN/MX引脚区别
    ==MN/MX
    接高电平为最小模式==
    MN/MX*接低电平为最大模式
  • 两种工作模式下的内部操作并没有区别
    IBM PC/XT采用最大模式
    本书以最小模式展开基本原理
    (通常在信号名称加上划线(如:MX)或星号(如:MX*)表示低电平有效)
2.3.2 8086/8088的引脚信号和功能

如图所示,是8088CPU的外部结构,即引脚信号图,注意:在不同的工作模式下,其中一部分引脚的名称和功能可能不一致。
8088/8086CPU芯片都是双列直插式集成电路芯片,都有40个引脚,其中32个引脚在两种工作模式下的名称和功能是相同的,还有8个引脚在不同的工作模式下,具有不同的名称和功能。
在这里插入图片描述
外部特性表现在其引脚信号上,学习时请特别关注以下几个方面:
⑴ 引脚的功能:指引脚信号的定义、作用;通常采用英文单词或其缩写表示
⑵ 信号的流向:信号从芯片向外输出,还是从外部输入芯片,或者是双向的
⑶ 有效电平:起作用的逻辑电平高、低电平有效,上升、下降边沿有效
⑷ 三态能力:输出正常的低电平、高电平外,还可以输出高阻的第三态
在这里插入图片描述
分类学习这40个引脚(总线)信号
(1)数据和地址引脚
(2)读写控制引脚
(3)中断请求和响应引脚
(4)总线请求和响应引脚
(5)其它引脚

  • ①VCC 电源,输入,第40脚
    8088/8086CPU采用单一的+5V电压
    GND 接地引脚,第1、20脚
    向CPU提供参考地电平,有两个接地引脚。

  • ② AD15~AD0(Address Data Bus)
    地址/数据复用信号输入/输出引脚,双向工作
    第2~ 16脚分别为AD14~AD0,第39脚为AD15。
    分时输出低16位地址信号及进行数据信号的输入/输出。
    在8088中,高8位地址线实际上不作复用,只输出地址,称为A15~A8。

  • ③A19/s6~A15/s3(Address/Status Bus)
    地址/状态复用信号输出引脚, 输出
    第35~38脚分别为A19/s6∼A15/s3,这些引脚在总线周期的T1状态输出地址的最高4位,在总线周期的T2、T3、Tw和T4状态时,用来输出状态信息
    其中s6为0用以指示8086/8088CPU当前与总线连通;
    s5为1表明8086/8088CPU可以响应可屏蔽中断;
    s4、s3共有四个组态,用以指明当前正在使用哪个段寄存器,如表2.1所示,00—ES,01—SS,10—CS,11—DS。
    在这里插入图片描述
    ④ BHE/S7(Bus High Enable/Status)
    高8位数据允许/状态复用信号输出引脚,输出。
    分时输出有效信号,在T1状态,表示高8为数据线D15~D8上的数据有效;在T2、T3、T4及Tw状态,输出S7 状态信号,但S7未定义任何实际意义。
    利用BHE信号和AD0信号,可知系统当前的操作类型,具体规定见表2.2所示。
    在这里插入图片描述

  • ⑤NMI (Non-Maskable Interrupt)
    非屏蔽中断输入引脚:非屏蔽中断信号是一个由低到高的上升沿。这类中断不受中断允许标志IF的影响,也不能用软件进行屏蔽。每当NMI端进入一个正沿触发信号时,CPU就会在结束当前指令后,执行对应于中断类型号为2的非屏蔽中断处理程序。
    INTR(Interrupt Request)
    可屏蔽中断请求信号,输入,第18引脚:可屏蔽中断请求信号为高电平有效。CPU在执行每条指令的最后一个时钟,周期会对INTR信号进行采样,若CPU的中断允许标志IF为1,并且又接受
    到INTR信号
    , CPU就结束当前指令,响应中断请求,执行一个中断处理
    子程序。

  • ⑥ RD (Read)
    读输出信号,第32脚,输出
    用以指明要执行一个对内存单元或I/O端口的读操作,具体是读内存单元,还是读I/O端口,取决于控制信号M/IO

  • ⑦ CLK(Clock)
    时钟信号输入,第19脚,输入
    时钟信号的方波信号,占空比约为33%,即1/3周期为高电平,2/3周期为底电平,8088/8088的时钟频率(又称为主频)为4.77MHz,即从该引脚输入的时钟信号的频率为4.77MHz。时钟信号为CPU和总线控制逻辑电路提供定时手段。

  • ⑧ Reset (Reset)
    复位信号输入,第21脚,输入电平有效
    8088/8086CPU要求复位信号至少维持4个时钟周期才能起到复位的效果,复位信号输入之后,CPU结束当前操作,并对处理器的标志寄存器、IP、DS、SS、ES寄存器及指令队列进行清零操作,而将CS设置为0FFFFH。当复位信号变为低电平时,CPU从FFFF0H开始执行程序。

  • ⑨ READY(Ready)
    “准备好”信号输入,第22脚,输入,高电平有效
    “Ready”输入引脚,接收来自于内存单元或I/O端口向CPU发来的“准备好”状态信号,表明内存单元或I/O端口已经准备好进行读写操作。该信号是协调CPU与内存单元或I/O端口之间进行信息传送的联络信号

CPU在每个总线周期的T3状态开始对READY信号进行采样。若检测到READY为低电平,则在T3状态之后插入等待状态Tw。在Tw状态,CPU也对READY进行采样,如READY仍为低电平,则会继续插入Tw,直到READY变为高电平后,才进入T4状态,完成数据传送过程。

⑨TEST (Test)
测试信号输入,第23脚,低电平有效
TEST信号与WAIT指令结合起来使用,CPU执行WAIT指令后,处于等待状态,当TEST引脚输入低电平时,系统脱离等待状态,继续执行被暂停执行的指令。

  • ⑩ MN/MX(Minimum/Maximum Model Control)
    最小/最大模式设置信号输入,第33脚
    该输入引脚电平的高、低决定了CPU工作在最小模式还是最大模式,当该引脚接==+5V时,CPU工作于最小==模式下,当该引脚接地时,CPU工作于最大模式下。

在这里插入图片描述
最小模式下的24~31引脚

  • ① INTA(Interrupt Acknowledge)
    中断响应信号输出,第24脚,电平有效
    该引脚是CPU响应中断请求后,向中断源发出的认可信号,用以通知中断源,以便提供中断类型码,该信号为两个连续的负脉冲。第一个负脉冲通知外设的接口,它发出的中断请求已经得到允许;外设接口收到第二个负脉冲后,往数据总线上放中断类型码, CPU便可得到有关中断请求的详尽信息。

  • ②ALE(Address Lock Enable)
    地址锁存允许信号,输出,第25脚,高电平有效
    CPU通过该引脚向地址锁存器8282/8283发出地址锁存允许信号,把当前地址/数据复用总线上输出的是地址信息,锁存到地址锁存器8282/8283中去。注意:ALE信号不能被浮空。

  • ③ DEN(Data Enable)
    数据允许信号,输出,第26脚,电平有效
    为总线收发器8286/8287提供一个控制信号,表示CPU当前准备发送或接收一项数据。

  • ④ DT/R(Data Transmit/Receive)
    数据收发控制信号,输出,第27脚
    CPU通过该引脚发出控制数据传送方向的控制信号,在使用8286/8287作为数据总线收发器时,DT/R信号用以控制数据传送的方向,当该信号为高电平时,表示数据由CPU经总线收发器8286/8287输出,否则,数据传送方向相反。

  • ⑤ M/IO(Memory/Input &Output)
    存储器/ I/O端口选择信号,第28脚,输出
    这是CPU区分进行存储器访问还是I/O访问的输出控制信号。在8086中,当该引脚输出电平时,表明CPU要进行I/O端口的读写操作,低位地址总线上出现的是I/O端口的地址;当该引脚输出低电平时,表明CPU要进行存储器的读写操作,地址总线上出现的是访问存储器的地址。注意:在8088中,该引脚为 ,正好相反。

  • ⑥ WR (Write)
    写控制信号,输出,第28脚,电平有效,
    WR有效时,表示CPU当前正在进行存储器或I/O写操作。与M/IO配合实现对存储单元、I/O端口所进行的写操作控制。

  • HOLD (Hold Request)
    总线保持请求信号输入,第31脚,电平有效
    这是系统中的其它总线部件向CPU发来的总线请求信号输入引脚。

  • HLDA(Hold Acknowledge)
    总线保持响应信号输出,第30引脚,电平有效
    当HELD有效时,表示CPU认可其他总线部件提出的总线占用请求,准备让出总线控制权。同时,所有与三态门相接的CPU的引脚呈现高阻状态,从而让出了总线。

最大模式下的24~31引脚(未整理)

2.4 8086的操作和时序

时序(Timing)是指信号高低电平(有效或无效)变化及相互间的时间顺序关系
CPU时序决定系统各部件间的同步和定时
总线时序描述CPU引脚如何实现总线操作

2.4.1 指令周期、总线周期及时钟周期

微机系统的工作,必须严格按照一定的时间关系来进行,CPU定时所用的周期有三种,即指令周期、总线周期和时钟周期。
(1) 指令周期
一条指令从其代码被从内存单元中取出到其所规定的操作执行完毕,所用的时间,称为相应指令的指令周期。由于指令的类型、功能不同,因此,不同指令所要完成的操作也不同,相应地,其所需的时间也不相同。也就是说,指令周期的长度因指令的不同而不同。

(2) 总线周期
我们把CPU通过总线与内存或I/O端口之间,进行一个字节数据交换所进行的操作,称为一次总线操作,相应于某个总线操作的时间即为总线周期。虽然,每条指令的功能不同,所需要进行的操作也不同,指令周期的长度也必不相同。但是,我们可以对不同指令所需进行的操作进行分解,它们又都是由一些基本的操作组合而成的。如存储器的读/写操作、I/O端口的读/写操作、中断响应等,这些基本的操作都要通过系统总线实现对内存或I/O端口的访问的。不同的指令所要完成的操作,是由一系列的总线操作组合而成的,而线操作的数量及排列顺序因指令的不同而不同。
8088的总线操作,就是8088CPU利用总线(AB、DB、CB)与内存及I/O端口进行信息交换的过程,与这些过程相对应的总线上的信号变化的相对时间关系,就是相应总线操作的时序。

总线操作是指CPU通过总线对外的各种操作
8088的总线操作主要有:

  • 存储器读、I/O读操作
  • 存储器写、I/O写操作
  • 中断响应操作
  • 总线请求及响应操作

CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti
描述总线操作的微处理器时序有三级
指令周期 → 总线周期 → 时钟周期

(3) 时钟周期
时钟周期是微机系统工作的最小时间单元,它取决于系统的主频率,系统完成任何操作所需要的时间,均是时钟周期的整数倍。时钟周期又称为T状态。时钟周期是基本定时脉冲的两个沿之间的时间间隔,而基本定时脉冲是由外部振荡器产生的,通过CPU的CLK输入端输入,基本定时脉冲的频率,我们称之为系统的主频率。例如8088CPU的主频率是5MHz,其时钟周期为200ns。一个基本的总线周期由4个T状态组成,我们分别称为T1~T44个状态,在每个T状态下,CPU完成不同的动作。

2.4.2 8086/8088微机系统的主要操作

8086/8088微机系统,能够完成的操作有下列几种主要类型

  • 系统的复位与启动操作;
    • 暂停操作;
    • 总线操作;(I/O读、I/O写、存贮器读、存贮器写)
    • 中断操作;
    • 最小模式下的总线保持;
    • 最大模式下的总线请求/允许。
2.4.3 典型的8086时序分析

指令所执行的操作,可以分为内部操作和外部操作。不同的指令其内、外部操作是不相同的,但这些操作可以分解为一个个总线操作。即总线操作的不同组合,就构成了不同指令的不同操作,而总线操作的类型是有限的,我们如果能够明确不同种类总线操作的时序关系,且可以根据不同指令的功能,把它们分解为不同总线操作的组合,那么,任何指令的时序关系,我们就都可以知道了。

最小模式下的典型时序
时序如图2-11所示,一个最基本的读周期包含有4个状态,即T1、T2、T3、T4,在存储器和外设速度较慢时,要在T3之后可插入1个或几个等待状态Tw。

8086读周期时序
在这里插入图片描述
T1状态
① 首先M/IO有效,用来指出本次读周期是存贮器读还是I/O读,它一直保持到整个总线周期的结束即T4状态。
②地址线信号有效,高4位通过地址/状态线A19/S6~ A16/S3送出,低16位通过地址/数据线AD15~ AD0送出,用来指出操作对象的地址,即存贮器单元地址或I/O端口地址。
③ALE有效,在最小模式的系统配置中我们讲过,地址信号通过地址锁存器8282锁存,ALE即为8282的锁存信号,下降沿有效
④BHE(对8088无用)有效,用来表示高8位数据总线上的信息有效,现在通过传送的是有效地址信息,BHE常作为地址存贮体的选通信号,因为奇地址存贮体中的信息总是通过高8位数据线来传输,而偶地址体的选通则用A0。
⑤当系统中配有总线驱动器时,T1使DT/R变低,表示本周期为周期,并通知总线驱动器接收数据(DT/R 接收 T)。

T2状态
⑥高四位地址/状态线送出状态信息,S6~S6。
⑦低16位地址/数据线浮空,为下面传送数据准备。
⑧BHE/S7引脚成为S7 (无定义)。
⑨RD有效,表示要对存贮器/I/O端口进行读。
⑩DEN有效,使得总线收发器(驱动器)可以传输数据(DEN 接收 OE )。

T3状态
在基本总线周期的T3状态,内存单元或者I/O端口将数据送到数据总线上,CPU通过AD15~AD0接收数据。

Tw状态
若存贮器或外设速度较慢,不能及时送上数据的话,则通过READY线通知CPU,CPU在T3的前沿(即T2结束末的下降沿)检测READY,若发现READY=0,则在T3结束后自动插入1个或几个Tw,并在每个Tw的前沿处检测READY,等到READY变高后,则自动脱离Tw进入T4。

T4状态
在T4与T3(或Tw)的交界处(下降沿),CPU对数据总线进行采样,从而获得数据,并使各控制及状态线进入无效 。

8086写周期的时序
在这里插入图片描述T1状态
基本上同读周期,只有此时DT/R为高不是低。

T2状态
与读周期有两点不同:
(1) RD变成WR;
(2) A15~A0不是浮空,而是发出要写入存储器或IO端口的数据

T3状态
在T3状态,CPU继续提供状态信息和数据,并且继续维持WR、M/IO及DEN信号为有效电平。

Tw状态
若CPU在T3状态的一开始未收到“准备好”信号,那么,会在状态T3和T4之间插入1到n个Tw,直到在某个Tw的前沿处,CPU采样到“准备好”信号后为止

T4状态
在T4状态,CPU认为存储器或I/O端口已经完成数据写入,因而,数据从数据总线上被撤除,各控制信号线和状态信号线也进入无效状态。此时,DEN信号进入高电平,从而使总线收发器不工作

最大模式下的典型时序(未整理)

2.5 中断操作和中断系统

2.5.1 中断的分类

中断源:引起中断的原因或发出中断请求的设备称为中断源。
8086/8088为每个中断源分配了一个中断类型码,其取值范围为0~255,即可处理256种中断。其中包括软件中断,系统占用的中断以及开放给用户使用的中断。
从产生中断的方法来分,这256种中断可以分为两大类:一类叫硬件中断;一类叫软件中断
(1)硬件中断
即通过外部的硬件产生的中断,如打印机、键盘等,有时也称为外部中断。硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。
不可屏蔽中断:由NMI引脚引入,它不受中断允许标志的影响,每个系统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。这种中断一旦发生,系统会立即响应;
可屏蔽中断:由INTR引脚引入,它受中断允许标志的影响,也就是说,只有当IF=1时,可屏蔽中断才能进入,反之则不允许进入,可屏蔽中断可有多个,一般是通过优先级排队,从多个中断源中选出一个进行处理。

(2) 软件中断(内部中断)
即CPU根据软件中的某条指令或者对标志寄存器中某个标志的设置而产生,它与硬件电路无关,常见的如除数为0引起的中断,或用INT n指令产生的中断。
在这里插入图片描述

2.5.2 中断向量和中断向量表

系统处理中断的方法很多,处理中断的步骤中最主要的一步就是如何根据不同的中断源进入相应的中断服务子程序,目前用的最多的就是向量式中断。

中断向量:把各个中断服务子程序的入口都称为一个中断向量;每个中断类型对应一个中断向量。

中断向量表:将这些中断向量按一定的规律排列成一个表,就是所谓的中断向量表,当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。

8086/8088中断系统中的中断向量表是位于0段的0~3FFFH的存贮区内,每个中断向量占四个单元,其中前两个单元存放中断处理子程序的入口地址的偏移量(IP),低位在前,高位在后;后两个单元存放中断处理子程序入口地址的段地址(CS),也是低位在前,高位在后,整个中断向量的排列是按中断类型号进行的。

图示给出了中断类型码与中断向量所在位置之间的对应关系。其中00H~04H为专用中断,05H~3FH为系统保留中断,用户一般是不能对它们定义的(这里面有一些为固定的用途,如INT 21H即为MS-DOS 的系统调用),40~FF为用户定义的中断。
在这里插入图片描述
在这里插入图片描述
中断类型号*4即可计算某个中断类型的中断向量在整个中断向量表中的位置。如类型号为20H,则中断向量的存放位置为20H*4=80H,(设中断服务子程序的入口地址为4030:2010,则0000:0080H~0000:0083H中就应顺序放入10H、20H、30H、40H。当系统响应20H号中断时,会自动查找中断向量,找出对应的中断向量装入CS、IP,即转入该中断服务子程序。

第 4 章 存储器和高速缓存技术

4.1 存储器和存储器件

存储器的概述
存储器是计算机(包括微机)硬件系统的重要组成部分,有了存储器,计算机才具有“记忆”功能,才能把程序及数据的代码保存起来,才能使计算机系统脱离人的干预,而自动完成信息处理的功能。
存储器系统的三项主要性能是指标容量、速度和成本。
存储容量是存储器系统的首要性能指标,因为存储容量越大,则系统能够保存的信息量就越多,相应计算机系统的功能就越强;
存储器的存取速度直接决定了整个微机系统的运行速度,因此,存取速度也是存储器系统的重要的性能指标;
存储器的成本也是存储器系统的重要性能指标。
为了在存储器系统中兼顾以上三个方面的指标,目前在计算机系统中通常采用三级存储器结构,即使用高速缓冲存储器、主存储器和辅助存储器,由这三者构成一个统一的存储系统。从整体看,其速度接近高速缓存的速度,其容量接近辅存的容量,而其成本则接近廉价慢速的辅存平均价格。

4.1.1 存储器的分类

  1. 构成存储器的器件和存储介质分类
    按构成存储器的器件和存储介质主要可分为:磁芯存储器、半导体存储器、光电存储器、磁膜、磁泡和其它磁表面存储器以及光盘存储器等。

  2. 存取方式分类

可将存储器分为随机存取存储器、只读存储器两种形式。

  • 随机存储器RAM(Random Access Memory)
    又称读写存储器,指能够通过指令随机地、个别地对其中各个单元进行读/写操作的一类存储器。
    按照存放信息原理的不同,随机存储器又可分为静态和动态两种。静态RAM是以双稳态元件作为基本的存储单元来保存信息的,因此,其保存的信息在不断电的情况下,是不会被破坏的;而动态RAM是靠电容的充、放电原理来存放信息的,由于保存在电容上的电荷,会随着时间而泄露,因而会使得这种器件中存放的信息丢失,必须定时进行刷新。

  • 只读存储器ROM (Read-Only Memory)
    在微机系统的在线运行过程中,只能对其进行读操作,而不能进行写操作的一类存储器。ROM通常用来存放固定不变的程序、汉字字型库、字符及图形符号等。随着半导体技术的发展,只读存储器也出现了不同的种类,如可编程的只读存储器PROM(Programmable ROM),可擦除的可编程的只读存储器EPROM(Erasible Programmable ROM)和EEPROM(Electric Erasible Programmable ROM)以及掩膜型只读存储器MROM(Masked ROM)等,近年来发展起来的快擦型存储器(F1ash Memory)具有EEPROM的特点。

  1. 按在微机系统中位置分类

分为主存储器(内存)、辅助存储器(外存)、缓冲存储器等,主存储器又称为系统的主存或者内存,位于系统主机的内部,CPU可以直接对其中的单元进行读/写操作;辅存存储器又称外存,位于系统主机的外部,CPU对其进行的存/取操作,必须通过内存才能进行;缓冲存储器位于主存与CPU之间,其存取速度非常快,但存储容量更小,可用来解决存取速度与存储容量之间的矛盾,提高整个系统的运行速度。
另外,还可根据所存信息是否容易丢失,而把存储器分成易失性存储器和非易失性存储器。如半导体存储器(DRAM,SRAM),停电后信息会丢失,属易失性;而磁带和磁盘等磁表面存储器,属非易失性存储器。

存储器分类表如下所示:
在这里插入图片描述在这里插入图片描述在这里插入图片描述

4.1.2 存储器的系统结构

一般情况下,一个存储器系统由以下几部分组成。

  1. 基本存储单元
    一个基本存储单元可以存放一位二进制信息,其内部具有两个稳定的且相互对立的状态,并能够在外部对其状态进行识别和改变。不同类型的基本存储单元,决定了由其所组成的存储器件的类型不同。
  2. 存储体(以图示讲解说明)
    一个基本存储单元只能保存一位二进制信息,若要存放M×N个二进制信息,就需要用M×N个基本存储单元,它们按一定的规则排列起来,由这些基本存储单元所构成的阵列称为存储体或存储矩阵。
  3. 地址译码器
    由于存储器系统是由许多存储单元构成的,每个存储单元一般存放8位二进制信息,为了加以区分,我们必须首先为这些存储单元编号,即分配给这些存储单元不同的地址。地址译码器的作用就是用来接受CPU送来的地址信号并对它进行译码,选择与此地址码相对应的存储单元,以便对该单元进行读/写操作

存储器地址译码有两种方式,通常称为单译码与双译码。
(1) 单译码
单译码方式又称字结构,适用于小容量存储器。
(2) 双译码
在双译码结构中,将地址译码器分成两部分,即行译码器(又叫X译码器)和列译码器(又叫Y译码器)。X译码器输出行地址选择信号,Y译码器输出列地址选择信号。行列选择线交叉处即为所选中的内存单元,这种方式的特点是译码输出线较少。双译码可简化芯片设计。

在这里插入图片描述

  1. 片选与读/写控制电路
    片选信号用以实现芯片的选择。对于一个芯片来讲,只有当片选信号有效时,才能对其进行读/写操作。片选信号一般由地址译码器的输出及一些控制信号来形成,而读/写控制电路则用来控制对芯片的读/写操作。
  2. I/O电路
    I/O电路位于系统数据总线与被选中的存储单元之间,用来控制信息的读出与写入,必要时,还可包含对I/O信号的驱动及放大处理功能。
  3. 集电极开路或三态输出缓冲器
    为了扩充存储器系统的容量,常常需要将几片RAM芯片的数据线并联使用或与双向的数据线相连,这就要用到集电极开路或三态输出缓冲器。
  4. 其它外围电路
    对不同类型的存储器系统,有时,还专门需要一些特殊的外围电路,如动态RAM中的预充电及刷新操作控制电路等,这也是存储器系统的重要组成部分。
    在这里插入图片描述

4.1.3 选择存储器器件的考虑因素

  1. 易失性
    易失性是区分存储器种类的重要外部特性之一。易失性是指电源断开之后,存储器的内容是否丢失。
    如果某种存储器在断电之后,仍能保存其中的内容,则为非易失性存储器(外部存储器、ROM) ;否则,就叫易失性存储器(RAM)

  2. 只读性
    只读性是区分存储器种类的又一个重要特性。
    如果某个存储器中写入数据后,只能被读出,但不能写入,那么这种存储器叫只读存储器,即ROM(read only memory);如果一个存储器在写入数据后,既可对它进行读出,又可再对它修改,那么就叫可读写存储器。

  3. 存储容量
    每个芯片中的存储单元的总数即存储容量。存储容量和芯片集成度有关,也和器件基本单元的工作原理和类型有关。
    内存条有8位数据宽度的30引线的SIMM(single inline memory module)、 32位数据宽度的72引线的SIMM和64位数据宽度的168引线DIMM (dual inline memory module)

  4. 速度
    存储器的速度是用存储器访问时间来衡量的。访问时间就是指存储器接收到稳定的地址信号到完成操作的时间。访问时间的长短决定于许多因素,主要与制造器件的工艺有关。
    当前,半导体存储器主要用两大类工艺,一类是双极性的TTL技术,一类是金属氧化物半导体MOS技术,后者又分CMOS和HMOS等技术

  5. 功耗
    在用电池供电的系统中,功耗是非常重要的问题。CMOS能够很好地满足低功耗要求。但CMOS能够很好地满足低功耗要求。但CMOS器件容量较小,并且速度慢。功耗和速度是成正比的。

4.1.4 随机存取存储器RAM

RAM按其结构和工作原理分为静态RAM即SRAM(static RAM)和动态RAM即DRAM(dynamic RAM)。 SRAM速度快,不需要刷新,但片容量低,功耗大。 DRAM片容量高,但需要刷新,否则其中的信息就会丢失。

  1. SRAM
    SRAM保存信息的机制是基于双稳态触发器的工作原理,组成双稳态触发器的A、B两管中,A导通B截止时为1,反之,A截止B导通时为0。其内部基本电路中,用2个晶体管构成双稳态触发器,2个晶体管作为负载电路,还有2个晶体管用来控制双稳态触发器。
    缺点:容量小、功耗大
    优点:不需要刷新,简化了外部电路
  2. DRAM
    (1) DRAM器件
    DRAM是利用电容存储电荷的原理来保存信息的,它将晶体管结电容的充电状态和放电状态分别作为1和0。
    DRAM的基本单元电路简单,最简单的DRAM单元只需一个管子构成,这使DRAM器件的芯片容量很高,而且功耗低。但是由于电容会逐渐放电,所以对DRAM必须不断进行读出和再写入,以使泄放的电荷得到补充,也就是刷新。
    一次刷新过程实际上就是对存储器进行一次读取、放大和再写入。

(2)动态RAM存储器芯片Intel 2164A
Intel2164A是一种64K×1的动态RAM存储器芯片,它的基本存储单元就是采用单管存储电路,其它的典型芯片有Ietel 21256/21464等。
在这里插入图片描述
Intel 2164A的内部结构
存储体:64K×1的存储体由4个128×128的存储阵列构成;
地址锁存器:由于Intel 2164A采用双译码方式,故其16位地址信息要分两次送入芯片内部。但由于封装的限制,这16位地址信息必须通过同一组引脚分两次接收,因此,在芯片内部有一个能保存8位地址信息的地址锁存器;
数据输入缓冲器: 用以暂存输入的数据;
数据输出缓冲器: 用以暂存要输出的数据;
1/4I/O门电路:由行、列地址信号的最高位控制,能从相应的4个存储矩阵中选择一个进行输入/输出操作;
行、列时钟缓冲器:用以协调行、列地址的选通信号;
写允许时钟缓冲器:用以控制芯片的数据传送方向;
128读出放大器:与4个128×128存储阵列相对应,共有4个128读出放大器,它们能接收由行地址选通的4×128个存储单元的信息,经放大后,再写回原存储单元,是实现刷新操作的重要部分;
1/128行、列译码器: 分别用来接收7位的行、列地址,经译码后,从128×128个存储单元中选择一个确定的存储单元,以便对其进行读/写操作。

Intel 2164A的外部结构
Intel 2164A是具有16个引脚的双列直插式集成电路芯片,其引脚安排如图4-6所示。
•A0~A7:地址信号的输入引脚,用来分时接收CPU送来的8位行、列地址;
•RAS :行地址选通信号输入引脚,低电平有效,兼作芯片选择信号。当RAS为低电平时,表明芯片当前接收的是行地址;
•CAS :列地址选通信号输入引脚,低电平有效,表明当前正在接收的是列地址(此时RAS应保持为低电平);
•WE : 写允许控制信号输入引脚,当其为低电平时,执行写操作;否则,执行读操作。
• DIN:数据输入引脚;
• DOUT:数据输出引脚;
• VDD:十5V电源引脚;
• Css:地;
• N/C:未用引脚。
在这里插入图片描述

4.1.5 只读存储器ROM

指在微机系统的在线运行过程中,只能对其进行读操作,而不能进行写操作的一类存储器,在不断发展变化的过程中,也产生了掩模型ROM、可编程只读性PROM、可擦出可编程EPROM、EEPROM、闪烁存储器FLASH等各种不同类型。

ROM器件有两个显著的优点:
结构简单,所以位密度比可读写存储器高。
具有非易失性,所以可靠性高。

  1. 掩膜型ROM
    掩膜型ROM中的信息是厂家根据用户给定的程序或数据对芯片掩膜进行二次光刻而决定的。根据制造技术,掩膜型ROM又可分为MOS型和双极性两种。MOS型功耗小,但速度比较慢,微型机系统中用的ROM主要是这种类型。双极性速度比MOS型快,但功耗大,只用在速度较高的系统中。

  2. 可编程的ROM(PROM)
    掩膜ROM的存储单元在生产完成之后,其所保存的信息就已经固定下来了,这给使用者带来了不便。为了解决这个矛盾,设计制造了一种可由用户通过简易设备写入信息的ROM器件,即可编程的ROM,又称为PROM。
    PROM 的类型有多种,我们以二极管破坏型PROM为例来说明其存储原理。这种PROM存储器在出厂时,存储体中每条字线和位线的交叉处都是两个反向串联的二极管的PN结,字线与位线之间不导通,此时,意味着该存储器中所有的存储内容均为“1”。如果用户需要写入程序,则要通过专门的PROM写入电路,产生足够大的电流把要写入“1”的那个存储位上的二极管击穿,造成这个PN结短路,只剩下顺向的二极管跨连字线和位线,这时,此位就意味着写入了“1”。读出的操作同掩模ROM。
    除此之外,还有一种熔丝式PROM,用户编程时,靠专用写入电路产生脉冲电流,来烧断指定的熔丝,以达到写入“1”的目的。
    对PROM来讲,这个写入的过程称之为固化程序。由于击穿的二极管不能再正常工作,烧断后的熔丝不能再接上,所以这种ROM器件只能固化一次程序,数据写入后,就不能再改变了。

  3. 可擦除、可编程的ROM(EPROM)

  4. 电可擦除可编程序的ROM(Electronic Erasible Programmable ROM)

  5. 快擦型存储器(F1ash Memory)

4.2 微型机系统中存储器的体系结构

4.2 .1 层次化的存储器体系结构

微型计算机系统中,整个存储器体系采用层次化结构。这种层次化结构不但出现在存储器总体结构中,也出现在内存结构中。

  1. 层次化总体结构
    层次化:把各种速度不同、容量不同、存储技术也可能不同的存储设备分为几层,通过硬件和管理软件组成一个既有足够大的空间又能保证满足CPU存取速度要求而且价格适中的整体。这样的存储器具有最好的性能价格比。

分层结构思想:用Cache、内存和辅存来构成层次式的存储器,按使用频度将数据分为不同的档次分放在不同的存储器中,不同层次的存储器之间可以互相传输。

Cache是速度最快的存储器,是静态RAM类型,存取速度和CPU的速度相匹配,但价格也较高,且容量较小。CPU运行过程中,自动将当前要运行的指令和数据装入Cache。 Cache的内容是不断更新的, CPU所需要的信息都可以在Cache中找到,只有较少数情况下, CPU需通过访问DRAM来获得当前所要的信息。

内存由DRAM构成,速度比Cache慢,但容量较大。
辅助存储器即外存(如软盘、硬盘和光盘),速度比内存慢得多,但容量比内存大得多。
为了使Cache、内存和辅存构成协调工作的存储体系,采用虚拟存储技术来实现内存和辅存之间的映射,采用高速缓冲技术来实现Cache和内存之间的映射。
存储器的层次化总体结构:
在这里插入图片描述

  1. 内存的分区结构
    在这里插入图片描述(1)基本内存区
    基本内存区主要供DOS操作系统使用,其中容纳了DOS操作系统、DOS运行需要的系统数据、驱动程序以及中断向量表等。基本内存区为640K,从00000H~9FFFFH。
    在这里插入图片描述

(2)高端内存区
高端内存区留给系统ROM和外部设备的适配卡缓冲区使用。大小为384KB,地址范围为A0000H~FFFFFH。

4.3 高速缓冲技术

4.3.1 Cache概述

一、 问题的提出
微机系统中的内部存储器通常采用动态RAM构成,具有价格低,容量大的特点,但由于动态RAM采用MOS管电容的充放电原理来表示与存储信息,其存取速度相对于CPU的信息处理速度来说较低。这就导致了两者速度的不匹配,也就是说,慢速的存储器限制了高速CPU的性能,影响了微机系统的运行速度,并限制了计算机性能的进一步发挥和提高。高速缓冲存储器就是在这种情况下产生的。

二、 存储器访问的局部性
微机系统进行信息处理的过程就是执行程序的过程,这时,CPU需要频繁地与内存进行数据交换,包括取指令代码及数据的读写操作。通过对大量典型程序的运行情况分析结果表明,在一个较短的时间内,取指令代码的操作往往集中在存储器逻辑地址空间的很小范围内(因为在多数情况下,指令是顺序执行的,因此指令代码地址的分布就是连续的,再加上循环程序段和子程序段都需要重复执行多次,因此对这些局部存储单元的访问就自然具有时间上集中分布的倾向);数据读写操作的这种集中性倾向虽不如取指令代码那么明显,但对数组的存储和访问以及工作单元的选择也可以使存储器单元相对集中。这种对局部范围的存储器单元的防问比较频繁,而对此范围以外的存储单元访问相对甚少的现象,称为程序访问的局部性

三、 Cache-主存存储结构及其实现
为了解决存储器系统的容量、存取速度及单位成本之间的矛盾,可以采用Cache-主存存储结构,即在主存和CPU之间设置高速缓冲存储器Cache,把正在执行的指令代码单元附近的一部分指令代码或数据从主存装入Cache中,供CPU在一段时间内使用,由于存储器访问的局部性,在一定容量Cache的条件下,我们可以做到使CPU大部分取指令代码及进行数据读写的操作都只要通过访问Cache,而不是访问主存而实现

优点:
Cache的读写速度几乎能够与CPU进行匹配,所以微机系统的存取速度可以大大提高;
Cache的容量相对主存来说并不是太大,所以整个存储器系统的成本并没有上升很多。
采用了Cache-主存存储结构以后,整个存储器系统的容量及单位成本能够主存相当,而存取速度可以与Cache的读写速度相当,这就很好地解决了存储器系统的上述三个方面性能之间的矛盾。
在这里插入图片描述一个Cache系统包含三个部分:

  • Cache模块,既CPU和较慢速主存之间的SRAM
  • 主存,即较慢速DRAM
  • Cache控制器,用来对Cache系统进行控制。

在主存—Cache存储体系中,所有的程序代码和数据仍然都存放在主存中,Cache存储器只是在系统运行过程中,动态地存放了主存中的一部分程序块和数据块的副本,这是一种以块为单位的存储方式。块的大小称为“块长”,块长一般取一个主存周期所能调出的信息长度。

第 5 章 微型计算机和外设的数据传输

教学重点:

  • I/O接口电路的典型结构
  • 无条件传送方式
  • 查询传送方式
  • 中断工作过程

5.1 为什么要用接口电路

  • 存储器都是用来保存信息的,功能单一,传送方式单一(一次必定是传送1个字节或者1个字),品种很有限(只有只读类型和可读/可写类型),存取速度基本上和CPU的工作速度匹配。
  • 微机的外部设备多种多样
  • 工作原理、驱动方式、信息格式、以及工作速度方面彼此差别很大
  • 它们不能与CPU直接相连
  • 必须经过中间电路再与系统相连
  • 这部分电路被称为I/O接口电路,通过接口电路对输入/输出过程起一个缓冲和联络的作用
  • 注:接口电路完成相应的信号转换、速度匹配、数据缓冲等功能

5.2 接口电路的概述

什么是接口技术?
连接计算机系统中的各种功能部件,构成一个完整的、实用的计算机系统,这是接口技术的广义定义。依次定义,实现处理器到系统总线连接的总线驱动器、数据收发器、时钟电路等称为处理器借口。此外,还有RAM接口、ROM接口、外部设备接口等等。更为流行的观点认为接口技术是把由处理器、RAM、ROM等组成的基本系统与外部设备连接起来,从而实现计算机与外部世界通讯的一门 技术,即仅指I/O设备接口技术。

什么是I/O接口(电路)?
I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路
PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路
在这里插入图片描述
什么是微机接口技术?
处理微机系统与外设间联系的技术
注意其软硬结合的特点
根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备

接口功能

  • ⑴ 寻址能力:对送来的片选信号进行识别
  • ⑵ 输入/输出功能:根据读/写信号决定当前进行的是输入操作还是输出操作。
  • ⑶ 数据转换功能:并行数据向串行数据的转换或串行数据向并行数据的转换。
  • ⑷ 联络功能:就绪信号,忙信号等。
  • ⑸ 中断管理:发出中斯请求信号、接收中断响应信号、发送中断类型码的功能。并具有优先级管理功能
  • ⑹ 复位:接收复位信号,从而使接口本身以及所连的外设进行重新启动。
  • ⑺ 可编程:用软件来决定其工作方式,用软件来设置有关的控制信号。
  • ⑻ 错误检测:一类是传输错误。另一类是覆盖错误。
    注:一些接口还可根据具体情况设置其它的检测信息。

5.3 I/O接口与系统的连接

1.CPU与I/O设备之间的信号(三类)

  • (1) ==数据信息 == CPU和外设交换的基本信息,包括三种形式:数字量、模拟量 、开关量。
  • (2) == 状态信息 == 是外设通过接口往CPU传送的,反映了当前外设的工作状态。
    如:“准备好”(READY)信号、“忙”(BUSY)信号
  • (3) 控制信息 是CPU通过接口传送给外设的相关控制信息。
       如:外设的启动信号、停止信号就是常见的控制信息。

2.接口部件的I/O端口

  • ⑴数据端口:CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口,每个端口有一个端口地址。用于对来自CPU和内存的数据或者送往CPU和内存的数据起缓冲作用的,这些端口叫数据端口。

  • ⑵控制端口:用来存放CPU发出的命令,以便控制接口和设备的动作,这类端口叫控制端口。

  • ⑶状态端口:用来存放外部设备或者接口部件本身的状态,称为状态端口。
    如下图
    在这里插入图片描述注:
    ⑴输入还是输出,所用到的地址总是对端口而言的,不是对接口部件而言的。
    ⑵为了节省地址空间,将数据输入端口和数据输出端口对应同一个端口地址。同样,状态端口和控制端口也常用同一个端口地址
    ⑶CPU对外设的输入/输出操作就归结为对接口芯片各端口的读/写操作

I/O接口的典型结构:
在这里插入图片描述

CPU与外设主要有数据、状态和控制信息需要相互交换,于是从应用角度看内部:

  • ⑴ 数据寄存器
    输入数据寄存器:保存外设给CPU的数据
    输出数据寄存器:保存CPU给外设的数据
  • ⑵ 状态寄存器
    保存外设或接口电路的状态
  • ⑶ 控制寄存器
    保存CPU给外设或接口电路的命令

3.接口与系统的连接
接口电路位于CPU与外设之间,从结构上看,可以把一个接口分为两个部分。
⑴用来和I/O设备相连;
⑵用来和系统总线相连,这部分接口电路结构类似,连在同一总线上。
下图是一个典型的I/O接口和外部电路的连接图:
在这里插入图片描述

联络信号:读/写信号,以便决定数据传输方向。
地址译码器,片选信号:地址译码器除了接收地址信号外,还用来区分I/0地址空间和内存地址空间的信号(M/ I0)用于译码过程。

注:
⑴一个接口通常有若干个寄存器可读/写,
⑵一般用1-2位低位地址结合读/写信号来实现对接口内部寄存器的寻址。

4.输入输出的寻址方式

(1)接口电路占用的I/O端口有两类编排形式

  • I/O端口与存储器统一编址
    它们共享一个地址空间,如M6800
    优点:
    不需要专门的I/O指令
    I/O数据存取与存储器数据存取一样灵活
    缺点:
    I/O端口要占去部分存储器地址空间
    程序不易阅读(不易分清访存和访问外设)
    在这里插入图片描述

  • I/O端口单独编址
    I/O地址空间独立于存储地址空间,如8086/8088
    优点:
    I/O端口的地址空间独立
    控制和地址译码电路相对简单
    专门的I/O指令使程序清晰易读
    缺点:
    I/O指令没有存储器指令丰富

(2)8088/8086的I/O端口

  • 8088只能通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(Port),即I/O地址
  • 8086用于寻址外设端口的地址线为16条,端口最多为216(2的十六次幂)=65536(64K)个,端口号为0000H ~ FFFFH
  • 每个端口用于传送一个字节的外设数据

(3)I/O寻址方式
8088/8086的端口有64K个,无需分段,设计有两种寻址方式

  • 直接寻址:只用于寻址00H ~ FFH前256个端口,操作数i8表示端口号
  • 间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号
    对大于FFH的端口只能采用间接寻址方式

(4)数据交换方式

  • 如果输入输出一个字节,利用AL寄存器
  • 如果输入输出一个字,利用AX寄存器
  • 输入一个字,实际上是从连续两个端口输入两个字节,分别送AL(对应低地址端口)和AH(对应高地址端口)
  • 输出一个字,实际上是将AL(对应低地址端口)和AH(对应高地址端口)两个字节的内容输出给连续两个端口

5.4 CPU和外设之间的数据传送方式

  • 程序控制下的数据传送——通过CPU执行程序中的I/O指令来完成传送,又分为:无条件传送、查询传送、中断传送
  • 直接存储器存取(DMA)——传送请求由外设向DMA控制器(DMAC)提出,后者向CPU申请总线,最后DMAC利用系统总线来完成外设和存储器间的数据传送
  • I/O处理机——CPU委托专门的I/O处理机来管理外设,完成传送和相应的数据处理

1. 无条件传送方式及其接口
在CPU与慢速变化的设备交换数据时,可以认为它们总是处于==“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送==
适合于简单设备,如LED数码管、按键或按纽等
无条件传送的接口和操作均十分简单
这种传送有前提:外设必须随时就绪

2. 条件传送方式
又称查询方式,即通过程序查询相应设备的状态,若状态不符合,则CPU不能进行输入/输出操作,需要等待;只有当状态信号符合要求时,CPU才能进行相应的输入/输出操作。

一般外设均可以提供一些反映其状态的信号,如对输入设备来说,它能够提供“准备好”(“READY”)信号,“READY” =1 表示输入数据已准备好。输出设备则提供“忙”(“BUSY”)信号,“BUSY”=1表示当前时刻不能接收CPU来的数据,只有当“BUSY”=0时,才表明它可以接受来自于CPU的输出数据。

CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情况下(就绪)实现数据输入或输出
对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换
查询传送的特点是:工作可靠,适用面宽,但传送效率低

  • ⑴ 查询环节
    寻址状态口
    读取状态寄存器的标志位
    若不就绪就继续查询,直至就绪
  • ⑵ 传送环节
    寻址数据口
    是输入,通过输入指令从数据端口读入数据
    是输出,通过输出指令向数据端口输出数据
    在这里插入图片描述
    3. 中断传送方式
    为什么要采用中断传送方式?
    从查询式的传输过程可以看出,它的优点是硬件开销小,使用起来比较简单。但在此方式下,CPU要不断地查询外设的状态,当外设未准备好时,CPU就只能循环等待,不能执行其它程序,这样就浪费了CPU的大量时间,降低了主机的利用率。
    为了解决这个矛盾,我们提出了中断传送方式:即当CPU进行主程序操作时,外设的数据已存入输入端口的数据寄存器;或端口的数据输出寄存器已空,由外设通过接口电路向CPU发出中断请求信号,CPU在满足一定的条件下,暂停执行当前正在执行的主程序,转入执行相应能够进行输入/输出操作的子程序,待输入/输出操作执行完毕之后CPU即返回继续执行原来被中断的主程序。这样CPU就避免了把大量时间耗费在等待、查询状态信号的操作上,使其工作效率得以大大地提高。
    在这里插入图片描述CPU在执行程序中,被内部或外部的事件所打断,转去执行一段预先安排好的中断服务程序;服务结束后,又返回原来的断点,继续执行原来的程序

中断传送是一种效率更高的程序传送方式
进行传送的中断服务程序是预先设计好的
中断请求是外设随机向CPU提出的
CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚

传送方式的比较:

  • 无条件传送:慢速外设需与CPU保持同步
  • 查询传送: 简单实用,效率较低
  • 中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销
  • DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送

第 6 章 串并行通信和接口技术

6.2 串行接口和串行通信

教学重点

  • 串行接口与通信概述
  • 8251的内部结构和编程
  • 通信规程和通信标准

6.2.1 串行接口与通信概述

一、并行通信和串行通信
数据通信的基本方式可分为并行通信与串行通信两种:
并行通信:是指利用多条数据传输线将一个数据的各位同时传送。
特点:是传输速度快,适用于短距离通信
串行通信:是指利用一条传输线将数据一位位地顺序传送。
特点:是通信线路简单,利用电话或电报线路就可实现通信,降低成本,适用于远距离通信,但传输速度慢。

二、 串行通信基础
串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传送的方式
串行通信的优势:用于通信的线路少,因而在远距离通信时可以极大地降低成本
串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送
PC系列机上有两个串行异步通信接口、键盘、鼠标器与主机间采用串行数据传送

  1. 异步通信
  • 串行通信时的数据、控制和状态信息都使用同一根信号线传送
  • 收发双方必须遵守共同的通信协议(通信规程),才能解决传送速率、信息格式、位同步、字符同步、数据校验等问题
  • 串行异步通信以字符为单位进行传输,其通信协议是起止式异步通信协议

起止式异步通信协议
在这里插入图片描述

数据传输速率
数据传输速率也称比特率(Bit Rate)
每秒传输的二进制位数bps
字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒数
当进行二进制数码传输,且每位时间长度相等时,比特率还等于波特率(Baud Rate)
过去,串行异步通信的数据传输速率限制在50 bps到9600 bps之间。现在,可以达到115200 bps或更高

  1. 同步通信
    在这里插入图片描述
    以一个数据块(帧)为传输单位,每个数据块附加1个或2个同步字符,最后以校验字符结束
    同步通信的数据传输效率和传输速率较高,但硬件电路比较复杂
    串行同步通信主要应用在网络当中
    最常使用高级数据链路控制协议HDLC

  2. 数据传送方式
    在这里插入图片描述

  3. 信号传输方式
    (1)基带传输方式
    基带传输方式仅适宜于近距离和速度较低的通信。
    在传输线路上直接传输不加调制的二进制信号,如图所示。它要求传送线的频带较宽,传输的数字信号是矩形波。
    在这里插入图片描述

(2)频带传输方式
传输经过调制的模拟信号

  • 长距离通信时,发送方要用调制器把数字信号转换成模拟信号,接收方则用解调器将接收到的模拟信号再转换成数字信号,这就是信号的调制解调
  • 实现调制和解调任务的装置称为调制解调器(MODEM)。采用频带传输时,通信双方各接一个调制解调器,将数字信号寄载在模拟信号(载波)上加以传输。因此,这种传输方式也称为载波传输方式。这时的通信线路可以是电话交换网,也可以是专用线。

常用的调制方式有三种:
调幅、调频和调相,分别如下图所示。
在这里插入图片描述

  • 调制(Modulating)
    把数字信号转换为电话线路传送的模拟信号
  • 解调(Demodulating)
    将电话线路的模拟信号转换为数字信号
  • 调制解调器MODEM
    具有调制和解调功能的器件合制在一个装置

6.2.2 串行接口的标准

串行接口标准:指的是计算机或终端(数据终端设备DTE)的串行接口电路与调制解调器MODEM等(数据通信设备DCE)之间的连接标准。
一、串行接口标准RS-232C

  • 美国电子工业协会EIA制定的通用标准串行接口
    1962年公布,1969年修订
    1987年1月正式改名为EIA-232D
  • 设计目的是用于连接调制解调器
  • 现已成为数据终端设备DTE(例如计算机)与数据通信设备
    DCE(例如调制解调器)的标准接口
  • 可实现远距离通信,也可近距离连接两台微机
  • 属于网络层次结构中的最低层:物理层

RS-232C是一种标准接口,D型插座,采用25芯引脚或9芯引脚的连接器,如图所示。
在这里插入图片描述连接及通信原理:
微型计算机之间的串行通信就是按照RS-232C标准设计的接口电路实现的。如果使用一根电话线进行通信,那么计算机和MODEM之间的连线就是根据RS-232C标准连接的。其连接及通信原理如图所示。
在这里插入图片描述

1、RS-232C的引脚定义

232C接口标准使用一个25针连接器
绝大多数设备只使用其中9个信号,所以就有了9针连接器
232C包括两个信道:主信道和次信道
次信道为辅助串行通道提供数据控制和通道,但其传输速率比主信道要低得多,其他跟主信道相同,通常较少使用

  • TxD:发送数据
    串行数据的发送端
  • RxD:接收数据
    串行数据的接收端
  • RTS:请求发送
    当数据终端设备准备好送出数据时,就发出有效的RTS信号,用于通知数据通信设备准备接收数据
  • CTS:清除发送(允许发送)
    当数据通信设备已准备好接收数据终端设备的传送数据时,发出CTS有效信号来响应RTS信号
  • RTS和CTS是数据终端设备与数据通信设备间一对用于数据发送的联络信号
  • GND:信号地
    为所有的信号提供一个公共的参考电平
  • CD:载波检测(DCD)
    当本地调制解调器接收到来自对方的载波信号时,该引脚向数据终端设备提供有效信号
  • RI:振铃指示
    当调制解调器接收到对方的拨号信号期间,该引脚信号作为电话铃响的指示、保持有效
  • 保护地(机壳地)
    起屏蔽保护作用的接地端,一般应参照设备的使用规定,连接到设备的外壳或大地
  • TxC:发送器时钟
    控制数据终端发送串行数据的时钟信号
  • RxC:接收器时钟
    控制数据终端接收串行数据的时钟信号
2、RS-232C的连接
  • 微机利用232C接口连接调制解调器,用于实现通过电话线路的远距离通信
  • 微机利用232C接口直接连接进行短距离通信。这种连接不使用调制解调器,所以被称为零调制解调器(Null Modem)连接

连接调制解调器:
在这里插入图片描述

6.3 可编程串行通信接口8251A

  • 串行传输,需要并行到串行和串行到并行的转换,并按照传输协议发送和接收每个字符(或数据块)
  • 这些工作可由软件实现,也可用硬件实现
  • 通用异步接收发送器UART是串行异步通信的接口电路芯片
  • IBM PC/XT机的UART芯片是INS 8251
  • 后来使用NS16550

6.3.1 8251A的基本性能

8251A是可编程的串行通信接口芯片,基本性能:

  1. 两种工作方式:
    同步方式,异步方式

    同步方式下,波特率为0~ 64Kbps,异步方式下,波特率为0~ 19.2Kbps。
  2. 同步方式下的格式
    每个字符可以用5、6、7或8位来表示,并且内部能自动检测同步字符,从而实现同步。除此之外,8251A也允许同步方式下增加奇/偶校验位进行校验。
  3. 异步方式下的格式
    每个字符也可以用5、6、7或8位来表示,时钟频率为传输波特率的1、16或64倍,用1位作为奇/偶校验。1个启动位。并能根据编程为每个数据增加1个、1.5个或2个停止位。可以检查假启动位,自动检测和处理终止字符。
  4. 全双工的工作方式
    其内部提供具有双缓冲器的发送器和接收器。
  5. 提供出错检测
    具有奇偶、溢出和帧错误三种校验电路

6.3.2 8251A的基本工作原理

  • 8251实现了起止式串行异步通信协议,支持全双工通信
    通信字符可选择数据位为5~8位
    停止位1、1.5或2位
    可进行奇偶校验
    具有奇偶、帧和溢出错误检测电路
1、8251A的编程结构

8251A有:
1个数据输入缓冲寄存器
1个数据输出缓冲寄存器
1个发送移位寄存器
1个接收移位寄存器
1个控制寄存器
1个状态寄存器
1个模式寄存器
2个同步字符寄存器。

8251A的编程结构和外部连接:
在这里插入图片描述
各部件的功能说明

  • 数据输入缓冲寄存器和数据输出缓冲寄存器使用同一个端口地址;
  • 接收移位寄存器将到达RxD端的串行数据接收后进行移位,变为8位并行数据,传送到数据输入缓冲寄存器;
  • 发送移位寄存器将数据输出缓冲寄存器的并行数据变为串行数据,然后,从TxD端送往外部设备。
  • 控制寄存器用来8251A的工作,它的内容是由程序设置的。
    状态寄存器则在8251A的工作过程中为执行程序提供一定的状态信息。
  • 模式寄存器的内容决定了8251A到底工作在同步模式还是工作在异步模式,还决定了接收和发送的字符的格式
  • 2个同步字符寄存器用来容纳同步方式中所用的同步字符。
2、8251A的内部工作原理

在这里插入图片描述

(1)
发送器 (异步方式)
发送器由发送缓冲器和发送控制电路两部分组成。

  • 采用异步方式,则由发送控制电路在其首尾加上起始位和停止位,然后从起始位开始,经移位寄存器从数据输出线TXD逐位串行输出。
    在这里插入图片描述- 在异步发送方式下,当程序置允许发送位TxEN为1,并且由外设发来的对CPU请求发送信号的响应信号CTS有效后,便开始发送过程。
  • 在发送时,发送器为每个字符加上1个起始位,并且按照编程要求加上奇偶校验位以及1个、1.5个或者2个停止位。
  • 数据及起始位、校验位、停止位总是在发送时钟TxC的下降沿时从8251A发出。
  • 数据传输的波特率为发送时钟频率的1、1/16或者1/64,具体决定于编程时给出的波特率因子。

发送器 (同步方式)
采用同步方式,则在发送数据之前,发送器将自动送出1个或2个同步字符,然后才逐位串行输出数据
在这里插入图片描述

  • 在同步发送方式下,也要在程序置TxEN为1,且CTS有效后,才能开始发送过程。
  • 发送过程开始后,发送器先根据编程要求发送1个或者2个同步字符,然后发送数据块。
  • 在发送数据块时,发送器会根据编程要求对数据块中的每个数据加上奇偶校验位,也可不加。
  • 在同步发送时,若CPU不能及时提供新数据时,发送器会自动插入同步字符,满足在同步发送方式时不允许数据之间存在间隙的要求。
  • 如果CPU与8251A之间采用中断方式交换信息,那么TxRDY可作为向CPU发出的中断请求信号。当发送器中的8位数据串行发送完毕时,由发送控制电路向CPU发出TxE有效信号,表示发送器中移位寄存器已空。

串行数据的发送
在这里插入图片描述
(2)接收器

  • 接收器由接收缓冲器和接收控制电路两部分组成。
  • 接收移位寄存器从RxD引脚上接收串行数据转换成并行数据后存入接收缓冲器。

异步方式

  • 异步方式:在RxD线上检测低电平,将检测到的低电平作为起始位,并启动内部计数器进行计数,==当计数到相应于半个数位传输时间(波特率的一半)==时,又对RxD线进行检测,若仍为低电平,则确认收到一个有效的起始位。

  • 8251A开始每隔一个数位传输时间,对RxD进行一次采样,完成字符装配;

  • 数据进入输入移位寄存器被移位,并进行奇偶校验和去掉停止位,变成了并行数据后,送到数据输入寄存器,同时发出RxRDY信号送CPU,表示已经收到一个可用的数据。

  • 注:在异步接收时,有时会遇到这样的情况,既8251A在检测起始位时,过半个数位传输时间后,没有再次测得低电平。这种情况下,8251A就会把刚才检测到的信号看成干扰脉冲,于是重新开始检测RxD线上是否又出现低电平。
    在这里插入图片描述
    同步方式

  • 同步方式:首先搜索同步字符。8251A监测RXD线,每当RXD线上出现一个数据位时,接收下来并送入移位寄存器移位,与同步字符寄存器的内容进行比较,如果两者不相等,则接收下一位数据,并且重复上述比较过程。当两个寄存器的内容比较相等时,8251A的SYNDET升为高电平,表示同步字符已经找到,同步已经实现。

  • 采用双同步方式,就要在测得输入移位寄存器的内容与第一个同步字符寄存器的内容相同后,再继续检测此后输入移位寄存器的内容是否与第二个同步字符寄存器的内容相同。如果相同,则认为同步已经实现。

  • 在外同步情况下,同步输入端SYNDET加一个高电位来实现同步的。

  • 实现同步之后,接收器和发送器间就开始进行数据的同步传输。这时,接收器利用时钟信号对RXD线进行采样,并把收到的数据位送到移位寄存器中。在RXRDY引脚上发出一个信号,表示收到了一个字符。

串行数据的接收
在这里插入图片描述

3、数据总线缓冲器
  • 数据总线缓冲器是CPU与8251A之间的数据接口。包含3个8位的缓冲寄存器:两个寄存器分别用来存放CPU向8251A读取的数据或状态信息。一个寄存器用来存放CPU向8251A写入的数据或控制。
4、读/写控制电路

读/写控制电路用来配合数据总线缓冲器的工作。功能如下:

  • 接收写信号,并将来自数据总线的数据和控制字写入8251A;
  • 接收读信号,并将数据或状态字从8251A送往数据总线;
  • 接收控制/数据信号C/,高电平时为控制字或状态字;低电平时为数据。
  • 接收时钟信号CLK完成8251A的内部定时;
  • 接收复位信号RESET,使8251A处于空闲状态。
5、调制解调控制电路

调制解调控制电路用来简化8251A和调制解调器的连接

6.3.3 8251A的引脚

在这里插入图片描述

1、8251A和CPU之间的连接信号
  • (1) 片选信号
    CS:片选信号,它由CPU的地址信号通过译码后得到。
  • (2) 数据信号
    D0-D7:8位,三态,双向数据线,与系统的数据总线相连。传输CPU对8251A的编程命令字和8251A送往CPU的状态信息及数据。
  • (3) 读/写控制信号
    RD:读信号,低电平时, CPU当前正在从8251A读取数据或者状态信息。
    WR:写信号,低电乎时, CPU当前正在往8251A写入数据或者控制信息。
    C/D:控制/数据信号,用来区分当前读/写的是数据还是控制信息或状态信息。该信号也可看作是8251A数据口/控制口的选择信号。
    由此可知,RD、WR、C/D这3个信号的组合,决定了8251A的具体操作,它们的关系如表6-2所示:
    注:数据输入端口和数据输出端口合用同一个偶地址,而状态端口和控制端口合用同一个奇地址。
  • (4) 收发联络信号
    • TxRDY:发送器准备好信号,用来通知CPU,8251A已准备好发送一个字符。
    • TxE:发送器空信号,TXE为高电平时有效,用来表示此时8251A发送器中并行到串行转换器空,说明一个发送动作已完成。
    • RxRDY:接收器准备好信号,用来表示当前8251A已经从外部设备或调制解调器接收到一个字符,等待CPU来取走。因此,在中断方式时,RXRDY可用来作为中断请求信号;在查询方式时,RXRDY可用来作为查询信号。
    • SYNDET:同步检测信号,只用于同步方式。
2、8251A与外部设备之间的连接信号
  • (1) 收发联络信号
    • DTR:数据终端准备好信号,通知外部设备,CPU当前已经准备就绪。
    • DSR:数据设备准备好信号,表示当前外设已经准备好。
    • RTS:请求发送信号,表示CPU已经准备好发送。
    • CTS:允许发送信号,是对的响应,由外设送往8251A。
    实际使用时,这4个信号中通常只有必须为低电平,其它3个信号可以悬空。
  • (2) 数据信号
    • TxD:发送器数据输出信号。当CPU送往8251A的并行数据被转变为串行数据后,通过TXD送往外设。
    • RxD:接收器数据输入信号。用来接收外设送来的串行数据,数据进入8251A后被转变为并行方式。
  • (3) 时钟、电源和地
    8251A除了与CPU及外设的连接信号外,还有电源端、地端和3个时钟端。
    • CLK:时钟输入,用来产生8251A器件的内部时序。
    同步方式下,大于接收数据或发送数据的波特率的30倍,
    异步方式下,则要大于数据波特率的4.5倍。
    • TxC:发送器时钟输入,用来控制发送字符的速度。
    同步方式下,TxC的频率等于字符传输的波特率,
    异步方式下,TxC的频率可以为字符传输波特率的1倍、16倍或者64倍。
    • RxC:接收器时钟输入,用来控制接收字符的速度,和TxC一样。
    在实际使用时,RxC和TxC往往连在一起,由同一个外部时钟来提供,CLK则由另一个频率较高的外部时钟来提供。
    • VCC:电源输入
    • GND:地

6.3.4 可编程串行接口芯片8251A

1、8251A的编程

编程的内容包括两大方面:

  • 是由CPU发出的控制字,即方式选择控制字和操作命令控制字
  • 是由8251A向CPU送出的状态字

(1)方式选择控制字(模式字)
方式选择控制字的格式如图所示。
在这里插入图片描述
(2)操作命令控制字(控制字)
在这里插入图片描述
(3)状态字
状态字的格式如下:
在这里插入图片描述

2、8251A的初始化

(1)芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。
(2)如果模式字中规定了8251A工作在同步模式,
(3)由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。
流程图如图:
在这里插入图片描述

6.4可编程并行通信接口8255A

6.4.1 并行通信与并行接口

并行通信就是把一个字符的各位同时用几根线进行传输。传输速度快,信息率高。电缆要多,随着传输距离的增加,电缆的开销会成为突出的问题,所以,并行通信用在传输速率要求较高,而传输距离较短的场合。
Intel 8255A是一个通用的可编程的并行接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。

6.4.2 8255A内部结构

在这里插入图片描述

1、数据端口A、B、C
  • A口:是一个独立的8位I/O口,它的内部有对数据输入/输出锁存功能;
  • B口:也是一个独立的8位I/O口,仅对输出数据的锁存功能。
  • C口:可以看作是一个独立的8位I/O口;也可以看作是两个独立的4位I/O口。也是仅对输出数据进行锁存
2、A组控制和B组控制

这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作
A组控制电路用来控制A口及C口的高4位
B组控制电路用来控制B口及C口的低4位

3、读/写控制逻辑电路
  • 读/写控制逻辑电路负责管理8255A的数据传输过程。它接收片选信号及系统读信号、写信号、复位信号RESET,还有来自系统地址总线的选择端口的信号A0和A1。
4、数据总线缓冲器
  • 8位的双向的三态缓冲器。8255A正是通过它与系统总线相连。输入数据、输出数据以及CPU发给8255A的控制字都是通过这个缓冲器传递的。

6.4.3 8255A的芯片引脚信号

1、和外设相连的信号
  • PA7~PA0 A端口数据信号,用来连接外设;
  • PB7~PB0 B端口数据信号,用来连接外设;
  • PC7~PC0 C端口数据信号,用来连接外设或者作为控制信号。
2、和CPU一边相连的信号
  • RESET:复位信号,高电平有效,输入,用来清除8255A的内部寄存器,并置A口,B口,C口均为输入方式;
  • D7~D0:8位,双向,三态数据线,用来与系统数据总线相连;
  • CS:片选,输入,用来决定芯片是否被选中,CS有效时,读写信号才对8255A有效;
  • RD:读信号,输入,控制8255A将数据或状态信息送给CPU;
  • WR:写信号,输入,控制CPU将数据或控制信息送到8255A;
  • A1、A0 端口选择信号。A1、A0为00,选中A端口;为01时,选中B端口;为10时,选中C端口;为11时,选中控制口。
    在这里插入图片描述

6.4.4 8255A的控制字

8255A用指令在控制端口中设置控制字来决定其工作。方式选择控制字中,端口A和端口C的高4位为一组,端口B和端口C的低4位为一组。
第7位称为标识符。D7为1称为方式选择控制字的标识符,D7为0称为C端口的按位置0置1的控制字的标识符。
控制字有两类:

1、方式选择控制字

在这里插入图片描述
8255A有三种基本工作方式

  • 方式0:基本的输入/输出方式; 适用于无条件传送和查询方式的接口电路,A、B、C三个端口均可 。
  • 方式1:选通是输入/输出方式; 适用于查询和中断方式的接口电路,A 、B两个端口均可。
  • 方式2:双向传输方式。 适用于与双向传送数据的外设,只有A端口才有,适用于查询和中断方式的接口电路。
    端口A可工作在三种工作方式下的任一种,端口B只能工作在方式0或方式1,端口C配合端口A和端口B工作。只有端口A能工作在方式2。
    归为同一组的两个端口可分别工作在输入方式和输出方式。
2、端口C置1/置0控制字

在这里插入图片描述

  • C端口置1/置0控制字尽管是针对端口C进行操作,但必须写入控制端口,而不是写入C端口。

6.4.5 8255的工作方式

在这里插入图片描述

1、方式0
  • 为一种简单的输入/输出方式,没有规定固定的应答联络信号,可用A,B,C三个口的任一位充当查询信号,其余I/O口仍可作为独立的端口和外设相连。
  • 方式0的应用场合有两种:一种是同步传送;一种是查询传送。
  • 任何一个端口可作为输入口,也可作为输出口,各端口之间没有规定必然的关系。
  • 各个端口的输入或输出,可以有16种不同的组合,所以可以适用于多种使用场合
    方式0输入时序:
    在这里插入图片描述
    方式0输出时序:
    在这里插入图片描述
2、方式1
(1)输入
  • 方式1是一种选通I/O方式,
  • A口和B口仍作为两个独立的8位I/O数据通道,可单独连接外设,通过编程分别设置它们为输入或输出。
  • 而C口则要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可工作在方式0,可通过编程设置为输入或输出。
    方式1输入引脚:A端口

在这里插入图片描述
方式1输入引脚:B端口
在这里插入图片描述
方式1需借用端口C用做联络信号,同时还具有中断请求和屏蔽功能
方式1输入联络信号

  • STB——选通信号,低电平有效
    由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器
  • IBF——输入缓冲器满信号,高电平有效
    8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器,作为STB的回答信号
    STB和IBF是外设和8255A间的一对应答联络信号,为的是可靠地输入数据
  • INTR——中断请求信号,高电平有效
    8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据
    INTR置位的条件是STB为高,且IBF为高,INTE为高。
  • INTE——中断允许信号,8255A的中断由中断允许触发器INTE控制。置位允许中断,复位禁止中断。对INTE的操作通过写入端口C的对应位实现,INTE触发器对应端口C的位是作应答联络信号的输入信号的哪一位,只要对那一位置位/复位就可以控制INTE触发器。
    选通输入方式下,端口A的INTEA对应PC4置位来实现,端口B的INTEB对应PC2置位来实现。
    方式1输入时序
    在这里插入图片描述
(2)输出

方式1输出引脚:A端口
在这里插入图片描述
方式1输出引脚:B端口
在这里插入图片描述
端口A的INTEA对应PC6
端口B的INTEB对应PC2
方式1输出联络信号

  • OBF——输出缓冲器满信号,低有效
    8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走
  • ACK——响应信号,低有效
    外设的响应信号,指示8255A的端口数据已由外设接受
    OBF和ACK是外设和8255A间的一对应答联络信号,为的是可靠地输出数据
  • INTR——中断请求信号,高有效
    当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据
    方式1输出时序
    在这里插入图片描述
3、方式2(双向方式)
  • 方式2将方式1的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据
  • 只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同
  • 方式2的数据输入过程与方式1的输入方式一样
  • 方式2的数据输出过程与方式1的输出方式有一点不同:数据输出时8255A不是在OBF有效时向外设输出数据,而是在外设提供响应信号ACK时才送出数据
    方式2双向引脚
    在这里插入图片描述
    方式2双向时序
    在这里插入图片描述
    以上内容参考自《微型计算机技术与应用》(第4版)清华大学出版社

第 7 章 中断控制器8259A、DMA控制器和计数器/定时器

一、中断控制器8259A

Intel 8259A是8088/8086微机系统的中断控制器件,它有对外设中断源进行管理,并向CPU转达中断请求的能力。
用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断。

8259A的内部结构和工作原理

在这里插入图片描述

1、8259A的组成部分
  • 中断请求寄存器IRR
    保存8条外界中断请求信号IR0~IR7的请求状态;
    Di位为1表示IRi引脚有中断请求;为0表示无请求。
  • 中断服务寄存器ISR
    保存正在被8259A服务着的中断状态;
    Di位为1表示IRi中断正在服务中;为0表示没有被服务。
  • 中断屏蔽寄存器IMR:
    保存对中断请求信号IR的屏蔽状态;
    Di位为1表示IRi中断被屏蔽(禁止);为0表示允许。
  • 优先级比较器:
    用以比较正在处理的中断和刚刚进入的中断请求之间的优先级别,以决定是否产生多重中断或中断嵌套 。
  • 数据总线缓冲器
    是8259A与系统数据总线的接口,是8位双向三态缓冲器。
    CPU与8259A之间的控制命令信息、状态信息以及中断类型信息,都是通过该缓冲器传送的。
  • 读/写控制逻辑
    CPU通过它实现对8259A的读/写操作。
  • 级联缓冲器
    用以实现8259A芯片之间的级连,使得中断源可以由8级扩展至64级。
  • 控制逻辑电路
    对整个芯片内部各部件的工作进行协调和控制。
2、8259A的外部引脚

8259A是具有28个引脚的集成电路芯片,这28个引脚分别是:

  • D7-D0:双向数据输入/输出引脚,用以与CPU进行信息交换。
  • IR7-IR0:8级中断请求信号输入引脚,规定的优先级为IR0>IR1>…>IR7,当有多片8259A形成级连时,从片的INT与主片的IRi相连。
  • INT:中断请求信号输出引脚,高电平有效,用以向CPU发中断请求,应接在CPU的INTR输入端
  • INTA :中断响应应答信号输入引脚,低电平有效,在CPU发出第二个INTA时,8259A将其中最高级别的中断请求的中断类型码送出;应接在CPU的INTA中断应答信号输出端
  • RD:读控制信号输入引脚,低电平有效,实现对8259A内部有关寄存器内容的读操作。
  • WR:写控制信号输入引脚,低电平有效,实现对8259A内部有关寄存器的写操作。
  • CS:片选信号输入引脚,低电平有效,一般由系统地址总线的高位,经译码后形成,决定了8259A的端口地址范围。
  • A0:8259A两组内部寄存器的选择信号输入引脚,决定8259A的端口地址。
    A0=0  ICW1、OCW2、OCW3 偶地址
    A0=1  ICW2~ICW4、OCW1 奇地址
  • CAS2~CAS0:级连信号引脚,当8259A为主片时,为输出;否则为输入,与SP/EN信号配合,实现芯片的级连,这三个引脚信号的不同组合000~111,刚好对应于8个从片。
  • SP/EN:SP为级连管理信号输入引脚,在非缓冲方式下,若8259A在系统中作从片使用,则SP=1;否则SP=0;在缓冲方式下,EN用作8259A外部数据总线缓冲器的启动信号。
  • +5V、GND:电源和接地引脚。
3、8259A的工作过程

(1)当有一条或若干条中断请求输入(IR7 ~ IR0)有效时,则使中断请求寄存器的IRR的相应位置位
(2)若CPU处于开中断状态,则在当前指令执行完之后,响应中断,并且从INTA发应答信号**(两个连续的INTA负脉冲)
(3)第一个INTA负脉冲到达时,IRR的锁存功能失效,对于IR7 ~ IR0上发来的中断请求信号不予理睬。
(4)使
当前中断服务寄存器ISR的相应位置1**,以便为中断优先级比较器的工作做好准备
(5)使IRR寄存器的相应位复位,即清除中断请求。
(6)第二个INTA负脉冲到达时,将中断类型寄存器中的内容ICW2,送到数据总线的D7 ~ D0上,CPU以此作为相应中断的类型码
(7)若ICW4中的中断结束位为1,那么,第二个INTA负脉冲结束时,8259A将ISR寄存器的相应位清零。否则,直至中断服务程序执行完毕,才能通过输出操作命令字EOI,使该位复位。

8259A的工作方式

8259A有多种工作方式,这些工作方式,可以通过编程设置或改变。下面,我们进行分类介绍。

1、优先权的管理方式

(1) 全嵌套方式

  • 这是8259A默认的优先权设置方式,在全嵌套方式下,8259A所管理的8级中断优先权是固定不变的,其中IR0的中断优先级最高,IR7的中断优先级最低。
  • CPU响应中断后,请求中断的中断源中,优先级最高的中断源,在中断服务寄存器ISR中的相应位ISn置位,而且把它的中断矢量送至系统数据总线,在此中断源的中断服务完成之前,与它同级或优先级低的中断源的中断请求被屏蔽,只有优先级比它高的中断源的中断请求才是运算的,从而出现中断嵌套
  • 一般情况下(除了中断自动结束方式外),在CPU发出中断结束命令(EOI)前,当前中断服务寄存器ISR中的相应位一直保持“1”。以便为中断优先级裁决器的裁决提供依据。

(2) 特殊全嵌套方式

  • 特殊全嵌套方式与全嵌套方式基本相同,所不同的是,当CPU处理某一级中断时,如果有同级中断请求,那么CPU也会作出响应,从而形成了对同一级中断的特殊嵌套
  • 特殊全嵌套方式通常应用在有8259A级连的系统中,在这种情况下,对主8259A编程时,通常使它工作在特殊全嵌套方式下。这样,一方面,CPU对于优先级别较高的主片的中断输入是允许的,另一方面,CPU对于来自同一从片的优先级别较高(但对于主片来讲,优先级别是相同的)的中断也是允许、能够响应的

(3) 优先级自动循环方式

  • 在实际应用中,中断源优先级的情况是比较复杂的,要求8级中断的优先级在系统工作过程中,可以动态改变。即一个中断源的中断请求被响应之后,其优先级自动降为最低
  • 系统启动时,8级中断优先级默认为IR0~IR7,这时,刚好IR4发出了中断请求,CPU响应之后,若8259A工作在优先级自动循环方式下,则中断优先级自动变为IR5、IR6、IR7、IR0、IR1、IR2、IR3、IR4。

(4) 优先级特殊循环方式

  • 优先级特殊循环方式与自动循环方式相比,只有一点不同,即初始化的优先级是由程序控制的,而不是默认的IR0  IR7。
2、中断源的屏蔽方式

CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有下列几种方式:

(1)普通屏蔽方式

  • 8259A的每个中断请求输入,都要受到屏蔽寄存器中相应位的控制。若相应位为“1”,则中断请求不能送CPU。屏蔽是通过对屏蔽寄存器IMR的编程(操作命令字OCW1),来加以设置和改变的。

(2)特殊屏蔽方式

  • 有些场合下,希望一个中断服务程序的运行过程中,能动态地改变系统中的中断优先级结构,即在中断处理的一部分,禁止低级中断,而在中断处理的另一部分,又能够允许低级中断,于是引入了对中断的特殊屏蔽方式。
  • 设置了特殊屏蔽方式后,用OCW1对屏蔽寄存器中的某一位复位时,同时也会使中断服务寄存器ISR中的相应位复位,这样就不只屏蔽了正在处理的等级中断,而且真正开放了其它优先级别较低的中断请求
  • 特殊屏蔽是在中断处理程序中使用的,用了这种方式之后,尽管系统正在处理高级中断,但对外界来讲,只有同级中断被屏蔽,而允许其它任何级别的中断请求
3、 结束中断处理的方式

按照对中断结束(复位中断响应寄存器ISR中相应位)的不同处理,8259A有两种工作方式,即自动结束方式(AEI)非自动结束方式。而非自动结束方式又可进一步分为一般的中断结束方式和特殊的中断结束方式

(1)中断自动结束方式

  • 这种方式仅适用于只有单片8259A的场合 ;
  • 在这种方式下,系统一旦响应中断,那么CPU在发第二个INTA脉冲时,就会使中断响应寄存器ISR中相应位复位,这样一来,虽然系统在进行中断处理,但对于8259A来讲,ISR没有相应的指示,就像中断处理结束,返回主程序之后一样。
  • CPU可以再次响应任何级别的中断请求

(2)一般的中断结束方式

  • 一般的中断结束方式适用用在全嵌套的情况下,当CPU用输出指令向8259A发一般中断中断结束命令OCW2时,8259A才会使中断响应寄存器ISR中优先级别最高的位复位

(3)特殊的中断结束方式

  • 在特殊全嵌套模式下,系统无法确定哪一级中断为最后相应和处理的中断,也就是说,CPU无法确定当前所处理的是哪级中断,这时就要采用特殊的中断结束方式。
  • 特殊的中断结束方式是指在CPU结束中断处理之后,向8259A发送一个特殊的EOI中断结束命令,这个特殊的中断结束EOI命令,明确指出了中断响应寄存器ISR中需要复位的位
  • 这里,我们还要指出一点,在级联方式下,一般不用自动中断结束方式,而需要用非自动结束中断方式,一个中断处理程序结束时,都必须发两个中断结束EOI命令,一个发往主片,一个发往从片
4、系统总线的连接方式

(1)缓冲方式

  • 在多片8259A级连的大系统中,8259A通过外部总线驱动器和数据总线相连,这就是缓冲方式。在缓冲方式下,8259的SP/EN输出信号作为缓冲器的启动信号,用来启动总线驱动器,在8259A与CPU之间进行信息交换。

(2)非缓冲方式

  • 当系统中只有一片或几片8259A芯片时,可以将数据总线直接与系统数据总线相连,这时8259A处于非缓冲方式下。
  • 在这种方式下,8259A的作为输入端设置,主片应接高电平,从片应接低电平。
5、引入中断请求的方式

(1)边沿触发方式

  • 8259A将中断请求输入端出现的上升沿,作为中断请求信号,上升沿后相应引脚,可以一直保持高电平。

(2)电平触发方式

  • 8259A将中断请求输入端出现的高电平作为中断请求信号,在这种方式下,必须注意:中断响应之后,高电平必须及时撤除,否则,在CPU响应中断,开中断之后,会引起第二次不应该有的中断。

(3)中断查询方式
当系统中的中断源很多,超过64个时,则可以使8259A工作在查询方式下,中断查询方式的特点是:
①中断源仍往8259A发中断请求,但8259A却不使用INT信号向CPU发中断请求信号。
②CPU内部的中断允许标志复位,所以CPU对INT引脚上出现的中断请求呈禁止状态。
③CPU 用软件查询的方法来确定中断源,从而实现对设备的中断服务,可见,中断查询方式,既有中断的特点,又有查询的特点,从外设的角度来看,是靠中断的方式来请求服务,但从CPU的角度来看,是用查询方式来确定发中断请求的中断源。

8259A的编程

1、8259A的端口地址
  • 若8259A与8088CPU配合使用,可直接将A0与CPU的地址信号输出引脚A0相连,8259A的两个端口地址是连续的;
  • 若8259A与8086CPU配合使用,如将8259A的D7~D0接到16位数据总线的低8位,则A0应与CPU的地址总线A1相连,此时地址总线A0应取0;
  • 当地址总线的A1为0时,8259A认为是对偶地址端口进行访问,当地址总线的A1为1时,8259A认为是对奇地址端口进行访问
2、8259A的初始化编程

在使用8259A之前,必须对其进行初始始化编程,以规定它的各种工作方式,并明确其所处的硬件环境。
若CPU用一条输出指令向8259A的偶地址端口写入一个命令字,而且D4=1,则被解释为初始化命令字
ICW1,输出ICW1启动了8259的初始化操作,8259A的内、外部自动产生下列操作:
①边沿敏感电路复位,中断请求的上升沿有效。
②中断屏蔽器IMR清零,即对所有的中断呈现允许状态。
③中断优先级自动按IR0—IR7排列。
④清除特殊屏蔽方式

8259A初始化流程图:
8259A的初始化编程,需要CPU向它输出一个2—4字节的初始化命令字,输出初始化命令字的流程如图所示,其中ICW1和ICW2是必须的,而ICW3和ICW4需根据具体的情况来加以选择。
在这里插入图片描述
(1)ICW1(芯片控制初始化命令字)

初始化命令字1,写入8259A偶地址端口,其各位的功能及含义如下:
在这里插入图片描述

  • ①D0:IC4位,用以决定是否跟ICW4,若D0=1,则说明必须输出ICW4;若D0=0,则说明不需输出ICW4。若ICW4的各位都为0,则说明不需要输出ICW4。
  • ②D1:SNGL位,取决于8259A芯片是单片工作,还是多片级联工作。若8259A单片工作,则D1=1;若8259A多片级连工作,则D1=0。
  • ③D2:ADI位,只用于MCS80/85系统中,规定CALL地址的间隔,在8088/8086系统中,该位无意义。
  • ④D3:LTIM位,规定中断请求信号的引入方式。若D3=1,则表示中断请求信号为高电平有效;若D3=0,则表示中断请求信号为上升沿有效。
  • ⑤D4:恒定为1,为ICW1的特征位。
  • ⑥D5-7:应用于MCS80/85系统,为入口地址中的编程位,在8088/8086系统中,无意义。

(2)ICW2(设置中断类型码初始化命令字)

初始化命令字2,写入8259A奇地址端口
在这里插入图片描述

  • 当8259A用于MCS80/85系统中时,用于确定中断入口地址的高8位(A15—A8);
  • 当8259A用于8088/8086系统中时,ICW2的D7—D3为编程设置位,作为本芯片所管理8级中断类型码的高5位。而D2—D0位为8级中断源所对应的编码(其中:000—IR0,111—IR7)编程设置对其无影响。
    例:若ICW2=45H,则8极中断源的中断类型码分别为IR0为40H,…,IR7为47H

(3)ICW3(标志主片/从片的初始化命令字)

初始化命令字3,写入相应8259A的奇地址端口

  • ICW3用于8259A的级连,8259A最多允许有一片主片和8片从片级连,使能够管理的中断源可以扩充至64个。
  • 若系统中只有一片8259A,则不用ICW3,若由多片8259A级连,则主、从8259A芯片,都必须使用ICW3,主、从8259A芯片中的ICW3的使用方式不同。

对于主8259A芯片,ICW3的格式如下:
在这里插入图片描述

  • 其中每一位对应于一片从8259A芯片,若相应引脚上接有从8259A芯片, 则相应位为1;否则,若相应引脚上未接从8259A芯片,则相应位为0。
    例:ICW3=1110 0010,则说明IR7、IR6、IR5、IR1上连有从片。

对于从8259A芯片,ICW3的格式如下:
在这里插入图片描述

  • 从8259A芯片中的ICW3,只用其中的低3来设置该芯片的标识符,高5位全为0。
  • 在中断响应时,主8259A通过级连线CS2—CS0,依次向各个从8259A芯片输送中断请求的源中,优先级最高的源所对应的标识符,每个从8259A拿到这个标识符之后,与自己在初始化编程时,由ICW3设置的标识符进行比较,当两者相符合时,则该从8259A芯片在第二个中断响应周期,向CPU提供由ICW2设置的8位中断类型码。
    例:若本从片的INT接在主片的IR1引脚上,
    则ICW3=0000 0001

(4)ICW4(方式控制初始化命令字)
初始化命令字4,写入8259A奇地址端口, 只有当ICW1中的D0=1时才需要设置,其各位的功能及含义如下:
在这里插入图片描述

  • ① D0:μPM位,取决于系统中所采用微处理器的类型,若系统中的微处理器为MCS80/85,则D0=0;反之,若系统中的微处理器为8088/8086则D0=1。
  • ② D1:AEOI位,规定结束中断的方式,若D1=1,则为自动中断结束方式;若D1=0,则需要用中断结束命令来结束中断。
  • ③ D2:M/S位,缓冲方式下使用,若D2=1,则表示为主8259A;若D2=0,则表示为从8259A。
  • ④ D3:BUF位,若8259A工作于缓冲方式,则D3=1;否则,D3=0。
  • ⑤ D4:SFNM位:若D4=1,则规定特殊的全嵌套模式;否则,若D3=0则规定普通的全嵌套模式
  • ⑥ D5-D7:恒定为000。
3、8259A的操作编程

对8259A按照上述流程进行初始化编程之后,相应芯片就做好了接收中断的准备,若中断源发生了中断请求,则8259A按照初始化编程所规定的各种方式来处理这种请求。在8259A的工作期间,CPU也可以通过操作命令字,实现对8259A的操作控制,或者改变工作方式,或者实时读取8259A中某些寄存器的内容。8259A有三个操作命令字,我们分别讨论如下:

(1)OCW1( 中断屏蔽操作命令字)
中断屏蔽字,必须写入相应8259A芯片的奇地址端口,其格式如下:
在这里插入图片描述
它的每一位,可以对相应的中断请求输入进行屏蔽,若OCW1的某一位为1,则相应的中断请求输入被屏蔽;反之,则相应的中断请求输入呈现允许状态。
即若Mi=1,则表示8259A对IRi的中断请求呈屏蔽状态;否则若Mi=0,则表示8259A对IRi的中断请求呈允许状态。

(2)OCW2(设置优先级循环方式和中断结束方式的操作命令字)
必须写入相应8259A芯片的偶地址端口,其格式如下:
在这里插入图片描述
其中D4、D3位恒定为0,是OCW2的特征位,R、SL、EOI三位的不同组合,可以组成7种不同的操作命令,用于改变8259A的工作方式。其中三种操作命令字要用到OCW2的低三位,这三位所形成的编码指出操作所涉及到的中断源。

  • R—用于表示优先级是否采用循环方式;
  • SL—用于确定是否需要使用L2、L1、L0来明确中断源;
  • EOI—用于指示OCW2是否作为中断结束命令。
  • L2、L1、L0—当SL=1时,三位的编码用以指示8个中断源之一。

R、SL、EOI共有8种不同的组合形式,其中有7种是相应的控制命令,分别介绍如下:

  • ①0、0、0:为取消自动EOI循环命令;
  • ②1、0、0:为设置自动EOI循环命令;
  • ③0、0、1:为普通的EOI命令,它适用于完全嵌套方式,在中断服务程序结束时,用于清除ISR中最后被置位的相应位。显然,只有在ICW4中的AEOI=0时,才需要在中断服务子程序中向8259A发普通的EOI命令。
  • ④0、1、1:为特殊的EOI命令,与普通的EOI命令的差别在于,它需要利用L2、 L1、L0位明确指出ISR寄存器中需要被复位的位,
  • ⑤1、0、1:为普通循环的EOI命令,它在中断服务程序结束时使用,它使已置位的ISR寄存器中优先级最高的那一位复位,同时赋予刚刚结束中断处理的中断源的中断优先级最低。
  • ⑥1、1、1:为特殊的EOI循环命令,它一方面复位ISR寄存器中由L2、L1、L0位明确指出的那一位;另一方面,使L2、L1、L0位明确指出的那一个中断源的中断优先级最低。
  • ⑦1、1、0:为置位优先权命令,它用以设置优先级特殊循环方式,即利用L2、 L1、L0位明确指出中断优先级最低的中断源。
  • ⑧0、1、0:非操作命令,无实际意义。

(3)OCW3(设置和撤销特殊屏蔽方式;设置中断查询方式;设置对8259A内部寄存器的读出命令)
必须写入相应8259A芯片的偶地址端口。其格式如下:
在这里插入图片描述

  • ① D0:RIS位,用以决定下一个读操作所对应的寄存器,若D0=1,则下一个读操作读取中断服务寄存器ISR的内容;否则,读取中断请求寄存器IRR的内容。
  • ② D1:RR位,决定下一个操作是否读操作,若D1=1,则下一个操作是读操作;否则,下一个操作不是读操作。
  • ③ D2:P位,用于8259的查询中断方式下,若D2=1,表示为查询命令;否则,表示不是查询命令。
  • ④D3—D4:恒定为10,是OCW3的特征位。
  • ⑤D5—D6:决定8259A是否为设置特殊屏蔽模式命令,若D6、D5为11,则为设置特殊屏蔽模式命令;若D6、D5为01,则为撤消特殊屏蔽模式、返回普通屏蔽模式命令;若D6=0,则D5无意义。
  • ⑥D7:无关

第 8 章 DMA控制器8237A

DMA控制器的一般结构和概要

1、DMA概述

为了提高数据传送的速率,人们提出了直接存储器存取(DMA)的数据传送控制方式,即在一定时间段内,由DMA控制器取代CPU,获得总线控制权,来实现内存与外设或者内存的不同区域之间大量数据的快速传送。

2、DMA数据传送的工作过程

① 外设向DMAC发出DMA传送请求。
② DMAC通过连接到CPU的HOLD信号向CPU提出DMA请求。
③ CPU在完成当前总线操作后会立即对DMA请求做出响应。CPU的响应包括两个方面:
一方面,CPU将控制总线、数据总线和地址总线浮空,即放弃对这些总线的控制权;
另一方面,CPU将有效的HLDA信号加到DMAC上,用此来通知DMAC,CPU已经放弃了总线的控制权。
⑤ 待CPU将总线浮空,即放弃了总线控制权后,由DMAC接管系统总线的控制权,并向外设送出DMA的应答信号。
⑥ 由DMAC送出地址信号和控制信号,实现外设与内存或内存不同区域之间大量数据的快速传送。
⑦ DMAC将规定的数据字节传送完之后,通过向CPU发HOLD信号,撤消对CPU的DMA请求。CPU收到此信号,一方面使HLDA无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。
在这里插入图片描述
需要注意的是,在内存与外设之间进行DMA传送期间,DMAC控制器只是输出地址及控制信号,而数据传送是直接在内存和外设端口之间进行的,并不经过DMAC;对于内存不同区域之间的DMA传送,则应先用一个DMA存储器读周期将数据从内存的源区域读出,存入到DMAC的内部数据暂存器中,再利用一个DMA存储器写周期将该数据写到内存的目的区域中去。

DMA控制器8237A的原理

在这里插入图片描述

1、DMA控制器8237A的编程结构
  • 含有4个相互独立的通道,每个通道有独立的地址寄存器字节数寄存器,而控制寄存器、状态寄存器为四个通道所共用。
  • 每个DMA通道具有不同的优先权
  • 每个DMA通道可以分别允许和禁止
    每个DMA通道有4种工作方式,分别为:单字节传送、数据块传送、请求传送、级连方式
  • 通道中地址寄存器的长度为16位,一次传送的最大长度可达64KB
  • 多个8237A芯片可以级连,扩展通道数
2、8237A的内部组成和结构

在这里插入图片描述
(1)四个独立的DMA通道
每个通道都有一个16位的基地址寄存器,一个16位的基字节数计数器,一个16位的当前地址寄存器和一个16位的当前字节数计数器及一个8位的方式寄存器,方式寄存器接收并保存来自于CPU的方式控制字,使本通道能够工作于不同的方式下;
(2)定时及控制逻辑电路
对在DMA请求服务之前,CPU编程对给定的命令字和方式控制字进行译码,以确定DMA的工作方式,并控制产生所需要的定时信号;
(3)优先级编码逻辑
对通道进行优先级编码,确定在同时接收到不同通道的DMA请求时,能够确定相应的先后次序。通道的优先级可以通过编程确定为是固定的或者是旋转的;
(4)共用寄存器
除了每个通道中的寄存器之外,整个芯片还有一些共用的的寄存器:

  • 1个16位的地址暂存寄存器
  • 1个16位的字节数暂存寄存器
  • 1个8位的状态寄存器
  • 1个8位的命令寄存器
  • 1个8位的暂存寄存器,
  • 1个4位的屏蔽寄存器
  • 1个4位的请求寄存器
    8237的内部寄存器
    在这里插入图片描述
    (5)8237的三态缓冲器
    8237的数据引线,地址引线都有三态缓冲器,因而可以接也可以释放总线。
3、8237的外部结构

(1)请求与响应信号

  • DREQ0~DREQ3:DMA通道请求。当外设需要请求DMA服务时,将DREQ信号置成有效电平,并要保持到产生响应信号。对应于四个独立的通道,DREQ的有效电平可以通过编程来加以确定,优先级可以固定,也可以旋转。
  • HRQ:总线请求。8237A输出有效的HRQ高电平,向CPU申请使用系统总线。
  • HLDA:总线响应。8237A接受来自CPU的响应信号HLDA,取得了总线的控制权。
  • DACK0~DACK3:DMA通道响应。8237A使请求服务的通道产生相应的DMA响应信号。

(2)DMA传送控制信号

  • A0~A7:地址线。输出低8位存储器地址。
  • DB0~DB7:数据线。输出高8位存储器地址;存贮器与存贮器的传送期间,用于数据传送。
  • ADSTB:地址选通。DMA传送开始时,输出高有效,把在DB0~DB7上输出的高8位地址锁存在外部锁存器中。
  • AEN:地址允许。输出高有效,将锁存的高8位地址送入系统总线,与芯片此时输出的低8位地址组成16位存储器地址。
  • MEMR:存储器读。有效将数据从存储器读出
  • MEMW:存储器写。有效将数据写入存储器
  • IOR:I/O读。有效将数据从外设读出
  • IOW:I/O写。有效将数据写入外设
  • READY:准备好。DMA传送的S3下降沿检测到为低时,插入等待状态Sw,直到READY为高才进入第4个时钟周期S4。
  • EOP:过程结束。DMA传送过程结束,输出一个低有效脉冲。外部输入低脉冲信号,则终结DMA传送。

(3)处理器接口信号

  • CS:片选。低有效时,微处理器与8237A通过数据线通信,主要完成对8237A的编程。
  • IOR:I/O读。读取8237A内部寄存器低电平有效的双向三态信号引脚。在空闲周期,它是一条输入控制信号,CPU利用 这个信号读取8237内部状态寄存器的内容;而在DMA传送时,它是读端口控制信号输出引脚,与相配合,使数据由外设传送到内存。
  • IOW:I/O写。写入8237A内部寄存器。低电平有效的双向三态信号引脚,其功能与相对应。
  • DB0~DB7: 8条双向数据线。用于8237A与微处理器进行数据交换。在CPU控制系统总线时,可以通过DB0~ DB7对8237编程或读出8237的内部状态寄存器的内容;在DMA操作期间,由DB0~ DB7输出高8位地址信号A8~A15,并利用ADSTB信号锁存该地址信号。
    在进行内存不同区域之间的DMA传送时,除了送出A8~A15地址信号外,还分时输入从存储器源区域读出的数据,送入8237的暂存寄存器中,等到存储器写周期时,再将这些数据通过这8个引脚,由8237的暂存寄存器送到系统数据总线上,然后写入到规定的存储单元中去。
  • A3~A0:4条双向三态的低位地址信号引脚。在空闲周期,接收来自于CPU的四位地址信号,用以寻址8237内部的不同的寄存器(组);在DMA传送时,输出要访问的存储单元或者I/O端口地址的低4位。
  • A7~A4 :4条三态地址信号输出引脚。在DMA传送时,输出要访问的存储单元或者I/O端口地址的中4位。
  • CLK:时钟信号输入引脚,对于标准的8237,其输入时钟频率为3MHz,对于8237-2,其输入时钟频率可达5MHz。
  • RESET:复位信号,输入引脚,用来清除8237中的命令、状态请求和临时寄存器,且使字节指针触发器复位并置位屏蔽触发器的所有位(即使所有通道工作在屏蔽状态),在复位之后,8237工作于空闲周期SI。
4、8237A的两种工作状态
  • 作为从模块工作时(空闲周期):
    当CPU把数据送到8237A的寄存器或者从8237A的寄存器取出时,8237如同接口一样作为总线的从模块工作,受CPU控制的工作状态。
    这时,8237A接收16位地址,用较高的12位地址产生片选信号,用底4位地址来选择内部寄存器。
  • 作为主模块工作时(有效周期):
    当8237A作为主模块工作时,它会往总线上提供要访问的内存地址,地址的低8位放在A7~ A0,而地址的高8位放在D7~D0。
    作为主模块工作时,8237A还必须输出必要的读写信号,IOR、IOW、MEMR、MEMW。

8237A引脚的两种作用
在这里插入图片描述

5、8237的工作周期

空闲周期
当8237的任一通道都无DMA请求时,则其处于空闲周期或称为SI状态,空闲周期由一系列的时钟周期组成,在空闲周期中的每一个时钟周期,8237只做两项工作:

  • 8237A采样CS片选信号,该信号有效,CPU就要对8237A进行读/写操作
  • 8237A还采样通道的请求输入信号DREQ,该信号有效,就进入有效周期

有效周期

  • 8237A采样到外设有DMA请求,就脱离空闲周期进入有效周期
  • 8237A作为系统的主控芯片,控制DMA传送操作
  • DMA传送借用系统总线完成,其控制信号以及工作时序类似CPU总线周期
    在这里插入图片描述
    在这里插入图片描述
6、8237A的工作方式

DMA传送方式:单字节传送方式、数据块传送方式、请求传送方式、级连方式
DMA传送类型:DMA读、DMA写、DMA检验
存储器到存储器的传送
(1)DMA传送
单字节方式

  • 每次DMA传送时仅传送一个字节
  • 传送一个字节之后,当前字节数寄存器减1,当前地址寄存器加1或减1,HRQ变为无效
  • 每传送完这一个字节, 8237A释放系统总线, DMAC就将总线控制权交回CPU。
  • 若传送后使字节数从0减到FFFFH,则终结DMA传送或重新初始化
  • 特点:
    一次传送一个字节,效率略低
    DMA传送之间CPU有机会重新获取总线控制权

数据块方式

  • 在这种传送方式下,DMAC一旦获得总线控制权,便开始连续传送数据。每传送一个字节,自动修改当前地址及当前字节数寄存器的内容,直到字节数寄存器从0减到FFFFH终止计数,或由外部输入EOP有效信号终结DMA传送,将总线控制权交给CPU。
  • 一次所传送数据块的最大长度可达64KB,数据块传送结束后可自动初始化。
    DREQ只需维持有效到DACK有效
  • 特点:
    一次请求传送一个数据块,效率高
    整个DMA传送期间CPU长时间无法控制总线(无法响应其他DMA请求、无法处理中断等)

请求方式

  • DREQ信号有效就连续传送数据
  • DREQ信号无效,DMA传送被暂时中止,8237A释放总线,CPU可继续操作
  • DMA通道的地址和字节数的中间值仍被保持
  • DREQ信号再次有效,DMA传送就继续进行
  • 如果字节数寄存器从0减到FFFFH,或者由外部送来一个EOP有效的信号,将终止计数
  • 特点:
    DMA操作可由外设利用DREQ信号控制传送的过程

级连方式

  • 用于通过多个8237A级连以扩展通道
  • 第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上
  • 第二级芯片的优先权等级与所连通道的优先权相对应
  • 第一级只起优先权网络的作用,实际的操作由第二级芯片完成
  • 还可由第二级扩展到第三级等
    在这里插入图片描述
    (2)DMA传输类型
  • DMA读——把数据由存储器传送到外设
    由MEMR有效从存储器读出数据,由IOW有效把这一数据写入外设
  • DMA写——把外设输入的数据写入存储器
    由IOR有效从外设输入数据,由MEMW有效把这一数据写入存储器。
  • DMA检验——空操作
    8237A不进行任何检验
    外设可以进行DMA校验
    存储器和I/O控制线保持无效,不进行传送

(3)存储器到存储器的传送

  • 固定使用通道0和通道1
  • 通道0的地址寄存器存源区地址
  • 通道1的地址寄存器存目的区地址,通道1的字节数寄存器存传送的字节数
  • 传送由设置通道0的软件请求启动
  • 每传送一字节需用8个时钟周期
    前4个时钟周期用通道0地址寄存器的地址从源区读数据送入8237A的临时寄存器
    后4个时钟周期用通道1地址寄存器的地址把临时寄存器中的数据写入目的区

(4)DMA通道的优先权方式

  • 固定优先权方式——优先权固定
    通道0优先权最高,通道1其次,通道2再次,通道3最低
  • 循环优先权方式——优先权循环变化
    最近一次服务的通道在下次循环中变成最低优先权,其他通道依次轮流相应的优先权
  • DMA传送不存在嵌套

(5)自动初始化方式

  • 每当DMA过程结束信号EOP产生时(不论是内部终止计数还是外部输入该信号)
  • 用基地址寄存器和基字节数寄存器的内容,使相应的现行寄存器恢复为初始值,包括恢复屏蔽位、允许DMA请求
  • 这样就作好了下一次DMA传送的准备

8237A的寄存器

  • 8237A共有10种内部寄存器,对它们的操作有时需要配合3个软件命令
  • 8237A的“软件命令”
    不需要通过数据总线写入控制字
    直接由地址和控制信号译码实现
1、基地址寄存器

用以存放16位地址,只可写入而不能读出。
在编程时,它与当前地址寄存器被同时写入某一起始地址,可用作内存区域的首地址或末地址。
在8237进行DMA数据传送的工作过程中,其内容不发生变化,只是在自动预置时,其内容可被重新写到当前地址寄存器中去。

2、基字节数寄存器
  • 用以存放相应通道需要传送数据的字节数,只可写入而不能读出。
  • 在编程时它与当前字节数寄存器被同时写入要传送数据的字节数。
  • 在8237进行DMA数据传送的工作过程中,其内容保持不变,只是在自动预置时,其内容可以被重新写到当前字节数寄存器中去。
3、当前地址寄存器
  • 保持DMA传送的当前地址值
  • 每次传送后该寄存器的值自动加1或减1
  • CPU可以对其进行读写操作。
  • 在选择自动预置时,每当字节计数值减为0或外部有效后,就会自动将基地址寄存器的内容写入当前地址寄存器中,恢复其初始值。
4、当前字节数寄存器
  • 保持DMA传送的剩余字节数
  • 每次传送后,该寄存器的值减1
  • 这个寄存器的值可由CPU写入和读出
  • 该寄存器的值减至0,再减1(从0减到FFFFH)时,终止计数
5、地址暂存寄存器和字节数暂存寄存器

这两个16位的寄存器和CPU不直接发生关系,我们也不必要对其进行读/写操作,因而对如何使用8237没有影响。

6、模式寄存器

每个通道有一个8位的模式寄存器,但是它们占用同一个端口地址,用来存放方式字,依靠方式控制字本身的特征位来区分写入不同的通道,用来规定通道的工作方式,各位的作用如下:
方式字格式:
在这里插入图片描述
自动预置就是当某一通道按要求将数据传送完后,又能自动预置初始地址和传送的字节数,而后重复进行前面已进行过的过程。
校验传送就是实际并不进行传送,只产生地址并响应EOP信号,不产生读写控制信号,用以校验8237的功能是否正常。

7、控制寄存器
  • 存放8237A的命令字
  • 设置8237A芯片的操作方式
  • 影响每个DMA通道
  • 复位时使命令寄存器清零
  • 设置D2=1才使8237A可以作为DMA控制器

命令字格式
在这里插入图片描述
命令字说明

  • D0位用以规定是否允许采用存储器到存储器的传送方式。若允许这样做,则利用通道0和通道1来实现。
  • D1位用以规定通道0的地址是否保持不变。如前所述,在存储器到存储器传送中,源地址由通道0提供,读出数据到暂存寄存器,而后,由通道l送出目的地址,将数据写入目的区域;若命令字中D1=0,则在整个数据块传送中(块长由通道1决定)保持内存源区域地址不变,因此,就会把同一个数据写入到整个目的存储器区域中。
  • D2位是允许或禁止8237芯片工作的控制位。
  • D3位用于选择总线周期中写信号的定时。例如,PC机中动态存储器写是由写信号的上升沿启动的。若在DMA周期中写信号来得太早,可能造成错误,所以PC机选择D3=0。
  • D5位用于选择是否扩展写信号。在D3=0(正常时序)时,如果外设速度较慢,有些外设是用8237A送出的和信号的下降沿来产生的READY信号的。为提高传送速度,能够使READY信号早些到来,须将和信号加宽,以使它们提前到来。因此,可以通过令D5=1使和信号扩展2个时钟周期提前到来。
8、请求寄存器
  • 用于在软件控制下产生一个DMA请求
  • 除硬件DMA请求外,当工作在数据块传送方式时也可以通过软件发出DMA请求
  • 若是存贮器到存贮器传送,则必须由软件请求启动通道0
    在这里插入图片描述
9、屏蔽寄存器

控制外设硬件DMA请求是否被响应(为0允许),各个通道互相独立。3种方法:

  • 单通道屏蔽字只对一个DMA通道屏蔽位进行设置
  • 主屏蔽字对4个DMA通道屏蔽位同时进行设置
  • 清屏蔽寄存器命令使4个屏蔽位都清零(允许)
    复位使4个通道全置于屏蔽状态;
    当一个通道的DMA过程结束,如果不是工作在自动初始化方式,则这一通道的屏蔽位置位,必须再次编程为允许,才能进行下次DMA传送。
    单通道屏蔽字格式:
    在这里插入图片描述
    主屏蔽字格式
    在这里插入图片描述
10、状态寄存器

可由CPU读取;
低4位反映读命令这个瞬间每个通道是否产生TC(为1,表示该通道传送结束);
高4位反映每个通道的DMA请求情况(为1,表示该通道有请求);
状态位在复位或被读出后,均被清零。
8237的状态寄存器:
在这里插入图片描述

11、临时寄存器

在存储器到存储器的传送方式下,临时寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元;
传送完成,临时寄存器只会保留最后一个字节,可由CPU读出;
复位使临时寄存器内容为零。

第 9 章 定时计数控制接口8253

教学重点

  • 8253的引脚和六种工作方式
  • 8253的编程
  • 8253在IBM PC系列机上的应用

一、 8253的一般性能概述

  • 每个8253芯片有3个独立的16位计数器通道
  • 每个计数器通道都可以按照二进制或二—十进制计数
  • 每个计数器的计数速率可以高达2MHz
  • 每个通道有6种工作方式,可以由程序设定和改变
  • 所有的输入、输出电平都与TTL兼容

二、8253内部结构

在这里插入图片描述

  1. 数据总线缓冲器
    8253内部实现与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息,包括某一方面时刻的实时计数值。

  2. 读/写控制逻辑
    控制8253的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。

  3. 控制字寄存器
    在8253的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。

  4. 计数通道0#、1#、2#
    这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一个16位的计数寄存器,用以存放计数初始值,和一个16位的减法计数器和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1计数器变化。
    另外,计数器的值为0的状态,还反映在状态锁存器中,可供读取。

三、8253外部引脚

8253芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图。
8253芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各引脚及其所传送信号的情况,如下:
在这里插入图片描述

  1. 面向CPU的引脚
  • D0 ~ D7:双向、三态数据线引脚,用以与系统的数据线连接,传送控制、数据及状态信息。
  • A0 ~ A1:地址信号输入引脚,一般接CPU地址总线的A1、A0位,用以选择8253芯片的通道及控制字寄存器。
  • CS*:芯片选择信号输入引脚,低电平有效
  • RD*:来自于CPU的读控制信号输入引脚,低电平有效
  • WR*:来自于CPU的写控制信号输入引脚,低电平有效。

在这里插入图片描述

  1. 各计数器的3个引脚
  • CLK时钟输入信号
    在计数过程中,此引脚上每输入一个时钟信号(下降沿),- 计数器的计数值减1
  • GATE门控输入信号
    控制计数器工作,可分成电平控制和上升沿控制两种类型
  • OUT计数器输出信号
    当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号

四、 8253的控制字

在这里插入图片描述

  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值