第七章:常用芯片的接口技术
§ 7.1 接口的类型
由于设备的种类很多,要求通信的信息的格式是多样的,所以CPU与设备之间不能直接通信 必须在二者之间设计一个电路(I/O接口电路)将二者(CPU(系统总线)和设备)连接起来,这个接口电路也叫I/O硬件,运行在IO接口电路上的程序我们叫做IO软件,IO硬件和软件的综合设计叫做IO接口技术
§ 7.2 IO接口的基本组成
在CPU和IO设备之间必须设计IO接口电路,CPU通过系统总线和IO接口电路相连
CPU把信息发送给接口电路,由接口电路传递给设备
还要根据CPU和IO端口通信的信息的种类来看接口电路内部设计包含多少个端口
一种信息(数据信息(双向),状态信息(入),控制/命令信息(出))通过一个IO端口传送
由于要传送三种信息,所以一个IO接口电路一般需要三个端口 其中每一个IO接口都需要分配一个IO地址,然后通过IO地址译码电路的设计来选中IO接口,这一点和存储器的片选信号一样 对于数据信息的IO端口需要用锁存器设计,状态信息的IO端口需要用数据缓冲器设计
IO地址的编址方式有独立编址和统一编址
8086CPU采用独立编制,即,内存和IO接口的地址独立,20根地址线的低16位用来编址IO接口,用引脚区分IO和内存的地址
独立编址的优缺点在§ 2.1已经说过
§ 7.3 输入/输出方式
无条件输出/输出方式:
在上一节里我们说过IO设备和CPU需要通过接口电路进行通,上一节我们说一般需要三个IO端口,这是有条件的,只有当设备准备好了以后才会通讯,但对于一些IO设备,是不需要这种条件的,例如LED灯泡,我们没办法去询问LED灯是否准备好,因为他随时都是准备好的,我们发送信息他就接收,这种没有条件的傻瓜式输出设备就是无条件的输出
在进行数据通讯时,在输出端我们需要用锁存器,一般使用74LS374,很少使用74LS373
374芯片的片选信号为CP端控制,这个引脚为上升沿有效,由于时序的原因,为了确保系统的可靠性,一定要取后沿
查询法的输入输出方式
对于智能设备而言,CPU必须要一直去检测设备时候准备好,准备好了才传递一次数据
如何检测设备准备好了呢?我们就需要设计状态输入端口,把状态输入端口的地址给DX,然后不断通过IN指令获取状态信息
这种方法电路实现简单,但比较浪费资源,效率低,并且不是很可靠
中断法
有IO设备通过8259向CPU发送一个中断请求,CPU收到中断后在中断服务子程序中向端口发送数据,这就是中断法,当然,由于外设的速度可能很慢,所以这里也需要锁存器,这种方式可以大大提升CPU的效率
以上三种方法统称为程序直接控制的输入输出方法,因为上面三种方法都是用IN/OUT指令实现的
这种程序直接控制的方法都是通过指令实现,而IN/OUT指令每一条都需要五个周期,在批量传输数据时速度可能跟不上,当速度跟不上的时候,就要考虑DMA法
DMA法
设备需要和内存之间批量数据传送时,外设向8237(DMAC)提出请求,再由8237向CPU请求总线使用权,CPU执行完当前程序后转让出总7线,并向8237发送一个响应信号,8237收到这个响应信号后接管总线完成接口与内存的数据传送,本过程全部由硬件实现,所以这种方式最大的有点就是速度快,但电路复杂
§ 7.4 常用芯片的接口技术
不同系统需要用到的系统总线: 







上题有错,参照图片改动