当前课程知识点:微机原理与接口技术 >  第11周 输入输出与中断技术 >  第43讲 基本I/O接口 >  I/O系统概述_02

返回《微机原理与接口技术》慕课在线视频课程列表

I/O系统概述_02在线视频

I/O系统概述_02

下一节:简单接口芯片

返回《微机原理与接口技术》慕课在线视频列表

I/O系统概述_02课程教案、知识点、字幕

每一个接口里边都可能有一个端口

也可能有多个端口

那么在整个输入输出系统中

又有可能有多个接口

比如我们可以有网卡 我们有显卡

我们有各种接口卡

那么 每一个卡它都是一个接口电路

每一个接口电路里都有多个端口

所以 总而言之

端口就是接口中的寄存器

我们可以简单的这么说

那么寄存器的含义就是存储数据

暂存数据的

所以端口就是接口里

用来暂时存放数据的这样一些部件

从刚才那个图里我们也能看出来

所有的端口 不管它有多少个

它的端口的类型只有三种类型

就是数据的端口 状态端口 控制端口

数据端口它是用来传输或者存储数据的

所以它可以有IN 可以有OUT

所以有输入输出

两个是双向的

那么状态端口是用来将外部设备的

状态信息送进CPU的

所以它通常是输入端口

那么控制端口用来

将CPU发出的各种控制信息

传输出去并且负责控制外部设备

所以控制端口通常也是单向的

只是指向外边的

我们用这样的一个图来描述一下

帮助大家理解一下

假设左侧是CPU

右边这边是外部设备

那么中间就是接口

我们把其他的都忽略掉

我们示意出它的三种类型的端口

我们首先要完成这样一个数据的传输

我们通常首先要获得或者说要知道

外部设备目前到底它的状态

是不是能够接收数据

或者能够把数据

允许CPU来读取

所以这个状态信息通过状态端口

进入到系统中

状态信息它既不是地址

也不是控制信号 所以它一定是通过

数据总线 来把这个信息送进CPU的

那么如果这个状态信息允许

CPU会发出相应的控制信号

这些控制信号

在它的控制下

数据通过数据端口

实现数据的输入或者输出

这个就是我们三种类型的端口

那么在整个输入输出系统中

我们说有若干若干的接口电路

那么比如我们有显卡

我们可以有网卡 这每一个卡

等等其他各种卡

每一种卡它都是一组接口电路

每一个接口电路里都可能有一个端口

也可能有多个端口

所以在整个输入输出系统中间

它就可能有多个端口

我们用这样一张图来看一下

比如 这里头

每一个绿颜色的框框比如就是个接口电路

那么在整个I/O系统中

它可能就有多个这样的接口芯片

或者说接口电路

当然它物理形式上是芯片的形式

比如它就有多个芯片 每一个接口芯片上

它可能有一个端口 也可能有多个端口

那么我们CPU要想去读取某个端口的状态

或者是把数据写到某个端口里

由它再传送到外部设备去

我们第一件事就是要找到这个端口

因此把这个图 我们假设把它

每一个绿颜色的框框都想象成一个内存芯片的话

那么这个实际上

大家跟我们内存的这个编址方式就非常像了

一个绿颜色的框框表示一个内存的芯片

上面的每一个黄颜色的

我们假设就是一个内存单元

这不是就一样的了吗

所以在这个I/O端口这样子的一个系统中

接口系统中

它的这个端口的编址

跟内存的编址也是非常类似的

我们每一个端口地址首先也要包括

也要搞清楚这个端口到底在哪个芯片上

是在第一个接口芯片上 第二个接口芯片上

所以每一个端口地址

也是同样由2个部分来组成的

要先找到它在哪个芯片上

也就是它的片地址

或者说片选地址

然后再找到

它在这个芯片上

是第几个端口 因此呢

这里每一个端口地址

也包括片选地址

和片内寻址这样两个部分

如果这个接口芯片上只有一个端口 那好说

就是说找到这个接口也就找到了这个端口

也就是说它这个端口

不再具备片内地址这样一说了

但是如果一个接口上有多个端口

那么我们找到这个接口以后就

并不意味着找到了端口

我们接着还要再去找端口

所以每一个端口地址

它也和内存的单元地址一样

都是由片选地址加片内地址来组成的

无非有一些不同的在哪里呢

就是说我们每一个内存芯片上

肯定有多个单元

就算是我们现在讲的这么初级的芯片

比如我们的6264 它也好歹有8K个单元

像我们今天的存储器芯片

很可能多少G个单元

那么每一个单元

所以找到一个芯片以后

它这个芯片的片内地址是比较多的

比如我们前面讲的那些示例芯片

通常都是8K字节的

那么8K个单元它的片内地址至少要13根

但是对于接口芯片来讲

它的端口数量 一个芯片上的端口数量

相对这个达不到这样的级别 没有那么多的端口

通常都是几个几十个这样子的一个级别

在我们这门课里

我们能够看到的最多的 端口

就是一个芯片上就4个端口

所以这个就是造成

我们未来在译码电路设计的时候

我们会发现

对于在I/O接口的译码电路里头

高位地址信号是非常多的

而片内地址是非常少的

有可能它这个 刚才我们说

这个接口就内部就没有一个独立的端口

就这一个端口 可以这么说

所以它就没有片内地址

找到这个接口就找到了这个端口

那么这种情况下就所有的

地址信号都属于高位地址的范畴了

也就是说都可以作为译码器的输入了

这个是它的一个和存储器

接口电路里头一个不同的地方

形式上的不同也只能说

对于8088 8086CPU来讲

它寻址内存的能力是1M个字节

所以它可以同时产生20位地址码

它必须同时产生20位地址码

这样才能管理1M个单元

那么它寻址端口的能力是64K个

我们前边刚刚说过

为了要找到一个确定的端口

我们必须给每个端口都要编地址

刚才我们已经说了

对于每个端口的地址

都是由片选地址加片内地址合起来构成的

那么在整个和内存合起来

这样一个范畴内

我们看一下端口的编址方式

一共有两种

一种是它和内存的统一编址

还有一种就是和它自己独立编址

和内存统一编址的好处在哪里呢

内存统一编址的意思就是说

我们一共20位地址信号线

那么对内存来讲

这20位地址信号

一共能够产生1M个地址编码

那么我们现在如果又想用这20位地址码来

管理内存 又想用它管理端口

那么如果统一编的话

那么就 不可能了 对吧

一共它只有1M个地址码

如果统一编的话

我们必须有64K个地址码拿来管理端口

剩余的才是管理内存

这种统一编址的好处呢

就是简单

另外呢 理论上来讲

能够访问内存的所有的指令

都可以访问端口

这样的话接口它的控制能力就相当的强

但是这种方式有一个巨大的不好处

就是我们刚才说 一共是20位地址码

一共有1M个地址资源

我们好不容易通过分段管理的模式

我们用16位的体积结构

能够达到了管理1M个单元这样的目的

但是因为你64K个端口地址

必须要用到 要占用

所以 一下就给cut掉了那么多个64K个

内存一下就少了

这样而且我们也说过 内存资源是

我们系统中非常宝贵的资源

所以这种方式

我们从第三代CPU开始就不再使用了

所以在8088 8086这个时代

我们的端口的编址和内存之间

都是采用独立编址

也就是说端口是端口 内存是内存

这就是我们现在右侧这个图上

我们可以看出

虽然我们还是20位地址信号

但是我们20位地址信号

能够产生的1M个地址编码

全部用来管理内存

那你说这个端口的64K个地址从哪来呢?

还是那20位地址信号

因为它没有再有另外16位地址信号

还是这20位地址信号

这20位地址信号

但是我们现在想怎么样让它能够区分出来

这20位地址是访问内存的地址

还是访问端口的地址

这就是我们前面讲的IO/#M这个引脚了

这个引脚的状态为高电平的时候

就表示它访问的是端口

这个时候因为访问端口只需要16位地址

因为我们的能力只有64K个端口地址

只需要16位地址编码就可以了

所以IO/#M为高电平的时候

这个20位地址总线上

A16到A19就默认全部是0了

就是它是无效状态了

A0到A15这个时候

才是用来真正的指向一个具体的端口

这一点请大家务必要注意

所以在未来的IO接口系统中间

译码器的输入不可能出现

A16到A19这样的高4位地址

因为这个时候IO/#M为高电平

那四位已经变成无效地址状态了

所以当你寻址端口的时候

我们端口因为只需要16位地址

管理64K个端口

所以端口地址的范围就是0到FFFF

这样子的一个范围内

但是在用8088CPU作为

微处理器的这样一个时代

也就是它的计算机的型号叫IBMPC

这个机器中间

它管理的端口它只用了1K个端口

因为它实际上用不到那么多

所以端口地址资源

相对来讲就非常非常的丰富了

因为我们有64K个端口的寻址能力

但是你实际上只用了1K个端口

就像你能提100斤的东西

现在让你只提了一斤重的东西

你会感到非常的轻松

所以这个时候

它的端口地址就实际上

我们真正使用的端口地址是0到03FFH

那么也就是说这个时候所有的其他的地址

我们都是空闲的都是不需要用到的

我们下边来说一下I/O地址译码

我们刚才说了我们在上一章内容里头

我们讲存储器接口设计的时候

我们已经非常详细的讲了译码的概念

我们有全地址译码部分地址译码两大种方式

我们也用各种示例来介绍了帮助大家练习了

它的这种译码电路的设计

总而言之译码的目的就是为了在

当你地址总线上的地址

出现某一种状态的时候

正好选中一个你希望的芯片

那么在I/O地址译码里就是当你的

总线上出现某一种地址编码的时候

正好选中一个具体的端口

在I/O端口地址里头参加译码的信号

我们刚才说了

肯定是全部的A0到A15的这个地址

当然要看你接口里边有几个端口 对吧

如果是接口里只有一个端口

A0到A15就全部作为译码器的输入

如果你的接口芯片上有多个端口

那么它的低多少位就作为片内寻址

高多少位就作为片选译码

所以除了地址信号以外

还有就是有关对针对

接口的读和写控制信号

我们来看一下这个信号是叫#IOR和#IOW

它们前面有#也就意味着它们有上横杠

等于是低电平有效的

那么这两个信号跟我们的

Read和Write信号的关系是什么呢

这两个信号实际上

和我们存储器的读写是一样的

它也是在IO/#M跟Read和Write组合在一起的

我们在前边讲的MEMW MEMR

那两个有关存储器的读写信号

当IO/#M为低电平的时候

Read和Write组合产生了那个存储器的读写

那么现在IO/#M等于高电平

表示现在要访问的是端口

那么这个时候如果CPU的#vvRead信号为0

也就是它是低电平的话

那么就会产生#IOR信号有效

如果这个是Write信号为低电平

那么这个时候就会产生#IOW信号有效

所以这个是两组信号组合出来的

这个信号是埃萨总线控制器

它的输出端的一个信号

那么我们今天在讲16位体系

所以我们依然用这样一个信号

这种信号的产生实际上在

刚才这里说是由IO/#M

和Read或Write组合出来的

这是在物理层面上

但是实际上它的产生真正是由什么驱动的呢

实际上就是由IN指令跟OUT指令来产生的

IN指令我们知道在逻辑上

它实现了将端口里的数据

读进ACC这个累加器

这是在逻辑上它实现了这个功能

那么在电信号这个级别上

就是说物理层面上

它产生了一个#IOR信号

在这个#IOR信号有效期间

数据才真正的读进了累加器

相应地OUT指令它实现了

将累加器的值输出到端口里

它同时在物理层面上

也产生了个#IOW信号

在#IOW有效期间

那么数据信号能够输出出去

#IOW也好#IOR信号也好

跟Read和Write信号一样

都是一个负脉冲

而且是一个比较窄的负脉冲

这个和CPU具体的钟频是有关系的

那么在这个很窄窄的负脉冲里头

也就是实际上

对我们人来讲是一瞬间的里头

这个数据就输入或者输出了

那么我们现在提个问题

对于存储器的读或者写允许信号

它是由什么指令来产生的呢

这个问题留给大家

所以总的来讲

当接口只有一个端口的时候

也就是说没有片内地址

那么所有的地址信号都是译码器的输入

也都是可以作为高位地址

当I/O接口里有多个端口的时候

那么它就高位作为译码地址

低位作为片内地址

这一点跟内存没有任何的区别

主要的一个除了刚才我们的读写控制信号

这样一个区别之外

I/O接口里边它的译码电路的设计

还有一个和内存接口的这个

译码电路设计的不同在

在于因为I/O端口它的地址资源非常丰富

刚才我们说了它本来可以寻址64K个端口

也就是说它有能力产生64K个地址编码

用16位的地址信号来产生

但是它实际上在这个真正计算机里头

它只管理了1K个端口

所以 它有那么那么多的

63K个端口地址编码

都可以被浪费掉

所以它的资源相当丰富

因此在这种情况下

我们以线路简单变成了最主要的矛盾

所以我们在接口地址译码中

通常会采用部分地址译码

下面我们通过一个练习来跟大家

把这个问题来加深一下印象

这个题目是这样

某一个外部设备的接口里边有4个端口

告诉了你这个地址范围是2F0到2F3H

然后由A15到A2译码得到

片内地址为A1和A0

因为我们这个芯片上有4个端口

所以它需要2位片内地址来寻址这4个端口

现在要你来设计一下这个系统的译码电路

这个设计的方法是一样的

因为这个题目里头

也没有告诉你这个芯片的型号

我们所以用一个示意的形式来练习了

我们跟前边设计译码电路的方式相同

我们首先来看一下

把这个整个的给定的地址范围

用2进制数来描述出来

刚才我们说2F0到2F3

所以首地址和尾地址

在这里没有给出高四位一定是0

也就是说这个题目并没有告诉你是02F0到02F3

所以高四位是0000到1111都是可以的

那么这就意味着高四位任意状态都行

任意状态都行那就是说你可以有可以没有

所以在系统中

是不能够连接在译码电路的输入端的

当然你在做程序设计的时候

你的端口地址用代码去写

比如用IN指令

我们要从某个端口里读数据

那个端口地址你肯定要写一个具体的地址

你不能写××2F0 对吧

所以这个时候你可以写成02F0

或者你不写0

系统会默认它前面是0

但是你在线路设计的时候

高四位是不能够直接接到系统中的

一旦接上了

那么这高4位就等于我们整个译码电路

就变成全地址译码了

那高4位就必须要有确定的状态

这就意味着如果确定都是0的话

那么意味着其他15种状态

你这个都选不中这个端口

这一点是不行的

这就是把部分地址译码变成了全地址译码

也就是说固定成了一个地址编码

好 那么高4位任意状态我们不管它了

现在低2位是作为片内寻址

所以它肯定不能作为译码器的输入

那么剩余的从A2到A11

这就是译码器的输入信号了

好 下边我们来设计一下

我们把这个A11到A2全部写在这里

写在这里呢 我们把读写信号

读写控制信号跟前面讲

存储器接口的那个译码电路设计一样

读写控制信号也要作为译码器的输入信号

好 下面我们就来填这个空

这个空应该填哪一些呢

我们其实大家现在已经知道

它译码电路的设计方法不是唯一的

比如我们在这里如果选与非门的话

与非门的输出要求是低电平的话

这里顺便说一下

译码电路的输出通常的都是要低电平有效

因为它对应的控制的芯片

片选信号都是低电平有效的

那么如果这个与非门要输出是低电平

我们知道与非门的输入必须同时为1

所以现在A4到A9这些为1的信号

我们就写在这里了

中间那个点点点表示A4到A7之间是连续的

就是A4 A5 A6都是在这里头

那么我们剩下A2 A3还有A8 A10 A11

这些是为低电平的

我们通过一个或非门让它输出高电平

然后这个高电平又接到与非门的输入端

在这种情况下 与非门就会输出0了

我们刚才讲过

我们读写信号还必须作为译码器的输入

所以IOR IOW他们都是低电平有效的

所以通过与非门连接到这里

如果对前面存储器接口

还没有太熟悉的同学

这个地方我再解释一下

我们说读写控制信号是由CPU来控制产生的

CPU可以对外边不读不写

那么这个时候

它的读写控制信号

就是在这里的话就是IOR IOW

那么它们就会同时为高电平

这个时候就表示

CPU在自己肚子里做加减乘除

它既不输出也不输入 既不读也不写

那么这个时候译码电路一定不能工作

大家看我们现在设计的这个

当IOR IOW同时为1的时候

与非门会输出0

正好把后面的这个与非门给封死了

所以它的输出端是不可能为低电平

另外呢 如果要对外边进行读操作或者写操作

那么IOR和IOW就会有1位是0

另一位是1

所以这两位读写信号

只要有任意一位为0的时候

这个与非门会输出1

那么这个高电平就会作为

后边这个大与非门的这个输入端之一

大与非门的输入有一个是1

它的输出由其他的状态来决定

所以这个时候其他的高位地址

按我们现在这样连接

那么 这种情况下的话与非门会输出低电平

就是产生一个有效的片选信号

但是读和写信号刚才我们说

它可以不读不写 可以读或者写

它绝对不能同时又读又写

这个是CPU本身的工作时序保证了这一点

这就像你一个人不能自己打自己 对吧

所以这种时候

IOR和IOW不可能同时为0

所以虽然这个读写信号是2位信号

但是它只有3种组合

它不可能出现第四种

这个再给大家强调一下

好 这个就是I/O端口地址译码

它的一个简单用示意的形式

我们来帮助大家建立了概念

学到这里大家会发现

实际上和我们之前学的

存储器接口的设计方法

是完全类似的

唯一的就是要注意

在I/O系统中间

译码电路的输入信号

不可能包括A16到A19

因为它能够寻址的端口最多就是16位地址

再一个就是再次强调

读写控制信号一定要做为译码器的输入信号

这个后边我们在讲锁存器接口的时候

我们用锁存器来做例

我们再会给大家解释

如果这两个信号不作为译码器的输入

有可能它后边的这样的一个接口芯片

永远都不可能被选中 或者说被触发

当然它有可能触发

触发就是它整个

因为地址信号跳变的时候它才会触发

这样会造成时序上的混乱

好 这一讲我们就讲到这里

微机原理与接口技术课程列表:

第1周 微型计算机基础概论

-第1讲 关于本课程

--关于本课程

-第2讲 微型计算机系统

--微机系统_01

--微机系统_02

-第3讲 微型计算机一般工作过程

--微机的一般工作过程_01

--微机的一般工作过程_02

-第4讲 数制与编码

--常用计数制及其转换

--计算机中的编码

-第5讲 计算机中数的表示与运算

--数的表示

--符号数的表示

--数的表示与运算

-第6讲 基本逻辑运算与逻辑电路

--基本逻辑运算与逻辑门

--常用逻辑运算及电路

-第7讲 本周小结

--本周小结

-第1周 微型计算机基础概论--第一周单元测验

第2周 8088微处理器

-第8讲 8088微处理器

--8088 CPU_01

--8088 CPU_02

-第9讲 8088 CPU主要引线及机构

--8088 CPU主要引线

--8088 CPU内部结构

--8088 CPU内部寄存器

-第2周 8088微处理器--第二周单元测验

第3周 实模式存储器寻址与总线

-第10讲 实模式存储器寻址

--实模式存储器寻址_01

--实模式存储器寻址_02

--实模式存储器寻址_03

-第11讲 8088系统总线

--8088系统总线

-第12讲 微处理器小结

--微处理器小结

-单元测验--作业

第4周 数据传送指令

-第13讲 指令概述

--指令概述

-第14讲 寻址方式

--寻址方式

-第15讲 通用数据传送指令

--通用数据传送指令_01

--通用数据传送指令_02

--通用数据传送指令_03

-第16讲 地址传送指令

--地址传送指令

-第17讲 输入输出指令

--输入输出指令

-第4周 数据传送指令--第四周单元测验

第5周 算术运算、逻辑运算与移位操作指令

-第18讲 算术运算指令

--加法运算指令

--减法指令

--乘除运算指令

-第19讲 逻辑运算指令

--逻辑运算指令_01

--逻辑运算指令_02

-第20讲 移位操作指令

--移位操作指令

-第5周 算术运算、逻辑运算与移位操作指令--第五周单元测验

第6周 串操作指令

-第21讲 关于串操作指令的说明

--串操作指令说明

-第22讲 串传送与串比较

--串传送与串比较

-第23讲 串扫描指令

--串扫描指令

-第24讲 串装入与串存储指令

--串装入与串存储指令

-第六周单元测验--作业

第7周 程序与处理器控制

-第25讲 程序控制指令说明

--程序控制类指令说明

-第26讲 转移类指令

--无条件转移指令

--条件转移指令

-第27讲 循环控制指令

--循环控制指令

-第28讲 过程调用指令

--过程调用指令

-第29讲 中断指令

--中断指令

-第30讲 处理器控制指令

--处理器控制指令

-第31讲 指令系统小结

--指令系统小结

-第7周 程序与处理器控制--第七周单元测验

-第7周 程序与处理器控制--第七周作业

第8周 汇编语言程序设计

-第32讲 汇编语言源程序

-- 汇编语言源程序_01

-- 汇编语言源程序_02

-第33讲 伪指令

--数据定义伪指令

--符号与段定义伪指令

--汇编语言源程序结构例

--其它伪指令

-第34讲 系统功能调用

--系统功能调用_01

--系统功能调用_02

-第35讲 汇编语言程序设计示例详解

--程序设计示例1

--汇编语言程序设计示例_02

-第36讲 汇编语言程序设计小结

--汇编语言程序设计小结

-第8周 汇编语言程序设计--第八周单元测验

-第8周 汇编语言程序设计--第八周作业

第9周 半导体存储器

-第37讲 半导体存储器概述

--半导体存储器概述

-第38讲 内存单元编址

--存储单元编址

-第39讲 随机存取存储器RAM

-- RAM_01

--RAM_02

-第40讲 只读存储器ROM

--ROM_01

--ROM_02

-第九周单元测验--作业

第10周 半导体存储器扩展技术

-第41讲 半导体存储器扩展

--半导体存储器扩展_1

--存储器扩展_2

--半导体存储器扩展_3

-第42讲 半导体存储器小结

--半导体存储器小结

-第十周单元测验--作业

-第十周作业--作业

第11周 输入输出与中断技术

-第43讲 基本I/O接口

--I/O系统概述_01

--I/O系统概述_02

-第44讲 简单接口芯片

--简单接口芯片

-第45讲 基本输入输出方法

--基本I/O方法

-第46讲 简单I/O控制系统设计

--简单I/O控制系统设计1

--简单I/O控制系统设计2

-第47讲 中断技术

--中断技术1

--中断技术2

-第48讲 输入输出与中断技术小结

--本周小结

-第十一周单元测验--作业

第12周 可编程并行数字接口

-第49讲 可编程定时计数器

--可编程定时计数器8253_01

--可编程定时计数器8253_02

--可编程定时计数器8253_03

-第50讲 可编程并行接口

--可编程并接口8255_01

--可编程并行接口8255_02

--可编程并行接口8255_03

-第51讲 可编程接口小结

--本周小结_01

--本周小结_02

-第十二周单元测验

第13周 模拟量的输入输出

-第52讲 模拟量的输入输出

--模拟量的输入输出

-第53讲 D/A转换器

--D/A转换器_01

--D/A转换器_02

-第54讲 A/D转换器

-- A/D转换器_01

--A/D转换器_02

-第十三周单元测验--作业

第14周 系统综合设计示例详解

-第55讲 I/O接口系统综合设计示例详解I

--综合设计示例详解I_01

--综合设计示例详解I_02

-第56讲 综合设计示例详解II

--综合设计示例详解II_01

--综合设计示例详解II_02

-第57讲 结束语

--结束语

I/O系统概述_02笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。