现代微型计算机与接口教程杨文显课后答案.docx
《现代微型计算机与接口教程杨文显课后答案.docx》由会员分享,可在线阅读,更多相关《现代微型计算机与接口教程杨文显课后答案.docx(55页珍藏版)》请在冰豆网上搜索。
现代微型计算机与接口教程杨文显课后答案
习题一
1.8086CPU由哪几个部件构成?
它们的主要功能各是什么?
8086CPU由指令执行部件EU和总线接口部件BIU两个部份组成。
指令执行部件主要功能是执行指令。
总线接口部件的主要功能是完成访问存储器或I/O端口的操作:
•形成访问存储器的物理地址;
•访问存储器取得指令并暂存到指令队列中等待执行;
•访问存储器或I/O端口以读取操作数参与EU运算,或存放运算结果。
2.什么是逻辑地址?
什么是物理地址?
它们各自如何表示?
如何转换?
程序中使用的存储器地址称为逻辑地址,由16位“段基址”和16位“偏移地址”(段内地址)组成。
段基址表示一个段的起始地址的高16位。
偏移地址表示段内的一个单元距离段开始位置的距离。
访问存储器的实际地址称为物理地址,用20位二进制表示。
将两个16位二进制表示的逻辑地址错位相加,可以得到20位的物理地址:
物理地址=段基址×16+偏移地址
在32位CPU的保护模式下,“逻辑地址”的表示产生了一些变化,请参考第8章的相关内容。
3.什么是“堆栈”?
它有什么用处?
在使用上有什么特点?
堆栈是内存中的一块存储区,用来存放专用数据。
例如,调用子程序时的入口参数、返回地址等,这些数据都按照“先进后出”的规则进行存取。
SS存放堆栈段的段基址,SP存放当前堆栈栈顶的偏移地址。
数据进出堆栈要使用专门的堆栈操作指令,SP的值在执行堆栈操作指令时根据规则自动地进行修改。
4.
X=36H=00110110B
Y=78H=01111000B(-
Δ=10111110B
CF=1,SF=1,OF=0,PF=1,ZF=0,AF=1
设X=36H,Y=78H,进行X+Y和X-Y运算后FLAGS寄存器各状态标志位各是什么?
5.按照传输方向和电气特性划分,CPU引脚信号有几种类型?
各适用于什么场合?
CPU引脚传输的信号按照传输方向划分,有以下几种类型:
输出:
信号从CPU向外部传送;
输入:
信号从外部送入CPU;
双向:
信号有时从外部送入CPU,有时从CPU向外部传送。
双向信号主要用于数据信号的传输;输出信号用于传输地址信号和一些控制信号;输入信号主要用于传输外部的状态信号(例如READY)和请求(中断、DMA)信号。
按照信号的电器特性划分,有以下几种类型:
一般信号:
用来传输数据/地址信号时,高电平表示“1”,低电平表示“0”;用来表示正逻辑的控制/状态信号时,“1”表示有效,“0”表示信号无效;用来表示负逻辑的控制/状态信号时,“0”表示有效,“1”表示信号无效。
三态信号:
除了高电平、低电平两种状态之外,CPU内部还可以通过一个大的电阻阻断内外信号的传送,CPU内部的状态与外部相互隔离,也称为“悬浮态”。
CPU放弃总线控制权,允许其他设备使用总线时,将相关信号置为“悬浮态”。
6.8086CPU以最小模式工作,现需要读取内存中首地址为20031H的一个字,如何执行总线读周期?
请具体分析。
为了读取内存中首地址为20031H的一个字,需要执行二个总线读周期。
第一个总线周期读取20031H字节内容,进行的操作如下。
T1状态:
=1,指出CPU是从内存读取数据。
随后CPU从地址/状态复用线(A19/S6~A16/S3)和地址/数据复用线(AD15~AD0)上发出读取存储器的20位地址20031H。
为了锁存地址,CPU在T1状态从ALE引脚输出一个正脉冲作为地址锁存信号。
由于需要读取高8位数据线上的数据(奇地址),
=0。
为了控制总线收发器8286接受数据,
=0。
T2状态:
地址信息撤消,地址/数据线AD15~AD0进入高阻态,读信号
开始变为低电平(有效),
=0,用来开放总线收发器8286。
T3状态:
CPU检测READY引脚信号。
若READY为高电平(有效)时,表示存储器或I/O端口已经准备好数据,CPU在T3状态结束时读取该数据。
若READY为低电平,则表示系统中挂接的存储器或外设不能如期送出数据,要求CPU在T3和T4状态之间插入1个或几个等待状态Tw。
TW状态:
进入TW状态后,CPU在每个TW状态的前沿(下降沿)采样READY信号,若为低电平,则继续插入等待状态TW。
若READY信号变为高电平,表示数据已出现在数据总线上,CPU从AD15~AD0读取数据。
T4状态:
在T3(TW)和T4状态交界的下降沿处,CPU对数据总线上的数据进行采样,完成读取数据的操作。
第二个总线周期读取地址为20032H字节的内容。
CPU发出的信号与第一个周期类似,区别在于T1状态CPU发出存储器地址为20032H,由于只需要读取低8位数据线上的数据(偶地址),
=1。
在CPU内部,从20031H读入的低位字节和从20032H读入的高位字节被拼装成一个字。
7.8086CPU有几种工作方式?
各有什么特点?
8086/8088CPU有两种工作模式:
最大工作模式和最小工作模式。
所谓最小工作模式,是指系统中只有一个8086/8088处理器,所有的总线控制信号都由8086/8088CPU直接产生,构成系统所需的总线控制逻辑部件最少,最小工作模式因此得名。
最小模式也称单处理器模式。
最大模式下,系统内可以有一个以上的处理器,除了8086/8088作为“中央处理器”之外,还可以配置用于数值计算的8087“数值协处理器”、用于I/O管理的“I/O协处理器”8089。
各个处理器发往总线的命令统一送往“总线控制器”,由它“仲裁”后发出。
CPU两种工作模式由
引脚决定,
接高电平,CPU工作在最小模式;将
接地,CPU工作在最大模式。
8.分析8086CPU两个中断输入引脚的区别,以及各自的使用场合。
INTR用于输入可屏蔽中断请求信号,电平触发,高电平有效。
中断允许标志IF=1时才能响应INTR上的中断请求。
NMI用于输入不可屏蔽中断请求信号,上升沿触发,不受中断允许标志的限制。
CPU一旦测试到NMI请求有效,当前指令执行完后自动转去执行类型2的中断服务程序。
NMI引脚用于连接CPU外部的紧急中断请求,例如内存校验错,电源掉电报警等。
INTR引脚用于连接一般外部设备的中断请求。
9.什么是时钟周期、总线周期、指令周期?
它们的时间长短取决于哪些因素?
时钟周期:
CPU连接的系统主时钟CLK一个周期的时间。
CLK信号频率越高,时钟周期越短。
总线周期:
CPU通过外部总线对存储器或I/O端口进行一次读/写操作的过程称为总线周期。
8086CPU总线周期一般由四个时钟周期组成,存储器/IO设备(接口)速度不能满足CPU要求时,可以增加一个或多个时钟周期。
指令周期:
CPU执行一条指令的时间(包括取指令和执行该指令所需的全部时间)称为指令周期。
指令周期的时间主要取决于主时钟的频率和指令的复杂程度,它也受到存储器或IO设备接口工作速度的影响。
10.在一次最小模式总线读周期中,8086CPU先后发出了哪些信号?
各有什么用处?
T1状态:
指出CPU是从内存
(1)还是从IO端口(0)读取数据。
随后CPU从地址/状态复用线(A19/S6~A16/S3)和地址/数据复用线(AD15~AD0)上发出读取存储器的20位地址,对IO端口访问时从AD15~AD0上发出16位地址。
为了锁存地址,CPU在T1状态从ALE引脚输出一个正脉冲作为地址锁存信号。
如果需要读取高8位数据线上的数据(奇地址/读取一个字),
=0。
为了控制总线收发器8286数据传输方向,
=0。
T2状态:
读信号
开始变为低电平(有效),
=0,用来开放总线收发器8286。
T3状态:
CPU检测READY引脚信号。
若READY为高电平(有效),表示存储器或I/O端口已经准备好数据,进入T4状态;若READY为低电平(无效),表示存储器或I/O端口尚未准备好数据,插入一个或多个TW状态,直到READY变为高电平。
T4状态:
在T3(TW)和T4状态交界的下降沿处,CPU对数据总线上的数据进行采样,完成读取数据的操作。
11.结合指令“OUT21H,AL”,具体叙述最大模式“总线写周期”总线上的相关信号。
T1状态:
地址/数据复用线(AD15~AD0)上出现访问IO端口的16位地址21H。
由于地址为奇数,需要通过高8位数据线访问端口,
=0。
T2状态:
=0,表示本周期对IO端口进行写操作。
地址/数据复用线(AD15~AD0)上出现来自AL的8位数据。
T3状态:
若READY为高电平(有效),表示I/O端口已经准备好接收数据。
反之,表示I/O端口尚未准备好接收数据,需要CPU插入TW周期进行等待,直到READY出现高电平(有效)。
T4状态:
CPU结束本周期。
习题二
1.内存储器主要分为哪两类?
它们的主要区别是什么?
内存储器分为随机存取存储器RAM(RadomAccessMemory)和只读存储器ROM(ReadOnlyMemory)两类。
RAM中信息可以按地址读出,也可以按地址写入。
RAM具有易失性,掉电后原来存储的信息全部丢失,不能恢复。
ROM中的信息可以按地址读出,但是在普通状态下不能写入,它的内容一般不能被改变。
ROM具有“非易失性”,电源关闭后,其中的信息仍然保持。
2.说明SRAM、DRAM、MROM、PROM和EPROM的特点和用途。
SRAM:
静态RAM,读写速度快,但是集成度低,容量小,主要用作Cache或小系统的内存储器。
DRAM:
动态RAM,读写速度慢于静态RAM,但是它的集成度高,单片容量大,现代微型计算机的“主存”均由DRAM构成。
MROM:
掩膜ROM,由芯片制作商在生产、制作时写入其中数据,成本低,适合于批量较大、程序和数据已经成熟、不需要修改的场合。
PROM:
可编程ROM,允许用户自行写入芯片内容。
芯片出厂时,所有位均处于全“0”或全“1”状态,数据写入后不能恢复。
因此,PROM只能写入一次。
EPROM:
可擦除可编程只读存储器,可根据用户的需求,多次写入和擦除,重复使用。
用于系统开发,需要反复修改的场合。
回忆:
半导体存储器芯片容量取决于存储单元的个数和每个单元包含的位数。
存储容量可以用下面的式子表示:
存储器容量(S)=存储单元数(p)×数据位数(i)
存储单元个数(p)与存储器芯片的地址线条数(k)有密切关系:
p=2k,或k=log2(p)。
数据位数i一般等于芯片数据线的根数。
存储芯片的容量(S)与地址线条数(k)、数据线的位数(i)之间的关系因此可表示为:
S=2k×i
3.已知一个SRAM芯片的容量为8K×8,该芯片有一个片选信号引脚和一个读/写控制引脚,问该芯片至少有多少个引脚?
地址线多少条?
数据线多少条?
还有什么信号线?
根据存储芯片地址线数量计算公式,k=log2(1024*8)=log2(213)=13,即总计有13根地址线。
另有8根数据线、2根电源线。
所以该芯片至少有25(=13+8+1+1+2)根引脚。
4.巳知一个DRAM芯片外部引脚信号中有4根数据线,7根地址线,计算它的容量。
因为:
DRAM芯片把片内地址划分为“行地址”和“列地址”两组,分时从它的地址引脚输入。
所以,DRAM芯片地址引脚只有它内部地址线的一半。
根据存储容量计算公式S=2k×I,可得该芯片的存储容量为:
214*4=16K×4bit(位),也可表示为64Kb=8KB(字节)。
5.32M×8的DRAM芯片,其外部数据线和地址线为多少条?
根据存储芯片地址线数量计算公式,k=log2(1024*1024*32)=log2(225)=25,即需要25根地址线。
但是,由于DRAM芯片的地址采用分时输入的方法,所以实际需要的地址线只有理论值的一半,此处为13根。
数据线8根。
6.DRAM为什么需要定时刷新?
DRAM靠MOS管极间电容存储电荷的有无决定所存信息是0还是1,由于漏电流的存在,它存储的信息不能长时间保存,需要定时重新写入,称为“刷新”。
7.74LS138译码器的接线如图2.28所示,写出
、
、
、
所决定的内存地址范围。
从图看出,该存储系统的片内地址线有13根(A12-A0),是一个由8KB存储芯片组成的存储系统,A17地址线不确定。
它的地址分布为:
00?
0,CBA?
?
?
?
?
?
?
?
?
?
?
?
?
其中,CBA作为译码输入,与输出选择有关:
当为000,选中y0,
为001,选中y1,
为010,选中y2,
为011,选中y3,….
“?
”表示可以为“0”,也可以为“1”。
于是:
对应的内存地址范围是:
00000H—01FFFH;或20000H—21FFFH。
对应的内存地址范围是:
04000H—05FFFH;或24000H—25FFFH。
对应的内存地址范围是:
08000H—09FFFH;或28000H—29FFFH。
对应的内存地址范围是:
0C000H—0DFFFH;或2C000H—2DFFFH。
8.叙述EPROM的编程过程,并说明EPROM和EEPROM的不同点。
EPROM的编程过程
标准编程方式:
Vpp上加编程电压,地址线、数据线上给出要编程单元的地址及其数据,并使
=0、
=1。
上述信号稳定后,在
端加上宽度为50±5ms的负脉冲,就可将一个字节的数据写入相应的地址单元中。
不断重复这个过程,将数据逐一写入。
快速编程方式:
使用100µs的编程脉冲依次写完所有要编程的单元,然后从头开始校验每个写入的字节。
若写得不正确,则重写这个单元。
写完后再校验,不正确还可再写,直到全部正确。
EPROM和EEPROM的不同点:
EPROM芯片用紫外线光照射擦除芯片的内容,擦除时需要把芯片从电路板上拔下,擦除操作对整个芯片进行。
EPROM芯片编程需要外加“高电压”,所以需要专用的“编程器”才能实现。
EPROM的编程一般情况下对整个芯片进行。
EEPROM芯片的擦除用电信号实现,无需把芯片从电路板上拔下,可以进行“在系统编程”。
EEPROM以字节为单位重写,EEPROM没有单独的擦除操作,写入就意味着擦除了原来的内容,所以使用比EPROM快速方便。
相比较而言,EEPROM芯片的编程比较接近RAM的写入,它们之间的区别主要体现在速度上:
RAM写入与读出的速度相近,不需要其他的联络信号;EEPROM的写入比起读出明显要慢,为了掌握写入时间,EEPROM通常设置了一根“状态”引脚,供联络使用。
9.下列容量的ROM芯片除电源和地线,还有多少个输入引脚和输出引脚?
写出信号名称。
(1)64×4
(2)512×8(3)128K×8(4)16K×8(5)1M×16
根据存储容量计算公式可得以上各芯片的地址、数据引脚分别为:
64×4:
地址线k=log2(64)=log2(26)=6根,数据线=4根;
512×8:
地址线k=log2(512)=log2(29)=9根,数据线=8根;
128k×8:
地址线k=log2(128*1024)=log2(217)=17根,数据线=8根;
16k×8:
地址线k=log2(16*1024)=log2(214)=14根,数据线=8根;
1M×16:
地址线k=log2(1024*1024)=log2(220)=20根,数据线=16根。
此外,所有ROM芯片都需要一根片选信号引脚;
对于PROM,EPROM通常还需要“输出允许”和“编程脉冲”输入引脚。
EEPROM芯片除了有“片选”、“输出允许”和“写允许”外,通常还有表示“写入完成”的状态信号引脚。
10.已知RAM芯片的容量为
(1)16K×8
(2)32K×8(3)64K×8(4)2K×8
如果RAM的起始地址为3400H、则各RAM对应的末地址为多少?
存储器的末地址=首地址+芯片内字节数(容量)-1
上述各芯片对应RAM的末地址为:
16K×8:
末地址是3400H+4000H-1=73FFH
32K×8:
末地址是3400H+8000H-1=B3FFH
64K×8:
末地址是3400H+10000H-1=133FFH
2K×8:
末地址是3400H+800H-1=3BFFH
11.如果存储器起始地址为1800H,末地址为1FFFH,求该存储器的容量。
该存储器的容量为:
(1FFFH-1800H+1)×8=800H×8,该存储器有2048×8个位,也可以写作2KB。
12.有一个存储体,其地址线15条,数据线8条,则
1)该存储体能够存储多少个汉字?
2)如果该存储体由2K×4位的芯片组成,需要多少片?
3)采用什么方法扩展?
分析各位地址线的使用。
该存储体容量为215×8=32KB,存储一个汉字需要二个字节,因此,它能够存储16384(16K)个汉字。
需要2K×4位的芯片32片,[(32K×8)/(2K×4)=32]。
可采用字位全扩展方法,由2片4位的芯片组成1组8位的存储单元,16组扩展成32K的8位存储体。
芯片直接使用的地址线(片内地址)11根(A0-A10),另外需要4根高位地址,连接到4-16译码器输入端,产生16个译码信号用作16个芯片组的片选信号。
剩余的地址线用来确定该存储体的首地址。
13.试说明FlashMemory芯片的特点及28F040的编程过程。
FlashMemory也称为“闪速存储器”,有时直接称之为“Flash”。
Flash既有ROM非易失性的特点,又能够在线擦除和重写,既可读又可写,同时有很高的存取速度,具有集成度高,价格低,耗电少等优点。
目前存取速度已突破了30ns,掉电后信息可以保持10年。
Flash的编程方法与E2PROM相同,28F040的编程写入过程采用字节编程方式。
首先,向28F040状态寄存器写入命令10H,再在指定的地址单元写入相应数据。
接着查询状态,判断这个字节是否写好,若写好则重复上面过程写入下一个字节,直到全部字节写入。
28F040的编程速度很快,一个字节的写入时间仅为8.6µs。
14.利用全地址译码将6264芯片接到8088系统总线上,地址范围为30000H~31FFFH,画出逻辑图。
回忆:
一个存储芯片内各个存储单元的高位地址是相同的,它决定了这个芯片在整个内存中占据的地址范围。
所以,芯片的选片信号应该由高位地址译码产生。
芯片内部存储单元的选择由低位地址决定,通过芯片的地址引脚输入。
它们可以理解为“片内相对地址”。
存储器的地址译码有两种方式:
全地址译码和部份地址译码。
所谓全地址译码,就是连接存储器时要使用全部20位地址信号,所有的高位地址都要参加译码。
译码电路构成方法很多,可以利用基本逻辑门电路构成,也可以利用集成的译码器芯片或可编程芯片组成。
全地址译码可以保证存储器芯片上的每一个单元在整个内存空间中具有唯一的、独占的一个地址。
参考教材相关内容P28,6264芯片有13根地址线,剩余的高位7根地址线通过译码组合确定该芯片的起始地址(30000H)。
由30000H地址得出对应的地址线状态为:
00110000000000000000
可以看出A13~A19地址线为0011000,所以译码组合应逻辑为:
=
·
·
·A16·A17·
·
=(
·
·
·
·
)·(A16·A17)
=A13+A14+A15+A18+A19+A16·A17
具体逻辑如右图所示。
15.若用2164芯片构成容量为128KB的存储器,需多少片2164?
至少需多少根地址线?
其中多少根用于片内寻址?
多少根用于片选译码?
2164A是容量为64K×1位的动态随机存储器芯片,构成128KB的存储器需要2164A芯片16片[128K×8/(64K×1)=16]。
由于地址空间为128K,需要的地址线总数为17根(217=128K)。
其中,片内地址线16根(216=64K),片选地址线1根(17-16=1,)。
每8个2164芯片构成一组,进行位扩展,得到64KB存储器。
两个这样的“组”进行地址扩展,构成128KB的存储器。
16.某8088系统用2764ROM芯片和6264SRAM芯片构成16KB的内存。
其中,RAM的地址范围为FC000H-FDFFFH,ROM的地址范围为FE000H-FFFFFH。
试利用74LS138译码,画出存储器与CPU的连接图,并标出总线信号名称。
2764和6264均为8KB的存储芯片,需要13根地址线(A0~A12)用于片内寻址。
8088系统的其他地址线(A13~A19)用于产生片选信号。
FC000H的地址线状态为:
11111100000000000000
FE000H的地址线状态为:
11111110000000000000
将A13~A15用作译码输入,其他地址(A16~A19=1111)用作译码控制,可以得到如下译码控制电路,连接如下图所示。
17.存储周期指的是(A)。
A.存储器进行连续读或写操作所允许的最短时间间隔B.存储器的读出周期
C.存储器进行连续写操作所允许的最短时间间隔D.存储器的写入周期
存储周期是指连续两次访问存储器之间所需的最小时间。
存取时间是CPU访问一次存储器(写入和读出)所需的时间。
存储周期等于存取时间加上存储器的恢复时间。
所以应选择A。
18.某一EPROM芯片,其容量为32K×8,除电源和地线外,最小的输入引脚和输出引脚分别为(C)。
A.15和8;B.32和8;C.17和8;D.18和10;
容量为32K×8的EPROM芯片,其数据线为8根,地址线为15根,片选线1根,读写控制线1根。
其中地址线、片选线、读写控制线均为EPROM的输入信号,共17根。
数据线在正常工作状态下用于EPROM输出,计8根。
所以应选择C。
19.掩膜ROM在制造时通过光刻是否连接MOS管来确定0和1,如果对应的某存储单元位没有连接MOS管,则该位信息为(C)。
A.不确定;B.0;C.1;D.可能为0,也可能为1;
掩膜ROM芯片内每一个二进制位对应于一个MOS管,该位上存储的信息取决于这个MOS管的栅极是否被连接到字线上。
栅极被连接,该单元被选中时,漏极与“地”相通,输出低电平,该位存储的信息就是0。
栅极未连接时,尽管字线被选中,输出端与“地”仍然不能导通,输出高电平,对应的信息为1。
所以应选择C。
20.SRAM和DRAM存储原理不同,它们分别靠(A)来存储0和1的。
A.双稳态触发器的两个稳态和极间是否有足够的电荷
B.内部熔丝是否断开和双稳态触发器
C.极间电荷和浮置栅是否积累足够的电荷
D.极间是否有足够的电荷和双稳态触发器的两个稳态
静态随机存储器(SRAM)的每一个位存储单元有一个双稳态触发器,由4个晶体管组成,它们的状态确定了该存储单元存储的1位二进制信息。
而动态随机存储器(DRAM)一般采用单管电路组成,它由一个MOS管T1和一个电容C构成。
写入时其信息通过位线(数据线)存人电容C中(写入“1”对电容充电,写入“0”则对电容放电);读出时存储在电容C上的电荷通过T1输出到位线上。
所以应选择A。
习题三
1.接口电路与外部设备之间传送的信号有哪几种?
传输方向怎样?
数据信号:
对于输入设备,数据信号从外设通过接口送往总线,对于输出设备,数据信号从总线通过接口发往外部设备。
状态信号:
状态信号表明外部设备