武汉理工大学《计算机控制技术》课程设计说明书
3主要硬件原理介绍
3.1 8086CPU介绍
Intel 8086是一个由Intel于1978年所设计的16位微处理器芯片,是x86架构的鼻祖。不久,Intel 8088就推出了,拥有一个外部的8位数据总线,允许便宜的芯片用途。它是以8080和8085(它与8080有组合语言上的原始码兼容性)的设计为基础,拥有类似的寄存器组,但是数据总线扩充为16位。总线界面单元(Bus Interface Unit)透过6字节预存(prefecth) 的队列(queue)喂指令给执行单元(Execution Unit),所以取指令和执行是同步的,8086 CPU有20条地址线,可直接寻址1MB的存储空间,每一个存储单元可以存放一个字节(8位)二进制信息。为了便于对存储器进行存取操作,每一个存储单元都有一个惟一的地址与之对应,其地址范围用十进制表示为0~1048575,用十六进制表示为00000H~FFFFFH。
Intel 8086拥有四个16位的通用寄存器,也能够当作八个8位寄存器来存取,以及四个16位索引寄存器(包含了堆栈指标)。资料寄存器通常由指令隐含地使用,针对暂存值需要复杂的寄存器配置。它提供64K 8 位元的输出输入(或32K 16 位元),以及固定的向量中断。大部分的指令只能够存取一个内存位址,所以其中一个操作数必须是一个寄存器。运算结果会储存在操作数中的一个。
Intel 8086有四个 内存区段(segment) 寄存器,可以从索引寄存器来设定。区段寄存器可以让 CPU 利用特殊的方式存取1 MB内存。8086 把段地址左移 4 位然后把它加上偏移地址。大部分的人都认为这是一个很不好的设计,因为这样的结果是会让各分段有重叠。尽管这样对组合语言而言大部分被接受(也甚至有用),可以完全地控制分段,,使在编程中使用指针 (如C 编程语言) 变得困难。它导致指针的高效率表示变得困难,且有可能产生两个指向同一个地方的指针拥有不同的地址。更坏的是,这种方式产生要让内存扩充到大于 1 MB 的困难。而 8086 的寻址方式改变让内存扩充较有效率。
在这个系统中,8086作为整个系统的主控芯片,用来控制协调整个系统的工作如图所示就是仿真中的8086芯片的模型,这里隐藏了8086的VCC和GND两个引脚。如图3-1
4
武汉理工大学《计算机控制技术》课程设计说明书
图3-1 8086管脚图
1.数据总线D0~D15 16位(8088仅8位),双向传输, 可分别使用其低8位或高8位,该总线与地址总线A0~A15共用CPU引脚形成复用总线AD0~AD15, 地址、数据分时传送。
2.地址总线A0~A1920位,单向,地址由CPU产生,用于寻址访问存储器单元或IO端口。A0~A15与D0~D15复用,A16~A19与状态信号S3~S6复用(A16/S3 ~A19/S6)。其中AD15~AD0地址/数据复用信号(标号2~16、39),双向,三态。 在总线周期的T1状态(地址周期)AD15~AD0上出现的 是低16位的地址信号A15~A0;在T3状态(数据周期)AD15~AD0上出 现的是数据信号D15~D0。
作为分时复用管脚,因为既做地址信号,又做数据信号,因此是双向信号。 在总线周期的T1状态AD15~AD0输出CPU所要访问的存储器或者I/O端口的地址; 而在总线周期的T3状态,AD15~AD0上出现的是CPU和存储器或I/O端口交换的数据。T2状态对于读周期和写周期来说AD15~AD0上的状态是不同的: 在是读周期, AD15~AD0要从CPU驱动(地址周期)切换为存储器或I/O端口驱动(数据周期),AD15~AD0管脚需要在一个状态周期内维持高阻状态,以便不同总线驱动源的切换。如果是写周期,地址和数据信号都是由CPU
5
武汉理工大学《计算机控制技术》课程设计说明书
驱动,所以CPU从T2开始便输出数据。T2~T3都是数据周期。
A19/S6~A16/S3 (Address/Status):地址/状态复用信号(标号35~38),输出。 在总线周期的T1状态(地址周期)A19/S6~A16/S3上出现的是地址的高4位。在T2~T4状态,A19/S6~A16/S3上输出状态信息。
3.控制信号
与CPU工作模式无关的信号有:BHE#、NMI、INTR、RD#、CLK、RESET、READY#、TEST#、MN/MX#、GND
最小模式下控制信号
M/IO#(Memory/Input and Output): 存储器或者I/O控制信号,输出,三态。M/IO#输出为高电平,指示CPU正在执行存储器访问指令, 进行和存储器之间数据交互; 如果为低电平,表示CPU正在执行I/O指令, 进行和I/O接口之间数据传输。为1时,CPU作存储器访问;为0时,CPU作端口访问。
DT/R#(Data Transmit/Receive):数据驱动器数据流向控制信号,输出,三态。在8086系统中,通常采用8286或8287作为数据总线的驱动器, 用DT/R#信号来控制数据驱动器的数据传送方向。当DT/R#=1时,数据驱动器进行数据发送;DT/R#=0时,数据驱动器进行数据接收。用于控制双向数据总线收发器的驱动方向。
BHE#/S7(O):为0时,总线高字节允许传送;为1时,总线高字节禁止传送。BHE#控制对存储器按双字节输出时,高字节总线允许打开传送。即只给一个字地址,输出两个字节。S7备用。
RD#(Read):读信号,输出,三态。RD#信号有效,表示CPU执行一个对存储器或I/O端口的读操作,在一个读操作的总线周期中,RD#在T2~T3状态中有效,为低电平。为0时,CPU作读操作。
WR#:写信号,输出,三态。WR#信号有效,表示CPU执行一个对存储器或I/O端口写操作,在写操作总线周期中,WR#在T2~T3状态中有效,为低电平。为0时,CPU作写操作;M/IO#,RD#, WR#组合成系统的存储器和端口的读写信号: MEMR#,MEMW#,IOR#,IOW#。高电平有效时,将地址存入外部地址锁存器。
通常用RD#以及WR#信号控制存储器或I/O的读出和写入端。RD#和 WR#
6
武汉理工大学《计算机控制技术》课程设计说明书
指出CPU当前进行的是读还是写操作, 它和M/IO#信号一起,指出当前进行的是存储器读、I/O读、存储器写、I/O写四种操作中的哪一种。RD#和WR#信号除了在T2~T3状态中有效外,还在TW(等待)状态有效。表4.2.2为对存储器或I/O的读/写操作选择。
表3-1 RD#,WR#,M/IO#对应真值表
RD# 0 0 1 1 WR# 1 1 0 0 M/IO# 0 1 0 1 对应的操作 I/O写操作 存储器写操作 I/O读操作 存储器读操作 DEN#(Data Enable)(O):数据使能信号,输出,三态,低电平有效。 用于数据总线驱动器的控制信号。为0时,数据输出有效,与DT/R#配合,用于控制双向数据总线收发器的开与关。CPU的信号线上,特别是地址、数据、控制线上, 通常连接多个器件,也就是说, CPU的每根信号线要带多个负载,为增强其负载能力,通常在CPU的地址、 数据、控制线上设计驱动器。因地址信号采用8282地址锁存器锁存,其本身具有较强的负载能力,所以不再另加驱动器。数据线驱动一般采用双向数据驱动器8286。DEN#用作对数据驱动器的使能。DEN#在存储器或I/O访问周期或中断响应周期都为低电平, 即为有效电平。如果是读周期或者中断响应周期,DEN#从T2状态中开始有效,一直到T4状态中结束;如果是写周期,则从T2状态的开始就是有效电平。在DMA方式时,DEN#被置为高阻状态。
ALE(Address Latch Enable)(O):地址锁存使能信号,输出,高电平有效。是用来作为地址锁存器的锁存控制信号。8086的AD15~AD0是地址/数据复用信号,地址信息仅在T1状态有效,为了使地址信号在整个读写周期都有效, 通常要用ALE把地址信号锁存在地址锁存器当中为1时, 地址锁存允许,高电平有效时,控制将地址存入外部地址锁存器。
NMI(Non-Maskable Interrupt):非屏蔽中断请求,输入,上升沿有效。NMI不受中断允许标志的影响。 当CPU检测到NMI有一个正沿触发的信号以后, CPU执行完当前指令便响应中断类型号为2的非屏蔽中断请求。为1时,(上升沿)产生不可屏蔽中断请求。非屏蔽中断是不受中断允许标志IF的影响的,不能
7
武汉理工大学《计算机控制技术》课程设计说明书
用软件进行屏蔽。
RESET复位信号,输入,高电平有效。 复位信号有效时,CPU结束当前操作并对标志寄存器FLAG 、IP、DS、SS、ES及指令队列清零,并将CS设置为FFFFH。 当复位信号撤除时,(即电平由高变低时)CPU从FFFF0H开始执行程序。 这也是8086系统程序的起始地址,即开机后程序的起始位置。一般的8086系统,将系统程序固化在ROM中,ROM的地址应包含FFFF0H。
READY(Ready):准备好信号,输入,高电平有效。为了CPU能和不同速度的存储器或I/O接口进行连接, 设计了READY信号。CPU在每个总线周期的T3状态对READY进行采样。 当READY信号有效时表示存储器或I/O准备好发送或接收数据。CPU执行典型的总线周期,在4个T状态内完成总线操作。 如果存储器或I/O的速度较慢,不能与CPU的速度相匹配,可令READY为低。CPU在T3采样到READY为低电平以后,便在T3之后插入Tw, 延长读写周期,使CPU能和较慢速度的存储器或I/O接口相匹配。 为1时,被访问部件准备就绪;为0时,被访问部件未准备就绪。
MN/MX#(Minimum/Maximum Mode Control):最大最小模式控制信号,输入。决定8086工作在哪种工作模式。如果MN/MX#=1(+5V),CPU工作在最小模式。MN/MX#=0(接地), CPU则工作在最大模式。
3.2 8255芯片介绍
8255是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部 分、控制部分。
1.与CPU连接部分
根据定义,8255能并行传送8位数据,所以其数据线为8根D0~D7。由于
8