当前课程知识点:微机原理与接口技术 > 第2周 8088微处理器 > 第9讲 8088 CPU主要引线及机构 > 8088 CPU主要引线
大家好 这一讲我们来开始学习
8088的一些主要引线
以及它的内部结构
因为8088在更多的时候工作在最小模式下
所以下边我们以它最小模式下为例
来介绍它的一些主要引线
以及它的功能
8088最小模式下的引线信号
我们
因为8088本身是一个40个引脚
的一个双列直插式的芯片
那么这40个引脚呢
每一个引脚都有它的独特的功能
甚至有它
它有时候一个引脚它包含了
两种意思含义在里头
这个我们通过我们附件上传的这个
芯片的引脚图
大家如果有兴趣的话可以看一下
但是我们在这里呢
我觉得没有必要把所有的引脚都
给大家去做一一的解释
因为所有的引脚如果有兴趣知道的话
实际上看一下手册就会非常的清楚了
所以下边我们就是讲它和我们
未来设计非常相关的一些主要的
功能引脚
这些功能引脚总体上来讲
分为四组
第一组呢
就是我们需要完成一次访问内存
或者访问接口
所需要的必须要有的一些最基本的信号
当然不会包括
除了电源和地
这些电源接地信号是肯定需要的
那些我们就不再去讲了
我们这里就说主要的一些功能引脚
另外呢我们会介绍就是
它和外部的同步
控制的一个信号
再一个第三组呢
是有关中断请求和响应的信号
第四组
就是总线保持信号
下边我们先来
为大家介绍访问内存
或者访问接口所需要的
必须的一组信号
我们回忆一下我们前面学的
有关冯诺依曼计算机
它的一个工作过程
首先 我们说所有的程序
在编写完了之后
肯定你是存在硬盘中的
那么当这个程序要被执行的时候
操作系统会负责把它调入到内存中
调入到内存中以后
它调入的已经是经过编译
之后的
或者是链接之后的
能够已经成为一个机器码的形式
存放在内存中了
那么CPU要执行的时候
首先要从内存中去把这条
去把指令一条一条的取出来
那么取出来通过谁呢?
为什么能够找到它的第一条指令
所在的地方呢?
这就是有关程序计数器它的功能
也就是说首先程序计数器会产生一个地址
这个地址呢就是它要找的
你的程序第一条指令它的地址
好了 这个地址
它产生这个地址以后 它把地址
接着送出来
送到它内部的一个地址寄存器里
然后呢它就自动修改 就相当
指针加1一样
好 修改完了以后
这个
地址寄存器就负责把你要找的要访问
的内存单元的这个地址
送上地址总线
指向要访问的那个内存单元
如果这个时候要读取的是指令
那么找到这个单元以后
它接着就要发出
读存储器的命令
在这个命令的控制下
好 这个单元里头的内容就被拿出来了
如果它是指令的话
就会被送去做指令译码
如果它是运算的数据
那就会被直接去进行处理
这就是我们在上一章
我们学习冯诺依曼结构的时候
或者说我们说
微型计算机的一般工作过程的时候
我们给大家讲过的这个图
我们看到这个图里头
它描述着
微型机或者微处理器
它执行一条指令的基本的一个过程
也就是说 首先它要
产生找到这个指令的地址
然后要发出读取这条
指令的命令
然后在这个命令的控制下
然后把这个指令读取出来
或者把数据读取出来
是这样一个过程
因此微处理器要读取一条
指令它的控制过程
大概就是这样子
首先它要发出读取
指令或者数据所在的单元的地址
或者是如果是指令的话
它一定是在内存的地址
还有可能如果你是要去读取数据的话
有可能它在内存里
也有可能在接口里头
所以就要发出这样两种类型的地址
然后呢要发出相应的控制信号
比如你要读指令或者读数据
就要发出读信号 对吧
然后呢
它要去
才能把数据拿回来
就要有相应的数据信号
所以总体来讲
就是这样三大类的信号
这三大类信号
它的目标地址就是地址信号
而各种读取的这种控制信号
这就叫控制信号
还有传输的数据 就叫数据信号
我们说数据在计算机里
它是个很广义的一个概念
不是一定是123456这样子的
一个我们要加减乘除运算的数据
我们可以说把所有计算机能够处理的信息
我们都可以称为数据
这里包括我们说的指令
包括我们指令运算的对象
等等 这些都在这里头了
因此 8088在最小模式下
它完成一次访问内存或者访问接口
所需要的
就是这三大种类型的信号
首先要有地址信号 对于8088CPU
或者8086CPU
它们的地址总线的宽度都是20位的
这就又来一个名词 什么叫宽度?
我们说地址总线 总线是一组导线
这一组导线大家并排在一起
就构成了一个宽度
所以我们通常说
总线到底有多少根线
我们用宽度来描述
对与8088或者8086CPU
它的地址总线的宽度 也就是它
一共有多少位地址信号呢? 20位
20位地址信号能够产生多少个编码呢?
显然是2的20次方个地址编码
其中呢
它的最低的8位地址
也就是A0到A7这样的低8位地址
大家看这个名字
叫AD0到AD7 也就是说它实际上和
8位数据信号是
分时复用的
这个D就是Data的意思
表示数据总线
那么什么叫分时复用
就是说大家同样都是这8根线
但是呢
我们两个共用
但是我们两个共用
不是同时用
因为同时用大家就乱套了
不知道是什么性质了
就是说一定是先有地址
然后再有数据 这个我们上一次
上一讲里看到了 它的首先
要做一次访问 一定要先有地址
接着发控制信号 接着发数据信号
所以在这个低8位地址信号线上
是先传输的是8位地址
接着呢 传输的是8位数据信号
对于8088来讲
我们说对外的通道只有8根线
也就是说它的数据通道只有8位
所以呢
这里只用了低8位地址信号和8位数据信号
分时复用 也就是共用这8根线
还有呢 这20位地址里边的高4位
它也是分时复用的
它是和另外4位状态信息来分时复用的
有关状态信息我们不在这里
去过多的解释了
有兴趣的同学呢
你们可以看我们上传的附带的文档资料
在这20位地址信号里头只有
中间的这8位是它自己独用的
这20位地址以及8位数据信号
就意味着 20位地址信号可以产生
2的20次方个编码
也就是一兆个地址编码
这也就是为什么我们最后
8088也好 8086CPU也好能够
管理一兆个
内存单元
因为刚才我们说了一兆个内存单元
一定它的地址码的长度要有
20位地址码才可以
要这样子的话 才能产生一兆个
不同的地址编码
另外呢它有8位数据信号
就意味着它可以并行传输8位
二进制码出去
但是它的内部 请大家注意
它的内部一定是16位二进制码
可以同时处理的
但是如果说两个16位二进制数相加
相加的结果也是16位
它要传出去 它的外部的通道只有8根线
它要传两次才能出去
除了地址信号和数据信号之外
我们刚才说了还有一大类
就是控制信号
我们完成一次访问内存或者访问接口
所要做的操作就是读操作或者写操作
因此我们一定要在
读允许或者写允许信号的控制下
才能够完成
这就是写允许信号#WR和读允许信号#RD
它们旁边都有一个井字号
这个井字号代表着上横线的意思 也就是它们是
低电平有效的意思
那么在写和读
到底是对谁写? 对谁读呢?
8088CPU有可能访问的是内存
也有可能访问的是接口
那么你到底这个
地址总线上的地址信号
是指向的是内存还是指向的是接口?
我们必须要确定
这个确定的这个控制信号我们叫IO/#M
这个M就是Memory的缩写
它旁边有井字号
表示这个引脚为低电平的时候
我们下边的访问的对象就是内存
如果这个引脚为高电平
就表示我们要访问的
地方是接口
所以这个引脚决定了你的访问的方向
那么走到这里好像大家感觉到我现在
已经能够知道是访问内存还访问是接口
也知道是读还是写 对吧
似乎就可以了
但是不是的
我们在前面上一讲里我们
看到的那个最小模式或者最大模式下的那个
系统示意图 我们已经看出来
数据信号的输入和输出
并不是数据总线
直接连接到了8088的
数据引线上
也就不是直接连接到D0和D7
而是中间经过了一个叫
数据收发器的这样一个环节
因此我们还要有针对这样一个环节
的控制信号
分别叫
#DEN和DT/#R信号
它们是数据收发器的选通信号
以及数据传输方向的控制信号
再有它们有效的时候
那么才能够进行相应的操作
在不论是读也好写也好
#DEN都必须为低电平
也就是说数据收发器才能够工作
那么才能进行读写
DT/#R这是一个
方向控制信号
DT Direcction的缩写
R是Read的缩写 R旁边有井字号
说明当这个引脚为低电平的时候
数据是读入的
那么为高电平
就输出 就往外写
这是8088在最小工作模式下
完成一次访问内存或者访问接口
所需要的一些主要的引线
除了这些引线以外
还有刚才我们已经讲
到的ALE信号 也就是地址锁存信号
以及大家都很熟悉的RESET信号
还有当然还有一些其他的信号
我们包括电源 地 CLOCK这种
我们就不在这里再强调了
好了 我们现在总计一下做一个例子
就说如果这个时候#WR信号等于高电平
#RD信号为低电平
IO/#M为低电平的时候
那么表示CPU正在做什么操作呢?
正在进行读存储器的操作
请大家注意
我们讲到这里有两点希望
强调一下 首先
当#RD信号为低电平的时候
表示是读操作
#WR信号为低电平的时候 表示是写信号
写和读因为它们的传输方向完全不一样
我们在第一章讲过了
读是从外边把数据读进来
而写是把CPU的数据送出去
所以CPU在任意一个时间点上
绝对不能既读又写 它只能读
或者读或者写
或者不读不写
就是它自己在它肚子里做加减乘除
这没有问题
对吧
因此呢 #WR和#RD信号
是不可能同时为低电平的
它们只能在任意一个时刻 只能有一位
为低电平
或者两个都为高电平
两个都为高电平表示它
不对外访问 它自己在内部进行信息处理
如果有一个为低电平就表示对外进行访问
或者读操作或者写操作
这个是请大家一定要注意的第一个问题
第二个问题
我们刚才看地址引脚和数据引脚
我们都是从零位开始的
20位地址信号线是从A0到A19
8位数据信号线是从D0到D7
这就是我们在计算机里
我们都是从第零位开始
也就说最右侧的这一位
也就是最低这一位
是第零位
越往左
越高位 这个和我们十进制是一样的
对吧
那么8位二进制码的最高位是第7位
16位二进制码的最高位是就是
15位 这个也请大家注意
这个我们在第一章讲
数制的时候其实已提醒
给大家介绍过 那么这里再提醒一下
好 这就是访问内存或者访问接口
所需要的一组控制信号
那么第二组
是我们只有一根信号叫Ready信号
它是外部同步控制信号
它的含义是
CPU访问一次内存
或者访问一次接口
所需要的
一个操作的周期
在正常的情况下
CPU访问一次内存或者访问一次接口
需要的是4个时钟周期
这个时钟周期的宽度有多宽?
一个时钟周期就是我们时钟频率倒过来
对吧
在今天的CPU里 我们
不论是多核也好 单核也好
它都是吉赫兹这样子的一个数量级
那么在8088/8086这个时代呢
它的钟频基本上将近5个兆赫
就4点99几兆赫
那么所以它的一个周期
就相当于零点2个微秒
那么这里就是完成一次访问内存
或者访问接口
标准的时候 应该是4个时钟周期
我们把这4个时钟周期也称为
一个总线周期
但是因为在当初内存
因为当初是没有操作系统
的时代
也就是说大家这个管理呢都是在
由它内部的硬连逻辑
或者一些简单地这些软件的辅助的管理
所以内存的速度又比CPU的速度
要慢很多
那接口呢 那就更慢很多
那么完成这样一次
访问内存或者访问接口
是不是在4个时钟周期内
一定能够完成呢?
有时候就不一定
那么不一定的情况该怎么办呢?
这个时候我们就要增加
这样的一个时钟周期在里头
所以Ready信号就起这个作用的
当CPU访问内存或者访问接口的时候
它发出了这种
这样的一个访问信号
也就是在这4个时钟周期里的
第3个时钟周期
它就开始检测 它的各个引脚
如果这个时候它发现READY端是高电平
那么就是Ready 就OK了
这个时候它送上第4个时钟周期
好
这么一次访存或者访问接口的工作就结束了
那么如果在第3个时钟周期
发现READY是低电平
那么也就是它没有Ready
就是没有准备好
那么这个时候怎么办?
它就必须要去等待
等待的方式
它就在第3个时钟周期的后边
插入一个时钟周期
这个插入的周期 我们给它一个名字
叫TW 就是等待周期
这个TW周期如果插入了以后
它还去检查READY端 如果还是低电平
就表示它还是没有准备好
那么接着再插入第二个TW
一直插一直插 理论上它可以插很多个
当然在实际上 它插到一定程度
它肯定就死掉了 就不行了对吧
所以这个是
READY信号它的作用
也就是说直到什么时候?
直到发现READY端为高电平
好 它再送上第4个时钟周期
这就是所以这个信号的作用就是实现CPU
跟外部的部件 实际上就是指
内存跟CPU
跟接口
之间的一种同步控制的信号
这是第二组信号
下面两组信号呢也可能今天
大家还没有
还很难再去理解它们的含义
但是我们今天先给大家一个
感官的认识
这些信号因为它们所涉及的
内容要到后续
课程中我们才能够学得到
所以到后边的时候 我们反过来
再把这两组引脚再给大家回顾
下面的这两组引脚
其中有一组 也就是我们整个的第三组
是中断请求和响应的控制信号
这里边有3个引脚
一个是叫INTR 这个是外部
可屏蔽的中断请求信号输入端
那么这里有一个名词
什么是中断?什么是外部可屏蔽中断?
这些今天我们都没办法解释
我们放到后面去逐渐去解释
另外呢 还有一个叫NMI中断
叫外部的非屏蔽中断
还是我们在这里解释一下吧
中断是什么意思呢?因为我们第三章
在学指令的时候我们就要提到这个概念
中断的意思就是一种
总的来讲就是打断了CPU正在
执行的一种正常执行的工作
转去对这个
一种 打断它的这个事件去做一个服务
能够做什么服务呢?
CPU能够做的事情实际上就是执行程序
也就是说它去执行一段针对性的程序
那么这个打断CPU正在执行工作
的这种可能性
有两个大的可能性
一种就是CPU自己内部出现了问题
比如说它执行程序中发生
发生了一些问题 它中断了
这是一种
还有一种呢是CPU以外
出现了问题 比如说突然停电了
这也是一种问题 对吧
那么总的来讲 中断有两个特点
就是一种异常 或者一种随机
它的异常就是因为一种异常故障它或者是
异常情况导致CPU中断了它正在执行的
正常执行的程序
还有一种 就说它可能不属于异常
不是故障
但是呢 它的产生
不是那么固定的 而是一种随机的
我们现在这里看到的这3个引脚
就是CPU以外的某一个事件
因为出现一种异常
或者出现一种随机
打断了CPU正在执行的程序
而必须转去对它进行一次处理
这样的一种情况
那么它就要告诉CPU你要来处理我
对吧 那么INTR
和NMI都是因为外部的一种情况打断了CPU
正在执行的程序
那么这两个引脚信号的区别在哪里呢?
从它们的名字大家就可以看出来
INTR是可屏蔽的
可屏蔽意思就说
CPU是可以不理睬的
NMI呢 叫非屏蔽的
意思就是CPU是必须理睬的
这就是它们的区别
从这个区别上大家看到它们的优先级别
是不一样的 对吧
那么NMI因为它 必须理睬
所以就不存在问题了
反正它提出了肯定要去理睬它
那么INTR呢 它是可以不理睬的
那么到底理睬它还是不理睬它呢?
如果是理睬它
那么它就要发出响应信号
这就是INTA
INTA上面有上横杠 表示低电平有效
好 这三个引脚我们会在第六章
学习有关中断技术的时候
我们再拿回来给大家一起
再回顾和复习一下
第四组引脚呢
我们今天也还是只能给大家一个
感性的认识
这个叫总线保持信号
这种信号呢是CPU 当它系统准备工作在
直接存储器存取的时候
它所需要的一组控制和响应信号
请求和响应信号
这种工作方式 大概的意思就是
正常情况下
接口 就是说外部设备要把数据
传输到系统里头
它必须通过CPU再写入到内存里
CPU要向外部设备发出的数据信息
也是由内存再送到CPU里 再发出去
这是一个
看上去像一个三角的关系
它觉得这样子的方式实在是忍受不了
它希望由它直接把数据写到内存
或者由内存直接获取
这个方式叫直接存储器存取
在这种情况下
有关总线的控制权力
就要 由CPU移交给别的部件了
那么这种时候就有用到了这样一组信号
所以这一组信号
我们也同样会在第六章学习DMA方式
的时候再给大家拿出来回顾
好 今天这就是我们8088
最小模式下
它的主要的四组信号
对于今天来讲 请大家一定要清楚的
就是有关访问内存和访问接口的那一组信号
以及和 外部的同步控制信号READY信号
这些 是大家应该能够理解的
说了半天
我们来总结一下8088和8086CPU
它们在一些主要的一些区别
我们说过这两个CPU在绝大多数情况下
它们都是完全一样的
不论是内部的体系结构还是它们的指令集
等等 这些都没有任何的区别
无非就是有一些小的一个不一样
它的主要的不一样
就是8088对外只有8位数据总线的宽度
而8086呢 对外是16位的
因为是16位的 所以
它也可能传输16位数 也可能一次传输8位
因此呢 这就带来一些引脚上的一些
形式上的一些不同
有一些是8088中没有的 有一些是有的
那么在这里还有一个区别 就是它们对于
访问内存还是访问接口的这个IO/#M信号
它们的状态不一样
刚才我们说
8088引脚呢是IO/#M端为低电平表示访问内存
但是8086正好反过来
就是为低电平的时候 表示访问接口
其他呢还有一些引脚上的一些信号
我们不在这里一一赘述了
总之这两个型号的CPU
它们在外部的引脚上的差别是比较少的
有兴趣的同学可以去参阅一下
相关的一些资料
-第1讲 关于本课程
--关于本课程
-第2讲 微型计算机系统
--微机系统_01
--微机系统_02
-第3讲 微型计算机一般工作过程
-第4讲 数制与编码
--计算机中的编码
-第5讲 计算机中数的表示与运算
--数的表示
--符号数的表示
--数的表示与运算
-第6讲 基本逻辑运算与逻辑电路
-第7讲 本周小结
--本周小结
-第1周 微型计算机基础概论--第一周单元测验
-第8讲 8088微处理器
-第9讲 8088 CPU主要引线及机构
-第2周 8088微处理器--第二周单元测验
-第10讲 实模式存储器寻址
-第11讲 8088系统总线
--8088系统总线
-第12讲 微处理器小结
--微处理器小结
-单元测验--作业
-第13讲 指令概述
--指令概述
-第14讲 寻址方式
--寻址方式
-第15讲 通用数据传送指令
-第16讲 地址传送指令
--地址传送指令
-第17讲 输入输出指令
--输入输出指令
-第4周 数据传送指令--第四周单元测验
-第18讲 算术运算指令
--加法运算指令
--减法指令
--乘除运算指令
-第19讲 逻辑运算指令
-第20讲 移位操作指令
--移位操作指令
-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验
-第21讲 关于串操作指令的说明
--串操作指令说明
-第22讲 串传送与串比较
--串传送与串比较
-第23讲 串扫描指令
--串扫描指令
-第24讲 串装入与串存储指令
-第六周单元测验--作业
-第25讲 程序控制指令说明
-第26讲 转移类指令
--无条件转移指令
--条件转移指令
-第27讲 循环控制指令
--循环控制指令
-第28讲 过程调用指令
--过程调用指令
-第29讲 中断指令
--中断指令
-第30讲 处理器控制指令
--处理器控制指令
-第31讲 指令系统小结
--指令系统小结
-第7周 程序与处理器控制--第七周单元测验
-第7周 程序与处理器控制--第七周作业
-第32讲 汇编语言源程序
-- 汇编语言源程序_01
-- 汇编语言源程序_02
-第33讲 伪指令
--数据定义伪指令
--其它伪指令
-第34讲 系统功能调用
-第35讲 汇编语言程序设计示例详解
--程序设计示例1
-第36讲 汇编语言程序设计小结
-第8周 汇编语言程序设计--第八周单元测验
-第8周 汇编语言程序设计--第八周作业
-第37讲 半导体存储器概述
--半导体存储器概述
-第38讲 内存单元编址
--存储单元编址
-第39讲 随机存取存储器RAM
-- RAM_01
--RAM_02
-第40讲 只读存储器ROM
--ROM_01
--ROM_02
-第九周单元测验--作业
-第41讲 半导体存储器扩展
--存储器扩展_2
-第42讲 半导体存储器小结
--半导体存储器小结
-第十周单元测验--作业
-第十周作业--作业
-第43讲 基本I/O接口
-第44讲 简单接口芯片
--简单接口芯片
-第45讲 基本输入输出方法
--基本I/O方法
-第46讲 简单I/O控制系统设计
-第47讲 中断技术
--中断技术1
--中断技术2
-第48讲 输入输出与中断技术小结
--本周小结
-第十一周单元测验--作业
-第49讲 可编程定时计数器
-第50讲 可编程并行接口
-第51讲 可编程接口小结
--本周小结_01
--本周小结_02
-第十二周单元测验
-第52讲 模拟量的输入输出
--模拟量的输入输出
-第53讲 D/A转换器
-第54讲 A/D转换器
-- A/D转换器_01
-第十三周单元测验--作业
-第55讲 I/O接口系统综合设计示例详解I
-第56讲 综合设计示例详解II
-第57讲 结束语
--结束语