问:微处理器、微型计算机、微型计算机系统的区别。
微处理器一般也称为CPU,它本身具有运算能力和控制功能。微处理器是微处理器的核心。微型计算机是由CPU、存储器、输入/输出接口电路和系统总线构成的裸机系统。微型计算机系统是以微型计算机为主机,配上系统软件和外设之后而构成的计算机系统。三者之间是有很大不同的,微处理器是微型计算机的组成部分,而微型计算机又是微型计算机系统的组成部分。
8086/8088微处理器是Intel公司推出的第三代CPU芯片,它们的内部结构基本相同,都采用16位结构进行操作及存储器寻址,但外部性能有所差异,两种处理器都封装在相同的40脚双列直插组件(DIP)中。
(编程结构是指从程序员和使用者的角度看到的结构,亦可称为功能结构。)
从功能上来看,8086/8088CPU可分为两部分,即总线接口部件BIU(Bus Interface Unit)和执行部件EU(Execution Unit)。
功能:负责与存储器(内存)及I/O接口之间的数据传送操作(总线操作,IO读等)。
具体来看,完成取指令送指令队列;CPU执行指令时,总线接口部件配合执行部件的动作,从指定的内存单元或I/O端口取操作数,将数据传送给执行部件,或者将执行部件的操作结果送内存单元或者I/O端口。
包括组成:
① 8086/8088的指令队列分别为6/4个字节,在执行指令的同时,可从内存中取出后续的指令代码,放在指令队列中,可以提高CPU的工作效率。
② 地址加法器用来产生20位物理地址。8086/8088可用20位地址寻址1M字节的内存空间,而CPU内部的寄存器都是16 位,因此需要由一个附加的机构来计算出20位的物理地址,这个机构就是20位的地址加法器。
例如:CS=0FE00H,IP=0400H,则表示要取指令代码的物理地址为0FE400H。
功能:负责指令的执行 。
组成:
总线接口部件(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获得成功的原因之一。
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个
控制标志:3个
一个最基本的总线周期有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状态,总线周期结束。
所谓最小模式,就是系统中只有一个8088/8086微处理器,在这种情况下,所有的总线控制信号,都是直接由8088/8086CPU产生的,系统中的总线控制逻辑电路被减到最少,该模式适用于规模较小的微机应用系统。
最大模式是相对于最小模式而言的,最大模式用在中、大规模的微机应用系统中,在最大模式下,系统中至少包含两个微处理器,其中一个为主处理器,即8086/8086CPU,其它的微处理器称之为协处理器,它们是协助主处理器工作的。
两种工作模式构成两种不同规模的应用系统
如图所示,是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引脚输入低电平时,系统脱离等待状态,继续执行被暂停执行的指令。
① 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引脚(未整理)
时序(Timing)是指信号高低电平(有效或无效)变化及相互间的时间顺序关系
CPU时序决定系统各部件间的同步和定时
总线时序描述CPU引脚如何实现总线操作
微机系统的工作,必须严格按照一定的时间关系来进行,CPU定时所用的周期有三种,即指令周期、总线周期和时钟周期。
(1) 指令周期
一条指令从其代码被从内存单元中取出到其所规定的操作执行完毕,所用的时间,称为相应指令的指令周期。由于指令的类型、功能不同,因此,不同指令所要完成的操作也不同,相应地,其所需的时间也不相同。也就是说,指令周期的长度因指令的不同而不同。
(2) 总线周期
我们把CPU通过总线与内存或I/O端口之间,进行一个字节数据交换所进行的操作,称为一次总线操作,相应于某个总线操作的时间即为总线周期。虽然,每条指令的功能不同,所需要进行的操作也不同,指令周期的长度也必不相同。但是,我们可以对不同指令所需进行的操作进行分解,它们又都是由一些基本的操作组合而成的。如存储器的读/写操作、I/O端口的读/写操作、中断响应等,这些基本的操作都要通过系统总线实现对内存或I/O端口的访问的。不同的指令所要完成的操作,是由一系列的总线操作组合而成的,而线操作的数量及排列顺序因指令的不同而不同。
8088的总线操作,就是8088CPU利用总线(AB、DB、CB)与内存及I/O端口进行信息交换的过程,与这些过程相对应的总线上的信号变化的相对时间关系,就是相应总线操作的时序。
总线操作是指CPU通过总线对外的各种操作
8088的总线操作主要有:
CPU正在进行内部操作、并不进行实际对外操作的空闲状态Ti
描述总线操作的微处理器时序有三级
指令周期 → 总线周期 → 时钟周期
(3) 时钟周期
时钟周期是微机系统工作的最小时间单元,它取决于系统的主频率,系统完成任何操作所需要的时间,均是时钟周期的整数倍。时钟周期又称为T状态。时钟周期是基本定时脉冲的两个沿之间的时间间隔,而基本定时脉冲是由外部振荡器产生的,通过CPU的CLK输入端输入,基本定时脉冲的频率,我们称之为系统的主频率。例如8088CPU的主频率是5MHz,其时钟周期为200ns。一个基本的总线周期由4个T状态组成,我们分别称为T1~T44个状态,在每个T状态下,CPU完成不同的动作。
8086/8088微机系统,能够完成的操作有下列几种主要类型
指令所执行的操作,可以分为内部操作和外部操作。不同的指令其内、外部操作是不相同的,但这些操作可以分解为一个个总线操作。即总线操作的不同组合,就构成了不同指令的不同操作,而总线操作的类型是有限的,我们如果能够明确不同种类总线操作的时序关系,且可以根据不同指令的功能,把它们分解为不同总线操作的组合,那么,任何指令的时序关系,我们就都可以知道了。
最小模式下的典型时序
时序如图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信号进入高电平,从而使总线收发器不工作。
最大模式下的典型时序(未整理)
中断源:引起中断的原因或发出中断请求的设备称为中断源。
8086/8088为每个中断源分配了一个中断类型码,其取值范围为0~255,即可处理256种中断。其中包括软件中断,系统占用的中断以及开放给用户使用的中断。
从产生中断的方法来分,这256种中断可以分为两大类:一类叫硬件中断;一类叫软件中断。
(1)硬件中断
即通过外部的硬件产生的中断,如打印机、键盘等,有时也称为外部中断。硬件中断又可分为两类:可屏蔽中断和不可屏蔽中断。
不可屏蔽中断:由NMI引脚引入,它不受中断允许标志的影响,每个系统中仅允许有一个,都是用来处理紧急情况的,如掉电处理。这种中断一旦发生,系统会立即响应;
可屏蔽中断:由INTR引脚引入,它受中断允许标志的影响,也就是说,只有当IF=1时,可屏蔽中断才能进入,反之则不允许进入,可屏蔽中断可有多个,一般是通过优先级排队,从多个中断源中选出一个进行处理。
(2) 软件中断(内部中断)
即CPU根据软件中的某条指令或者对标志寄存器中某个标志的设置而产生,它与硬件电路无关,常见的如除数为0引起的中断,或用INT n指令产生的中断。
系统处理中断的方法很多,处理中断的步骤中最主要的一步就是如何根据不同的中断源进入相应的中断服务子程序,目前用的最多的就是向量式中断。
中断向量:把各个中断服务子程序的入口都称为一个中断向量;每个中断类型对应一个中断向量。
中断向量表:将这些中断向量按一定的规律排列成一个表,就是所谓的中断向量表,当中断源发出中断请求时,即可查找该表,找出其中断向量,就可转入相应的中断服务子程序。
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,即转入该中断服务子程序。
存储器的概述
存储器是计算机(包括微机)硬件系统的重要组成部分,有了存储器,计算机才具有“记忆”功能,才能把程序及数据的代码保存起来,才能使计算机系统脱离人的干预,而自动完成信息处理的功能。
存储器系统的三项主要性能是指标容量、速度和成本。
存储容量是存储器系统的首要性能指标,因为存储容量越大,则系统能够保存的信息量就越多,相应计算机系统的功能就越强;
存储器的存取速度直接决定了整个微机系统的运行速度,因此,存取速度也是存储器系统的重要的性能指标;
存储器的成本也是存储器系统的重要性能指标。
为了在存储器系统中兼顾以上三个方面的指标,目前在计算机系统中通常采用三级存储器结构,即使用高速缓冲存储器、主存储器和辅助存储器,由这三者构成一个统一的存储系统。从整体看,其速度接近高速缓存的速度,其容量接近辅存的容量,而其成本则接近廉价慢速的辅存平均价格。
按构成存储器的器件和存储介质分类
按构成存储器的器件和存储介质主要可分为:磁芯存储器、半导体存储器、光电存储器、磁膜、磁泡和其它磁表面存储器以及光盘存储器等。
按存取方式分类
可将存储器分为随机存取存储器、只读存储器两种形式。
随机存储器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的特点。
分为主存储器(内存)、辅助存储器(外存)、缓冲存储器等,主存储器又称为系统的主存或者内存,位于系统主机的内部,CPU可以直接对其中的单元进行读/写操作;辅存存储器又称外存,位于系统主机的外部,CPU对其进行的存/取操作,必须通过内存才能进行;缓冲存储器位于主存与CPU之间,其存取速度非常快,但存储容量更小,可用来解决存取速度与存储容量之间的矛盾,提高整个系统的运行速度。
另外,还可根据所存信息是否容易丢失,而把存储器分成易失性存储器和非易失性存储器。如半导体存储器(DRAM,SRAM),停电后信息会丢失,属易失性;而磁带和磁盘等磁表面存储器,属非易失性存储器。
一般情况下,一个存储器系统由以下几部分组成。
存储器地址译码有两种方式,通常称为单译码与双译码。
(1) 单译码
单译码方式又称字结构,适用于小容量存储器。
(2) 双译码
在双译码结构中,将地址译码器分成两部分,即行译码器(又叫X译码器)和列译码器(又叫Y译码器)。X译码器输出行地址选择信号,Y译码器输出列地址选择信号。行列选择线交叉处即为所选中的内存单元,这种方式的特点是译码输出线较少。双译码可简化芯片设计。
易失性
易失性是区分存储器种类的重要外部特性之一。易失性是指电源断开之后,存储器的内容是否丢失。
如果某种存储器在断电之后,仍能保存其中的内容,则为非易失性存储器(外部存储器、ROM) ;否则,就叫易失性存储器(RAM)。
只读性
只读性是区分存储器种类的又一个重要特性。
如果某个存储器中写入数据后,只能被读出,但不能写入,那么这种存储器叫只读存储器,即ROM(read only memory);如果一个存储器在写入数据后,既可对它进行读出,又可再对它修改,那么就叫可读写存储器。
存储容量
每个芯片中的存储单元的总数即存储容量。存储容量和芯片集成度有关,也和器件基本单元的工作原理和类型有关。
内存条有8位数据宽度的30引线的SIMM(single inline memory module)、 32位数据宽度的72引线的SIMM和64位数据宽度的168引线DIMM (dual inline memory module)
速度
存储器的速度是用存储器访问时间来衡量的。访问时间就是指存储器接收到稳定的地址信号到完成操作的时间。访问时间的长短决定于许多因素,主要与制造器件的工艺有关。
当前,半导体存储器主要用两大类工艺,一类是双极性的TTL技术,一类是金属氧化物半导体MOS技术,后者又分CMOS和HMOS等技术
功耗
在用电池供电的系统中,功耗是非常重要的问题。CMOS能够很好地满足低功耗要求。但CMOS能够很好地满足低功耗要求。但CMOS器件容量较小,并且速度慢。功耗和速度是成正比的。
RAM按其结构和工作原理分为静态RAM即SRAM(static RAM)和动态RAM即DRAM(dynamic RAM)。 SRAM速度快,不需要刷新,但片容量低,功耗大。 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:未用引脚。
指在微机系统的在线运行过程中,只能对其进行读操作,而不能进行写操作的一类存储器,在不断发展变化的过程中,也产生了掩模型ROM、可编程只读性PROM、可擦出可编程EPROM、EEPROM、闪烁存储器FLASH等各种不同类型。
ROM器件有两个显著的优点:
结构简单,所以位密度比可读写存储器高。
具有非易失性,所以可靠性高。
掩膜型ROM
掩膜型ROM中的信息是厂家根据用户给定的程序或数据对芯片掩膜进行二次光刻而决定的。根据制造技术,掩膜型ROM又可分为MOS型和双极性两种。MOS型功耗小,但速度比较慢,微型机系统中用的ROM主要是这种类型。双极性速度比MOS型快,但功耗大,只用在速度较高的系统中。
可编程的ROM(PROM)
掩膜ROM的存储单元在生产完成之后,其所保存的信息就已经固定下来了,这给使用者带来了不便。为了解决这个矛盾,设计制造了一种可由用户通过简易设备写入信息的ROM器件,即可编程的ROM,又称为PROM。
PROM 的类型有多种,我们以二极管破坏型PROM为例来说明其存储原理。这种PROM存储器在出厂时,存储体中每条字线和位线的交叉处都是两个反向串联的二极管的PN结,字线与位线之间不导通,此时,意味着该存储器中所有的存储内容均为“1”。如果用户需要写入程序,则要通过专门的PROM写入电路,产生足够大的电流把要写入“1”的那个存储位上的二极管击穿,造成这个PN结短路,只剩下顺向的二极管跨连字线和位线,这时,此位就意味着写入了“1”。读出的操作同掩模ROM。
除此之外,还有一种熔丝式PROM,用户编程时,靠专用写入电路产生脉冲电流,来烧断指定的熔丝,以达到写入“1”的目的。
对PROM来讲,这个写入的过程称之为固化程序。由于击穿的二极管不能再正常工作,烧断后的熔丝不能再接上,所以这种ROM器件只能固化一次程序,数据写入后,就不能再改变了。
可擦除、可编程的ROM(EPROM)
电可擦除可编程序的ROM(Electronic Erasible Programmable ROM)
快擦型存储器(F1ash Memory)
微型计算机系统中,整个存储器体系采用层次化结构。这种层次化结构不但出现在存储器总体结构中,也出现在内存结构中。
分层结构思想:用Cache、内存和辅存来构成层次式的存储器,按使用频度将数据分为不同的档次分放在不同的存储器中,不同层次的存储器之间可以互相传输。
Cache是速度最快的存储器,是静态RAM类型,存取速度和CPU的速度相匹配,但价格也较高,且容量较小。CPU运行过程中,自动将当前要运行的指令和数据装入Cache。 Cache的内容是不断更新的, CPU所需要的信息都可以在Cache中找到,只有较少数情况下, CPU需通过访问DRAM来获得当前所要的信息。
内存由DRAM构成,速度比Cache慢,但容量较大。
辅助存储器即外存(如软盘、硬盘和光盘),速度比内存慢得多,但容量比内存大得多。
为了使Cache、内存和辅存构成协调工作的存储体系,采用虚拟存储技术来实现内存和辅存之间的映射,采用高速缓冲技术来实现Cache和内存之间的映射。
存储器的层次化总体结构:
(2)高端内存区
高端内存区留给系统ROM和外部设备的适配卡缓冲区使用。大小为384KB,地址范围为A0000H~FFFFFH。
一、 问题的提出
微机系统中的内部存储器通常采用动态RAM构成,具有价格低,容量大的特点,但由于动态RAM采用MOS管电容的充放电原理来表示与存储信息,其存取速度相对于CPU的信息处理速度来说较低。这就导致了两者速度的不匹配,也就是说,慢速的存储器限制了高速CPU的性能,影响了微机系统的运行速度,并限制了计算机性能的进一步发挥和提高。高速缓冲存储器就是在这种情况下产生的。
二、 存储器访问的局部性
微机系统进行信息处理的过程就是执行程序的过程,这时,CPU需要频繁地与内存进行数据交换,包括取指令代码及数据的读写操作。通过对大量典型程序的运行情况分析结果表明,在一个较短的时间内,取指令代码的操作往往集中在存储器逻辑地址空间的很小范围内(因为在多数情况下,指令是顺序执行的,因此指令代码地址的分布就是连续的,再加上循环程序段和子程序段都需要重复执行多次,因此对这些局部存储单元的访问就自然具有时间上集中分布的倾向);数据读写操作的这种集中性倾向虽不如取指令代码那么明显,但对数组的存储和访问以及工作单元的选择也可以使存储器单元相对集中。这种对局部范围的存储器单元的防问比较频繁,而对此范围以外的存储单元访问相对甚少的现象,称为程序访问的局部性。
三、 Cache-主存存储结构及其实现
为了解决存储器系统的容量、存取速度及单位成本之间的矛盾,可以采用Cache-主存存储结构,即在主存和CPU之间设置高速缓冲存储器Cache,把正在执行的指令代码单元附近的一部分指令代码或数据从主存装入Cache中,供CPU在一段时间内使用,由于存储器访问的局部性,在一定容量Cache的条件下,我们可以做到使CPU大部分取指令代码及进行数据读写的操作都只要通过访问Cache,而不是访问主存而实现。
优点:
Cache的读写速度几乎能够与CPU进行匹配,所以微机系统的存取速度可以大大提高;
Cache的容量相对主存来说并不是太大,所以整个存储器系统的成本并没有上升很多。
采用了Cache-主存存储结构以后,整个存储器系统的容量及单位成本能够主存相当,而存取速度可以与Cache的读写速度相当,这就很好地解决了存储器系统的上述三个方面性能之间的矛盾。
一个Cache系统包含三个部分:
在主存—Cache存储体系中,所有的程序代码和数据仍然都存放在主存中,Cache存储器只是在系统运行过程中,动态地存放了主存中的一部分程序块和数据块的副本,这是一种以块为单位的存储方式。块的大小称为“块长”,块长一般取一个主存周期所能调出的信息长度。
教学重点:
什么是接口技术?
连接计算机系统中的各种功能部件,构成一个完整的、实用的计算机系统,这是接口技术的广义定义。依次定义,实现处理器到系统总线连接的总线驱动器、数据收发器、时钟电路等称为处理器借口。此外,还有RAM接口、ROM接口、外部设备接口等等。更为流行的观点认为接口技术是把由处理器、RAM、ROM等组成的基本系统与外部设备连接起来,从而实现计算机与外部世界通讯的一门 技术,即仅指I/O设备接口技术。
什么是I/O接口(电路)?
I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路
PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路
什么是微机接口技术?
处理微机系统与外设间联系的技术
注意其软硬结合的特点
根据应用系统的需要,使用和构造相应的接口电路,编制配套的接口程序,支持和连接有关的设备
接口功能
1.CPU与I/O设备之间的信号(三类)
2.接口部件的I/O端口
⑴数据端口:CPU和外设进行数据传输时,各类信息在接口中进入不同的寄存器,一般称这些寄存器为I/O端口,每个端口有一个端口地址。用于对来自CPU和内存的数据或者送往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端口
(3)I/O寻址方式
8088/8086的端口有64K个,无需分段,设计有两种寻址方式
(4)数据交换方式
1. 无条件传送方式及其接口
在CPU与慢速变化的设备交换数据时,可以认为它们总是处于==“就绪”状态,随时可以进行数据传送,这就是无条件传送,或称立即传送、同步传送==
适合于简单设备,如LED数码管、按键或按纽等
无条件传送的接口和操作均十分简单
这种传送有前提:外设必须随时就绪
2. 条件传送方式
又称查询方式,即通过程序查询相应设备的状态,若状态不符合,则CPU不能进行输入/输出操作,需要等待;只有当状态信号符合要求时,CPU才能进行相应的输入/输出操作。
一般外设均可以提供一些反映其状态的信号,如对输入设备来说,它能够提供“准备好”(“READY”)信号,“READY” =1 表示输入数据已准备好。输出设备则提供“忙”(“BUSY”)信号,“BUSY”=1表示当前时刻不能接收CPU来的数据,只有当“BUSY”=0时,才表明它可以接受来自于CPU的输出数据。
CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情况下(就绪)实现数据输入或输出
对多个外设的情况,则CPU按一定顺序依次查询(轮询)。先查询的外设将优先进行数据交换
查询传送的特点是:工作可靠,适用面宽,但传送效率低
中断传送是一种效率更高的程序传送方式
进行传送的中断服务程序是预先设计好的
中断请求是外设随机向CPU提出的
CPU对请求的检测是有规律的:一般是在每条指令的最后一个时钟周期采样中断请求输入引脚
传送方式的比较:
教学重点
一、并行通信和串行通信
数据通信的基本方式可分为并行通信与串行通信两种:
并行通信:是指利用多条数据传输线将一个数据的各位同时传送。
特点:是传输速度快,适用于短距离通信。
串行通信:是指利用一条传输线将数据一位位地顺序传送。
特点:是通信线路简单,利用电话或电报线路就可实现通信,降低成本,适用于远距离通信,但传输速度慢。
二、 串行通信基础
串行通信:将数据分解成二进制位用一条信号线,一位一位顺序传送的方式
串行通信的优势:用于通信的线路少,因而在远距离通信时可以极大地降低成本
串行通信适合于远距离数据传送,也常用于速度要求不高的近距离数据传送
PC系列机上有两个串行异步通信接口、键盘、鼠标器与主机间采用串行数据传送
数据传输速率
数据传输速率也称比特率(Bit Rate)
每秒传输的二进制位数bps
字符中每个二进制位持续的时间长度都一样,为数据传输速率的倒数
当进行二进制数码传输,且每位时间长度相等时,比特率还等于波特率(Baud Rate)
过去,串行异步通信的数据传输速率限制在50 bps到9600 bps之间。现在,可以达到115200 bps或更高
同步通信
以一个数据块(帧)为传输单位,每个数据块附加1个或2个同步字符,最后以校验字符结束
同步通信的数据传输效率和传输速率较高,但硬件电路比较复杂
串行同步通信主要应用在网络当中
最常使用高级数据链路控制协议HDLC
信号传输方式
(1)基带传输方式
基带传输方式仅适宜于近距离和速度较低的通信。
在传输线路上直接传输不加调制的二进制信号,如图所示。它要求传送线的频带较宽,传输的数字信号是矩形波。
(2)频带传输方式
传输经过调制的模拟信号
串行接口标准:指的是计算机或终端(数据终端设备DTE)的串行接口电路与调制解调器MODEM等(数据通信设备DCE)之间的连接标准。
一、串行接口标准RS-232C
RS-232C是一种标准接口,D型插座,采用25芯引脚或9芯引脚的连接器,如图所示。
连接及通信原理:
微型计算机之间的串行通信就是按照RS-232C标准设计的接口电路实现的。如果使用一根电话线进行通信,那么计算机和MODEM之间的连线就是根据RS-232C标准连接的。其连接及通信原理如图所示。
232C接口标准使用一个25针连接器
绝大多数设备只使用其中9个信号,所以就有了9针连接器
232C包括两个信道:主信道和次信道
次信道为辅助串行通道提供数据控制和通道,但其传输速率比主信道要低得多,其他跟主信道相同,通常较少使用
8251A是可编程的串行通信接口芯片,基本性能:
8251A有:
1个数据输入缓冲寄存器
1个数据输出缓冲寄存器
1个发送移位寄存器
1个接收移位寄存器
1个控制寄存器
1个状态寄存器
1个模式寄存器
2个同步字符寄存器。
(1)
发送器 (异步方式)
发送器由发送缓冲器和发送控制电路两部分组成。
发送器 (同步方式)
采用同步方式,则在发送数据之前,发送器将自动送出1个或2个同步字符,然后才逐位串行输出数据
异步方式
异步方式:在RxD线上检测低电平,将检测到的低电平作为起始位,并启动内部计数器进行计数,==当计数到相应于半个数位传输时间(波特率的一半)==时,又对RxD线进行检测,若仍为低电平,则确认收到一个有效的起始位。
8251A开始每隔一个数位传输时间,对RxD进行一次采样,完成字符装配;
数据进入输入移位寄存器被移位,并进行奇偶校验和去掉停止位,变成了并行数据后,送到数据输入寄存器,同时发出RxRDY信号送CPU,表示已经收到一个可用的数据。
注:在异步接收时,有时会遇到这样的情况,既8251A在检测起始位时,过半个数位传输时间后,没有再次测得低电平。这种情况下,8251A就会把刚才检测到的信号看成干扰脉冲,于是重新开始检测RxD线上是否又出现低电平。
同步方式
同步方式:首先搜索同步字符。8251A监测RXD线,每当RXD线上出现一个数据位时,接收下来并送入移位寄存器移位,与同步字符寄存器的内容进行比较,如果两者不相等,则接收下一位数据,并且重复上述比较过程。当两个寄存器的内容比较相等时,8251A的SYNDET升为高电平,表示同步字符已经找到,同步已经实现。
采用双同步方式,就要在测得输入移位寄存器的内容与第一个同步字符寄存器的内容相同后,再继续检测此后输入移位寄存器的内容是否与第二个同步字符寄存器的内容相同。如果相同,则认为同步已经实现。
在外同步情况下,同步输入端SYNDET加一个高电位来实现同步的。
实现同步之后,接收器和发送器间就开始进行数据的同步传输。这时,接收器利用时钟信号对RXD线进行采样,并把收到的数据位送到移位寄存器中。在RXRDY引脚上发出一个信号,表示收到了一个字符。
读/写控制电路用来配合数据总线缓冲器的工作。功能如下:
调制解调控制电路用来简化8251A和调制解调器的连接
编程的内容包括两大方面:
(1)方式选择控制字(模式字)
方式选择控制字的格式如图所示。
(2)操作命令控制字(控制字)
(3)状态字
状态字的格式如下:
(1)芯片复位以后,第一次用奇地址端口写入的值作为模式字进入模式寄存器。
(2)如果模式字中规定了8251A工作在同步模式,
(3)由CPU用奇地址端口写入的值将作为控制字送到控制寄存器,而用偶地址端口写入的值将作为数据送到数据输出缓冲寄存器。
流程图如图:
并行通信就是把一个字符的各位同时用几根线进行传输。传输速度快,信息率高。电缆要多,随着传输距离的增加,电缆的开销会成为突出的问题,所以,并行通信用在传输速率要求较高,而传输距离较短的场合。
Intel 8255A是一个通用的可编程的并行接口芯片,它有三个并行I/O口,又可通过编程设置多种工作方式,价格低廉,使用方便,可以直接与Intel系列的芯片连接使用,在中小系统中有着广泛的应用。
这是两组根据CPU命令控制8255A工作方式的电路,这些控制电路内部设有控制寄存器,可以根据CPU送来的编程命令来控制8255A的工作方式,也可以根据编程命令来对C口的指定位进行置/复位的操作。
A组控制电路用来控制A口及C口的高4位;
B组控制电路用来控制B口及C口的低4位。
8255A用指令在控制端口中设置控制字来决定其工作。方式选择控制字中,端口A和端口C的高4位为一组,端口B和端口C的低4位为一组。
第7位称为标识符。D7为1称为方式选择控制字的标识符,D7为0称为C端口的按位置0置1的控制字的标识符。
控制字有两类:
8255A有三种基本工作方式
方式1输入引脚:B端口
方式1需借用端口C用做联络信号,同时还具有中断请求和屏蔽功能
方式1输入联络信号
方式1输出引脚:A端口
方式1输出引脚:B端口
端口A的INTEA对应PC6
端口B的INTEB对应PC2
方式1输出联络信号
Intel 8259A是8088/8086微机系统的中断控制器件,它有对外设中断源进行管理,并向CPU转达中断请求的能力。
用于管理Intel 8080/8085、8086/8088、80286/80386的可屏蔽中断。
8259A是具有28个引脚的集成电路芯片,这28个引脚分别是:
(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有多种工作方式,这些工作方式,可以通过编程设置或改变。下面,我们进行分类介绍。
(1) 全嵌套方式
(2) 特殊全嵌套方式
(3) 优先级自动循环方式
(4) 优先级特殊循环方式
CPU对于8259A提出的中断请求,都可以加以屏蔽控制,屏蔽控制有下列几种方式:
(1)普通屏蔽方式
(2)特殊屏蔽方式
按照对中断结束(复位中断响应寄存器ISR中相应位)的不同处理,8259A有两种工作方式,即自动结束方式(AEI)和非自动结束方式。而非自动结束方式又可进一步分为一般的中断结束方式和特殊的中断结束方式。
(1)中断自动结束方式
(2)一般的中断结束方式
(3)特殊的中断结束方式
(1)缓冲方式
(2)非缓冲方式
(1)边沿触发方式
(2)电平触发方式
(3)中断查询方式
当系统中的中断源很多,超过64个时,则可以使8259A工作在查询方式下,中断查询方式的特点是:
①中断源仍往8259A发中断请求,但8259A却不使用INT信号向CPU发中断请求信号。
②CPU内部的中断允许标志复位,所以CPU对INT引脚上出现的中断请求呈禁止状态。
③CPU 用软件查询的方法来确定中断源,从而实现对设备的中断服务,可见,中断查询方式,既有中断的特点,又有查询的特点,从外设的角度来看,是靠中断的方式来请求服务,但从CPU的角度来看,是用查询方式来确定发中断请求的中断源。
在使用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偶地址端口,其各位的功能及含义如下:
(2)ICW2(设置中断类型码初始化命令字)
初始化命令字2,写入8259A奇地址端口
(3)ICW3(标志主片/从片的初始化命令字)
初始化命令字3,写入相应8259A的奇地址端口
对于主8259A芯片,ICW3的格式如下:
对于从8259A芯片,ICW3的格式如下:
(4)ICW4(方式控制初始化命令字)
初始化命令字4,写入8259A奇地址端口, 只有当ICW1中的D0=1时才需要设置,其各位的功能及含义如下:
对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、EOI共有8种不同的组合形式,其中有7种是相应的控制命令,分别介绍如下:
(3)OCW3(设置和撤销特殊屏蔽方式;设置中断查询方式;设置对8259A内部寄存器的读出命令)
必须写入相应8259A芯片的偶地址端口。其格式如下:
为了提高数据传送的速率,人们提出了直接存储器存取(DMA)的数据传送控制方式,即在一定时间段内,由DMA控制器取代CPU,获得总线控制权,来实现内存与外设或者内存的不同区域之间大量数据的快速传送。
① 外设向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存储器写周期将该数据写到内存的目的区域中去。
(1)四个独立的DMA通道
每个通道都有一个16位的基地址寄存器,一个16位的基字节数计数器,一个16位的当前地址寄存器和一个16位的当前字节数计数器及一个8位的方式寄存器,方式寄存器接收并保存来自于CPU的方式控制字,使本通道能够工作于不同的方式下;
(2)定时及控制逻辑电路
对在DMA请求服务之前,CPU编程对给定的命令字和方式控制字进行译码,以确定DMA的工作方式,并控制产生所需要的定时信号;
(3)优先级编码逻辑
对通道进行优先级编码,确定在同时接收到不同通道的DMA请求时,能够确定相应的先后次序。通道的优先级可以通过编程确定为是固定的或者是旋转的;
(4)共用寄存器
除了每个通道中的寄存器之外,整个芯片还有一些共用的的寄存器:
(1)请求与响应信号
(2)DMA传送控制信号
(3)处理器接口信号
8237A引脚的两种作用
空闲周期
当8237的任一通道都无DMA请求时,则其处于空闲周期或称为SI状态,空闲周期由一系列的时钟周期组成,在空闲周期中的每一个时钟周期,8237只做两项工作:
有效周期
DMA传送方式:单字节传送方式、数据块传送方式、请求传送方式、级连方式
DMA传送类型:DMA读、DMA写、DMA检验
存储器到存储器的传送
(1)DMA传送
单字节方式
数据块方式
请求方式
级连方式
(3)存储器到存储器的传送
(4)DMA通道的优先权方式
(5)自动初始化方式
用以存放16位地址,只可写入而不能读出。
在编程时,它与当前地址寄存器被同时写入某一起始地址,可用作内存区域的首地址或末地址。
在8237进行DMA数据传送的工作过程中,其内容不发生变化,只是在自动预置时,其内容可被重新写到当前地址寄存器中去。
这两个16位的寄存器和CPU不直接发生关系,我们也不必要对其进行读/写操作,因而对如何使用8237没有影响。
每个通道有一个8位的模式寄存器,但是它们占用同一个端口地址,用来存放方式字,依靠方式控制字本身的特征位来区分写入不同的通道,用来规定通道的工作方式,各位的作用如下:
方式字格式:
自动预置就是当某一通道按要求将数据传送完后,又能自动预置初始地址和传送的字节数,而后重复进行前面已进行过的过程。
校验传送就是实际并不进行传送,只产生地址并响应EOP信号,不产生读写控制信号,用以校验8237的功能是否正常。
控制外设硬件DMA请求是否被响应(为0允许),各个通道互相独立。3种方法:
可由CPU读取;
低4位反映读命令这个瞬间每个通道是否产生TC(为1,表示该通道传送结束);
高4位反映每个通道的DMA请求情况(为1,表示该通道有请求);
状态位在复位或被读出后,均被清零。
8237的状态寄存器:
在存储器到存储器的传送方式下,临时寄存器保存从源存储单元读出的数据,该数据又被写入到目的存储单元;
传送完成,临时寄存器只会保留最后一个字节,可由CPU读出;
复位使临时寄存器内容为零。
教学重点
数据总线缓冲器
8253内部实现与CPU数据总线连接的8位双向三态缓冲器,用以传送CPU向8253的控制信息、数据信息以及CPU从8253读取的状态信息,包括某一方面时刻的实时计数值。
读/写控制逻辑
控制8253的片选及对内部相关寄存器的读/写操作,它接收CPU发来的地址信号以实现片选、内部通道选择以及对读/写操作进行控制。
控制字寄存器
在8253的初始化编程时,由CPU写入控制字,以决定通道的工作方式,此寄存器只能写入,不能读出。
计数通道0#、1#、2#
这是三个独立的,结构相同的计数器/定时器通道,每一个通道包含一个16位的计数寄存器,用以存放计数初始值,和一个16位的减法计数器和一个16位的锁存器,锁存器在计数器工作的过程中,跟随计数值的变化,在接收到CPU发来的读计数值命令时,用以锁存计数值,供CPU读取,读取完毕之后,输出锁存器又跟随减1计数器变化。
另外,计数器的值为0的状态,还反映在状态锁存器中,可供读取。
8253芯片是具有24个引脚的双列直插式集成电路芯片,其引脚分布如图。
8253芯片的24个引脚分为两组,一组面向CPU,另一组面向外部设备,各引脚及其所传送信号的情况,如下: