资源预览内容
第1页 / 共500页
第2页 / 共500页
第3页 / 共500页
第4页 / 共500页
第5页 / 共500页
第6页 / 共500页
第7页 / 共500页
第8页 / 共500页
第9页 / 共500页
第10页 / 共500页
亲,该文档总共500页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
微型计算机原理及接口技术1微型计算机原理及接口技术目目 录录第第1 1章章 微型计算机基础微型计算机基础 3 3第第2 2章章 IntelIntel系列微处理器系列微处理器.30.30第第3 3章章 8048680486微处理器的指令系统微处理器的指令系统.52.52第第4 4章章 汇编语言程序设计汇编语言程序设计. 96. 96第第5 5章章 存储系统存储系统 171 171第第6 6章章 输入输出方式及中断系统输入输出方式及中断系统 210 210第第7 7章章 可编程接口芯片可编程接口芯片 251 251第第8 8章章 外设接口技术外设接口技术 374 374第第9 9章章 总线总线 440 4402微型计算机原理及接口技术第1章微型计算机基础3微型计算机原理及接口技术1.11.1微型计算机的组成微型计算机的组成 1.1.1微型计算机的硬件系统组成 1.1.2微型计算机的软件系统组成 1.21.2微型计算机的硬件结构及基本工作过程微型计算机的硬件结构及基本工作过程 1.2.1数据总线、地址总线和控制总线 1.2.2微型计算机的主要组成部分及功能 1.2.3微型计算机基本工作过程4微型计算机原理及接口技术1.31.3微型计算机的运算基础微型计算机的运算基础 1.3.1计算机中数的表示 1.3.2计算机的基本运算方法1.41.4典型微型计算机典型微型计算机 1.4.1主要性能指标 1.4.2PC系列微型计算机 1.4.3微型计算机中的主要计算机技术 1.4.4 微型计算机类型 1.4.5微型计算机的应用及发展 5微型计算机原理及接口技术1.11.1微型计算机的组成微型计算机的组成 微型计算机系统是由硬件系统和软件系统两大部分组成。1.1.11.1.1微型计算机的硬件系统组成微型计算机的硬件系统组成 图1-1 微型计算机的硬件基本组成1.1.2 1.1.2 微型计算机的软件系统组成微型计算机的软件系统组成 计算机的软件系统是由系统软件和应用软件两大部分组成。 6微型计算机原理及接口技术1.2 1.2 微型计算机的硬件结构及基本工作过程微型计算机的硬件结构及基本工作过程 目前各种微型计算机的硬件均由微处理器、存储器、输入输出接口、输入输出设备这几部分组成,如图1-2所示。 根据总线的组织方式,可把微型计算机的硬件结构分为单总线结构、双总线结构和双层总线结构。图1-2 微型计算机的硬件结构框图7微型计算机原理及接口技术1.1.单总线结构单总线结构2.2.双总线结构双总线结构图1-3 单总线结构的微型计算机图1-4双总线结构微型计算机8微型计算机原理及接口技术3.3.双层总线结构双层总线结构 图1-5 双层总线结构微型计算机9微型计算机原理及接口技术1.2.11.2.1数据总线、地址总线和控制总线数据总线、地址总线和控制总线p数据总线数据总线 DBDB 数据总线用于传输数据信息,是双向总线。p地址总线地址总线 ABAB 地址总线用于传送CPU发出的地址信息,是单向总线。地址信息用于找寻存储器或外设, AB总线的位数决定了外界存储器最大的存储容量 p控制总线控制总线 CBCB 控制总线是微处理器向各部件发出的控制信息、时序信息以及外部设备发送到微处理器的请求信息的总称。控制总线中每一根线的方向都是一定的、单向的,但作为整体来看则是双向的。 10微型计算机原理及接口技术1.2.21.2.2微型计算机的主要组成部分及功能微型计算机的主要组成部分及功能1.1.微处理器微处理器图1-6 微处理器的基本组成11微型计算机原理及接口技术 微处理器是微型计算机的运算和控制指挥中心,主要由运算器、控制器、寄存器组(阵列)以及内总线组成。(1)(1)运算器运算器 运算器是执行算术运算和逻辑运算的部件,由累加器Acc、暂存器TMP、算术逻辑单元ALU、标志寄存器FR和一些逻辑电路组成。 (2)(2)控制器控制器 控制器是指令执行部件,包括取指令、分析指令(指令译码)和执行指令,由指令寄存器IR、指令译码器ID和操作控制电路三个部件组成。(3)(3)寄存器组寄存器组 在微处理器内部的寄存器组中,主要由通用寄存器和专用寄存器组成。 12微型计算机原理及接口技术p通用寄存器 通用寄存器的作用是暂时存放ALU需要用到的数据,方便完成各种数据操作。p专用寄存器 它们在程序的执行过程中有特殊功能,如程序计数器PC、堆栈指示器SP等。 程序计数器程序计数器PCPC 程序计数器PC用于存放下一条要执行的指令在存储器中存放的地址,通常称为PC指针。 堆栈及堆栈指示器堆栈及堆栈指示器SP SP 堆栈一旦形成就必须遵循先进后出FILO(First In Last Out)的原则对栈区的数据进行操作。如图1-7.图1-7 堆栈区示意图13微型计算机原理及接口技术2.2.存储器存储器 存储器是计算机中存储程序和数据的部件。存储器的性能通常用存储容量和存取速度来描述。如图1-8。3.3.输入输出接口输入输出接口 该接口是CPU与外部设备之间交换信息的连接电路,它们通过总线与CPU相连,简称I/O接口。 4.4.输入输出设备输入输出设备 使用微型计算机就必须进行人机交互,将外部信息传送到微型计算机称为输入操作;将微型计算机的运行结果传送出来称为输出。能完成信息输入或输出的设备称为输入输出设备,二者也合称为外部设备。 图1-8 存储器单元与地址的关系14微型计算机原理及接口技术1.2.3 1.2.3 微型计算机基本工作过程微型计算机基本工作过程 计算机的核心是CPU,了解CPU的工作过程对于理解计算机内部工作原理非常重要。为了便于理解,下面以模型机执行简单程序为例,说明程序的执行过程:15微型计算机原理及接口技术本段程序已放入内存指定位置,内部结构如图1-9所示: 图1-9 假想模型机与程序执行示例16微型计算机原理及接口技术1.31.3 微型计算机的运算基础微型计算机的运算基础1.3.1 1.3.1 计算机中数的表示计算机中数的表示 1.1.机器数和真值机器数和真值 在计算机中,无论数值还是符号,都是用0或1来表示。通常用最高位做符号位,0表示正数,1表示负数。2.2.带符号数的表示方法带符号数的表示方法p原码:在机器数中,将最高位作为符号位,其余二进制位表示该数的绝对值的表示方法叫做原码表示法。 p反码:正数的反码表示与原码相同,负数的反码是将其对应的正数的各位取反,符号位为负。p补码:正数的补码表示与原码相同,负数的补码是将其对应的正数的各位取反后再加1,符号位仍为负。17微型计算机原理及接口技术3.3.编码编码 编码是为了在特定场合下方便使用而制定的一种数字代号。计算机中常用的编码有两种(BCD码和ASCII码),是为方便进行特定计算而制定的编码规则。(1)(1)二进制编码的十进制数(二进制编码的十进制数(BCDBCD码)码)用4位二进制数表示1位十进制数的编码方法叫做BCD码。见表1-1 。 在计算机里BCD码的表示方法又分为两种: 分离BCD码和组合BCD码。 表1-1 十进制数与BCD码对照表 18微型计算机原理及接口技术p分离BCD码 用1个字节表示1位十进制数,低4位为BCD码,高4位补0。用这种方式表示的BCD码叫做分离BCD码,见表1-2。p组合BCD码 在1个字节中,用低4位表示1位BCD码,同时高4位也表示为1位BCD码,即在1个字节中同时表示两位十进制数。 (2)(2)字母和符号的编码(字母和符号的编码(ASCIIASCII码)码) ASCII码表示与分离BCD表示很相似,低4位都是相同的,均用00001001表示09,差别仅在高4位,ASCII码不是0000而是0011。详见附录1-1。表1-2 十进制数与分离BCD码对照表 19微型计算机原理及接口技术1.3.2 1.3.2 计算机的基本运算方法计算机的基本运算方法 计算机中CPU能直接提供的运算有算术运算和逻辑运算。 1.1.补码运算及溢出判别补码运算及溢出判别(1)(1)补码的加减法运算规则补码的加减法运算规则 若进行 X + Y运算,则利用CPU内部的加法器可直接计算得到。 若进行X-Y运算,则需将其转换为X + (-Y),此时只需将-Y转换为补码,仍可通过加法器来实现。(2)(2)溢出的判断溢出的判断 当进行带符号数计算时,如果计算的结果超出了二进制带符号数的表达范围,就被称为溢出。 对运算结果是否有溢出的判断,可通过“双进位”法来进行。20微型计算机原理及接口技术2.BCD2.BCD码运算及十进制调整码运算及十进制调整 由于计算机总是将数据作为二进制数来进行运算,在利用指令进行算术运算时,是按“逢16进一”的法则进行,而日常生活中采用的十进制运算均是按“逢10进一”法则进行的,故两种计算方法中相差6。因此,需要进行 “十进制调整”。 十进制调整的规则如下:十进制调整的规则如下:若BCD码加法运算结果中出现无效码或出现进位,则在相应位置再加6。若BCD码减法运算结果中出现无效码或出现借位,则在相应位置再减6。实际上,分离BCD码的十进制调整处理方法略有不同,在高4位上还需加F。 21微型计算机原理及接口技术3.3.逻辑运算逻辑运算 逻辑运算是按照二进制的最小单位Bit(位)来进行的,常用的逻辑运算有,与、或、异或、非等。(1)(1)与运算与运算 与0相与得0,与1相与保持不变。利用与运算可以将指定位清0。 (2)(2)或运算或运算 与1相或得1,与0相或保持不变。利用或运算可以将指定位置1。 22微型计算机原理及接口技术(3)(3)异或运算异或运算 与1相异或等于取反,与0相异或保持不变。利用异或运算可以对指定位求反。(4)(4)非运算非运算 按位取反,利用非运算可以对所有位求反。 23微型计算机原理及接口技术1.4 1.4 典型微型计算机典型微型计算机1.4.1 1.4.1 主要性能指标主要性能指标1.1.字长字长 字长是指计算机对外一次能传送及内部处理数据的最大二进制数码的位数。2.2.运算速度运算速度 计算机的运算速度一般用每秒钟所能执行的指令条数来表示。3. 3. 内存储器的容量内存储器的容量 内存的性能指标主要包括存储容量和存取速度。4.4.外存储器的容量外存储器的容量 外存储器容量通常是指硬盘容量(包括内置硬盘和移动硬盘)。 5.5.外设扩展能力外设扩展能力 微型计算机系统配接各种外部设备的可能性、灵活性和适应性。 6.6.软件配置软件配置 软件是微型计算机系统的重要组成部分,微型计算机系统中软件配置是否齐全,直接关系到计算机性能的好坏和效率的高低。 24微型计算机原理及接口技术1.4.2 PC1.4.2 PC系列微型计算机系列微型计算机 PC系列微型计算机从外部看都是由主机和外设组成。1.1.主板硬件结构主板硬件结构 主板,又称系统板或母板。如图1-10.(1)CPU插槽(2)内存插槽(3)BIOS系统(4)芯片组(5)总线扩展插槽(6)外设接口系统 图1-10 主板示意图25微型计算机原理及接口技术2. 2. 常用常用I/OI/O适配器适配器(1)显示适配器 (2)音频卡 (3)网络适配器 (4)硬盘驱动器接口3.3.硬盘硬盘 硬盘是是微型计算机海量存储的主要存储媒介之一 。4.4.输入输出设备输入输出设备 (1)输入设备键盘 鼠标器 摄像头 (2)输出设备输出设备的作用是接收微型计算机输出的信息。 显示器(类型和重要技术指标) 打印机(类型) 26微型计算机原理及接口技术1.4.3 1.4.3 微型计算机中的主要计算机技术微型计算机中的主要计算机技术1.流水线技术2.乱序执行技术3.推测执行技术4.高速缓冲存储器技术5.虚拟存储器技术6. 基于Core微架构(Core Micro-Architecture)系列技术27微型计算机原理及接口技术1.4.4 1.4.4 微型计算机类型微型计算机类型1.1.按结构形式分类按结构形式分类 (1)台式计算机 (2)便携式个人计算机 (3)平板电脑 (4)单片机 2. 2. 按微处理器的位数分类按微处理器的位数分类 8位微型计算机、16位微型计算机、32位微型计算机和64位微型计算机等。3. 3. 按用途分类按用途分类 (1)专用机 (2)通用机 4. 4. 按原理分类按原理分类 (1)模拟计算机 (2)数字计算机 (3)混合计算机 28微型计算机原理及接口技术1.4.5 1.4.5 微型计算机的应用及发展微型计算机的应用及发展1.1.计算机应用领域计算机应用领域(1)科学计算(或称为数值计算) (2)检测与控制(3)数据处理 (4)计算机辅助设计(5)人工智能 (6)计算机仿真(7)办公自动化与信息管理2.2.计算机的发展趋势计算机的发展趋势(1)巨型化(2)微型化(3)网络化(4)智能化29微型计算机原理及接口技术第2章 Intel系列微处理器 30微型计算机原理及接口技术2.1 Intel2.1 Intel系列微处理器概述系列微处理器概述2.1.1 8086/8088微处理器2.1.2 80286微处理器2.1.3 80386/80486微处理器 2.1.4 64位微处理器及多核技术2.2 804862.2 80486微处理器的体系结构微处理器的体系结构2.2.1 80486微处理器的体系结构特点2.2.2 80486微处理器的内部结构 2.2.3 80486的工作方式 2.2.4 80486的常用引脚功能31微型计算机原理及接口技术2.1 Intel2.1 Intel系列微处理器概述系列微处理器概述2.1.1 8086/80882.1.1 8086/8088微处理器微处理器 8086是标准16位微处理器,内、外数据总线均为16位。8088是准16位微处理器,内部数据总线为16位,外部数据总线为8位。1.8086/80881.8086/8088微处理器的内部结构微处理器的内部结构 在8位微处理器中,微处理器执行一段程序通常按以下步骤循环往复顺序执行的,即: 从内存储器中取出一条指令,分析指令操作码。 从内存储器或寄存器中获取操作数(如果指令需要操作数)。 执行指令。 将结果存入内存储器或寄存器中(如果指令需要)。 为提高效率8086/8088微处理器在其内部结构设计上进行了改进,其内部结构如图2-1所示。 32微型计算机原理及接口技术33微型计算机原理及接口技术(1)执行单元EU 执行单元主要完成分析指令、执行指令的任务,它由8个16位的通用寄存器、1个16位的标志寄存器、1个16位 的运算数据暂存器、1个16位的算术逻辑单元ALU及EU控制电路组成。(2) 总线接口单元BIU 总线接口单元主要完成取指令及对外存取数据。它由4个16位的段寄存器(CS、DS、SS、ES)、1个16位的指令指针寄存器IP、1个与EU通信的内部暂存器、1个指令队列、1个20位的地址加法器及总线控制电路组成。34微型计算机原理及接口技术2.2.指令流水线和存储器的分段模式指令流水线和存储器的分段模式(1)指令流水线 由于EU和BIU两个独立的功能部件可以并行工作,改变了以前8位微处理器执行程序时的串行工作方式,使得取指令操作码和分析、执行操作重叠进行,从而形成了两级指令流水线结构,提高了微处理器的运行速度。如图。35微型计算机原理及接口技术(2)存储器的分段模式 8086/8088引入了“分段”的概念。即把1MB的物理存储空间分成若干个逻辑段,每个逻辑段最大可为64KB。 每个段的起始单元地址被称为段的首地址,由20位2进制数表示,它是一个能被16整除的数;段的首地址的高16位地址被称为段的基地址,简称段基址;段中某存储单元相对于段基址的偏移量(16位)被称为段内偏移地址,也称段内偏移量。段基址和段内偏移量也被称为逻辑地址。1MB存储器空间中的某一存储单元所在位置的实际地址又叫物理地址,用20位地址信息表示。将逻辑地址变换为物理地址的关系式为: 物理地址=段基址l6段内偏移地址 BIU中的4个16位的段寄存器CS、SS、DS和ES分别存放着4个当前段(代码段,堆栈段,数据段,附加段)的段基址。36微型计算机原理及接口技术2.1.2 802862.1.2 80286微处理器微处理器 80286是继8086之后推出的一种增强型标准16位微处理器。与8086/8088相比,它在结构上有很大改进,性能上有明显提高。主要表现在: (1) 内部由执行单元EU(ExecutionUnit)、总线单元BU(Bus Unit)、指令单元IU(Instruction Unit)和地址单元AU(Address Unit)4个部分组成,可实现4级流水线作业,使数据吞吐率大大提高,加快了处理速度。 (2)80286 CPU有24位地址线、16位数据线,且地址线与数据线不再复用,可直接寻址的存储空间为16MB。 (3)对8086向上兼容。具有8086/8088 CPU的全部功能,在8086/8088上运行的汇编语言程序不需修改就可在80286 CPU上运行。 (4)80286有两种工作方式:实地址模式(简称实模式或实地址方式)和保护虚拟地址模式(简称保护模式或保护方式)。37微型计算机原理及接口技术 实地址模式下,80286相当于一个快速的8086,可寻址1 MB的物理地址空间,对存储单元寻址时,从逻辑地址到物理地址的转换也与8086一样,4个段寄存器中装入的是段基值。 保护虚拟地址模式下,80286可直接寻址的存储器空间为16 MB,并可提供l GB 的虚拟地址空间。存储单元的物理地址仍由段基址和偏移地址通过运算而得。但4个段寄存器装入的不再是段基址,而是段选择符。24位的段基址存放在一个段描述符中,通过段选择符可找到相应的段描述符,由该描述符便可获得待操作存储单元所在段的段基址。,38微型计算机原理及接口技术2.1.3 80386/804862.1.3 80386/80486微处理器微处理器 80386/80486是 Intel公司推出的32位微处理器,与80286相比,它们在结构和性能上的主要特点如下: (1)内部由总线接口单元、指令预取单元、指令译码单元、指令执行单元、段管理单元和页管理单元等6个独立的部件组成,可同时并行工作,具有6级流水线结构。 (2)内部寄存器数量较80286明显增加。具有32位数据处理能力。可进行64位的数据运算,增强了位处理指令的功能。数据总线以及地址总线均为32位。 (3)对存储器的管理可实现段式、页式和段页式存储管理,具有64TB的虚拟存储空间(246B)和4GB物理存储空间(232B)。 (4)提供32位外部总线接口,最大数据传输率显著提高,具有自动地在16位和32位数据总线之间进行切换的功能。 (5)具有三种工作方式,实地址方式、保护虚拟地址方式和虚拟8086方式。虚拟8086方式。39微型计算机原理及接口技术2.1.4 642.1.4 64位微处理器及多核技术位微处理器及多核技术1.Pentium1.Pentium微处理器微处理器 Pentium是一种高性能的64位微处理器。它采用超标量体系结构,内含两条指令流水线,在一个时钟周期内可执行两条整数运算指令或一条浮点运算指令;内置的浮点运算部件采用超流水线技术,有8个独立执行部件进行流水线作业;增加了分支指令预测;内置了指令和数据两个独立的超高速缓存器(分别为8KB);采用64位外部数据总线,提高了使经总线访问内存数据的速度;引入了大型计算机中采用的内部错误检测、功能冗余校验和错误报告等自诊断功能;进行了更多的可测性设计(如边界扫描、探针方式等);提供了独特的性能监察功能,提供了灵活的存储器页面管理,既支持传统的4KB存储器页面,又可使用更大的4MB存储器页面。 40微型计算机原理及接口技术2.2.多核技术多核技术 多核技术是64位微处理器面世后发展起来的新技术,为提高64位微处理器性能的新技术主要有:超线程技术、多核技术和睿频智能加速技术等。 (1) 超线程技术(Hyper-Threading Technology) Intel公司提出的超线程技术在CPU内增加了一个逻辑处理单元,使一个CPU能够同时执行两个“事件”,看上去就像有两个CPU一样。但其实际性能远远低于两个CPU,超线程技术的应用在单核微处理器中可使其性能得到一定的提高。 (2) 双核/多核技术(Dual/Multi Core Technology) 双核微处理器指一个微处理器内部集成有两个独立的内核(core),每个内核有自己的高速缓存和控制器,均能独立读取并执行指令,实现了指令级的并行工作。但在实际工作中并非任何时候都是两个CPU在同时工作。 (3)睿频加速技术(Turbo Boost Technology) 睿频加速技术是Intel新一代的能耗管理方案。在不超过散热设计功耗(Thermal Design Power, TDP)的前提下,尽量提高CPU性能。41微型计算机原理及接口技术2.2 804862.2 80486微处理器的体系结构微处理器的体系结构2.2.1 804862.2.1 80486微处理器的体系结构特点微处理器的体系结构特点 80486采用的是单倍的时钟频率,以增加电路的稳定性。内部包含有8KB的指令/数据高速缓存器(Cache),用于存储CPU当前正在使用的指令和数据。内部包含了相当于增强型80387功能的浮点协处理器(FPU)。提高了处理速度。对使用频度较高的基本指令,采用了硬件逻辑直接控制,并在指令执行单元采用了RISC(精简指令集)技术和流水线技术,提高了指令的执行速度,平均指令执行速度为1.2条指令/时钟周期。采用了突发(burst)式总线传输方式,使系统取得一个地址后,与该地址相关的一组数据都可以进行输入/输出,有效地解决了CPU与存储器之间的数据交换问题。内部数据总线的宽度不都只限于32位,而是有32位、64位和128位多种,分别用于不同单元之间的数据通路,对于加快数据传输速度、缩短指令执行时间也有重要作用。对某些内部寄存器(如控制寄存器)中部分位的内容进行了变动和增加。面向多处理器结构,在总线接口部件上增加了总线监视功能;增加了支持多机操作的指令。42微型计算机原理及接口技术2.2.2 804862.2.2 80486微处理器的内部结构微处理器的内部结构1.1.内部结构内部结构图2-4 80486微处理器的内部结构示意图43微型计算机原理及接口技术 由图2-4可见,80486微处理器的内部结构主要由8个逻辑单元组成:总线接口单元、指令预取单元、指令译码单元、指令执行单元、段管理单元、页管理单元、高速缓冲存储器单元和浮点运算单元。 在上述各逻辑单元的支持下,80486按6级流水线方式工作,如图2-5所示。 图2-5 80486的流水线工作示意图44微型计算机原理及接口技术2.2.内部寄存器组内部寄存器组 80486的寄存器按功能可分为四类:基本寄存器、系统级寄存器、调试和测试寄存器、浮点寄存器。 (1)基本寄存器 图2-6 基本寄存器45微型计算机原理及接口技术(2)系统级寄存器系统级寄存器包括4个控制寄存器和4个系统地址寄存器。 1)控制寄存器 80486有4个32位的控制寄存器(CR0、CR1、CR2和CR3),它们的作用是保存全局特性的机器状态,控制片内Cache、FPU和分段、分页单元的工作。 图2-7 控制寄存器格式46微型计算机原理及接口技术2)系统地址寄存器 系统地址寄存器只在保护方式下使用,所以又叫保护方式寄存器。80486有4个系统地址寄存器,非别为全局描述符表寄存器(GDTR)、中断描述符表寄存器(IDTR)、局部描述符表寄存器(LDTR)和任务寄存器(TR),它们主要作是将保护方式下常用的数据基地址、界限和其他属性保存起来,以确保其快速性。 图2-8 系统地址寄存器47微型计算机原理及接口技术 (3)调试和测试寄存器80486提供了8个32位的调试寄存器DR0DR7,它们为调试提供了硬件支持。 图2-9 调试和测试寄存器a) 调试寄存器 b) 测试寄存器48微型计算机原理及接口技术(4) 浮点寄存器80486的FPU中包含有13个浮点寄存器 ,专门用于80486进行浮点运算时使用。 图2-10 浮点寄存器49微型计算机原理及接口技术2.2.3 804862.2.3 80486的工作方式的工作方式 80486有三种工作方式:实地址方式,保护虚地址方式和虚拟8086方式。上电复位时自动进入实地址方式。图2-11 80486微处理器三种工作方式的转换50微型计算机原理及接口技术2.2.4 804862.2.4 80486的常用引脚功能的常用引脚功能图2-12 80486微处理器的引脚配置51微型计算机原理及接口技术第3章80486微处理器的指令系统52微型计算机原理及接口技术3.1 3.1 8048680486微处理器的寻址方式微处理器的寻址方式3.1.1 操作数寻址方式3.1.2 转移地址寻址方式3.1.3 指令的执行时间和占用空间3.2 3.2 8048680486微处理器的指令系统微处理器的指令系统3.2.1 数据传送指令3.2.2 算术运算指令3.2.3 逻辑运算和移位指令3.2.4 字符串操作指令3.2.5 控制转移指令3.2.6 处理器控制指令 3.2.7 按条件设置字节指令53微型计算机原理及接口技术3.1 804863.1 80486微处理器的寻址方式微处理器的寻址方式3.1.1 3.1.1 操作数寻址方式操作数寻址方式1 1立即寻址立即寻址操作数直接包含在指令中的寻址方式称为立即寻址方式。 立即数可为8位、16位或32位的固定数值,即常数,不能是小数、变量或其他类型的数据,它只能作为源操作数,不能作为目的操作数。立即数跟随指令操作码一起存放在内存的代码段中,在CPU取指令时随指令操作码一起取出并直接参加运算。2 2寄存器寻址寄存器寻址 在这种寻址方式下,操作数存放在CPU内部的某个8位、16位或32位的通用寄存器中。 采用这种寻址方式的指令编码短,执行时操作就在CPU内部进行,无需访问存储器,故执行速度快。54微型计算机原理及接口技术3 3存储器操作数寻址存储器操作数寻址 操作数在除代码段以外的内存单元中。通过不同寻址方式求得操作数地址,从而取得操作数。在指令中给出计算操作数所在内存单元偏移地址的表达式,完整的地址表达式如下: 段寄存器:段寄存器: 基址寄存器基址寄存器+ +变址寄存器变址寄存器比例因子比例因子+ +位移量位移量 表3-1 16位和32位寻址时的4个分量定义55微型计算机原理及接口技术(1)直接寻址(Direct Addressing) 直接寻址是指操作数所在内存单元的有效地址EA直接出现在指令中,EA可以是8位、16位或32位。这种寻址方式是对存储器操作数进行访问时可采用的最简单方式。 (2)寄存器间接寻址(Register Indirect Addressing) 这种寻址方式下,操作数所在内存单元的有效地址由规定的寄存器指出。(3)寄存器相对寻址方式(Register Relative Addressing) 在这种方式中,操作数所在内存单元的有效地址为规定的基址寄存器或变址寄存器的内容与一个常量(即位移量,Displacement)之和。 (4)基址变址寻址方式(Based Indexed Addressing) 操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。 当基址寄存器和变址寄存器默认的段寄存器不同时,一般规定由基址寄存器来决定哪一个段寄存器为默认段寄存器。56微型计算机原理及接口技术(5)相对基址变址寻址方式(Relative Based Indexed Addressing) 该方式中,操作数所在内存单元的有效地址是基址寄存器、变址寄存器 的内容与一个常量(即位移量)之和。 (6)比例变址寻址方式(Scaled Indexed Addressing) 操作数的有效地址是变址寄存器的内容乘以比例因子再加上位移量之和,所以EA由3种成份组成。 (7)基址比例变址寻址方式(Based Scaled Indexed Addressing)操作数的有效地址是变址寄存器的内容乘以比例因子再加上基址寄存器的内容之和。 (8)相对基址比例变址寻址方式(Relative Based Scaled Indexed Addressing) 操作数的有效地址是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和。 57微型计算机原理及接口技术3.1.23.1.2转移地址寻址方式转移地址寻址方式 在程序运行过程中,往往需要根据不同的条件执行不同的程序段,因此程序的执行要产生分支或转移。在指令系统中,控制程序执行顺序的指令称为控制转移指令,这组指令的实质是根据需要修改IP或修改CS:IP的内容。控制转移指令的寻址方式涉及如何确定转移的目标地址。1段内直接寻址(Intrasegment Direct Addressing) 在这种寻址方式下,通过当前IP寄存器的内容与一个8位或16位位移量之和得到转移的目标地址。位移量为8位时,称为短程转移;位移量为16位时,称为近程转移。 2段内间接寻址(Intrasegment Indirect Addressing) 该方式中,转移的目标地址存放在寄存器或存储单元中。寄存器或存储单元的内容可以用数据寻址方式中除立即数寻址以外的任何一种寻址方式取得,所得到的内容将用来取代IP寄存器的值。该寻址方式不能用于条件转移指令。58微型计算机原理及接口技术3段间直接寻址(Intersegment Direct Addressing) 指令中直接提供转移目标地址的段基址和偏移地址,所以只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段基址取代CS寄存器的内容即可完成从一个段到另一个段的转移操作。4段间间接寻址(Intersegment Indirect Addressing) 该方式下,用存储器中两个相继字的内容来取代IP和CS寄存器中原来的内容,以达到段间转移的目的。这里,存储单元的地址是由指令指定除立即数寻址方式和寄存器寻址方式以外的任何一种数据寻址方式取得。3.1.3 3.1.3 指令的执行时间和占用空间指令的执行时间和占用空间 指令的执行时间取决于时钟周期的大小和执行指令所需要的时钟周期数。如果涉及内存操作,那么执行一条指令的时间为基本执行时间加上计算有效地址所需要的时间。 不同指令或不同寻址方式的机器指令长度不同,一个程序一旦装入计算机,它就会占有一定的存储空间。程序量越大,占有的存储空间也越大。完成同样功能的不同程序,可能会在占用的存储空间和执行时间上有很大差别。59微型计算机原理及接口技术3.2 804863.2 80486微处理器的指令系统微处理器的指令系统3.2.1 3.2.1 数据传送指令数据传送指令 数据传送是一种最基本、最常用、最重要的操作,在程序中它的使用频率最高。这类指令可用于实现立即数到存储器或寄存器、存储器与寄存器、寄存器与寄存器、累加器与输入/输出端口之间的字节、字或双字的传送。这类指令又可以进一步分为:通用传送指令、堆栈操作指令和输入/输出指令3类。图3-1 数据传送指令能够实现的操作示意图60微型计算机原理及接口技术1通用传送指令 基本传送指令MOV 格式:MOV 目的操作数,源操作数 功能:把源操作数的内容复制到目的操作数中。源操作数的内容保持不变,不影响状态标志。 带符号扩展传送指令MOVSX(80386新增) 格式:MOVSX 目的操作数,源操作数 功能:将8位或16位的带符号源操作数通过在高位填充符号位的值,扩展成16位或32位后传送给目的操作数,源操作数保持不变。 零扩展传送指令MOVZX(80386新增) 格式:MOVZX 目的操作数,源操作数 功能:将8位或16位的无符号源操作数通过在高位填充“0”,扩展成16位或32位后传送给目的操作数,源操作数保持不变。61微型计算机原理及接口技术 交换指令XCHG 格式:XCHG目的操作数,源操作数 功能:将源操作数的内容与目的操作数的内容进行交换。 地址传送指令1) 有效地址传送指令LEA 格式:LEA目的操作数,源操作数 功能:将源操作数所在位置的有效地址(即偏移地址)送到目的操作数中。2) 地址指针传送指令 格式:LDS/LES目的操作数,源操作数 LFS/LGS/LSS目的操作数,源操作数(80386新增) 功能:将源操作数中存放的一个32位或48位的全地址指针(包括有效地址和段基址)传送到目的操作数和对应的段寄存器中(由指令助记符指示)。其中,低16位或32位的内容作为有效地址传送到目的操作数,高16位的内容作为段基址传送到段寄存器中。62微型计算机原理及接口技术 查表转换指令XLAT 格式:XLAT 功能:完成一个字节的查表转换功能。将DS:BX+AL指向的字节单元的内容送给AL。可以根据数据表中元素的序号取出表中的相应元素(也可以看成是对一维数组的访问)。 说明: 1)使用该指令需要先在数据段中建立一张字节类型的表,该表的最大长度为256个字节。 2)该指令隐含了两个操作数:BX中存放该表首单元的有效地址,AL中存放相对于表首单元的表内偏移量(即要查找的元素序号),需要事先赋值。 3)该指令执行后,实现了AL中一个字节内容的转换。63微型计算机原理及接口技术 字节交换指令BSWAP(80486新增) 格式:BSWAP源操作数 功能:将32位通用寄存器的4个字节交换顺序,即将32位源操作数的D31D24与D7D0交换、D23D16与D15D8交换。 标志寄存器传送指令LAHF/SAHF 格式:LAHF SAHF 功能:LAHF将EFLAGS的最低字节部分传送到AH中,SAHF将AH的内容传送到EFLAGS的最低字节部分。2堆栈操作指令 堆栈是内存中一片按照“后进先出(LIFO)”方式工作的特殊区域,用以存放暂时不用却又必须保护的数据。对于堆栈的操作有压入和弹出两种情况,分别称为“压栈”和“弹栈”,且这两种操作均在堆栈的栈顶位置进行。64微型计算机原理及接口技术 压栈指令PUSH 格式:PUSH源操作数 功能:SP=SP2(16位操作数)或SP=SP4(32位操作数),源操作数压入SS:SP指向的字(或双字)单元。 弹栈指令POP 格式:POP目的操作数 功能:首先将SS:SP所指的栈顶元素弹出给16位或32位的目的操作数,SP=SP+2(或4)。 16位标志寄存器压栈/弹栈指令PUSHF/POPF 格式:PUSHF POPF 功能:执行PUSHF时,首先,SP=SP2,然后,标志寄存器低16位压入SS: SP指向的两个连续单元。执行POPF时,先从栈顶弹出2个字节给标志寄存器低16位,然后SP=SP+2,显然POPF的执行会影响标志寄存器中相应标志位的状态。65微型计算机原理及接口技术 32位标志寄存器压栈/弹栈指令PUSHFD/POPFD 格式:PUSHFD POPFD 功能:执行PUSHFD时,首先,SP=SP4,然后,32位标志寄存器压入SS:SP指向的4个连续单元。执行POPFD时,先从栈顶弹出4个字节给32位标志寄存器,然后SP=SP+4。 全部16位通用寄存器压栈/弹栈指令PUSHA/POPA(80286新增) 格式:PUSHA POPA 功能:执行PUSHA时,SP=SP16,然后,将8个16位的通用寄存器内容压栈,压栈的顺序为AX、CX、DX、BX、SP、BP、SI、DI。被压栈的SP是本指令执行之前的值。执行POPA时,从当前栈顶开始,依次把其中的内容弹给8个16位的通用寄存器,弹栈的顺序为DI、SI、BP、SP、BX、DX、CX、AX,应注意SP的内容仍然按照弹栈的规律变化,即SP=SP+16,不受此次操作过程中堆栈空间对应单元内容的影响。66微型计算机原理及接口技术 全部32位通用寄存器压栈/弹栈指令PUSHAD/POPAD(80386新增) 格式:PUSHAD POPAD 功能:执行PUSHAD时,SP=SP32,然后,将8个32位的通用寄存器内容压栈,压栈的顺序为EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI。被压栈的ESP是本指令执行之前的值。执行POPAD时,从当前栈顶开始,依次把其中的内容弹给8个32位的通用寄存器,弹栈的顺序为EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX,应注意的是,SP的内容仍然按照弹栈的规律变化,即SP=SP+32,不受此次操作过程中堆栈空间对应单元内容的影响。67微型计算机原理及接口技术3输入/输出指令 直接寻址的输入/输出指令格式:INAL/AX/EAX,PORTOUTPORT,AL/AX/EAX功能:IN指令从PORT指定的端口把字节、字或双字数据传送到AL、AX或EAX中;OUT指令把AL、AX或EAX中的字节、字或双字数据传送到PORT指定的端口。说明:PORT是一个8位的I/O端口地址,地址范围为0FFH。 DX间接寻址的输入/输出指令格式:INAL/AX/EAX,DXOUTDX,AL/AX/EAX功能:IN指令从DX指定的端口把字节、字或双字数据传送到AL、AX或EAX中;OUT指令把AL、AX或EAX中的字节、字或双字数据传送到DX指定的端口。说明:用DX间接寻址方式最大可寻址64KB个端口,端口地址范围为0FFFFH。68微型计算机原理及接口技术3.2.2 3.2.2 算术运算指令算术运算指令1基本四则运算 加法指令ADD格式:ADD目的操作数,源操作数功能:目的操作数 = 源操作数 + 目的操作数 带进位加法指令ADC格式:ADC目的操作数,源操作数功能:目的操作数 = 源操作数 + 目的操作数 + 进位标志CF 减法指令SUB格式:SUB目的操作数,源操作数功能:目的操作数 = 目的操作数 - 源操作数69微型计算机原理及接口技术 带借位减法指令SBB格式:SBB目的操作数,源操作数功能:目的操作数 = 目的操作数 - 源操作数 借位标志CF 加1指令INC和减1指令DEC格式:INC目的操作数 DEC 目的操作数功能:执行INC指令后,目的操作数 = 目的操作数 + 1; 执行DEC指令后,目的操作数 = 目的操作数 - 1; 求补指令NEG格式:NEG目的操作数功能:目的操作数 = 0 目的操作数70微型计算机原理及接口技术 交换加法指令XADD(80486新增)格式:XADD目的操作数,源操作数功能:将源操作数和目的操作数进行互换,然后将源操作数与目的操作数之和送给目的操作数。指令执行后的源操作数是指令执行前的目的操作数。 比较指令CMP格式:CMP 目的操作数,源操作数功能:目的操作数- 源操作数 比较并交换指令CMPXCHG(80486新增)格式: CMPXCHG 目的操作数,源操作数功能: 将目的操作数与累加器AL、AX或EAX的内容比较,若相等则将源操作数传送到目的操作数中,ZF置“1”;否则将目的操作数传送到累加器AL、AX或EAX中,ZF清“0”。71微型计算机原理及接口技术(10)无符号数乘法指令MUL格式:MUL源操作数功能:将累加器AL、AX或EAX乘以源操作数,字节运算时乘积返回到AX,字运算时乘积返回到DX:AX,双字运算时乘积返回到EDX:EAX。(11)带符号数乘法指令IMUL格式:IMUL源操作数 IMUL目的操作数,源操作数 IMUL目的操作数,源操作数,立即数功能:1)在单操作数格式下,将累加器AL、AX或EAX乘以源操作数,字节运算时乘积返回到AX,字运算时乘积返回到DX:AX,双字运算时乘积返回到EDX:EAX。2)在双操作数格式下,用目的操作数乘以源操作数,乘积存放在目的操作数中。3)在三操作数格式下,用源操作数乘以立即数,乘积存放在目的操作数中。 72微型计算机原理及接口技术(12)无符号数除法DIV/带符号数除法IDIV 格式:DIV源操作数 IDIV源操作数 功能:将AX、DX:AX或EDX:EAX除以源操作数,商分别保存在AL、AX或EAX中,余数分别保存在AH、DX或EDX中。IDIV指令中被除数和除数都是带符号数,商和余数的符号相同。(13)符号位扩展(数据宽度变换)指令CBW、CWD、CWDE、CDQ 格式:CBW/CWD CWDE/CDQ(80386新增) 功能:1)CBW将AL中的8位带符号数带符号扩展为16位存入AX中。2)CWD将AX中的16位带符号数带符号扩展为32位存入DX:AX中。3)CWDE将AX中的16位带符号数带符号扩展为32位存入EAX中。4)CDQ将EAX中的32位带符号数带符号扩展为64位存入EDX:EAX中。73微型计算机原理及接口技术2十进制调整指令(1)BCD码的加法运算调整指令AAA/DAA格式:DAA;组合BCD码数的加法调整指令AAA;分离BCD码数的加法调整指令功能:1)DAA对两个组合BCD码相加的和(在AL中)进行调整,获得正确的组合BCD码存入AL中。2)AAA对两个分离BCD码相加的和(在AL中)进行调整,获得正确的分离BCD码存入AX中。74微型计算机原理及接口技术 (2)BCD码的减法运算调整指令AAS/DAS 格式: DAS ;组合BCD码数的减法调整指令 AAS ;分离BCD码数的减法调整指令 功能: 1)DAS对两个组合BCD码相减后的结果(在AL中)进行调整,获得正确的组合BCD码存入AL中。 2)AAS对两个分离BCD数相减后的结果(在AL中)进行调整,获得正确的分离BCD码存入AL中。(3)BCD码的乘法运算调整指令AAM格式:AAM;分离BCD码数的乘法调整指令功能:对两个分离BCD码数相乘的结果(在AX中)进行调整,获得正确的BCD码结果。75微型计算机原理及接口技术(4)BCD码的除法运算调整指令AAD 格式:AAD;分离BCD码数的除法调整指令 功能:用于除法运算前,把AX中分离BCD码(十位数放在AH,个位数放在AL)表示的被除数调整为二进制数并存放在AL中,以使商和余数均为有效的分离BCD码数。 即:AL(AH)10+(AL),AH03.2.3 3.2.3 逻辑运算和移位指令逻辑运算和移位指令1逻辑运算指令 逻辑与/或/异或指令 AND/OR/XOR 格式:AND/OR/XOR 目的操作数,源操作数 功能:将目的操作数与源操作数按位进行逻辑与、或、异或操作,结果存入目的操作数中。76微型计算机原理及接口技术(2) 逻辑非指令NOT格式:NOT目的操作数功能:将寄存器或存储器中的8位、16位或32位操作数按位进行求反,结果送回目的操作数中。不影响状态标志。(3)测试指令TEST格式:TEST目的操作数,源操作数功能:将目的操作数与源操作数按位进行逻辑与操作,但不保存结果。2移位指令(1) 算术左移/逻辑左移指令SAL/SHL格式:SAL/SHL 目的操作数,移位次数功能:SAL和SHL具有相同的功能,将目的操作数的内容左移1位或CL所指定的位数,每左移1位,目的操作数的最高有效位MSB被移入标志位CF,而右边的最低有效位LSB补0。操作示意图如图3-2所示。SAL将目的操作数视为带符号数,SHL将目的操作数视为无符号数。图3-2 算术左移/逻辑左移指令功能示意图77微型计算机原理及接口技术(2)逻辑右移指令SHR格式:SHR目的操作数,移位次数功能:将目的操作数的内容向右移1位或CL所指定的位数,每右移一位,右边的最低位移入标志位CF,而在左边的最高位补零。操作示意图如图3-3所示。SHR将目的操作数视为无符号数。(3)算术右移指令SAR格式:SAR目的操作数,移位次数功能:将目的操作数的内容向右移1位或CL所指定的位数,操作数最低位移入标志位CF。SAL将目的操作数视为有符号数,因此为了保证符号不丢失,算术右移时最高位不是补零,而是保持不变。操作示意图如图3-4所示。图3-3 逻辑右移指令功能示意图图3-4 算术右移指令功能示意图78微型计算机原理及接口技术(4)双精度左移/右移指令SHLD/SHRD(80386新增)格式:SHLD/SHRD 目的操作数,源操作数,移位次数功能:将目的操作数向左(右)移动N位,其“空出”的N个低(高)位由源操作数的高(低)N位来填充,但是源操作数本身并不移位、内容不发生改变。进位位CF中的值为目的操作数移出的最后一位。图3-5 双精度左移/右移指令功能示意图79微型计算机原理及接口技术(5)循环移位指令ROL/ROR/RCL/RCR格式:ROL/ROR/RCL/RCR 目的操作数,移位次数功能:ROL/ROR将目的操作数循环左移/右移,最高/最低位移入CF的同时再移入最低/最高位,其余各位依次向邻近位移动构成循环,CF不在循环圈之内。RCL/RCR将目的操作数与CF一起构成循环圈进行左移/右移,最高/最低位移入CF,CF原来的值移入最低/最高位,其余各位依次向邻近位移动构成循环,CF包含在循环圈之内。图3-6 循环移位指令功能示意图80微型计算机原理及接口技术3位测试指令与位扫描指令(80386新增) 位测试指令格式:BT目的操作数,源操作数;位测试BTS目的操作数,源操作数;位测试置1BTR目的操作数,源操作数;位测试置0BTC目的操作数,源操作数;位测试取反功能:1)BT测试目的操作数中指定位(由源操作数指定),并将它拷贝至进位标志位CF。2)BTS测试目的操作数中指定的位(由源操作数指定),并将它拷贝至进位标志位CF。然后将该位置1。3)BTR测试目的操作数中指定的位(由源操作数指定),并将它拷贝至进位标志位CF。然后将该位清0。4)BTC测试目的操作数中指定的位(由源操作数指定),并将它拷贝至进位标志位CF。然后将该位取反。81微型计算机原理及接口技术 向前位扫描指令BSF格式:BSF目的操作数,源操作数功能:对源操作数所指定的字或双字从低位向高位进行扫描,找出第一个是“1”的位,把此位的下标放在目的操作数中。 向后位扫描指令BSR格式:BSR目的操作数,源操作数功能:对源操作数指定的字或双字从高位向低位进行扫描,找出第一个是“1”的位,把此位的下标放在目的操作数中。82微型计算机原理及接口技术3.2.4 3.2.4 字符串操作指令字符串操作指令1串传送指令MOVS/MOVSB/MOVSW/ MOVSD格式:MOVS目的操作数,源操作数功能:串传送指令完成两个存储单元之间的数据传送。把由DS:SI指向的字节、字或双字存储单元的内容复制到由ES:DI指向的存储单元中,并根据DF和字符类型自动修改地址指针的内容,以指向下一个要操作的字符。2串取出指令LODS/LODSB/LODSW/ LODSD格式:LODS源操作数功能:将DS:SI指向的源串存储单元中的内容取到累加器AL、AX或EAX中,并根据DF和字符类型自动修改地址指针的内容,以指向下一个要操作的字符。3串存储指令STOS/STOSB/STOSW/STOSD格式:STOS目的操作数功能:把累加器AL、AX或EAX的内容存储到由ES:DI(或EDI)指向的字节、字或双字的目的串存储单元中,并根据DF和字符类型自动修改地址指针的内容,以指向下一个要操作的字符。83微型计算机原理及接口技术4串比较指令CMPS/CMPSB/CMPSW/CMPSD格式:CMPS目的操作数,源操作数功能:将ES:DI指向的字节、字或双字存储单元的内容与由DS:SI指向的存储单元的内容相比较(相减),不保存比较结果,只影响标志位。并根据DF和字符类型自动修改地址指针的内容,以指向下一个要操作的字符。5串扫描指令SCAS/SCASB/SCASW/SCASD格式:SCAS目的操作数功能:将累加器AL、AX或EAX中的内容与由ES:DI指向的字节、字或双字存储单元的内容相比较(相减),不保存比较结果,只影响标志位。并根据DF和字符类型自动修改地址指针的内容,以指向下一个要操作的字符。6从端口输入字符串指令INS/INSB/INSW/INSD(80286新增)格式:INS目的操作数,DX功能:从DX指定的端口输入一个字节、字或双字元素传送到ES:DI所指定的存储单元,并根据DF和字符类型自动修改地址指针的内容,以指向下一个位置。84微型计算机原理及接口技术7向端口输出字符串指令OUTS/OUTSB/OUTSW/OUTSD(80286新增)格式:OUTSDX,源操作数功能:把DS:SI所指定的存储单元中的字节、字或双字元素传送给DX指定的端口,并根据DF和字符类型自动修改地址指针的内容,以指向下一个位置。8重复操作前缀串操作指令前面允许带有一个重复操作前缀(简称重复前缀),使该指令能重复执行。 REP:只要CX(ECX)寄存器中的内容不为0,就重复执行REP后的串操作指令。REPE/REPZ:当零标志位ZF=1且CX(ECX)的内容不为0时,重复执行它后面的串操作。REPNE/REPNZ:当零标志位ZF=0且CX(ECX)的内容不为0时,重复执行它后面的串操作。85微型计算机原理及接口技术9串操作指令使用总结86微型计算机原理及接口技术3.2.5 3.2.5 控制转移指令控制转移指令1无条件转移指令JMP格式:JMP目的操作数功能:无条件地控制程序转移到目的操作数所指定的地址处继续执行。 2条件转移指令格式:指令助记符 转移目标地址标号功能:根据CPU中的状态标志位组成的转移条件决定程序的执行方向。若条件成立,控制程序转移到目标地址标号处执行;若不成立,程序将顺序执行该条件转移指令的后继指令。 3循环控制转移指令循环控制转移指令用于在循环结构的程序中控制循环的进行。其转移的目标地址在距离下一条指令的-128+127字节范围内。 (1)LOOP格式:LOOP目的操作数功能:将CX内容减1,若减1后CX不为0,则转至目的操作数所指向的位置继续循环执行;否则退出循环,执行下一条指令。87微型计算机原理及接口技术(2)LOOPE/LOOPZ格式:LOOPE目的操作数 LOOPZ目的操作数功能:将CX内容减1,若CX0且ZF=1,则转至目的操作数所指向的位置继续循环执行;否则退出循环,执行下一条指令。(3)LOOPNE/LOOPNZ格式:LOOPNE目的操作数 LOOPNZ目的操作数功能:本指令与LOOPZ指令类似,只是其中ZF条件与之相反。它先将CX内容减l,然后判断CX和ZF的内容,当CX0且ZF=0时,转至目的操作数所指向的位置继续循环执行;否则退出循环,执行下一条指令。(4)JCXZ格式:JCXZ目的操作数功能:若CX为0则转至目的操作数所指向的位置执行;否则继续执行下一条指令。88微型计算机原理及接口技术4过程调用指令(1)段内直接调用格式:CALLSUBPROC或 CALLNEARSUBPROCCALLNEAR PTRSUBPROC功能:先将当前的(E)IP内容(返回地址)压栈,将SUBPROC指定位置的入口偏移地址送给(E)IP,控制程序转移到子程序入口处继续执行。 (2)段内间接调用格式:CALL寄存器操作数或 CALLWORD/DWORD PTR存储器操作数功能:先将当前的(E)IP内容(返回地址)压栈,若指令中的操作数是一个寄存器操作数,则将寄存器的内容送(E)IP;若指令中的操作数是存储器操作数,则将从指定地址开始的连续多个单元的内容送(E)IP,控制程序转移到子程序入口处继续执行。 89微型计算机原理及接口技术(3)段间直接调用格式:CALLFAR SUBPROC或 CALLFAR PTR SUBPROCCALL段基址偏移地址(过程的全地址)功能:先将当前的CS和(E)IP内容(返回地址)压栈,将SUBPROC指定位置的段基址和入口偏移地址送给CS和(E)IP,控制程序转移到子程序入口处继续执行。 (4)段间间接调用格式:CALLDWORD/FWORD PTR 存储器操作数功能:先将当前的CS和(E)IP内容(返回地址)压栈,将从指定地址开始的连续多个单元的内容送CS和(E)IP(高字送CS),控制程序转移到子程序入口处继续执行。 90微型计算机原理及接口技术5过程返回指令格式:RET;不带参数的返回指令RET n ;带参数的返回指令 功能:过程返回指令用于子程序的末尾,结束子程序的执行,控制返回到主程序,执行对应CALL指令后的指令序列。将当前堆栈栈顶元素无条件弹出,作为返回的目的地址。若是近过程段内返回,则只弹出偏移地址给(E)IP,若是远过程段间返回,则弹出段基址和偏移地址分别给CS和(E)IP。 6中断调用与中断返回指令 (1) 中断调用指令 格式:INTN INTO 功能:1)INT N为软中断指令,用于产生一个由N指定中断类型号的软中断。 2)INTO为溢出中断指令。它是软中断指令的特例,隐含中断类型号为4。 即INTO指令与INT 4指令调用的是同一个中断服务程序。它只有当OF置1时才产 生中断。91微型计算机原理及接口技术(2) 中断返回指令 格式:IRET 功能:IRET为中断服务程序的返回指令,CPU执行该指令时,依次从当前栈顶弹出6个元素给IP、CS及标志寄存器,用于从中断服务程序返回原程序。 3.2.6 3.2.6 处理器控制指令处理器控制指令1单个标志位操作指令92微型计算机原理及接口技术2处理器暂停指令HLT 功能:使程序停止运行,处理器进入暂停状态,不执行任何操作,不影响标志。当出现RESET线上有复位信号、CPU响应非屏蔽中断、CPU响应可屏蔽中断3种情况之一时,CPU脱离暂停状态,执行HLT的下一条指令。3处理器脱离指令ESC 功能:当CPU需要系统中的浮点协处理器FPU协助工作时,通过ESC指令通知FPU,将控制权交给FPU,使FPU可以执行指令规定的操作。4处理器等待指令WAIT 功能:检查BUSY引脚状态,使处理器处于等待状态,等待协处理器完成当前工作,直到出现外部中断为止。93微型计算机原理及接口技术5总线锁定前缀LOCK 功能:LOCK为指令前缀,用于产生有效的LOCK总线信号,使LOCK引脚变成逻辑0,在LOCK引脚有效期间,锁住由该指令目的操作数指定的存储器区域,禁止外部总线上的其它处理器存取带有LOCK前缀指令的存储器操作数,使之在该指令执行期间一直受到保护,防止其它主控器访问。6空操作指令NOP 功能:完成一次空操作,仅占用1字节存储空间和延时,使IP/EIP增1。它与HLT指令的区别是:NOP执行后,CPU继续执行其后的指令;HLT执行后,CPU暂停任何操作。该指令不影响标志位。94微型计算机原理及接口技术3.2.7 3.2.7 按条件设置字节指令按条件设置字节指令 格式:SETxx目的操作数功能:根据指令中给出的条件“xx”是否满足来设置目的操作数:条件满足时,将字节设置为01H;条件不满足时,设置为00H。 95微型计算机原理及接口技术第4章汇编语言程序设计汇编语言程序设计96微型计算机原理及接口技术4.1 4.1 汇编语言指令汇编语言指令4.1.1汇编语言的基本语法 4.1.2伪指令4.2 4.2 汇编语言程序设计方法汇编语言程序设计方法4.2.1 汇编语言程序设计的基本步骤及开发过程 4.2.2 汇编语言程序设计的基本方法 4.2.3 子程序设计与调用技术 4.2.4 DOS及BIOS功能调用4.3 4.3 汇编语言程序设计举例汇编语言程序设计举例 97微型计算机原理及接口技术4.1 4.1 汇编语言指令汇编语言指令 指令是构成程序的基本单位,按其作用与编译情况分为: 指令性语句(即符号指令)、指示性语句(即伪指令)和宏指令语句。 指示性语句(伪指令语句)是说明性语句,无对应的机器指令,它仅为汇编程序提供编译信息,为链接程序提供链接信息,其功能是由相应的软件完成。 宏指令语句由指令性语句和指示性语句构成,它属于用户自定义的新指令,其主要作用是替代源程序中具有独立功能的程序段,汇编时产生对应的目标代码,其功能由硬件(CPU)完成。 指令性语句是可执行语句,与机器指令相对应,它命令CPU进行某种操作,其功能由硬件(CPU)完成。98微型计算机原理及接口技术 4.1.1 4.1.1 汇编语言的基本语法汇编语言的基本语法1.1.语句的一般格式语句的一般格式 指令性语句的一般格式为: 标识符: 操作符 操作数 ;注释伪指令语句的一般格式为: 标识符 操作符 操作数 ;注释2.2.常量与变量常量与变量 在程序执行过程中其值可以被改变的量称为变量。使用某变量前,必须给它定义一个名字,即变量名。 在程序的执行过程中,其值始终保持不变的量即为常量。常量有立即数、字符串常数和符号常数三种形式。99微型计算机原理及接口技术3.3.运算符运算符 汇编语言中所使用的运算符有算术运算符、逻辑运算符、关系运算符以及汇编语言特定的操作符等。(1)算术运算符 算术运算符有:+(加)、-(减)、*(乘)、/(除)、MOD(模除)。其中“模除”的概念是:做除法取其余数。算术运算符可以用于数字表达式或地址表达式中。 NUM DB 12H,81H . MOV AL,NUM+1 ;执行本条指令后(AL)=81H100微型计算机原理及接口技术 (2) 逻辑与移位运算符逻辑运算符:AND、OR、XOR、NOT移位运算符:SHL、SHR 逻辑与移位运算符的功能是在汇编时由汇编程序完成,逻辑与移位指令的功能则是由CPU完成。 MOV BL,NOT 0FFH ;经汇编后的结果为:MOV BL,0 AND DX,89H AND 0F0H ;经汇编后的结果为:AND DX,80H (3)关系运算符 EQ(等于)、NE(不等于)、GT(大于)、LT(小于)、GE(大于等于)、LE(小于等于)。101微型计算机原理及接口技术 功能:将两个操作数进行比较,若关系式成立,所得结果每位均为1,否则每位均为0。要求两个操作数必须同为数字或是同一段内的两个存储器地址。 MOV AL,2AH EQ 2BH ;经汇编后的结果为:MOV AL,0MOV BX,14H LT 30H ;经汇编后的结果为:MOV BX,0FFFFH (4)分离运算符分离运算符有:HIGH和LOW。HIGH截取操作数的高8位,LOW截取操作数的低8位。 如: MOV BL, LOW 1234H ;BL=34H MOV AX,HIGH 1234H ;AX=0012H 102微型计算机原理及接口技术(5)属性操作符 PTR操作符 功能:指定或改变变量的类型 格式:类型说明符 PTR 地址表达式 DAT1 DW 1234H ;在数据段中定义DAT1为字型变量 MOV AL,BYTE PTR DAT1 ;指令执行后(AL)=34H (6)数值回送操作符数值回送操作符加在运算对象之前,用以获得该运算对象对应的某个参数值。 SEG操作符 功能:回送变量名或标号所在段的段基址。 格式:SEG 变量名或标号103微型计算机原理及接口技术 例如:MOV AX,SEG INT_T0 ;将标号INT_T0所在段的段基址赋值给寄存器AX OFFSET操作符功能:回送变量名或标号所在位置的偏移地址。格式:OFFSET 变量名或标号将上例中SEG换成OFFSET,则将INT_T0的偏移地址赋值给寄存器AX。 TYPE操作符功能:回送变量、标号或常数的类型值。对于变量如为字节型,返回值为1,字型则返回值为2,双字型返回值为4等等。对于标号,则回送代表该标号类型的数值:NEAR为-1,FAR为-2。对于常数,则回送0。格式:TYPE 变量名、标号或常数 104微型计算机原理及接口技术 LENGTH操作符功能:当数据用重复数据操作符DUP定义时,汇编程序将回送外层DUP给定的值,对于其他情况返回值总为1。格式:LENGTH 变量名或标号例:N1 DB 10 DUP(2,3,5 DUP(1),6 . MOV CX,LENGTH N1 ;指令执行后,(CX)=10 SIZE操作符功能:SIZE=LENGTH*TYPE格式:SIZE 变量名或标号105微型计算机原理及接口技术 4.1.2 4.1.2 伪指令伪指令伪指令的主要作用是为汇编程序和连接程序提供信息。80X86汇编语言常用的伪指令有:处理器选择伪指令、逻辑段定义伪指令、数据定义伪指令、过程与宏定义伪指令等。 1. 1. 处理器选择伪指令处理器选择伪指令 通知汇编程序当前源程序指令是哪一种微处理器指令。 .8086 仅接受8086/8088指令.286/.286C 接受8086/8088及80286在非保护方式下的指令.286P 接受8086/8088及80286的所有指令.386/.386C /.386P/.486/.486C/.486P/.586/.586C/.586P 106微型计算机原理及接口技术 2. 2. 逻辑段定义伪指令逻辑段定义伪指令完整的段定义结构示例: .486 STACK1 SEGMENT AT 0300H USE16 STACK ;定义堆栈段 DB 500 DUP(?) STACK1 ENDS DATA SEGMENT AT 0200H USE16 ;定义数据段 ORG 0100H NUMDW?DATA ENDS EDATA SEGMENT AT 0200H USE16 ;定义附加段 DB 100 DUP(?) EDATA ENDS 107微型计算机原理及接口技术 CODE SEGMENT USE16 ;定义代码段 ASSUME CS:CODE,SS: STACK1,DS:DATA,ES:EDATA START: MOV AX,STACK1 MOV SS,AX ;堆栈段寄存器初始 MOV AX,DATA MOV DS,AX ;数据段寄存器初始 MOV AX,EDATA MOV ES,AX ;附加段寄存器初始 . MOV AH,4CH INT 21H ;返回到DOS CODE ENDS END START108微型计算机原理及接口技术 (1) SEGMENT和ENDS伪指令 功能:段定义语句 格式:段名 SEGMENT 定位参数 连接参数 分类名 段名 ENDS SEGMENT/ENDS为一对段定义语句,任何一个逻辑段从SEGMENT语句开始,到ENDS语句结束。(2) AT 表达式 功能:该属性表示逻辑段在定位时,其段基址等于表达式给出的值。如省略此项则系统自动给该段分配一个段基址。 可以看出,在上例中指定了堆栈段的段基址为0300H,数据段和附加段的段基址为0200H。 注意:AT表达式不能在代码段中使用。109微型计算机原理及接口技术(3) ORG 伪指令 功能:用以指定其后下一条指令或下个数据区起始单元的偏移地址。如不指定则每段定义的第一个数据或第一条指令将从偏移地址0000H开始顺序存放。 格式:ORG 数值表达式 (4) ASSUME伪指令 功能:段寄存器说明语句,用于通知汇编程序,寻址逻辑段使用哪一个段寄存器。 格式:ASSUME 段寄存器名:段名,段寄存器名:段名(5) 使用类型 USE_TYPE 功能:只适用于80386及其以后机型,用来说明使用16位寻址方式还是32位寻址方式。 格式:USE16 ;使用16位寻址方式 USE32 ;使用32位寻址方式 110微型计算机原理及接口技术 3. 3.数据定义伪指令数据定义伪指令 功能:用于定义变量,给变量赋初值并分配存储区。 格式:变量名 DB/DW/DD/DF/DQ/DT 数据项,数据项,数据项 例:定义数据:DAT1 DB 10H,25,?DAT2 DW 1234HDAT3 DD 1234H111微型计算机原理及接口技术 例:用DUP重复定义并且可以嵌套:N1 DB 2 DUP(6,3 DUP(7)例:定义字符:STR1 DB AB12STR2 DW AB112微型计算机原理及接口技术 4. 4.地址计数器地址计数器 $ $功能:当$用在指令中时,它表示本条指令第一个字节的偏移地址; 当$用在数据定义伪指令中时,它表示的是当前字节的偏移地址。例如指令JMP $+8 表示跳转至JMP指令的首地址+8的地址处。 又如在数据段中定义如下: ARRAY DB 12H,-6,56H COUNT EQU $-ARRAY 定义中$-ARRAY表示当前字节的偏移地址减去ARRAY首地址单元的偏移地址,汇编后COUNT的值为3。显然,如果ARRAY定义为DW,则汇编后COUNT的值为6。113微型计算机原理及接口技术 5. 5.过程与宏定义伪指令过程与宏定义伪指令 (1)过程定义伪指令过程又称子程序,是程序的一部分,它由过程定义伪指令PROC和ENDP分别定义过程的开始和结束,由RET指令作为其返回指令,过程定义语句的格式如下: 过程名 PROC 属性 ;过程体 RET ;过程返回 过程名 ENDP ;过程定义结束114微型计算机原理及接口技术 (2)宏定义伪指令 宏名 MACRO (形式参数表) ;宏体 ENDM ;宏定义结束宏定义中伪指令MACRO和ENDM也必须成对出现,形式参数表是用逗号(或空格或制表符)分隔的一个或多个形式参数,它是可选项。选用了形式参数,则所定义的宏称为带参数的宏,当调用宏时须用对应的实际参数去取代,以实现信息传送。 (3)条件汇编伪指令条件汇编的主要作用是通知汇编程序,当条件满足时汇编某些指令,否则不汇编。115微型计算机原理及接口技术 6. 6. 源程序结束伪指令源程序结束伪指令汇编结束语句有两种格式。格式1: END 程序的起始地址标号例如: END START它通知汇编程序,源程序到此结束,用START做标号的指令是程序的启动指令。故该标号应放在第一条需要执行的指令之前。在DOS装载程序的可执行文件(EXE文件)时,自动把标号START所在段的段基址赋给CS,把START开始的指令所在单元的偏移量赋给IP。从而CPU自动地从START开始的那条指令依次执行程序。 116微型计算机原理及接口技术 格式2: ENDEND语句通知汇编程序,源程序到此结束。在模块化程序的子模块中,必须用格式2作为源程序的最后一条语句。 程序在完成预定任务之后,必须返回DOS。返回DOS最常用的方法是使用DOS系统4CH功能调用,即执行指令:MOV AH,4CH INT21H 117微型计算机原理及接口技术 4.2 4.2 汇编语言程序设计方法汇编语言程序设计方法 4.2.1 4.2.1 汇编语言程序设计的基本步骤及开发过程汇编语言程序设计的基本步骤及开发过程1. 1. 汇编语言程序设计的基本步骤汇编语言程序设计的基本步骤 明确任务、分析问题、确定算法。 画出程序流程图。 分配内存工作单元和寄存器。 编程与调试。 2. 2.汇编语言程序的开发过程汇编语言程序的开发过程 编辑汇编语言源程序。 汇编源程序。 连接目标程序。 调试可执行文件。 118微型计算机原理及接口技术 4.2.2 4.2.2 汇编语言程序设计的基本方法汇编语言程序设计的基本方法 1.1.顺序程序设计顺序程序设计 例:试编制一个程序,实现N=A+B2+C。 分析:例4-8中的变量A、B、C均为无符号字节型数据,运算结果存入字型变量N中,编程时可分为以下几个步骤来实现: 利用乘法指令计算:B2 利用加法指令计算:A+ B2 利用加法指令计算:A+ B2+C DATA SEGMENT N DW ? A DB 36H B DB 57H C DB 82H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA 119微型计算机原理及接口技术 START: MOV AX,DATA MOV DS,AX MOV AL,B MUL AL ;计算B2 MOVZX BX,A ;将A中的字节型数据扩展为字型数据 ADD AX,BX ;完成A+B2,结果存入AX中 MOVZX CX,C ;C中的字节型数据扩展为字型数据 ADD AX,CX ;计算A+B2+C,结果存入AX中 MOV N,AX ;计算结果存入结果变量N中 MOV AH,4CH INT 21H CODE ENDS END START 120微型计算机原理及接口技术 2. 2.分支程序设计分支程序设计 (1)简单分支程序121微型计算机原理及接口技术 例:已知变量X、Y均为一个字节有符号数,它们满足如下定义: 试编程根据X的值求出Y。DATA SEGMENT X DB 0A3H Y DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA 122微型计算机原理及接口技术 START: MOV AX,DATA MOV DS,AX CMP X, 0 JG BIGR ;X0,转BIGR JE EQUE ;X=0,转EQUE MOV Y,-1 JMP EXITBIGR: MOV Y,1 JMP EXITEQUE: MOV Y,0EXIT: MOV AH,4CH INT 21H CODE ENDS END START123微型计算机原理及接口技术 (2)多分支程序 跳转表实际上是内存中的一段连续单元,利用跳转表法实现多分支程序设计的基本思想是:将各分支处理程序的入口地址或转移指令或关键字顺序放到内存中的一段连续的存储单元内,形成跳转表。通过查表操作,找到某分支处理程序的入口地址或相应的转移指令,从而进入对应的分支处理程序。124微型计算机原理及接口技术 例:设某仪器设备共有16个按键,每个按键对应一个数字(015),每按一个按键则要求该仪器设备完成一个特定的功能。设这16个按键对应的功能程序段均在同一代码段中,试编程实现。分析:这是一个典型的多分支程序设计,可利用地址跳转表实现。即:首先建一张表,表中依次存放处理按键015的各功能程序入口地址,然后通过按键号寻找分支程序入口地址,从而进入相应的程序段执行。设各功能程序段的标号分别为ADR0,ADR1.ADR15,按键号已存入变量N中,即:当N=1,转移至标号ADR1程序段,N=i(i15),转移至标号为ADRi程序段。125微型计算机原理及接口技术 DATA SEGMENT N DB ? BUF DW ADR0 ;汇编程序自动把标号ADR0ADRi的 DW ADR1 ;偏移地址写入相应单元 DW ADR15 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,N MOV AH,0 ;每个标号的偏移地址占两个字节 ADD AX,AX ;所以将N*2AX126微型计算机原理及接口技术 MOV BX,OFFSET BUF ;BX指向跳转地址表首地址 ADD BX,AX ;跳转地址表首地址+N*2BX MOV CX,BX ;转移地址CX JMP CX ;CXIP实现段内转移ADR0: ADR1: ADRi: MOV AH,4CH INT 21H CODE ENDS END START127微型计算机原理及接口技术3.3.循环程序设计循环程序设计 循环结构的程序一般包括循环初始、循环体和循环控制三部分。循环程序有两种结构形式:DO_WHILE结构形式和DO_UNTIL结构形式。DO_WHILE结构,循环体的执行次数可能为0,DO_UNTIL结构,循环体至少被执行一次。128微型计算机原理及接口技术例:在数据段中,从BUF单元开始存放着N个字节型无符号数,请将其最大数存放在MAX单元中。分析:在N个数中找最大数,实际上就是将两数进行大小比较,然后将其中较大者又与一个新的数据进行比较,这个动作重复N-1次。故这是一个典型的循环程序结构。其循环体的任务就是完成两数大小的比较并将较大者保存起来,为下次比较做准备。设程序中用CX作为循环计数器,控制循环结束条件,SI作为指针指向BUF单元,AL作为寄存器用于存放每次比较后较大的数。129微型计算机原理及接口技术DATA SEGMENT BUF DB 12H,76H,0A3H,48H . DB 23H,84H,0BDH,91H N EQU $-BUF ;将数据个数统计给变量N MAX DB ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV SI,OFFSET BUF ;指针初始 MOV CX,N-1 ;循环计数器初始 MOV AL,SI ;取数130微型计算机原理及接口技术LP1: CMP AL,SI+1 ;两数进行比较 JAE LP2 ;ALSI+1转LP2 MOV AL,SI+1 ;两数中的较大数ALLP2: INC SI ;修改指针SI,指向下一数据单元 LOOP LP1 ;循环结束否?否转LP1 MOV MAX,AL ;最大数MAX单元 MOV AH,4CH ;返回到DOSINT 21H CODE ENDS END START131微型计算机原理及接口技术4.2.3 4.2.3 子程序设计与调用技术子程序设计与调用技术 1. 1.子程序的调用与返回子程序的调用与返回 (1)远过程调用如果子程序与主程序或调用程序不在同一代码段内,则为远过程调用。子程序的属性应定义为FAR,调用指令应为“CALL FAR PTR 子程序名”,该指令会将当前CS和IP的内容,即CALL指令的下条指令也即断点处的段基址和偏移地址压栈保存。在子程序结束时通过RET指令,将堆栈中保存的地址弹回给CS和IP,以保证程序返回到断点处继续执行。 (2)近过程调用 如果子程序与主程序或调用程序在同一代码段内,则为近过程调用。子程序的属性为NEAR(NEAR可以省略),调用指令应为“CALL (NEAR PTR) 子程序名” 。 132微型计算机原理及接口技术 2. 2.现场的保存与恢复现场的保存与恢复 由于CPU的寄存器个数有限,子程序与主程序或调用程序中所使用的寄存器可能会重叠,由此就会对子程序和主程序的运行环境造成破坏。为了避免这种现象的发生,就必须对子程序的调用和返回的现场进行保护和恢复,其现场的保护和恢复主要有两种方法:主程序与子程序所使用的寄存器尽量分开,避免干扰。利用堆栈将“现场”加以保护和恢复。即在子程序入口处安排一段保护程序,将所用寄存器内容压入堆栈进行保护,在子程序结束前,再对所保护的寄存器内容进行恢复。133微型计算机原理及接口技术 例如:SUMB PROC NEAR PUSH AX PUSH BX ;在子程序入口处将AX、BX内容压栈保存 . POP BX POP AX ;在子程序返回前恢复AX、BX中的内容 RET ;子程序返回SUMB ENDP现场的保护和恢复还可以在主程序或调用程序中进行,例如: PUSH AX ;在主程序或调用程序中,在调用 PUSH BX ;子程序前将寄存器内容压栈保存 CALL SUMB ;调用子程序 POP BX ;从子程序返回后恢复寄存器内容 POP AX 134微型计算机原理及接口技术3.3.主程序与子程序间的参数传递主程序与子程序间的参数传递 主程序与子程序间进行参数传递的方式有多种,常用的有利用寄存器、内存单元和堆栈完成参数传递的三种方式。1)利用寄存器传递参数主程序将传送的数据直接保存在寄存器中,子程序执行时将直接引用寄存器中的参数。例:试编程实现两个字节型带符号数的绝对值之和。135微型计算机原理及接口技术136微型计算机原理及接口技术 DATA SEGMENT NUM1 DB 0E3H NUM2 DB 58H SUM DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV AL, NUM1 ;通过寄存器AL将参数传递给子程序 CALL NEAR PTR ABSL ;调用求绝对值子程序 MOV AH, AL MOV AL, NUM2 CALL NEAR PTR ABSL ADD AL,AH MOV AH, 0 137微型计算机原理及接口技术 ADC AH,0 MOV SUM,AX MOV AH,4CH ;返回到DOSINT 21H ;-ABSL PROC NEAR ;求绝对值子程序 TEST AL, 80H ;检测AL最高位 JZ BACK ;AL为正,不处理 NEG AL INC AL ;AL为负,求补 BACK: RET ;求得的绝对值通过AL回送给主程序ABSL ENDP ;-CODE ENDS END START138微型计算机原理及接口技术2)利用内存单元传递参数 该方法与寄存器传递参数方法类似,但内存容量大,因此适用于参数较多的情况。调用子程序前主调程序将参数存放在内存的某一区域或变量中,子程序到内存区域或变量中获取参数。子程序执行后也将运算结果存放在内存的某一区域或变量中传递给主调程序。例:求出两个四字节数据之和。 设DAT1,DAT2开始的内存单元中,分别存放着两个四字节数据。存放顺序为低位在前,高位在后。利用子程序调用求这两个数据之和,存放于以DAT3开始的数据单元中。其结果存放顺序仍为低位在前,高位在后。139微型计算机原理及接口技术140微型计算机原理及接口技术 DATA SEGMENT DAT1 DB 11H,22H,33H,44H DAT2 DB 55H,66H,77H,88H DAT3 DB 5 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX CALL ADDS ;调用求和子程序 MOV DL, 0 ADC DL, DL ;将最后的进位存入DL MOV BX+8,DL ;将进位赋给DAT3的高位MOV AH,4CH ;返回到DOSINT 21H 141微型计算机原理及接口技术 ;-ADDS PROC NEAR ;求和子程序 LEA BX, DAT1 ;DAT1地址赋给BX MOV CX, 4 ;设置循环次数4次DONE: MOV AL, BX ADC AL, BX+4 ;DAT1与DAT2对应字节带进位相加 MOV BX+8, AL ;结果存入DAT3对应字节 INC BX ;BX指向DAT1下一字节 LOOP DONE ;4次相加未到,返回继续加法运算 RET ;子程序返回ADDS ENDP ;-CODE ENDS END START142微型计算机原理及接口技术3)利用堆栈传递参数该方法是主调程序与子程序将要传递的参数压入堆栈中,使用时再从堆栈中取出。由于堆栈具有后进先出的特性,在多重调用时层次分明,因此适合参数较多且子程序有嵌套和递归调用的场合。例:对上例用堆栈方式分析解决。 143微型计算机原理及接口技术 DATA SEGMENT DAT1 DB 11H,22H,33H,44H DAT2 DB 55H,66H,77H,88H DAT3 DB 5 DUP(?)DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX LEA BX, DAT1 PUSH BX LEA BX, DAT2 PUSH BX LEA BX, DAT3 PUSH BX CALL ADDS ;调用求和子程序 L1: MOV DL, 0 144微型计算机原理及接口技术 ADC DL, DL ;将最后的进位存入DL MOV BX,DL ;将进位赋给DAT3的高字节MOV AH,4CH ;返回到DOSINT 21H ;-ADDS PROC NEAR ;求和子程序 MOV BP, SP MOV CX, 4 ;设置循环次数4次 MOV SI, BP+6 MOV DI, BP+4 MOV BX, BP+2 XOR AX, AX ;第1次相加前,CF清0 DONE: MOV AL, SI ADC AL, SI ;DAT1与DAT2对应字节带进位相加 MOV BX, AL ;结果存入DAT3对应字节 145微型计算机原理及接口技术 INC SI ;SI指向DAT1下一字节 INC DI ;DI指向DAT2下一字节 INC BX ;BX指向DAT3下一字节 LOOP DONE ;4次相加未到,返回继续加法运算 RET 6 ;子程序返回ADDS ENDP ;-CODE ENDS END START146微型计算机原理及接口技术4.4.子程序的嵌套与递归子程序的嵌套与递归 1)子程序的嵌套在子程序中调用另一个子程序,称为子程序的嵌套。由于调用和返回过程是通过堆栈操作进行的,它们按照后进先出的原则依次取出返回地址,因而不会因为嵌套而造成混乱。其嵌套的深度(层数)受堆栈容量的限制。147微型计算机原理及接口技术例:将从BUF单元开始存放的若干字节数据显示在屏幕上。DATA SEGMENT BUF DB 12H,0B4H,56H,78H,9DH N EQU $-BUFDATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX, DATA MOV DS, AX LEA SI,BUF MOV CX,N148微型计算机原理及接口技术 L0: CALL SPLIT ;调用拆分子程序,将两位16进制数拆开 INC SI ;SI增1,为取下个数做准备 LOOP L0 ;返回继续处理下一个数 MOV AH,4CH INT 21H ;返回到DOS;-SPLIT PROC NEAR ;拆分子程序 MOV DL,SI ;取数 SHR DL,4 ;将高位移至低位,得到高位 CALL DISP ;调用显示子程序,显示高位 MOV DL,SI AND DL,0FH ;屏蔽掉高位,得到低位 CALL DISP ;调用显示子程序,显示低位 MOV DL, MOV AH,2 149微型计算机原理及接口技术 INT 21H ;在两数之间显示空格 RET ;子程序返回 SPLIT ENDP ;- DISP PROC NEAR ;显示子程序 CMP DL,9 JNA L1 ;该位小于9,转至L1 ADD DL,7 ;否则该位先加上7 L1: ADD DL,30H ;加上30H MOV AH,2 INT 21H ;显示字符 RET ;子程序返回 DISP ENDP ;-CODE ENDS END START 150微型计算机原理及接口技术2)子程序的递归 子程序中调用子程序自身,称为子程序的递归。例:利用递归子程序求N!DATA SEGMENT N DW ? RETL DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATA 151微型计算机原理及接口技术 START: MOV AX,DATA MOV DS,AX MOV AX,N MOV DH,0 CALL FACT ;调用递归子程序 MOV RETL,DX ;通过寄存器DX,传递结果MOV AH,4CH ;返回到DOSINT 21H ;-FACT PROC NEAR ;递归子程序 CMP AL,0 JZ DONE ;为0,求出0! PUSH AX DEC AX 152微型计算机原理及接口技术 CALL FACT ;依次将N,N-1,.,1压栈BACK: POP CX ;弹出数据1,2,.,N XOR AX,AXMULT: ADD AX,DX LOOP MULT ;利用累加方法求两数乘积 MOV DX,AXEXIT: RET DONE: MOV DX,1 JMP EXITFACT ENDP ;- CODE ENDS END START 153微型计算机原理及接口技术4.2.4 DOS4.2.4 DOS及及BIOSBIOS功能调用功能调用 DOS和BIOS是两组系统软件,它们为用户提供了许多例行子程序,用于完成基本I/O设备、内存、文件和作业的管理,以及时钟、日历的读出和设置等功能。用户访问或调用这些子程序时不用了解硬件操作的具体细节,只需在寄存器AH中给出子程序功能号,然后直接使用软中断指令,调用对应的DOS或BIOS中断子程序即可实现相应功能。 1. DOS1. DOS功能调用功能调用 DOS功能调用主要包括基本输入/输出、文件管理和其它(内存管理、置取时间、置取中断向量、终止程序等)。154微型计算机原理及接口技术1)DOS的01号功能调用 功能:等待从键盘输入一个字符,并将其ASCII码值送入寄存器AL,同时该字符显示在屏幕上。 入口参数:无 调用格式:MOV AH,01H INT 21H 出口参数:AL中为输入字符的ASCII码值。 例:如果在程序执行过程中,遇到指令 MOV AH,01H INT 21H 程序在此等待用户从键盘键入字符,待键入单个字符后,如按下数字2键,则将32H回送给AL,程序继续向下运行。155微型计算机原理及接口技术 2)DOS的02号功能调用 功能:将DL寄存器中的字符输出到显示屏幕上。入口参数:DL寄存器中存放待输出字符的ASCII码值。调用格式:MOV AH,02H INT 21H出口参数:无例:需要在屏幕上显示数字6,则程序为:MOV DL,36H ;或者MOV DL,6MOV AH,02HINT 21H156微型计算机原理及接口技术 3)DOS的09号功能调用 功能:将字符串输出到显示屏幕上。入口参数:DS:DX指向内存中需要显示的以$字符结尾的字符串首地址。调用格式:MOV AH,09H INT 21H出口参数:无例:需要在屏幕上显示字符串HAPPY,则程序为:DATA SEGMENT STR DB HAPPY$ ;在数据段中定义字符串DATA ENDSCODE SEGMENT157微型计算机原理及接口技术 MOV AX,DATAMOV DS,AX ;将数据段段基址也即字符串所在段 ;的段基址赋给DSLEA DX,STR ;将字符串首址的偏移地址赋给DXMOV AH,09H ;用DOS的09号功能调用实现显示INT 21H.CODE ENDS158微型计算机原理及接口技术4)DOS的0AH号功能调用 功能:从键盘接收字符串到内存缓冲区,以回车键结束输入,同时该字符串显示在屏幕上。若字符个数超过定义允许的最大长度则响警示音并无法继续键入。入口参数:DS:DX指向内存中缓冲区首址,其中缓冲区第1个字节单元为允许输入字符串的最大长度(包含回车键),缓冲区第2个字节单元待字符串输入完成后会存放实际输入的字符个数(不包含回车键),第3个字节单元开始依次存放从键盘输入字符的ASCII码。若实际输入字符个数少于定义的允许最大输入长度,缓冲区内剩余字节填0。调用格式:MOV AH,0AH INT 21H出口参数:缓冲区第2字节为实际输入的字符数(不含回车键),缓冲区第3字节开始为输入字符串对应ASCII码,键入回车键完成字符串的输入。159微型计算机原理及接口技术例如从键盘接收一串字符串,程序为:DATA SEGMENT ;在数据段中定义缓冲区 BUF DB 50 ;定义允许键入字符串的最大个数 DB ? ;实际键入字符个数 DB 50 DUP(?) ;依次存放所键入字符的ASCII码DATA ENDS CODE SEGMENT . MOV AX,DATA MOV DS,AX LEA DX,BUF ;将缓冲区首址的偏移地址赋给DX MOV AH,0AH ;用DOS的0A号功能调用实现字符串键入 INT 21H .CODE ENDS160微型计算机原理及接口技术2.BIOS2.BIOS功能调用功能调用 DOS功能调用主要包括基本输入/输出、文件管理和其它(内存管理、置取时间、置取中断向量、终止程序等)。 1)BIOS的0号功能调用 功能:读取键盘键入的一个字符,无回显。入口参数:无调用格式:MOV AH,0H INT 16H出口参数:AL中为输入字符的ASCII码值,AH中为输入字符的扫描码。161微型计算机原理及接口技术 注意:执行该功能时,如果键盘缓冲区为空,即无字符输入,则等待,字符也包括功能键,其对应的ASCII码值为0。 2)BIOS的01号功能调用 功能:查询键盘缓冲区有无字符。不等待按键,立即返回。 入口参数:无 调用格式:MOV AH,01H INT 16H 出口参数:ZF标识位=0,表示有键输入,且AL中为输入字符的ASCII码值,AH中为输入字符的扫描码。ZF标志位=1,表示无键输入。162微型计算机原理及接口技术4.3 4.3 汇编语言程序设计举例汇编语言程序设计举例 例:实现两个数组的分别求和。两个数组位于数据段中,将求和程序定义为过程,且主程序和过程分别安排在两个不同的代码段中。 DATA SEGMENT ARY1 DB 20H,34H,56H,81H,83H ;定义数组1 SIZE1 EQU $-ARY1 SUM1 DW ? ARY2 DB 13H,44H,32,3,0FFH ;定义数组2 SIZE2 EQU $-ARY2 SUM2 DW ? DATA ENDS 163微型计算机原理及接口技术 MAIN SEGMENT ASSUME CS:MAIN, DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,SIZE1 PUSH AX ;SUM过程的入口参数1进栈 MOV AX, OFFSET ARY1 PUSH AX ;SUM过程的入口参数2进栈 CALL FAR PTR SUM MOV AX, SIZE2 PUSH AX MOV AX, OFFSET ARY2 PUSH AX CALL FAR PTR SUM 164微型计算机原理及接口技术 MOV AH,4CH INT 21H MAIN ENDS ;- PROCE SEGMENT ;过程段 ASSUME CS:PROCE,DS:DATA SUM PROC FAR PUSH AX PUSH BX PUSH CX PUSH BP MOV BP,SP PUSHF ;保护现场,共10个字节进栈 MOV CX,BP+14 ;数组长度SIZE由栈CX MOV BX,BP+12 ;数组存放的偏移地址由栈BX165微型计算机原理及接口技术 MOV AX,0 ADN: ADD AL,BX INC BX ADC AH,0 LOOP ADN ;求数组元素之和 MOV BX,AX ;数组之和送到结果区 POPF POP BP POP CX POP BX POP AX ;恢复现场 RET 4 ;返回主程序,并废除参数1和2 SUM ENDPPROCE ENDS;- END START166微型计算机原理及接口技术 例:已知某数组ARRAY中有50个带符号字节数,现用下列程序统计该数组中相邻两数间符号变化(+变-或者-变+)次数,并将次数保存在存储单元NUM中。 分析:两数间符号位的变化,可通过两个数符号位的逻辑异或操作来测试,若两符号位异或的结果为1,表明两数符号位相异。 DATA SEGMENT ARRAY DB 1,2,-3,4,-6,45 DUP(?) NUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX 167微型计算机原理及接口技术 LEA SI, ARRAY MOV BL, 0 MOV CX, 50AGAIN: MOV AL, SI INC SI XOR AL, SI JNS NEXT INC BL NEXT: LOOP AGAIN MOV NUM, BL MOV AH, 4CH INT 21H CODE ENDS END START168微型计算机原理及接口技术 例:将单字节小于100的二进制数转换成BCD码,在屏幕上显示出来。分析:将单字节二进制数除以10H,商为该字节二进制数的高四位,余数为低四位,此乃将两位16进制数拆分的方法。要将其转化为BCD码,则可将该字节二进制数除以10,即12H除以10,商为01,余数为08,再将商和余数分别转化成其对应的ASCII码,调用对应的DOS功能号即可将其显示在屏幕上。 DATA SEGMENT N DB 16H DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AL, N MOV AH, 0 MOV BL, 10 169微型计算机原理及接口技术 DIV BL ;除法后AL中为该BCD码高位,AH中为低位 MOV DX, AX CALL DISP ;调用显示子程序,显示高位 MOV DL, DH CALL DISP ;调用显示子程序,显示低位 MOV AH, 4CH INT 21H;- DISP PROC NEAR ;将待显内容转化成ASCII码 ADD DL, 30H MOV AH, 2 INT 21H RET DISP ENDP ;- CODE ENDS END START170微型计算机原理及接口技术第5章存储系统171微型计算机原理及接口技术5.1 5.1 概述概述5.1.1 存储系统的分级结构5.1.2 半导体存储器的分类5.1.3 存储技术的发展5.2 5.2 内存储器的构成原理内存储器的构成原理5.2.1 存储器芯片的接口特性5.2.2 内存储器的设计5.3 5.3 内存条及其相关技术内存条及其相关技术5.3.1 概述5.3.2 内存条的主要性能指标5.3.3 内存条的双通道技术5.3.4 主流内存条简介172微型计算机原理及接口技术5.4 5.4 虚拟存储器及存储管理虚拟存储器及存储管理5.4.1 虚拟存储器的基本概念5.4.2 80486的段式存储器5.4.3 80486的页式存储器5.4.4 80486的段页式存储器5.5 5.5 高速缓冲存储器高速缓冲存储器5.5.1 高速缓存的工作原理5.5.2 地址映像5.5.3 替换算法和写策略5.5.4 80486微处理器的高速缓存173微型计算机原理及接口技术5.1 5.1 概述概述5.1.1 5.1.1 存储系统的分级结构存储系统的分级结构 目前的微型计算机大都采用分级结构的存储系统,如图5-1所示。整个存储系统从内到外分为4级:CPU内部寄存器组、高速缓冲存储器、内存储器和外存储器。 5-1 存储系统的分级结构示意图174微型计算机原理及接口技术5.1 5.1 概述概述5.1.2 5.1.2 半导体存储器的分类半导体存储器的分类 半导体存储器按存取方式不同,又可分为随机存取存储器(Random Access Memory, RAM)和只读存储器(Read Only Memory, ROM)两大类。 1 1RAMRAM 随机存取存储器RAM可进一步分为静态RAM(Static RAM, SRAM)和动态RAM(Dynamic RAM, DRAM)两大类。 SRAM访问速度明显快于DRAM,但需要6个晶体管才能存储并访问一位二进制数据,电路比DRAM复杂,集成度低,且价格较高。 DRAM的优点是结构简单,只需要一个晶体管和一个电容就可以存储一位二进制信息, 但DRAM需要定时刷新。175微型计算机原理及接口技术2 2ROMROM ROM存储器有多种类型,按照技术发展的进程,主要有以下几种:p 掩膜式ROM(mask ROM)p 可编程ROM(Programmable ROM, PROM) p 可擦除可编程ROM(Erasable Programmable ROM, EPROM) p 电可擦除可编程ROM(Electrically-Erasable Programmable ROM, EEPROM) p 闪存(Flash ROM) 5.1.3 5.1.3 存储技术的发展存储技术的发展 存储技术的发展可以从两个方面来看,一是具体存储技术的发展,例如容量更大,速度更快,价格更低,体积更小等;另一方面是存储方式的重大变革。 云计算 (cloud computing)的核心思想是通过网络实现对大量资源的统一管理和调度,用户可以根据自身的需求获得服务,实现按需分配。 176微型计算机原理及接口技术 一般认为云计算包括以下三个层次的服务:基础设施级服务,平台级服务和应用级服务,如图5-2所示。 5-2 云计算层次示意图 177微型计算机原理及接口技术5.2 5.2 内存储器的构成原理内存储器的构成原理5.2.1 5.2.1 存储器芯片的接口特性存储器芯片的接口特性 了解各种常用存储器芯片的接口特性是设计或扩展微型计算机存储系统的基础,而了解存储器芯片的接口特性,实质上就是了解它有哪些信号线,以及这些信号线与总线的连接方法。1 1EPROMEPROM的接口特性的接口特性 典型的EPROM芯片有Intel公司的2716、2732、2764、27128、27256、27512等,容量分别为2K8位、4 K8位、8 K8位、16 K8位、32 K8位和64K8位。它们的外接信号线如图5-3所示。 178微型计算机原理及接口技术5-3 典型EPROM芯片的外接信号线179微型计算机原理及接口技术2 2EEPROMEEPROM的接口特性的接口特性 EEPROM的突出特点是可以在线进行以字节为单位的读写。常用的EEPROM芯片有Intel公司的2816、2817和2816A、2817A、2864A等。 图5-4给出了2816A和2817A的引脚排列及功能,两者的差别在于2817A比2816A多了一根说明存储芯片状态的信号线。图5-4 常用EEPROM的外接信号线 180微型计算机原理及接口技术3 3SRAMSRAM的接口特性的接口特性 常用的SRAM芯片有2K8位、4K8位、8K8、32K8位和64K8位等。图5-5给出了2KB、4KB和8KB SRAM芯片的引脚配置。 图5-5 常用SRAM的外部信号线181微型计算机原理及接口技术4 4DRAMDRAM的接口特性的接口特性 常用的DRAM芯片有64Kl位、64K4位、256Kl位、256K4位、1M1位、1M4位和4Ml位等。图5-6给出了64Kl位DRAM芯片4564的引脚和结构示意图。图5-6 4564的引脚配置与内部结构182微型计算机原理及接口技术5 5单列直插式单列直插式DRAMDRAM存储器的接口特性存储器的接口特性 微型计算机一般采用单列直插封装(SIMM)的内存条来构成具有32位或64位数据总线宽度的内存。 内存条按容量分有256MB、512MB、1GB等多种。 按内存条上所装存储器的位数分有9位和8位两种。9位的内存条带有奇偶校验位,功能全,对硬件的适应性好;而8位的内存条无奇偶校验位,成本相对较低。 按电路板的引脚数又可分为30线和72线两种通用标准。 183微型计算机原理及接口技术5.2 5.2 内存储器的构成原理内存储器的构成原理5.2.2 5.2.2 内存储器的设计内存储器的设计 内存储器的设计一般包括以下三个步骤:存储器结构的确定,存储器芯片的选择,存储器的连接。1 1存储器结构的确定存储器结构的确定 存储器结构的确定主要指采用单存储体结构还是多存储体结构。 外部数据总线为8位的微处理器,其存储器只需用单体结构;外部数据总线为16位的微处理器,一般采用双体结构,即两个8位的存储体;80486等32位的微处理器一般采用4体结构。 184微型计算机原理及接口技术图5-7 80286存储器结示意图构图5-8 80386/80486存储器结构示意图185微型计算机原理及接口技术2 2存储器的片选方法存储器的片选方法 存储芯片的地址线与CPU的低位地址总线直接相连,CPU的高位地址信号线通过译码产生存储芯片的片选控制信号。高位地址信号线的译码方式有线选法、局部译码法和全译码法三种片选方法。 5-9 存储器的片选信号产生方法 186微型计算机原理及接口技术3 3存储器连接存储器连接 存储器连接通常可按下列步骤进行:(1)根据系统实际装机存储容量,确定存储器在整个存储空间中的地址。(2)选择合适的存储芯片。(3)根据地址分配图表以及选用的译码器件,画出相应的地址位图,以此确 定片选和片内单元选择的地址线,进而画出片选译码电路。(4)画出存储器的连接图。 187微型计算机原理及接口技术例例5-15-1:为地址总线为20位的8088微处理器设计一个容量为256 KB的存储 模块,要求EPROM区为128 KB,地址从80000H开始,用2片27512芯片实现;RAM区为128 KB,地址从A0000H开始,用2片74512芯片实现。分析:地址分配表见表5-1所示。188微型计算机原理及接口技术 由于采用的存储芯片27512和74512的存储容量相同,译码电路比较简单,用一个74LS138译码芯片就可以实现。 图5-10存储器接口电路189微型计算机原理及接口技术5.3 5.3 内存条及其相关技术内存条及其相关技术5.3.1 5.3.1 概述概述 大多数内存条采用的都是DRAM存储芯片,目前PC机大多采用Synchronous DRAM(SDRAM),即同步动态内存。 习惯上内存的访问时间以纳秒为单位,但同步动态内存的工作频率受时钟信号控制,即随着时钟信号的节拍进行读写操作,因此同步动态内存的访问延迟时间(Latency)是时钟周期的(1n)倍。5.3.2 5.3.2 内存条的主要性能指标内存条的主要性能指标 衡量内存条好坏的主要性能指标有容量、延迟时间以及内存带宽等。1 1容量容量 内存最小的存储单位为二进制位,最基本的存储单位为字节(byte),常用的数量级有千字节KB(1KB = 1024B)、兆字节MB(1MB=1024KB)、吉字节GB(1GB=1024MB)。 190微型计算机原理及接口技术2 2CASCAS延迟时间延迟时间tCLtCL 列地址选通(Column Address Strobe,CAS)延迟时间tCL是反映内存读写速度最重要的性能指标,指从控制器发出列地址选通命令给内存,到内存开始提供数据之间的时间延迟。 3 3RASRAS到到CASCAS延迟时间延迟时间tRCDtRCD 行地址选通到列地址选通延迟时间tRCD(RAS-to-CAS Delay,RCD),指发出行地址选通RAS命令到发出列地址选通CAS命令之间的最小等待时间。 4 4行预充电时间行预充电时间tRPtRP 行预充电(RAS Precharge, RP)时间tRP。在对一行的访问期间要访问另一行时,需要关闭当前打开的行,再打开另一行,所需的时间即为行预充电时间。5 5行激活时间行激活时间tRAStRAS 行激活时间(Row Active Time)tRAS。DDR SDRAM内存一般设为tCL+tRCD+2。191微型计算机原理及接口技术6 6内存带宽内存带宽(Memory Bandwidth)(Memory Bandwidth) 内存带宽是衡量内存吞吐率的性能指标,带宽越大越好。 7 7串行存在探测串行存在探测SPDSPD 串行存在探测(Serial Presence Detect,SPD)是让计算机能够自动获取内存条相关配置信息的一种技术。 对于支持SPD的内存条,计算机就能够从内存条中读出参数设置,进而自动完成内存的参数设置,达到最稳定的性能。5.3.3 5.3.3 内存条的双通道技术内存条的双通道技术 确切地说,双通道技术并不是内存技术,而是一种内存控制和管理技术,该技术采用两个64位的内存控制器,理论上能够用两条同等规格的内存使内存带宽增长一倍。192微型计算机原理及接口技术 前端总线是CPU与外界进行数据交换的最主要通道。外频是CPU与主板之间的同步运行频率,也是整个计算机系统的基准频率。英特尔Pentium 4采用了四倍速率传输(Quad Data Rate, QDR)技术,大大提高了前端总线的传输带宽,使得内存传输带宽成为限制系统性能的“瓶颈”。双通道技术则很好地解决这个问题。 双通道技术的实现首先要求主板支持双通道,其次内存条也需要成对配置,一般都采用相同的内存条,这样有利于达到最佳效果。 5.3.4 5.3.4 主流内存条简介主流内存条简介1 1SDR SDRAMSDR SDRAM SDR是“Single Data Rate”的缩写,即“单倍速率”。“单倍速率”指在一个时钟周期内只能完成一次数据传输,其传输带宽为内存核心频率64/8 MB/s193微型计算机原理及接口技术2 2DDR SDRAMDDR SDRAM DDR是“Double Data Rate”的缩写,即“双倍速率”,在每个时钟周期可以完成两次读写操作,即在时钟信号的上升沿和下降沿都可以读写数据,该技术被称为“双泵”(double pumping)。 术语“等效频率”说明指一秒钟内完成的数据传输次数,单位应该是MT/s,但由于等效频率是核心频率乘以相应的倍数得到的,所以常常也就用MHz作为单位。 DDR内存的等效频率是核心频率的两倍,传输带宽为核心频率264/8 MB/s3 3DDR2 SDRAMDDR2 SDRAM DDR2内存同样采用了“双泵”技术,其内部I/O总线频率为内存核心频率的两倍,两者结合起来,使得DDR2的等效频率是核心频率的4倍,也就是所谓的“4位预取”(4-bit prefetch)技术,所以DDR2内存传输带宽的计算公式为:核心频率2(I/O总线频率倍增)2(双倍速率)64/8 MB/s194微型计算机原理及接口技术DDR2内存、DDR内存以及SDR内存的频率对比如图5-11所示。图5-11 DDR2、DDR和SDR内存的性能对比示意图195微型计算机原理及接口技术4 4DDR3 SDRAMDDR3 SDRAM DDR3内存不但明显降低了工作电压和能耗,而且进一步提升了数据传输率,达到了“8位预取”,其等效频率为核心频率的8倍,传输带宽计算公式为核心频率4(I/O总线频率倍增)2(双倍速率)64/8 MB/s 5.4 5.4 虚拟存储器及存储管理虚拟存储器及存储管理5.4.1 5.4.1 虚拟存储器的基本概念虚拟存储器的基本概念 虚拟存储器技术是为满足用户希望增大内存容量的需求而提出来的。虚拟存储器由主存和辅存组成,辅存作为主存的扩充,由硬件和操作系统自动实现存储信息的调度和管理。对程序员来说,好像微型计算机有一个容量很大的主存。 1.1.地址空间及地址地址空间及地址p 虚拟地址空间,又称为虚存地址空间;p主存地址空间,又称为实地址空间;p辅存地址空间,也就是磁盘存储器的地址空间。196微型计算机原理及接口技术2. 2. 工作原理工作原理 虚拟存储器的工作过程如图5-12所示,调度管理由硬件和操作系统自动实现,整个过程对于程序员来说是透明的。虚拟存储器的管理方式分为段式管理、页式管理和段页式管理。图5-12 虚拟存储器的工作过程197微型计算机原理及接口技术5.4.2 804865.4.2 80486的段式存储器的段式存储器 段式管理根据程序需要将存储器划分为大小不同的块,称为段。使用虚拟存储器后需要通过地址映像和地址变换将虚拟地址变换为主存的物理地址,才能访问主存单元。 80486的虚拟空间有64TB,在虚拟空间中编程用的逻辑地址为46位,其中低32位是偏移量,段寄存器中D2D15位为逻辑地址的高14位,如图5-13所示。 根据逻辑地址的高14位选择段描述符表中的段描述符,将段描述符中32位的段基址与逻辑地址中32位的偏移量相加得到32位的线性地址。 在段式存储器管理模式中,线性地址就是CPU可直接访问的物理地址。 198微型计算机原理及接口技术图5-13 线性地址的生成5.4.3 804865.4.3 80486的页式存储器的页式存储器 在页式存储器中,80486微处理器把主存和辅存空间都分别划分为4KB的页。虚拟地址空间中的页称为虚页,主存地址空间中的页称为实页。1 1地址映像与地址转换地址映像与地址转换 80486页式存储器通过页转换逻辑把线性地址转换为物理地址,页地址转换涉及三个概念:页目录表、页表和物理存储页。 199微型计算机原理及接口技术(1)页目页目录表录表 页目录表位于主存中,占用一个4KB的物理存储页。页目录表中最多包含1024项,每项4个字节,其中包含一个页转换表的物理地址,如图5-14所示。 图5-14 页目录项 (2)页表页表 页表本身也是一页,存放在主存中。一个页表中包含1024项,每项占4个字节,其中高20位(即实页号)212即为物理页的首地址。 页目录表最多可以完成210个页表的映射,每个页表完成210个页的映射,每页固定为4KB,因此通过页目录表和页表可以实现4GB的地址映射。线性地址转换成物理地址的地址转换过程如图5-15所示。 200微型计算机原理及接口技术图5-15 页式存储器的地址变换201微型计算机原理及接口技术2 2旁路转换缓冲区旁路转换缓冲区 80486设有一个称为旁路转换缓冲区(Translation Loop-aside Buffer, TLB)的高速缓存,其中保存了32个最近使用过的页转换地址。这意味着若要访问相同的存储区域,其物理地址已经在TLB中,就不必访问页目录表和页表,其地址变换速度快,所以又把TLB称为快表,而存于主存中的页表称为慢表。 据统计,对于一般程序来说,80486微处理器的TLB的命中率约为98%,也就是说,需要访问主存中二级页表的情况只占2%。由此可见,TLB极大地提高了页式存储器的性能。202微型计算机原理及接口技术5.4.4 804865.4.4 80486的段页式存储器的段页式存储器 段页式存储器把主存空间分成固定大小的页,程序按模块分段,每个段再分成若干个页。段页式存储器的地址变换如图5-16所示。段页式存储器尤其适用于多用户系统,逻辑结构清晰,每个用户都有一个逻辑名(用户号),程序可按程序段编写,每个程序段又可分为多个页,系统效率较高。图5-16 段页式存储器的地址变换203微型计算机原理及接口技术5.5 5.5 高速缓冲存储器高速缓冲存储器 高速缓冲存储器(Cache)是位于CPU与主存之间的一种存储器,容量比主存小,速度比主存快。CPU需要数据时首先在Cache中查找,Cache中没有才从主存中读取。 据统计CPU 90%以上的存储器访问都发生在Cache中,只有不到10%的几率需要访问主存,即命中率可达90%以上,因此少量Cache可以极大地提高存储系统的访问速度。 现在CPU一般都集成有一级高速缓存L1和二级高速缓存L2,高端的工作站或家用PC机还可能配置三级高速缓存L3,存储容量逐级增大,存取速度逐级降低。 此外CPU内部还有一个专门用于地址转换的Cache,即快表TLB。TLB中存放操作系统页表的一部分,通过它可以提高虚地址转换为实地址的地址转换速度。CPU中完成地址转换的部件称为“存储器管理单元”(Memory Management Unit, MMU)。 204微型计算机原理及接口技术5.5.1 5.5.1 高速缓存的工作原理高速缓存的工作原理 当CPU需要读写主存单元时,首先检查Cache中是否有所需数据,如果有就直接访问Cache,称为“命中”;如果没有就访问主存,并将主存单元所在的块调入Cache。如果Cache中没有空闲的块,还需要根据替换算法找出某个Cache块,将其写回主存,并从主存调入新的块。 Cache块的大小是固定的,类似于虚拟存储器中的页,但Cache块的大小比页小得多。Cache块结构如图5-17所示。图5-17 Cache块结构图 标签是存储单元地址的一部分,存储单元的地址从高到低划分为标签、索引和块内偏移,如图5-18。 图5-18 Cache块结构图205微型计算机原理及接口技术5.5.2 5.5.2 地址映像地址映像 主存和Cache都划分为多个大小固定的块,由于Cache的容量远远小于主存,因此一个Cache块要对应多个主存块,按某种规则将主存块调入Cache块中,称为“相联”(Associativity)。 1 1全相联(全相联(Fully AssociativeFully Associative)映像)映像 主存中的块可装入cache中的任意块位置称为全相联。全相联方式具有块冲突低,空间利用率高的优点,但无法根据索引值定位Cache块,需要检查所有Cache块的标签,标签位数增大,查找时间长,地址变换速度慢,需要较复杂的硬件支持。2 2直接映像直接映像(Direct Mapped)(Direct Mapped) 主存中每一块只能装入到Cache中唯一的特定块位置的方法称为直接映射。直接映射中主存块与Cache块之间为N:1的映射关系,具有地址变换速度快实现简单的优点,但块冲突率高,空间使用效率低。206微型计算机原理及接口技术3 3N N 路组相联映像路组相联映像 为了克服直接映射的缺点,把Cache划分为多个组,每组有N个块,主存块与Cache组之间采用直接映像方式,与组内的Cache块之间采用全相联映像方式。图5-19显示了2路组相联的地址映像情况。 图5-19 2路组相联 207微型计算机原理及接口技术5.5.3 5.5.3 替换算法和写策略替换算法和写策略 Cache未命中且Cache已满时,需要根据某种规则找到一个Cache块,将待访问的主存块调入,替换选中的Cache块。替换算法有p 先进先出算法(First In First Out, FIFO)p 最久未使用算法(Least Recently Used, LRU)p 最近使用算法(Most Recently Used, MRU)p 随机替换算法(Random Replacement, RR) 修改Cache块数据时需要保持内存块数据与Cache块数据的一致性。写策略决定何时将Cache块数据写回主存。写策略有p 通写(Write-Through)p 回写(Write-Back)208微型计算机原理及接口技术5.5.4 804865.5.4 80486微处理器的高速缓存微处理器的高速缓存 80486微处理器带有8 KB的一级高速缓存L1和256 KB的二级高速缓存L2。L2集成在主板上,L1集成在CPU内部。 这时L1没有区分指令缓存和数据缓存。一个数据量较大的程序会很快占满高速缓存,导致没有空间用于缓存指令,因此后来的微处理器通常将一级高速缓存分为指令缓存和数据缓存。1 1片内片内CacheCache的结构的结构 80486微处理器的片内Cache既可以存放指令代码,又可以存放数据。8KB的片内Cache采用4路组相联结构,每组包含4个Cache块,每块可存放16字节的数据。2 2工作过程工作过程 CPU需要访问某个主存单元时,首先根据主存地址中的索引位确定该主存块对应的组,然后用主存地址中的标签与组中各Cache块的标签进行比较,若匹配,意味着Cache“命中”,否则需要将主存块调入该组某个Cache块。209微型计算机原理及接口技术6 输入输入/输出方式及中断系统输出方式及中断系统210微型计算机原理及接口技术6.1 I/O6.1 I/O接口接口6.1.1 I/O接口的基本概念6.1.2 I/O端口的编址方式6.1.3 输入/输出指令执行的基本过程6.2 6.2 常用输入常用输入/ /输出方法输出方法6.2.1无条件传送方式6.2.2 查询传送方式6.2.3 中断传送方式6.2.4 直接存储器存取方式(DMA)6.2.5 I/O处理机传送方式6.3 6.3 中断及中断控制器中断及中断控制器8259A8259A6.3.1中断6.3.2中断控制器8259A6.3.3中断控制器8259A应用举例211微型计算机原理及接口技术6.1 I/O6.1 I/O接口接口6.1.1 I/O6.1.1 I/O接口的基本概念接口的基本概念 I/O接口是连接微型计算机与外设的逻辑控制部件,有硬件部件、也有软件部件,在微型计算机与外设间起着传输状态与命令信息,实现数据缓冲、数据格式转换等作用。 1. I/O1. I/O接口的主要功能接口的主要功能 I/O接口电路应具备译码选择功能,能进行数据寄存和缓冲,并能对外设进行控制和监视。 2. I/O2. I/O接口的分类接口的分类 按接口与外设间信息传送的方式进行分类,可分为并行接口和串行接口; 按接口的可编程性可分为可编程接口和不可编程接口。 按接口的用途进行分类有专用接口和通用接口。 212微型计算机原理及接口技术 3. I/O接口的基本结构 CPU与外设交换的信息主要有三类,即数据信息、状态信息和控制信息。I/O接口的一般结构框图如图6-1所示。 图6-1外设接口一般结构框图 213微型计算机原理及接口技术6.1.2 I/O6.1.2 I/O端口的编址方式端口的编址方式 通常有两种编址方式:存储器统一编址方式和I/O端口独立编址方式。 在存储器统一编址方式中,CPU将I/O端口与存储器单元同等对待,一起编址,每个端口占用一个存储单元地址,其I/O空间属于存储空间的一部分。 在I/O端口独立编址方式中,CPU将I/O端口与存储器单元区别对待,独立编址。此时I/O空间不属于存储空间的一部分,存储器地址和I/O端口地址可以是重叠的。 6.1.3 6.1.3 输入输入/ /输出指令执行的基本过程输出指令执行的基本过程1. 1. 输入(输入(ININ)指令的执行过程)指令的执行过程输入指令格式为: IN AL/(AX/EAX),(端口地址)该指令的执行过程为: CPU将端口地址送上地址总线 A15A0。通过地址译码器对地址信号的译码,找到待操作的I/O端口在I/O空间的物理位置。 214微型计算机原理及接口技术 CPU向I/O端口发出控制信号M/IO和W/R,并使其均为低电平。该信号的作用是通知被选中的外设将数据通过端口送上数据总线(DB)。 CPU采样数据总线(DB),获取数据。 CPU撤消发出的控制信息,一条输入指令执行完毕。 2. 2. 输出(输出(OUTOUT)指令的执行过程)指令的执行过程输出指令格式为: OUT(端口地址),AL/(AX/EAX)该指令的执行过程为: CPU将端口地址送上地址总线 A15A0。通过地址译码器对地址信号的译码,找到待操作的I/O端口在I/O空间的物理位置。 CPU将欲送至端口的数据送上数据总线,以等待外设接收。 CPU向I/O端口发出控制信号 M/IO(低电平),W/R(高电平),该信号使数据锁存至端口输出端,外设此时便可接收到CPU输出的数据。 CPU撤消发出的控制信息,一条输出指令执行完毕。215微型计算机原理及接口技术6.2 6.2 常用输入常用输入/ /输出方法输出方法 常见的CPU与I/O接口之间的数据传送方式有:无条件传送、查询传送、中断控制、直接存储器存取(Direct Memory Access,简称DMA)和I/O处理机传送方式。 6.2.1 6.2.1 无条件传送方式无条件传送方式 无条件传送方式是针对一些简单、低速、随时“准备好”的外部设备。这些外部设备工作方式十分简单,CPU可随时读出它们的数据,它们也可随时都接收CPU输出的数据。无条件传送方式的接口电路,如下图所示。图6-2 无条件传送方式接口电路示意图216微型计算机原理及接口技术6.2.2 6.2.2 查询传送方式查询传送方式 查询传送方式也可称为有条件传送方式。该方式是针对那些工作速度远低于CPU工作速度的外部设备,CPU在与这类外部设备进行数据传送之前,必须先检查外部设备的状态,若外设已准备好,则可以对外部设备进行数据传送,否则就需等待,直到外部设备准备就绪为止。查询式输入接口电路如图6-3所示。 图6-3 查询式输入的接口电路示意图217微型计算机原理及接口技术例:外部设备与系统的接口电路如下图所示。当外部设备已经准备好可以接收数据时,其BUSY=0(为低电平),外部设备处于忙状态时,BUSY=1(为高电平)。试编写程序实现将以BUF起始的100个字节单元中的数据通过该接口电路传送给外部设备。 图6-4 查询式输出的接口电路示意图218微型计算机原理及接口技术设数据端口地址为10H,状态端口地址为12H,能实现题目要求的程序段如下: BUF DB 11H,22H,33H,DPORTEQU10HSPORTEQU 12H LEABX,BUFMOVCX,100AGAIN: INAL,SPORTTEST AL,01H JNZ AGAIN MOV AL,BX OUT DPORT,ALINCBXLOOP AGAIN 219微型计算机原理及接口技术6.2.3 6.2.3 中断传送方式中断传送方式 在外部设备准备好后,向CPU发出数据传送请求,如果响应该请求的条件成立,CPU则暂停正在执行的程序,去完成与外部设备的数据传送任务,然后再恢复执行原来程序的方式称为中断传送方式。能实现中断传送方式的输入接口示意图如图6-5所示。 图 6-5 中断传送方式输入接口电路示意图220微型计算机原理及接口技术6.2.4 6.2.4 直接存储器存取方式(直接存储器存取方式(DMADMA) 直接存储器存取(Direct Memory Access,DMA)传送方式。DMA方式的基本思想是在外设与主存储器之间开辟直接的数据传送通路。为实现这种传送方式而设计的专用控制芯片,称为DMA控制器(DMAC)。6.2.5 I/O6.2.5 I/O处理机传送方式处理机传送方式 I/0处理机传送方式即把原来由CPU完成的I/O操作与控制交给I/O处理机(IOP)去完成。I/O处理机是与主CPU不同的处理器,它有自己的指令系统,可以执行程序来实现对数据的处理。 221微型计算机原理及接口技术6.3 6.3 中断及中断控制器中断及中断控制器8259A8259A6.3.1 6.3.1 中断中断1.1.中断的基本概念中断的基本概念 所谓“中断”是指CPU在正常运行程序期间,由于内部或外部某个非预料事件的发生,使CPU暂停正在运行的程序,而转去执行处理引起中断事件的程序(中断服务程序),然后再返回被中断了的程序,继续执行。 图6-6 CPU中断执行流程示意图 222微型计算机原理及接口技术 (1)中断类型 80X86微型计算机的中断系统中最多可以有256种不同的中断源,按中断源的性质可以将其划分为内部中断(软中断)和外部中断(硬件中断)两大类。内部中断是由CPU执行某些指令(如INT指令),或执行程序过程中产生的某些异常所引起的中断。外部中断则是由外部硬件引起的中断。这256个中断源分别对应的中断类型编号为0255 。 1)内部中断 内部中断也称为软中断,它和外部硬件无关,它主要由CPU执行了某条指令或是在程序执行过程中出现某些需要处理的异常而产生的中断。 其内部中断主要有以下6类: 除法出错中断0型中断 单步中断1型中断 断点中断3型中断 溢出中断4型中断 BOUND指令中断5型中断 INT n指令中断n型中断223微型计算机原理及接口技术 2)外部中断 外部中断主要是由外部硬件设备或I/O接口引起的中断。 非屏蔽中断(NMI) 非屏蔽中断属于边沿触发输入,由CPU的NMI端上升沿触发(由0跳变到1)产生。它不受CPU内部的中断允许标志IF的限制,其中断类型号为2。 可屏蔽中断(INTR) 由外部设备提出的中断请求大多数都是可屏蔽中断。可屏蔽中断的中断请求信号从CPU的INTR端引入,高电平有效。它受CPU内部的中断允许标志IF的限制,可屏蔽中断的中断类型号可为32255。 (2) 中断向量和中断向量表 80X86中断系统有256个中断源,每个中断源都对应一个中断服务程序。CPU若想根据中断请求信号响应某中断源的中断请求,就必须找到该中断源对应的中断服务程序的入口地址。中断服务程序的入口地址(段基址和偏移地址)称为中断向量,存放各中断服务程序入口地址的表就称为中断向量表。 224微型计算机原理及接口技术 1)实模式下的中断向量表 实模式下,80X86中断系统在内存的最低1KB空间建立了一张可存放256个中断向量的中断向量表,见图6-7。 图6-7 中断向量和中断向量表 225微型计算机原理及接口技术 2)保护模式下的中断向量表 保护模式下,每个中断源对应一个中断描述符,用于说明中断服务程序的入口地址及中断服务程序的属性,所有中断描述符均存放在中断描述符表(Interrupt Descriptor Table,IDT)中。 IDT可位于内存空间中的任何位置,它在内存空间中的起始地址由中断描述符表寄存器(IDTR)指定。IDTR共有48位,它的高32位保存了IDT的基地址,低16位保存IDT的界限即表长度。IDT中可存放256个中断描述符,每个中断描述符有64位,共8个字节,如下图所示。图6-8 中断描述符格式226微型计算机原理及接口技术 3)中断向量表的设置 在执行中断服务程序前,必须将中断服务程序的入口地址填入系统的中断向量表(实地址下)或中断描述符表(保护模式下)中。实模式下填充中断向量表的方法主要有两种: 用程序来设置中断向量; 用DOS调用功能实现。(3) 中断优先级与中断嵌套 80486中断系统有256个中断源,当有2个或2个以上的中断源同时申请中断时, CPU总是首先响应优先级最高的中断请求。而且当CPU正在响应某一中断源的请求,执行为其服务的中断服务程序时,有优先级更高的中断源发出请求,CPU会中断正在执行的服务程序而转入为高级别中断源服务,高级别服务过程结束后,再返回到被中断的服务程序,直至所有中断处理结束后返回主程序。这种中断套中断的过程称为中断嵌套。 227微型计算机原理及接口技术2. 2. 中断响应的过程中断响应的过程(1)CPU响应中断的条件 所有类型的中断请求都必须在CPU执行完当前指令后才予以响应。对于可屏蔽中断(INTR)请求,通常还必须满足以下条件才能响应。 CPU内部中断是开放的。 现行指令内无总线请求,没有高优先级的中断请求正在被响应或正发出、正挂起。 CPU在现行指令结束后,即运行到最后一个机器周期的最后一个T状态时,才能采样INTR线而响应可能提出了的外中断请求。(2) 中断响应过程 实模式下中断响应过程分为内中断及NMI中断响应过程和外中断(INTR)的响应过程。228微型计算机原理及接口技术 1)内中断及NMI中断响应过程 CPU自动产生中断类型号n。 (SP)-2(SP),标志寄存器F内容入栈。 (SP)-2(SP),当前代码段寄存器CS内容入栈。 (SP)-2(SP),当前指令指针寄存器IP内容入栈。 IF=0(禁止INTR中断),TF=0(禁止单步中断)。 从中断向量表中取中断服务程序入口地址,即将00000H+4n单元的字内容送IP,00000H+(4n+2)单元里的字内容送CS。 转中断服务程序。 执行中断服务程序并返回,弹出IP,CS,F,返回断点,继续执行。 2)外中断(INTR)的响应过程 CPU发出两个中断响应信号INTA,发第1个INTA时,通知外部硬件准备好待提供的中断类型号,并送上数据总线;发第2个INTA时,CPU从当前数据总线上取中断类型码n(通常由管理INTR的控制器8259A提供)。 步骤与1)内中断及NMI中断响应过程相同。229微型计算机原理及接口技术 保护模式下的CPU响应中断并进入中断服务程序的过程如图6-9所示。图 6-9 80486保护模式下中断/异常处理程序进入过程示意图230微型计算机原理及接口技术6.3.26.3.2中断控制器中断控制器8259A8259A 8259A是Intel公司专为控制优先级中断而设计的可编程序中断控制器。 8259A的主要功能为: (1)每一片8259A可以支持和管理8级优先权中断(即管理8个中断源),通过多片8259A的级联,最多可管理64级优先中断控制系统(既可管理64个中断源)。 (2)8259A能对它所管理的每个中断源进行单独的允许与禁止,通过编程实现。 (3)具有多种优先权管理方式,有完全嵌套方式、自动循环方式、特殊循环方式、特殊屏蔽方式和查询方式五种,可通过程序动态地选择这些管理方式。 (4)中断响应时能够自动提供中断类型号,CPU通过中断类型号可快速得到中断服务程序入口地址。231微型计算机原理及接口技术1.8259A的内部结构与引脚功能 内部结构 8259A的内部结构如图6-10所示。 图6-10 8259A的内部结构图232微型计算机原理及接口技术 引脚功能 8259A有28个外部引脚,采用双列直插式封装。1)与中断相关的引脚 IR0IR7外部中断请求输入、INT中断请求线和 中断响应信号。2)与系统总线相连的引脚 D0D7数据信号线、 读控制信号、 写控制信号、 片选信号和A0地址信号。3)与级联相关的引脚 (从编程/缓冲器允许)和 CAS0CAS2(级联信号)。4)电源和接地引脚 233微型计算机原理及接口技术 接口技术 由于8259A内部具有三态数据总线缓冲器,因而8259A的数据信号线可直接同对应的系统总线相连接,片选、地址及控制信号也可与系统总线中的对应信号相连。图6-11为8259A与IBM PC总线的接口电路示意图。图 6-11 8259A与IBM PC总线的接口电路示意图234微型计算机原理及接口技术2. 8259A2. 8259A的工作方式的工作方式8259A可通过编程设置的工作方式有5类。 (1) 中断优先级管理方式有关的工作方式 8259A有4种优先级管理方式,所有的优先级管理方式均可通过编程来设置。 1)中断嵌套方式 针对系统中8259A的级(片)数有两种中断嵌套方式:全嵌套方式和特殊全嵌套方式。 2)自动循环优先级方式 自动循环优先级方式适应于多个中断源优先级相同的场合,一个中断源的中断请求得到服务以后,其优先级将自动降为最低。 3)特殊循环优先级方式 特殊循环优先级方式即为指定优先级顺序方式。它可通过对8259A编程指定某中断源的优先级为最低,其他自动循环。 235微型计算机原理及接口技术 4)特殊屏蔽方式 当设置特殊屏蔽方式时,只有与当前正在被处理中断级别相同的中断请求被禁止,所有的其他中断请求(高级别或低级别)都被允许通过。 (2) 与中断结束方式有关的工作方式 8259A设置了两种中断结束方式,使CPU在中断返回时将ISRi清“0”。这两种中断结束方式分别称为:自动中断结束(AEOI)方式和非自动中断结束(EOI)方式。 (3) 与中断请求触发方式有关的工作方式 8259A的中断触发方式有两种,分别为边沿触发方式和电平触发方式。 (4) 程序查询方式 当设置8259A工作在该方式下时,CPU可利用软件查询方式来响应与8259A相连的8级中断请求,向8259A发送一个查询命令后,再读IRR寄存器内容,以识别外部是否有中断请求及优先级最高的中断请求。236微型计算机原理及接口技术 (5) 读8259A相关内部寄存器状态方式 8259A内部的IRR、ISR、IMR三个寄存器内容均可通过相应的输入命令读入CPU中。3. 3. 应用编程应用编程 中断控制器8259A内部有9个可读写的寄存器分别是:初始化命令寄存器 ICW1、ICW2、ICW3、ICW4;操作命令寄存器 OCW1(IMR)、OCW2、OCW3;中断服务寄存器 ISR;中断请求寄存器 IRR。有两个I/O端口地址:即A0=0时,偶地址端口;A0=1时,奇地址端口。 对这9个寄存器的读写操作均可通过这两个端口实现。对8259A进行初始化编程或操作编程实质上就是对4个初始化命令寄存器和3个操作命令寄存器按一定顺序进行写入操作的过程。 (1) 8259A的初始化编程 对8259A的初始化编程是通过对初始化命令寄存器写入初始化命令字ICW1ICW4来实现的,其写入顺序如图6-12所示。237微型计算机原理及接口技术6-12 8259A初始化流程图238微型计算机原理及接口技术1)初始化命令字ICW1ICW1命令字格式如图6-13所示。 图 6-13 ICW1命令字239微型计算机原理及接口技术 2)初始化命令字ICW2 ICW2为中断向量寄存器,主要用于设定80X86模式系统的中断向量号(中断类型号)的高5位T7T3。ICW2命令字格式如图6-14所示。 图6-14 ICW2命令字 3)初始化命令字ICW3 ICW3是8259A的级联命令字,单片8259A工作时不需写入。多片8259A级联时有主片和从片之分,需要分别写入主、从8259A的ICW3。其命令字格式如图6-15所示。图 6-15 ICW3命令字240微型计算机原理及接口技术4)初始化命令字ICW4 ICW4命令字格式如图6-16所示。 图 6-16 ICW4命令字(2)8259A的操作编程 1)操作命令字OCW1 OCW1用于设置或清除对中断源的屏蔽,其命令字格式如图6-17所示。 图6-17 OCW1命令字241微型计算机原理及接口技术 2)操作命令字OCW2 OCW2又称为中断方式命令字,用于设置部分中断优先级方式及中断结束方式,其命令字格式如图6-18所示。 图 6-18 OCW2命令字242微型计算机原理及接口技术 3)操作命令字OCW3 OCW3操作命令字用于设置查询方式、特殊屏蔽方式、以及读8259A的IRR、ISR的当前状态。其命令字格式如图6-19所示。 图 6-19 OCW3命令字243微型计算机原理及接口技术6.3.3 6.3.3 中断控制器中断控制器8259A8259A应用举例应用举例1.8259A初始化编程举例例:某8086系统中,利用一片8259A管理了8个中断源,对应的中断向量(类型) 号为10H17H,端口地址为20H和21H。中断请求信号为电平触发,采用全嵌套、非缓冲、自动结束中断方式。请完成该8259A的初始化编程。 初始化程序段如下: MOVAL,1BH;将ICW1写入A0=0(偶地址) OUT 20H,AL MOVAL,10H ;将ICW2写入A0=1(奇地址) OUT 21H,AL MOVAL,03H;将ICW4写入A0=1(奇地址) OUT 21H,AL244微型计算机原理及接口技术2. 8259A应用举例例:8259A与IBM PC机硬件连接电路图如图6-20所示。若要求每按一次开关K,则在PC机屏幕上输出字符串“8259A INTERRUPT!”,请编程实现(设中断类型号为50H)。 图6-20 例6-8 8259A与IBM PC硬件连接示意图245微型计算机原理及接口技术 实现题目要求的汇编语言源程序如下: DATASEGMENTMESSDB 8259A INTERRUPT!,0AH,0DH,$DATAENDSCODE SEGMENTASSUMECS:CODE, DS:DATA START: CLI;关中断MOVAX,DATAMOV DS,AX;- 8259A初始化 -MOV AL,13H OUT20H, AL;写ICW1MOV AL, 50H;中断类型号50HOUT 21H,AL;写ICW2MOV AL,01H;非自动结束OUT 21H,AL;写ICW4246微型计算机原理及接口技术;-设置中断向量- MOVAX,0MOV DS,AX MOVBX,4*50H ;中断类型号50H乘以4MOV AX,OFFSET INT-P MOVBX,AXMOV AX,SEG INT-P MOV BX+2,AX ;-填写中断屏蔽字OCW1-INAL,21H;读IMRAND AL,0BFHOUT 21H,AL ;-开放CPU中断-STI ; 开中断;-等待中断-WAIT: HLT JMPWAIT247微型计算机原理及接口技术;-中断服务程序-INT-PPROCFAR; 中断服务程序PUSHDSPUSH AXPUSH DXSTIMOV AX,DATAMOV DS,AXMOV DX,OFFSET MESSMOV AH,09HINT 21HMOV AL,20HOUT 20H,ALPOP DXPOP AX POP DSIRET INT-P ENDPCODEENDSEND START 248微型计算机原理及接口技术3. 82593. 8259在在IBM PCIBM PC机中的应用机中的应用 (1) 8259A在IBM PC/XT机中的应用 在IBM PC/XT系统中CPU是8086,系统中只有一片8259A,可管理8个可屏蔽外部中断源,硬件连接如图6-21所示。 图6-21 8259A在IBM-PC/XT机中连接示意图249微型计算机原理及接口技术 (2) 8259A在IBM PC/AT机中的应用 在IBM PC/AT系统中CPU是80286,系统中使用了二片8259A,采用级联方式连接,共管理15个外部可屏蔽中断源,其硬件连接如图6-22所示。 图 6-22 IBM PC/AT机连接示意图250微型计算机原理及接口技术第7章可编程接口芯片可编程接口芯片251微型计算机原理及接口技术7.1 7.1 可编程定时器可编程定时器/ /计数器计数器82548254及其应用及其应用7.1.1Intel 8254 内部结构及引脚功能7.1.2工作方式7.1.3应用编程 7.1.4应用举例 7.1.5 82548253在IBM PC系列机上的应用7.2 7.2 可编程并行输入可编程并行输入/ /输出接口芯片输出接口芯片82558255及其应用及其应用7.2.1 Intel 8255内部结构及引脚功能7.2.2工作方式 7.2.3 应用编程 7.2.4 应用举例252微型计算机原理及接口技术7.3 7.3 可编程串行输入可编程串行输入/ /输出接口芯片输出接口芯片1655016550及其应用及其应用7.3.1串行通信基础 7.3.216550内部结构及引脚功能7.3.316550的内部寄存器 7.3.4应用编程 7.3.5 应用举例 7.4 7.4 可编程可编程DMADMA控制器控制器82378237及其应用及其应用7.4.1 DMA控制器8237A的内部结构及引脚功能7.4.28237A的传送方式及传送类型 7.4.3 8237A的内部寄存器 7.4.4 应用编程 7.4.5 应用举例253微型计算机原理及接口技术7.1 7.1 可编程定时器可编程定时器/ /计数器计数器82548254及其应用及其应用7.1.1 Intel 8254 7.1.1 Intel 8254 内部结构及引脚功能内部结构及引脚功能(1)内部结构8254的内部结构见图7-1。每个计数器有6种工作方式可通过软件编程来进行选择,其计数方式可采用二进制或十进制(BCD码)方式。 254微型计算机原理及接口技术1) 计数器 8254内部有3个16位计数器,其内部结构完全相同,均有一个16位减1计数器,一个16位计数初值寄存器和一个输出锁存器 。 工作时,首先将计数初值写入计数初值寄存器,在计数过程中,计数器每接收到一个来自CLK引脚的脉冲信号,减1计数器则会将计数初值减1,并将当前计数值存于输出锁存器,当减1计数器将计数初值减为0时,表明一次定时或计数工作完成,此时会通过OUT引脚输出一结束信号。 255微型计算机原理及接口技术2)控制字寄存器 控制字寄存器专门用于存放能对8254内部计数器的工作方式和计数方式等进行选择的控制字。3)数据总线缓冲器 数据总线缓冲器为8位的双向三态缓冲器,CPU通过该数据总线缓冲器可对8254进行读/写操作。4)读/写控制逻辑 读/写逻辑接受来自系统总线的地址及读写控制信号,以控制整个芯片的工作。256微型计算机原理及接口技术(2) 引脚功能 8254的外部引脚如图7-3。 CLK:时钟输入信号。 GATE:门控输入信号。 OUT:计数器输出信号。 D0D7:数据信号线。 RD:读控制信号。 WR:写控制信号。 CS:片选信号。 A1、A0:地址信号。 257微型计算机原理及接口技术(3) 接口技术 图中计数器0的地址为20CH、计数器1的地址为20DH、计数器2的地址为20EH、控制字寄存器的地址为20FH。 258微型计算机原理及接口技术7.1 7.1 可编程定时器可编程定时器/ /计数器计数器82548254及其应用及其应用7.1.27.1.2工作方式工作方式1.方式0:计数结束中断方式 该方式设定后, OUT端变低,在GATE为高电平的前提下, CPU将计数初值写入计数初值寄存器后的下一个CLK脉冲下降沿计数器开始工作(软件启动),即开始减1计数,其OUT端保持低电平。当计数值减为0即计数结束时,OUT端变为高电平,并且一直保持到该计数器再次写入计数初值或重新写入控制字。259微型计算机原理及接口技术2.方式1:硬件可重触发单稳方式 方式1下的计数器相当于一个可编程的单稳态电路,其触发输入信号为GATE。该方式中,在CPU对计数器写入控制字之后,0UT引脚变为高电平,在CPU将计数初值写入计数初值寄存器后,计数器并未开始工作(即计数),而是等待外部门控脉冲GATE启动(硬件启动)。当GATE信号由低变高(上升沿起触发作用)后的下一个CLK脉冲下降沿时,该计数器开始工作(即计数),计数器的计数值被减1,同时OUT引脚变为低电平,并一直保持到计数值被减为0时恢复为高电平。若外部GATE再次触发启动,则可以再产生一个负脉冲,由此可见该方式是允许多次重复触发的工作方式。260微型计算机原理及接口技术3.方式2:频率发生器 方式2下的计数器相当于一个频率发生器。该方式中, CPU对计数器写入控制字后,OUT引脚变为高电平;在GATE为高电平的前提下,当CPU将计数初值写入计数初值寄存器后的下一个CLK脉冲下降沿,该计数器开始计数(软件启动),其OUT引脚保持高电平不变;当计数器的计数值被减为1时,OUT引脚由高电平变为低电平,持续一个CLK周期后,OUT引脚恢复为高电平,且计数器开始重新计数,如图7-7所示。261微型计算机原理及接口技术4.方式3:方波发生器 方式3下的计数器相当于一个方波发生器。该方式中,在CPU向计数器写入控制字后,OUT引脚输出高电平;在GATE为高电平的前提下,当CPU将计数初值写入计数初值寄存器后就自动开始计数(软件启动),其OUT引脚仍输出高电平;当计数到计数初值的一半时,OUT引脚变为低电平;直到计数值被减为0时,OUT引脚输出又变为高电平,并重新开始计数,如图7-8所示。262微型计算机原理及接口技术5.方式4:软件触发选通方式 方式4和方式0类似,该方式下,当CPU向计数器写入控制字后,OUT引脚变为高电平;在GATE为高电平的前提下,CPU将计数初值写入计数初值寄存器后的下一个CLK脉冲下降沿开始计数(软件启动),当计数初值被减为1时,OUT引脚由高电平变为低电平;经过一个CLK周期,OUT引脚又由低电平变为高电平,并且一直保持到该计数器再次写入计数初值或重新写入控制字。如图7-9所示,方式4与方式0的主要区别在于OUT引脚的输出波形不同。 263微型计算机原理及接口技术6.方式5:硬件触发选通方式 方式5与方式4类似,其主要区别是启动方式不同。方式5下,CPU向计数器写入控制字后,OUT引脚变为高电平;在CPU将计数初值写入计数初值寄存器后,计数器不计数,只有当GATE由低电平变为高电平(上升沿)时,开始计数(硬件启动)。当计数初值被减为1时,OUT引脚由高电平变为低电平,经过一个CLK脉冲,OUT引脚又由低电平变为高电平并停止计数,如图7-10所示。264微型计算机原理及接口技术7.1.37.1.3 应用编程应用编程 要使某应用系统中的可编程定时器/计数器8254工作(即内部计数器开始计数),必须由CPU对该8254写入控制字和计数初值,即对8254进行初始化编程。1.方式控制字 可编程定时器/计数器8254的每个计数器都需要写入方式控制字后,才能工作。方式控制字格式如图7-11所示。该方式控制字应写入到控制字寄存器,即A1A011的端口地址(控制字寄存器地址)。7.1 7.1 可编程定时器可编程定时器/ /计数器计数器82548254及其应用及其应用265微型计算机原理及接口技术2.写入计数初值 当仅将方式控制字写入计数器的控制字寄存器后,计数器还不能工作(即开始计数),只有将计数初值也写入计数初值寄存器后,计数器才有可能工作,因此写入计数初值是对8254进行初始化的必要条件之一。 若8254中某计数器作定时器使用,此时有:T定时=tCLKN (7-1) (7-1)式中T定时为定时时间,tCLK为由CLK接入脉冲的周期,N为计数初值。 由(7-1)式可得: 计数初值 N= T定时/ tCLK (7-2)将计数初值N写入对应的计数器,该计数器才有可能开始工作。266微型计算机原理及接口技术 例例7-1:7-1:设8254的计数器0作定时器,定时时间为20ms,若CLK0引脚接入的脉冲频率fCLK为2KHz,问此时的计数初值N为多少? 分析:分析:由题可知:T定时=20ms,tCLK=1/fCLK,由(7-2)式得: 计数初值N=40。 若8254的计数器0作计数器使用,此时计数初值N为其所需计的脉冲个数。 如:设8254的计数器0作计数器,需计100个脉冲,则此时的计数初值N就等于100。将计数初值N写入计数初值寄存器时,应按照方式控制字中规定的格式进行。 267微型计算机原理及接口技术3.读取计数值8254的读操作只能读取计数值,不能读控制字。通过对计数器端口地址的读操作,可以读取计数器的当前计数值。若要读取16位计数值则需分两次进行,先读低8位,后读高8位。读取过程如下:先向8254写入锁存命令(使方式控制字D5D400,用D7D6确定锁存的计数器,其它位没有用),将计数器的当前计数值锁存(计数器可继续计数)进输出锁存器。然后,CPU读取锁存的计数值。268微型计算机原理及接口技术 4.8254的读回命令这个命令可以令3个计数器的计数初值和状态同时被锁存或锁存其中一个或两个计数器的计数初值和状态,其命令格式如图7-12所示。8254的每个计数器都有一个状态字可由读回命令将其锁存后,供CPU读取。269微型计算机原理及接口技术 读回命令写入8254的控制端口。此时,被选中的计数器的状态字及当前计数值并没有送入CPU内部的任何一个寄存器,只有再对着被选中计数器的端口地址执行输入指令,方可得到该计数器的状态字及计数值。读取的顺序是:第一条输入指令的执行读取状态字,状态字的格式如图7-13所示,第二条输入指令的执行读取8位的计数值(若为16位计数值,则须执行第三条输入指令,读取高8位计数值)。270微型计算机原理及接口技术1.8254的初始化编程 例例7-27-2 :设8254与CPU的接口电路如图7-4所示,如要求该8254的计数器0为计数方式,每计50个脉冲中断一次;计数器1为定时方式,定时时间为20ms(设CLK1 引入的时钟频率为2MHZ),请编制出有关的初始化程序。7.1 7.1 可编程定时器可编程定时器/ /计数器计数器82548254及其应用及其应用7.1.4 7.1.4 应用举例应用举例271微型计算机原理及接口技术 分析:分析:由题可知,因需计数器0连续工作,故其工作方式可选择方式2或方式3;题目要求计数50个脉冲,由7.1.3可知,计数初值为50,计数方式可选用二进制计数方式或十进制计数方式;如使计数器0选用工作方式2,十进制(BCD码)计数方式,则方式控制字为如下:即:计数器0的方式控制字为15H;计数初值50D转换为BCD码为01010000BCD,也可用50H表示。272微型计算机原理及接口技术 按题目要求,计数器1计数初值N可由公式(7-2)得,即:N= T定时/ tCLK =20ms/0.5us=40000故:计数器1可选工作方式2;二进制计数方式(因计数器初值超过了4位十进制数可表示的范围),计数初值需分两次写入;由此可得其方式控制字为:即:计数器1的方式控制字为74H。 由图7-4可知,该8254的各计数器及控制字寄存器的端口地址为:20CH20FH,能实现题目要求的初始化程序段为:273微型计算机原理及接口技术 MOV DX,20FH ;计数器0初始MOV AL,00010101BOUT DX,AL MOV DX,20CH ;计数器0送NMOV AL,50HOUT DX,AL MOV DX,20FH ;计数器1初始MOV AL,01110100BOUT DX,AL MOV DX,20DH ;计数器1送NMOV AX,40000DOUT DX,AL ;先写低字节MOV AL,AH OUT DX,AL ;后写高字节274微型计算机原理及接口技术 2. 8254应用举例 例例7-37-3:8254与系统连接示意图如图7-14所示。已知计数器0的CLK0引脚输入的信号频率为2MHz,若希望通过该8254的计数器输出如图所示的周期性的秒脉冲信号,请编程实现。275微型计算机原理及接口技术 分析分析:已知计数器0的CLK0引脚输入的频率为2MHz,若令其计数初值为最大(65536),由公式(7-1)可知,其定时时间T为: T=65536/2MHz=32.768ms 故:此时由OUT0输出的脉冲信号的最大周期为32.768ms,而不是1s。解决方法为: 硬件级联法硬件级联法 硬件连接如图7-15,可令计数器0定时20ms,计数器1计数50次,即可达到由OUT1端输出周期为1s的脉冲串。 276微型计算机原理及接口技术7.1.5 82547.1.5 825482538253在在IBM PCIBM PC系列机上的应用系列机上的应用 PC系列微型计算机中使用一片8254/8253。其3个计数通道分别用于日历时钟计时、动态存储器DRAM定时刷新和控制扬声器发声,右图为PC系列微型计算机中的8254/8253与PC机的连接图。7.1 7.1 可编程定时器可编程定时器/ /计数器计数器82548254及其应用及其应用277微型计算机原理及接口技术7.2 7.2 可编程并行输入可编程并行输入/ /输出接口芯片输出接口芯片82558255及其应用及其应用 计算机系统的信息交换有两种方式:并行数据传输方式和串行数据传输方式。并行数据传输是以计算机的字长为传输单位,通常是8位、16位、32位或64位等,一次可同时在总线上传输一个字长的数据。串行数据传输是用一根传输线逐位顺序传送数据。能使微型计算机与I/O设备间按照并行或串行方式进行数据传送的接口称为并行接口或串行接口,其示意图如图7-l7所示。278微型计算机原理及接口技术并行接口与串行接口的结构、功能框图如图7-18所示。279微型计算机原理及接口技术7.2.1 Intel 82557.2.1 Intel 8255内部结构及引脚功能内部结构及引脚功能(1) 内部结构7.2 7.2 可编程并行输入可编程并行输入/ /输出接口芯片输出接口芯片82558255及其应及其应8255主要由3个8位的数据端口、两组控制电路、数据总线缓冲器、读/写控制逻辑组成。280微型计算机原理及接口技术1)数据端口8255内部的3个8位数据端口分别为A口、B口和C口,它们均可通过编程设定为输入口或输出口。其中C口既作为1个独立的8位数据输入/输出口;也可分为两个4位的数据输入/输出口使用;同时C口还具有可以对其进行按位操作的特点。2)控制电路 8255内部有两组控制电路,分别称为A组控制电路和B组控制电路。A组控制电路控制端口A和端口C的上(高)半部分(PC7PC4);B组控制电路控制端口B和端口C的下(低)半部分(PC3PC0)。由图7-19可看出,这两组控制电路既接收来自读/写控制逻辑的读/写命令,又接收由数据总线输入的控制字,分别控制A组和B组的读/写操作以及各数据端口的工作方式。281微型计算机原理及接口技术3) 数据总线缓冲器数据总线缓冲器为8位的双向三态缓冲器,CPU通过该数据总线缓冲器可对8255进行读/写操作。4)读/写控制逻辑读/写控制逻辑用于管理数据信息,控制字和状态字的传送,它接受来自系统总线的地址及读/写控制信号,以控制整个芯片的工作。(2) 引脚功能8255有40个外部引脚,采用双列直插式封装,如图7-20所示。282微型计算机原理及接口技术 电源和接地引脚 VCC:电源(通常与+5V相连)。GND:地(与数字地相连)。 与外设相连的引脚PA7PA0:端口A的输入/输出数据线,双向三态。 PB7PB0:端口B的输入/输出数据线,双向三态。PC7PC0:端口C的输入/输出数据线,双向三态。 与系统总线相连的引脚 RESET:复位信号,高电平有效。D0D7:数据信号线。RD:读控制信号。WR:写控制信号。CS:片选信号。 A1、A0:地址信号。283微型计算机原理及接口技术A1、A0:地址信号。用于对3个数据端口及控制字寄存器的选择,具体规定见下表:下表表述了8255控制信号与各数据端口间的读写操作关系:284微型计算机原理及接口技术(3) 接口技术图7-21 为8255与IBM PC总线的接口电路示意图。由图7-21可见端口A的地址为208H、端口B的地址为209H、端口C的地址为20AH、控制字寄存器的地址为20BH。285微型计算机原理及接口技术7.2.27.2.2工作方式工作方式8255有3种工作方式,分别被称为:方式0、方式1和方式2。(1) 方式0:基本输入输出方式8255的3个端口都可以工作在方式0下。在方式0下时,CPU只要用输入或输出指令就可以实现与外设间的数据交换。因此,方式0也称为无条件的输入/输出方式。(2) 方式1:选通输入输出方式这种方式下,只有端口A和端口B可以作为8位的输入或输出端口,端口C的部分位被用作A、B两个端口输入/输出时的联络信号,余下的位,仍可作为输入或输出数据线使用。该方式下,CPU与8255间可以用中断方式或查询方式进行数据交换。7.2 7.2 可编程并行输入可编程并行输入/ /输出接口芯片输出接口芯片82558255及其应用及其应用286微型计算机原理及接口技术1) 选通输入方式端口A和端口B工作于方式1的输入状态时,其引脚(控制信号)和时序关系示意图如图7-22所示。287微型计算机原理及接口技术2)选通输出方式端口A和端口B工作于方式1的输出状态时,其引脚(控制信号)和时序示意图如图7-23所示。288微型计算机原理及接口技术(3) 方式2:双向选通传送方式该方式将方式1的选通输入输出功能组合成一个双向数据端口,外设利用这个端口既能发送数据,又能接收数据。与方式1相同,在方式2下可利用查询方式或中断方式实现数据的输入输出操作,输入和输出的数据都被8255锁存。8255中只有端口A可以工作于方式2,此时,端口B可工作于方式0或方式1。端口A工作在方式2的引脚(控制信号)如图7-24所示。各引脚的作用及意义与方式1相同。在8255的三个端口中,端口A可工作在方式0、方式1和方式2下;端口B可工作在方式0和方式1下;端口C只能工作在方式0下。289微型计算机原理及接口技术7.2.3 7.2.3 应用编程应用编程要利用8255来实现CPU与外设进行数据的输入/输出操作时,必须对8255芯片进行“初始化”。其初始化过程有两步: 由CPU对8255写入方式选择控制字,用以规定8255各端口的工作方式及输入/输出状态; 由CPU对8255写入端口C按位置位/复位控制字,用以设置中断允许信号的状态,确定该8255是否允许以中断方式与CPU进行数据传送。这两个控制字共用一个端口地址。7.2 7.2 可编程并行输入可编程并行输入/ /输出接口芯片输出接口芯片82558255及其应用及其应用290微型计算机原理及接口技术(1) 方式选择控制字方式选择控制字由8位二进制数构成,其格式如图7-25所示。该方式控制字应写入到控制字寄存器,即A1A011的端口地址(控制字寄存器地址)。291微型计算机原理及接口技术(2) 端口C按位置位/复位控制字 端口C按位置位/复位控制字,用以对端口C的各位进行置位(置1)或复位(清0),其格式如图7-26所示。292微型计算机原理及接口技术 读状态字方式1或方式2时,端口C的部分位作为和外设的联络信号,各联络信号线在端口C的分布见图7-27。293微型计算机原理及接口技术7.2.47.2.4应用举例应用举例1.8255的初始化编程 例例7-47-4 :设8255与CPU的接口电路如图7-21,若规定端口A为方式1输出,端口C高4位为输出,端口B为方式0输入,端口C低4位为输入,请编制出有关的初始化程序。分析:分析:由题目要求可知,由于不需要中断,故初始化时只需写入方式选择控制字,根据题目规定可得符合要求的方式选择控制字为:10100011B或A3H。由图7-21可知,该8255的端口地址为:208H20BH,其中控制字端口地址为20BH。符合题目要求的初始化程序段为: MOV DX, 20BH ;控制端口的地址为20BH MOV AL, 0A3H ;方式选择控制字 OUT DX, AL ;送到控制端口7.2 7.2 可编程并行输入可编程并行输入/ /输出接口芯片输出接口芯片82558255及其应用及其应用294微型计算机原理及接口技术2.8255应用举例 例例7-6:7-6: 8255与系统连接示意图如图7-28所示。要求开关Ki每拨动一次,其LEDi便随Ki改变一次状态(Ki闭合,LEDi亮;Ki断开,LEDi灭)。请编制出能实现题目要求的程序段。;-初始化程序- MOV DX,317H MOV AL,82H OUT DX,AL ;-能实现题目要求的程序段-AGAIN:MOV DX,315H IN AL,DX NOT AL MOV DX,314H OUT DX,AL JMP AGAIN ;-295微型计算机原理及接口技术例例7-7:7-7: 电路结构如图7-29所示,要求电路中各发光二极管按照图7-30的规律依次发光,其发光持续时间t1(设t1=1s)由8254的计数器0实现。当开关K闭合时结束程序。请编制出能满足题目要求的汇编语言源程序。 分析:分析:由图可得8255的地址范围为60H63H,8254的地址范围为40H43H。296微型计算机原理及接口技术(1)初始化程序段:8255的初始化程序段:MOV AL,89H;8255的方式选择控制字OUT 63H,AL;送到8255的控制端口 8254的初始化程序段:MOV AL,36H;8254的方式控制字OUT 43H,AL ;送到8254的控制字寄存器 MOV AX,500;计数器0定时1S的计数初值OUT 40H,AL;写计数初值低8位到计数器0MOV AL,AH;计数初值高8位送入ALOUT 40H,AL;写计数初值高8位到计数器0297微型计算机原理及接口技术(2)1S时间到的测试程序段:由图7-29可知,1s“时间到”可通过PC0引脚上信号的变化获得,即当PC0引脚上有一个由低到高的电平变化时,便是1s时间到了。其相关程序段为:AGAIN:INAL,62H ;读8255的端口C,端口C地址为62H TEST AL,01 ;对PC0引脚信号进行测试 JNZAGAIN ;不是低电平,继续监测PC0引脚信号NEXT: INAL,62H ;是低电平,则等待高电平的到来 TEST AL,01 ;对PC0引脚信号进行测试 JZNEXT ;是低电平,继续监测PC0引脚信号 . ;是高电平,则表明1s时间到298微型计算机原理及接口技术(3)使LEDi发光的程序段: 由图7-29可知,欲使某LEDi发光,需通过端口A的PAi输出1,相关程序段为: MOV AL,I ;(i可为01H、02H、04H、08H、10H、20H、40H、80H) OUT 60H,AL ;由8255端口A输出,使LEDi发光(4)满足题目要求的汇编语言源程序:-段定义程序段-DATASEGMENTMESSDBBEGIN PROGRAM,$ DATAENDS CODESEGMENT ASSUME CS:CODE,DS:DATA-程序初始-START:MOVAX,DATAMOVDS,AX ;给数据段寄存器赋初值299微型计算机原理及接口技术 LEADX,MESS MOVAH,09H INT 21H ;在屏幕上显示“BEGIN PROGRAM”-8254初始化程序- MOVAL,36H OUT43H,AL MOVAX,500 OUT40H,AL MOVAL,AH OUT40H,AL-8255初始化程序- MOV AL,89H OUT63H,AL-发光二极管循环发光程序- MOVAH,01H;给LEDi初态AGAIN: MOVAL,AH-300微型计算机原理及接口技术 AGAIN1:INAL,62H;1S时间到否程序段 TEST AL,01 JNZAGAIN1NEXT: INAL,62H TEST AL,01 JZNEXT ROLAH,1;1S时间到,改变LED的状态 INAL,62H;读端口C,判断开关K是否闭合? TEST AL,04H JNZAGAIN;未闭合,转LED循环发光 MOVAH,4CH;否则,结束程序 INT21H CODE ENDS ENDSTART301微型计算机原理及接口技术 3.8255在IBM PC/XT微型计算机系统中的应用IBM PC/XT微机系统使用一片8255管理键盘、控制扬声器和输入系统配置开关的状态等。这片8255的端口A、B、C和控制口的地址分别为60H、61H、62H和63H。 在XT机中,8255工作在基本输入/输出方式。端口A为方式0输入,用来读取键盘扫描码。端口B工作于方式0输出,PB6和PB7控制键盘接口电路、PB0和PB1控制扬声器发声。端口C为方式0输入,存放系统配置开关的状态。由此,系统对8255的初始化编程为: MOV AL,10011001B ;8255的方式控制字99HOUT 63H,AL ;端口A和端口C为方式0输入、端口B方式0输出 为控制PC系列微机内部的扬声器发出不同音调的声音,其实现方法是:将8254的通道2与PC系列微型计算机系统中的扬声器相连,由通道2工作于方式3产生一定频率的方波信号去驱动扬声器按一定频率发声。其原理如图7-33所示。302微型计算机原理及接口技术从图中可见,系统使用8255中端口B的最低两位来控制该发声驱动系统:PB0作为8254通道2的门控信号GATE2,控制通道2定时计数的启停;PB1与通道2的OUT2信号相与后去控制扬声器的接通与断开。由此可见,要使扬声器发声,PB0置1,通道2才能工作;PB1置1,OUT2上产生的一定频率的方波信号才能通过与门送到驱动器,从而使扬声器发声。要想使扬声器发出不同音调的声音,通过改变OUT2上输出方波的频率即可。303微型计算机原理及接口技术7.37.3 可编程串行输入可编程串行输入/ /输出接口芯片输出接口芯片1655016550及其应用及其应用 当某微机系统中所需的外设每次只能提供或接收1位二进制信息时,则需通过串行接口电路(芯片)来实现CPU与外设之间的数据传送。串行接口电路的作用是将微机输出的并行数据转换成串行数据传送给外部设备,并将接收到的外部设备串行数据转换成并行数据输入给微型计算机。本节将以16550为例,介绍可编程串行输入/输出接口芯片的功能及其应用。7.3.1 7.3.1 串行通信基础串行通信基础串行通信是利用一条信号线将数据一位一位顺序传送的方式。串行通信的优势是用于通信的线路少,因而在远距离通信时可以极大地降低成本。另外,它还可以利用现有的通信信道(如电话线路等),使数据通信系统遍布千千万万个家庭和办公室。304微型计算机原理及接口技术 串行通信通常分为两种:串行同步通信和串行异步通信。1.串行异步通信串行异步通信(Asynchronous Data Communication)是以字符为单位进行传输,其字符传输格式如图7-34所示。305微型计算机原理及接口技术 2.串行同步通信 串行同步通信(Synchronous Data Communication)方式是以一个数据块(称为“帧”)为传输单位进行传输,其传输格式如图7-35所示。306微型计算机原理及接口技术 当信号的发送和接收分别使用不同的传输线时,这样的通信系统就是全双工传输方式,如图7-36(a)所示。 若使用同一条传输线既用作发送又用作接收,这样的通信系统就是半双工传输方式,该传输方式下,如图7-36(b)所示。 有些通信系统采用单根传输线只用作发送或接收,这称为单工(Simplex)传输方式,如图7-36(c)所示。 3.串行数据传输方式串行数据传输方式有全双工(Full Dup1ex)方式、半双工(Half Duplex)方式和单工(Simplex)方式。307微型计算机原理及接口技术 4.调制解调器当需要将待传送信息通过电话线之类的设备进行传输时,必须先把数字信号转换为适合在电话线路上传送的模拟信号,这就是调制(Modulating);经过电话线路传输后,在接收端再将模拟信号转换为数字信号,这就是解调(Demodulating)。多数情况下,通信是双向的,即半双工或全双工方式,具有调制和解调功能的器件合制在一个装置中,就是调制解调器。5.串行通信接口标准(1)通信线的连接在串行通信中,不同的通信距离,其串行通信电路有不同的连接方法,利用微型计算机实现与微型计算机或其他设备之间的串行通信时,其连接框图如图7-37所示。308微型计算机原理及接口技术 (2)串行通信接口标准串行异步通信中使用较广泛的总线接口标准是RS-232C。RS-232C是美国电子工业协会(Electronic Industry Association,EIA)于1969年公布的数据通信标准。利用RS-232C接口不仅可以实现远距离通信(最大通信距离15m),也可以近距离连接两台微型计算机或电子设备。 1) RS-232C有关控制信号的定义80X86微型计算机一般提供了两个串行异步通信接口(COM1,COM2)使用9针和25针两种连接接口,通过25针或9针转插D型插座引出的9个常用接口信号符合RS-232C接口标准。表7-6给出微型计算机中常用的RS-232C接口信号。309微型计算机原理及接口技术310微型计算机原理及接口技术 2)RS-232C的电气特性 RS-232C接口标准采用EIA电平。它规定:逻辑“0”为+3V+15V,逻辑“1”为-3V-15V。由于EIA电平与TTL电平电平不兼容,所以在微型计算机相连的串行接口与RS-232C串行接口间需要进行电平转换。能实现其电平转换的转换器件有MC1488(TTL电平到EIA电平)和MC1489(EIA电平到TTL电平)芯片,如图7-38所示。MAX202、MAX203、MAX232、UN232等芯片也能实现电平转换。311微型计算机原理及接口技术 7.3.2 165507.3.2 16550内部结构及引脚功能内部结构及引脚功能16550是与Intel微处理器完全相容的使用非常广泛的通用异步接收器发送器(Universal Asynchronous Receiver/Transmitter ,缩写UART)。16550有两个完全独立的接收器与发送器,故它可工作在全双工、半双工或单工方式下。(1)内部结构16550的内部结构如图7-39所示。16550与8250几乎完全相同,仅增加了内部接收器和发送器FIFO存储器。7.37.3 可编程串行输入可编程串行输入/ /输出接口芯片输出接口芯片1655016550及其应用及其应用312微型计算机原理及接口技术313微型计算机原理及接口技术 1)数据总线缓冲器数据总线缓冲器为8位的双向三态缓冲器,CPU通过该数据总线缓冲器可对16550进行读/写操作。2)选择与控制逻辑(读/写控制逻辑)选择与控制逻辑(读/写控制逻辑)接收来自系统总线的地址及读/写控制信号,以控制16550内部寄存器的读/写操作。3)数据发送器数据发送器由发送保持寄存器、数据发送缓冲区FIFO、选择器、发送移位寄存器和发送定时与控制电路等组成。4)数据接收器数据接收器由接收缓冲区 FIFO、接收缓冲寄存器、选择器、接收移位寄存器和接收定时与控制电路等组成。314微型计算机原理及接口技术 5)波特率发生器、除数锁存器对系统内部基准输入时钟(18.132 MHz)分频后产生16550内部时钟信号。 6)调制解调器(MODEM)控制逻辑主要用于控制调制解调器的工作,如果16550与调制解调器(MODEM)相连,则其控制信号由调制解调控制电路产生。7)中断控制逻辑16550 的中断控制逻辑部分由中断允许寄存器、中断识别寄存器和中断控制逻辑电路组成。 8)内部寄存器组 16550内部的寄存器组,主要涉及数据缓冲及一系列格式、状态等信息的选择、定义和识别等,315微型计算机原理及接口技术 (2)引脚功能16550的外部引脚见图7-40。 1) 电源和接地引脚 VCC:电源(通常与+5V相连)。 VSS(GND):地(与数字地相连)。2)与外部设备相连的引脚SIN 串行数据输入信号。SOUT 串行数据输出信号。 RCLK 接收器时钟信号。 BAUDOUT 波特率输出信号。 RTS 请求发送信号。 CTS 清除发送及允许发送信号。 DTR 数据终端准备好信号。DSR 数据设备准备好信号。 DCD 数据载波检测信号。RI 响铃信号。316微型计算机原理及接口技术OUT1,OUT2:它们是用户自定义输出引脚。XIN,XOUT 主时钟信号连线。(3)与系统总线相连的引脚MR 主复位信号:输入高电平有效。RxRDY 接收器准备好信号:输出低电平有效。TxRDY 发送器准备好信号:输出低电平有效。DDIS 驱动器禁止信号 。D7D0 数据信号线。RD,RD 读控制信号(两个都可以用。 WR,WR 写控制信号(两个都可以用。INTR 中断请求信号。CS0、CS1、CS2片选信号: 当CS0为高电平、CS1为高电平、CS2为低电平时, 16550被选中。 A0、A1、A2 地址信号。ADS 地址选通信号:输入低电平有效。317微型计算机原理及接口技术318微型计算机原理及接口技术(3)接口技术 16550与IBM PC总线的接口电路示意图如图7-41所示。由图可知各寄存器的地址为3F8H3FFH。319微型计算机原理及接口技术7.3.3 165507.3.3 16550的内部寄存器的内部寄存器16550内部有10种可访问的寄存器,其主要功能如下所述。1)接收缓冲寄存器(RBR)接收缓冲寄存器是一个8 位的寄存器,专门用于存放外部通信设备输入的数据。2)发送保持寄存器(THR)发送保持寄存器是一个8位的寄存器,专门用于存放将要输送给外部通信设备的数据。3)线路控制寄存器(LCR) 线路控制寄存器是一个8位的寄存器,可以写入,也可以读出,其格式见图7-42。7.37.3 可编程串行输入可编程串行输入/ /输出接口芯片输出接口芯片1655016550及其应用及其应用320微型计算机原理及接口技术4)线路状态寄存器(LSR)线路状态寄存器的主要作用是:提供串行异步通信的当前状态,供CPU读取和处理。LSR还可以写入(除D6位),设置某些状态,用于系统自检,其格式见图7-43。321微型计算机原理及接口技术5)除数寄存器(LS)对输入时钟信号进行分频时提供分频系数。在输入基准时钟频率确定后,通过改变除数寄存器的值来选择所需的波特率,即:除数寄存器值输入基准时钟频率( 16波特率) (7-3)例如:设16550芯片输入的基准时钟频率为1.8432MHz,若要求使用1200波特率来传送数据,则由公式(7-3)可得,除数应为96。6)调制解调器控制寄存器(MCR)调制解调器控制寄存器的主要作用是:用来设置16550与数据通信设备之间联络应答的输出信号,其格式见图7-44。322微型计算机原理及接口技术 7)调制解调器状态寄存器(MSR) 调制解调器状态寄存器反映4个控制输入信号的当前状态及其变化,其格式见图7-45。323微型计算机原理及接口技术 8)中断允许寄存器(IER) 16550设计有2个中断寄存器(中断允许寄存器和中断识别寄存器)和4级中断优先级。这4级中断按优先权从高到低排列的顺序为:接收线路状态中断、接收器数据准备好中断、发送保持寄存器空中断和调制解调器状态中断。中断允许寄存器为可读/写寄存器。其格式见图7-46:324微型计算机原理及接口技术9)中断识别寄存器(IIR)中断识别寄存器为只读寄存器的。它主要用于识别是否有中断请求及保存该中断的中断类型。325微型计算机原理及接口技术 10)FIFO控制寄存器(FCR)FIFO控制寄存器的主要作用是允许或禁止发送器与接收器按FIFO方式工作,并可对发送器与接收器的FIFO进行复位,其格式如图7-48所示。326微型计算机原理及接口技术7.3.4 7.3.4 应用编程应用编程要利用16550来实现数据的串行输入/输出操作,则必须对16550芯片进行“初始化”。其初始化过程有:设置波特率;设置通信控制字;设置FIFO控制字;设置调制解调器(MODEM)控制字;设置中断允许控制字。(1)设置波特率 设置波特率实质上就是根据数据传输速率,计算出对输入基准时钟的分频系数,并将该分频系数写入除数寄存器中,其分频系数的计算方法见式(7-3)。7.37.3 可编程串行输入可编程串行输入/ /输出接口芯片输出接口芯片1655016550及其应用及其应用注:输入基准时钟为18.432MHz327微型计算机原理及接口技术(2)设置通信控制字编程线路控制寄存器即可实现对通信控制字的设置。(3)设置调制解调器(MODEM)控制字是否需要设置调制解调器(MODEM)控制字,将根据微型计算机与外部通信设备的连接方式而定。(4)设置中断允许控制字编程中断允许寄存器即可实现对中断允许控制字的设置。(5)设置FIFO控制字编程FIFO控制寄存器即可实现对FIFO控制字的设置。328微型计算机原理及接口技术7.3.57.3.5应用举例应用举例1.16550的初始化编程例例7-11:7-11: 假定一个串行异步通信系统需要7位数据位,1位停止位,进行奇校验,波特率为9600,不允许中断输出、不进行自测试,数据的发送与接收利用查询方式实现,试完成相应的初始化编程。设16550内部寄存器组的地址为0F0H0F8H。设线路控制寄存器地址为0F3H,波特率除数寄存器地址为0F0H、0F1H,MODEM控制寄存器地址为0F4H,中断允许寄存器地址为0F1H(在线路控制寄存器的DLAB为0时),FIFO控制寄存器地址为0F2H。分析:分析:题目要求数据传输的波特率为9600,由表7-8可查出此时的分频系数(除数)为120,将该分频系数写入除数寄存器即完成了波特率的设置。由题目可知除数寄存器地址为:0F0H与0F1H(在线路控制寄存器的DLAB为1的前提下)。由题可知,数据传输格式为7位数据位,1位停止位,进行奇校验,故写入线路控制寄存器的控制字应为:00001010B(或0AH),地址为:0F3H。线路控制字格式见图7-42。7.37.3 可编程串行输入可编程串行输入/ /输出接口芯片输出接口芯片1655016550及其应用及其应用329微型计算机原理及接口技术根据题意有:不允许中断输出,不进行自测试,故写入MODEM控制寄存器的控制字为00000011B(或03H),地址为:0F4H。MODEM控制字格式见图7-44。题目要求利用查询方式实现数据的发送与接收,故应禁止所有中断,对应的中断允许字为00H,地址为:0F1H。允许数据的发送和接收,允许FIFO,则FIFO控制字07H,地址为:0F2H。FIFO控制字格式见图7-48。 满足题目条件的初始化参考程序段如下: MOVAL,10000000B;使线路控制寄存器的最高位DLAB=1, MOVDX,0F3H 允许除数寄存器 OUTDX,AL MOVAX,120;置9600波特率的除数 MOVDX,0F0H OUTDX,AL;写入除数锁存器低位330微型计算机原理及接口技术INCDXMOV AL,AHOUTDX,AL;写入除数锁存器高位MOVAL,00001010B;7位数据位,1位停止位,奇校验,MOV DX,0F3H 写线路控制寄存器OUTDX,ALMOVAL,03H;不允许中断输出,不自测试,MOVDX,0F4H 写MODEM控制寄存器OUTDX,ALMOV AL,0;禁止所有中断,写中断允许寄存器MOVDX,0F1HOUTDX,ALMOVAL,00000111B;允许FIFO,写FIFO控制寄存器MOVDX,0F2HOUTDX,AL.331微型计算机原理及接口技术2.利用查询方式发送串行数据编程举例例例7-12:7-12:假设欲将AH内容传送给16550并通过串行数据引脚(SOUT)输出数据。程序可通过测试线路状态寄存器的THRE位来确定发送器是否准备接收数据。设线路状态寄存器地址为0F5H,数据端口地址为0F0H。能实现发送要求的参考程序段如下:MOV DX,0F5HINAL,DX;读取线路状态寄存器状态TESTAL,20H;测试THRE位JZSEND;发送器保持寄存器没有准备好,转SENDMOV AL,AH;发送器准备就绪,则取数MOV DX,0F0H;CPU将数据通过数据端口送入16550OUTDX,ALSEND:332微型计算机原理及接口技术3.利用查询方式接收数据编程举例例例7-13:7-13: 试编程实现从16550读出接收到的信息,要求在接收数据时需对错误进行测试,若检测到一个错误,则返回“?”的ASCII码存于AL中;若未发现错误,则返回接收到的字符存于AL中。设端口地址同例7-12。能满足题目要求的参考程序段如下:RECV:MOV DX,0F5H IN AL,DX;读取线路状态寄存器状态 TESTAL,1;测试DR位 JZRECV;没有数据,继续测试 TESTAL,0EH;测试错误位 JNZERR;有错误,转移 MOV DX,0F0H INAL,DX;读有效数据 ERR: MOVAL,? ;置错误标志333微型计算机原理及接口技术4.16550应用举例 例例7-14:7-14:试编制使16550实现自发自收功能的程序段。要求将存放在以STR1起始的20个存储单元中的字符发送给16550,然后再通过16550接收回来,并显示在屏幕上。设16550的地址为3F8H3FFH。-数据段-DATA SEGMENTSTR1 DB Hello STR2 DB 20 DUP (0),$ DATA ENDS-代码段-CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX334微型计算机原理及接口技术-初始化16550 -MOVDX,03FBH ;线路控制寄存器地址 MOVAL,80H ;置DLAB=1,设置除数寄存器OUTDX,ALMOVDX,03F8H;写除数寄存器,设置波特率MOVAX,120 ;波特率为9600OUTDX,ALMOVAL,AH INCDXOUTDX,ALMOVDX,03FBH ;写线路控制寄存器MOVAL,0AH ;7位数据位,奇校验,1位停止位OUTDX,ALMOV DX,03FCH;写MODEM控制寄存器 MOV AL,03H OUT DX,ALMOVDX,03F9H;禁止所有中断,写中断允许寄存器 MOV AL,0335微型计算机原理及接口技术OUTDX,ALMOVDX,03FAH;允许FIFO,写FIFO控制寄存器MOVAL,07HOUTDX,AL -实现功能的程序段- LEA SI,STR1;设置指针及传送字符个数 LEA DI,STR2 MOV CX,20LOP1: MOV DX,03FDH;读取线路状态寄存器状态,准备发送数据 IN AL,DX TEST AL,20H ;测试发送是否就绪 JZ LOP1 MOV DX,03F8H;从STR1区取待发送数据,进行发送 MOV AL,SI OUTDX,AL LOP2: MOV DX,03FDH;读取线路状态寄存器状态,准备接收数据 IN AL,DX TEST AL,1EH ;数据是否有错误 336微型计算机原理及接口技术 JNZERR ;跳转错误处理 TEST AL,01H ;查看接收缓存器是否有信息 JZ LOP2MOV DX,03F8H ;接收数据,并存入STR2区 IN AL,DX MOV DI,ALINC SI;修改指针,为发送、接收下一个字符做准备 INC DI LOOPLOP1 CLC ;接收成功,清CY标志位JMP DONEERR:STC ;接收不成功,置CY标志位DONE: LEA DX,STR2 ;显示STR2 MOV AH,09H INT 21HMOV AH,4CH INT 21H337微型计算机原理及接口技术7.3.6 UART7.3.6 UART错误错误16550检测到的错误类型有:校验错误,帧错误与越限错误。一个校验错误表明接收到的数据包含错误校验位,帧错误表明起始位和停止位不在核实位置,越限错误表明数据已超出内部接收器FIFO缓冲器,这些错误不应该出现在正常操作中。校验错误说明接收时有噪声干扰。如果接收器以错误波特率接收数据,则会出现帧错误,当在接收器的FIFO缓冲器被装满之前,从UART读数据失败时,会出现越限错误。这个例子没有测试BI(间隔指示位)间隔条件。请注意,一个间隔是UART SIN引脚的两帧连续逻辑0。7.37.3 可编程串行输入可编程串行输入/ /输出接口芯片输出接口芯片1655016550及其应用及其应用338微型计算机原理及接口技术7.47.4 可编程可编程DMADMA控制器控制器82378237及其应用及其应用 直接存储器存取(Direct Memory Access,简称DMA)方式,是在不需要CPU干预的条件下,利用硬件实现在存储器之间、I/O设备之间或存储器与I/O设备之间进行高速数据传送的一种数据传送方式。采用DMA方式传送数据,实现外设对存储器的直接访问,其关键部件是DMA控制器,即DMAC。如图7-51所示。进入DMA方式时,DMAC成为总线的控制者,以控制数据的传送。DMAC获得总线使用权的基本方法有3种:周期挪用、周期扩展和CPU暂时放弃总线控制权。图7-51 DMA传送过程示意图339微型计算机原理及接口技术DMA数据传送的过程如下: 外设向DMAC发出DMA请求。 DMAC在接到外设的DMA请求后,向CPU发出总线请求信号,请求CPU暂时放弃系统总线控制权。 CPU在执行完当前指令的当前总线周期后,向DMAC发出总线响应信号。 CPU暂时放弃系统总线控制权,进入等待状态,由DMAC接管系统总线的控制权。 DMAC向外设发出DMA响应信号。 DMAC将存储单元地址送上地址总线;如果进行外设到存储器的传送,DMAC向外设发出I/O读命令,向存储器发出存储器写命令;若进行存储器到外设的传送,DMAC便向存储器发出存储器读命令,向外设发出I/O写命令,从而完成一个字节的传送。 当设定的字节数传送完毕后,DMA传输过程结束。当DMA传送结束后,DMAC将总线请求信号变为无效,并放弃对系统总线的控制权,CPU检测到总线请求信号无效后,将总线响应信号变为无效,接管系统总线的控制权,继续执行被中断的当前指令的其他总线周期。340微型计算机原理及接口技术7.4.1 DMA7.4.1 DMA控制器控制器8237A8237A的内部结构及引脚功能的内部结构及引脚功能8237A是一种高性能的可编程DMA控制器芯片。在5MHz时钟频率下,其传送速率可达。(1)内部结构 8237A主要由定时及控制逻辑、优先级控制逻辑、命令控制逻辑、地址/数据缓冲器及内部寄存器组等功能模块组成。如图7-52所示。 1)定时及控制逻辑 当8237A为主控制器时,产生8237A的内部时序控制与读写控制信号和地址输出信号。当8237A作为外部设备时,接收系统送来的时钟、复位、片选和读/写控制等信号,完成相应的控制操作。2)优先级控制逻辑 8237A具有4个通道,当多个通道同时向DMAC提出DMA服务请求时,需用优先级控制逻辑裁决各通道的优先权顺序,解决多个通道同时请求DMA服务时可能出现的优先权竞争问题。8237A有两种优先级方式,即固定优先级和循环优先级。7.47.4 可编程可编程DMADMA控制器控制器82378237及其应用及其应用341微型计算机原理及接口技术342微型计算机原理及接口技术3)命令控制逻辑8237A的命令控制逻辑的主要作用有:根据来自CPU的命令确定将要访问哪一个内部寄存器及操作类型。在DMA操作期间,对DMA的工作方式控制字进行译码。 4)地址/数据缓冲器地址/数据缓冲器包括1个4位的I/O缓冲器、1个8位的I/O缓冲器和输出缓冲器,各缓冲器作用简述如下。 4位I/O缓冲器:为地址缓冲器,作为地址A3A0输出缓冲。 8位I/O缓冲器:为双向、三态地址/数据缓冲器,当8237A为系统外部设备时,作为8位数据D7D0缓冲;当8237A为主控制器(即在DMA操作期间)时,作为高8位地址A15A8输出缓冲。 输出缓冲器:4位地址缓冲器,作为地址A7A4输出缓冲。5)内部寄存器组 8237A内部有12个不同类型的寄存器(见表7-9)。343微型计算机原理及接口技术344微型计算机原理及接口技术(2) 引脚功能8237A有40个外部引脚,采用双列直插式封装,如图7-53所示1)电源、地和空引脚Vcc:电源(通常与+5V相连)。GND:地(与数字地相连)。NC: 该引脚为空,没有意义。2)与微型计算机接口的引脚CLK(输入):时钟信号。 CS(输入):片选信号,低电平有效。RESET(输入):复位信号,高电平有效。345微型计算机原理及接口技术READY(输入):准备就绪信号,高电平有效。ADSTB(输出):地址选通信号,高电平有效。AEN(输出):地址允许信号,高电平有效。MEMR(输出):存储器读信号,低电平有效。MEMW(输出):存储器写信号,低电平有效。IOR(双向三态):I/O读信号,低电平有效。 IOW(双向三态):I/O写信号,低电平有效。DB7DB0(双向三态):8位双向数据线,与系统数据总线相连。 A3A0(双向三态):地址总线低4位。A7A4(输出):三态输出,在DMA传送时用来输出被读/写存储单元地址的A7A4,CPU控制总线时,这4个引脚处于高阻状态。346微型计算机原理及接口技术3)与DMA传送相关的引脚EOP(双向):DMA传送过程结束信号,低电平有效。 DREQ3DREQ0(输入):DMA请求信号,有效电平可由编程设定。 DACK3DACK0(输出):DMA响应信号。其有效电平可由编程设定,复位后规定低电平有效。HRQ(输出):总线请求信号,高电平有效。HLDA(输入):总线响应信号,高电平有效。347微型计算机原理及接口技术2. 8237A的工作时序8237A具有两种主要的工作周期(亦称工作状态),即空闲周期和有效周期。每个工作周期由若干个时钟周期组成。(1)空闲周期当所有通道均无请求输入时,8237A处于空闲周期(Idle Cycle)。此时,8237A作为一个接口芯片受控于CPU。在空闲周期,8237A始终处于Si状态。(2)有效周期当8237A在Si状态采样到外设请求信号DREQ有效时,就脱离空闲周期进入有效周期(Active Cycle),S0状态是DMA服务的第一个状态。该状态下,向CPU发出总线请求信号HRQ,等待CPU响应。当CPU响应(即HLDA有效)时,8237A便进入工作状态,同时向外设发出应答信号DACK,开始DMA传送。有效周期一般由4个S状态构成,即由S1、S2、S3、S4组成。348微型计算机原理及接口技术 (3)工作时序 8237A内部有三种状态,空闲状态Si、等待状态S0和传送状态S1S4。其工作时序如图7-54所示。349微型计算机原理及接口技术 由图7-54可见,在进入DMA传输过程之后,传送一个字节一般需要4个S状态。在外部设备较慢的情况下,还可以在S3和S4之间插入Sw。由于存储器与存储器之间的传送需要完成从存储器读和存储器写的操作,所以,每一次传送需要8个时钟周期,即前4个周期S11、S12、S13、S14完成从存储器读,另4个周期S21、S22、S23、S24完成存储器写,通过8237A中的临时寄存器来保存中间传送值。350微型计算机原理及接口技术3.接口技术由于在微型计算机系统中,8237A相当于微型计算机系统中的一个外部设备;在DMA传输中,8237A又是一个主控制器,因此,8237A的接口电路则有与系统总线的接口和与外部设备的接口。(1) 8237A与IBM PC总线的接口在微型计算机系统中,8237A同8254、8255一样,作为一个接口芯片来使用。其接口电路如图7-55所示。351微型计算机原理及接口技术(2) 8237A与外设的接口352微型计算机原理及接口技术7.4.2 8237A7.4.2 8237A的传送方式及传送类型的传送方式及传送类型 当CPU完成了对8237A的初始化后,若8237A掌管了总线控制权,便为主控制器。1.DMA传送的工作方式 DMA传送的工作方式有4种,即:单字节传送方式、数据块传送方式、请求传送方式和级联方式。(1)单字节传送方式该方式下, 每次DMA传送仅传送一个字节数据。数据传送后字节数寄存器减1,地址寄存器加1或减1(由编程决定),且HRQ变为无效,8237A释放系统总线,将总线控制权交还给CPU。单字节传送方式的特点是:一次传送一个字节,效率较低;但它会保证在两次DMA传送之间CPU有机会重新获取总线控制权,执行一个CPU总线周期。7.47.4 可编程可编程DMADMA控制器控制器82378237及其应用及其应用353微型计算机原理及接口技术(2)数据块传送方式该方式下,8237A一旦获得总线控制权,便开始连续传送数据,直到字节数寄存器从0减到FFFFH终止计数,或者由外部输入有效的EOP信号结束DMA传送。并将总线控制权交还给CPU。数据块传送方式的特点是:一次请求传送一个数据块,效率高;但在整个DMA传送期间CPU长时间无法控制总线(无法响应其他DMA请求,无法处理中断等)。(3) 请求传送方式在这种方式下,DREQ信号有效,8237A连续传送数据;DREQ信号无效,DMA传送被暂时中止时,8237A会释放总线,CPU可继续操作。请求传送方式的特点是:DMA操作可由外设利用DREQ信号控制传送的过程(速率)。354微型计算机原理及接口技术(4) 级联方式这种方式用于通过多个8237A级联以扩展通道。第二级的HRQ和HLDA信号连到第一级某个通道的DREQ和DACK上(见图7-57)。第二级芯片的优先权等级与所连的通道相对应。在这种情况下,第一级只起优先权网络的作用。第一级除了向CPU输出HRQ信号外,并不输出任何其他信号。实际的操作由第二级芯片完成。若有需要还可由第二级扩展到第三级等。在前3种工作方式下,数据传送有3种类型,即:DMA读、DMA写和DMA校验。355微型计算机原理及接口技术2.DMA通道的优先级管理方式8237A有4个DMA通道,它们的优先级管理方式有两种,即固定优先级和循环优先级。3.DMA传送类型DMA传送的基本类型有三种,即:存储器到存储器的传送、存储器到I/O接口的传送以及I/O接口到存储器的传送。(1)存储器到存储器的传送若要实现存储器到存储器的传送,8237A只能固定使用通道0和通道1。356微型计算机原理及接口技术(2)存储器到I/O接口的传送 当进行由存储器到I/O接口的数据传送时,8237A,先发出MEMR控制信号,通知被选中的存储单元送出数据。然后8237A发出IOW控制信号,命令I/O接口接收数据传。同时DMAC内部进行地址修改,字节计数减1。(3)I/O接口到存储器的传送在实现由I/O接口到存储器的数据传送时,8237A先发出IOR信号,通知外设送出数据。然后8237A发出MEMW信号,通知被选中的存储单元接收数据。此时DMAC内部会自动进行地址修改,并将字节计数减1。4.自动初始化方式某个DMA通道设置为自动初始化方式,是指每当DMA过程结束,EOP信号产生时,都用基地址寄存器和基字节数寄存器的内容,使相应的现行寄存器恢复为初始值,包括恢复屏蔽位,允许DMA请求。这样就作好了下一次DMA传送的准备。357微型计算机原理及接口技术7.4.37.4.38237A8237A的内部寄存器的内部寄存器8237A内部有12个寄存器,其主要功能如下。1)控制(命令)寄存器8237A的4个通道共用一个控制(命令)寄存器。编程时,由CPU向它写入命令字,系统复位时清零。命令字格式如图7-58所示。7.47.4 可编程可编程DMADMA控制器控制器82378237及其应用及其应用358微型计算机原理及接口技术2)方式寄存器8237A的每个通道都有一个方式寄存器,4个通道的方式寄存器共用一个端口地址,方式选择命令字的格式,如图7-59所示。359微型计算机原理及接口技术3)基地址寄存器每个通道有一个16位的“基地址寄存器”和一个16位的“当前地址寄存器”。基地址寄存器存放本通道DMA传输时所涉及到的存储区首地址或末地址,其初始值由初始化编程时写入,同时该值也被写入当前地址寄存器。4)基字节计数寄存器每个通道有一个16位的“基字节计数寄存器”和一个16位的“当前字节计数寄存器”。基字节计数寄存器存放本通道DMA传输时字节数的初值。8237A规定:初值比实际传输的字节数少1,初值是在初始化编程时写入的,同时,初值也被写入当前字节计数寄存器。 5)状态寄存器状态寄存器的格式如图7-60所示。360微型计算机原理及接口技术 6) 请求寄存器和屏蔽寄存器 请求寄存器和屏蔽寄存器是4个通道公用的寄存器,使用时应写入请求命令字和屏蔽命令字,其格式如图7-61所示。361微型计算机原理及接口技术7)多通道屏蔽寄存器8237A允许使用一个屏蔽字一次完成对4个通道的屏蔽设置,格式见图7-62。 复位时,屏蔽寄存器被置1,DMA请求被禁止。使用时,若一个通道没有设置自动重装功能,那么,一旦DMA传送结束后,会自动置1屏蔽触发器。因此,对DMA通道进行初始化时必须清除屏蔽触发器,方法为:对端口DMA+0EH进行一次写操作,即可清除4个通道的屏蔽触发器。 例: MOV DX,DMA0EH ;DMA代表8237A的片选地址 MOV AL,0 OUT DX,AL362微型计算机原理及接口技术8)高/低触发器当8237A需对16位的基地址寄存器和基字节寄存器预置初值时,需分两次进行,即每次只能写入一个字节。高/低触发器就是为初值的写入顺序而设置的。在使用先/后触发器时,先将其清0,然后先写低位字节,后写高位字节。9) 暂存寄存器暂存器为4通道共用的8位寄存器。在DMA控制器实现存储器到存储器的传送方式时。8237A可寻址的内部寄存器及端口地址见表7-10。363微型计算机原理及接口技术364微型计算机原理及接口技术7.4.47.4.4应用编程应用编程同前所述,要利用8237A来进行DMA传送之前,需通过CPU对其进行初始化编程,设定工作方式及相关参数等。其初始化过程介绍如下。输出主清除命令清除命令不需要通过写入任何内部寄存器来执行,只需要对特定的DMA端口(即对A3A01101B的端口)执行一次写操作即可完成。主清除命令的功能与复位信号RESET类似,可以对8237A进行软件复位。设置命令字编程命令(控制)寄存器即可实现对命令字的设置,该命令字用于指定DMA请求及响应信号的极性、优先级的选择、是否允许8237A工作、是否能进行存储器之间的数据传送等 。地址寄存器 将存储器中待传送数据的地址写入对应通道的基地址寄存器和当前地址寄存器。字节数寄存器将需传送的字节数写入基字节数寄存器和当前字节数寄存器。7.47.4 可编程可编程DMADMA控制器控制器82378237及其应用及其应用365微型计算机原理及接口技术设置方式控制字编程方式控制字寄存器即可实现对方式控制字的设置。该方式控制字格式见图7-59。编程方式控制寄存器即对图7-59中各位进行编程。设置屏蔽字:编程屏蔽字寄存器即可实现对屏蔽字的设置。设置请求字当需要通过软件来设置DMA请求时,便需设置请求字。编程请求寄存器即可实现对请求字的设置。请求字格式见图7-61(a)。8237A每个通道都需要进行DMA传送编程。如果不是采用自动初始化工作方式,每次DMA传送也都需要这样的编程操作。366微型计算机原理及接口技术7.4.57.4.5应用举例应用举例1.8237A的初始编程例例7-167-16:若利用8237A的通道O从磁盘将一个32K字节的数据块,传送至内存08000H开始的区域中,每传送一个字节,地址加1,采用数据块连续传送方式,禁止自动预置,外设的DREQ和DACK都为高电平有效。请编制初始化程序段。设8237A内部寄存器地址为90H9FH。分析:分析:由题目要求可知: A3A0为1101B对应的端口地址为9DH,对地址9DH的一次写入(执行OUT指令)操作,即是输出了一次主清除命令,使系统复位。命令字为10100000B(或A0H),见图7-63。命令寄存器地址为98H。传送地址08000H分两次写入地址寄存器,地址为90H,先写低字节。7.47.4 可编程可编程DMADMA控制器控制器82378237及其应用及其应用 数据块长度8000H(32KB-1)分两次写入字节计数器,地址为91H,先写低字节。 方式控制字为10000100B(或84H),见图7-64。方式控制寄存器地址为9BH。367微型计算机原理及接口技术屏蔽寄存器的单屏蔽字为00H,0通道的屏蔽字复位,屏蔽寄存器地址为9AH。由于不需要软件请求DMA服务,故可不写请求寄存器。368微型计算机原理及接口技术符合题目要求的初始化程序段如下:OUT 9DH,AL;输出主清除命令MOV AL,0A0H;将命令字写入命令寄存器 OUT 98H,AL MOV AL,00H ;将待传送地址低8位写入基地址寄存器和当前地址寄存器OUT 90H,AL MOV AL,80H;将待传送地址高8位写入基地址和当前地址寄存器 OUT 90H,AL MOV AL,00H;将数据块长度低8位写入基字节计数寄存器 OUT 91H,AL;和当前字节计数寄存器MOV AL,80H;将数据块长度高8位写入基字节数寄存器OUT 91H,AL ;和当前字节数寄存器MOV AL,84H;将方式控制字写入方式控制寄存器 OUT 9BH,AL MOV AL,00H;将屏蔽字写入屏蔽寄存器,开放通道0的DMA请求 OUT 9AH,AL 369微型计算机原理及接口技术2.8237A的应用举例(1)在PC/XT系统中的应用PC/XT系统板上用一片8237A作为DMA控制器,其端口地址为00H0FH。PC/XT系统中8237A的4个通道分别用于控制DRAM的动态刷新、预留用户、软磁盘接口、硬磁盘接口。通道0的DREQ信号接计数定时电路8254/8253的OUT1端,大约每隔15.13us产生一次DMA请求,用于对动态存储器刷新。通道1为用户保留,DREQ1和DACK1信号都接至扩展插槽上。通道2用于软盘驱动器接口。通道3用于硬盘接口。DREQ2和DREQ3、DACK2和DACK3也都接至扩展插槽上。BIOS对8237A进行下列初始化工作:允许8237A工作,常规DMA传输,正常时序,固定优先级,DREQ高电平有效,DACK低电平有效。对于通道0还初始化为:起始地址为0,计数值为FFFFH(64KB),读操作,自动预置,地址自动加1,单次传输方式。370微型计算机原理及接口技术例例7-177-17 :假设用系统板上的通道1,将内存起始地址为80000H的300H字节内容直接输出给外部设备。其程序段如下所示:OUT 0DH,AL;主清除,清除高/低触发器MOV AL,04H ;命令字,禁止8237A工作 OUT 08,AL ;写命令寄存器MOV AL,0OUT 02,AL ;写低地址0 OUT 02,AL ;写高地址0MOV AL,8 ;页面地址为8 OUT 83H,AL ;写入页面寄存器 MOV AX,300H ;传输字节数DEC AX OUT 03,AL ;写字节数低位MOV AL,AH OUT 03,AL ;写字节数高位371微型计算机原理及接口技术 MOV AL,49H ;方式字:单字节读,地址加1 OUT 0BH,AL MOV AL,40H ;命令字:DACK和DREQ低有效 OUT 08,AL ;正常时序,固定优先级 MOV AL,01 ;清除通道1屏蔽 OUT 0AH,ALWAITF:IN AL,08 ;读通道1状态 AND AL,02 ;传输完成否 JZ WAITF ;没完成则等待 MOV AL,05 ;完成后屏蔽通道1 OUT 0AH,AL372微型计算机原理及接口技术(2)在80486系统中的应用80486系统中,采用两片8237A模块级连以组成DMA控制逻辑,除一个通道用于级连外,具有7个独立的可编程通道,如图7-65所示。 第一个DMA控制器提供通道0通道3,第二个DMA控制器提供通道5通道7,DMA的通道4用于两个DMA控制器的级连,通道4不能用于任何其他用途。每个DMA控制器中,各通道的优先级可采用固定方式或循环方式,具体由DMA命令寄存器决定。373微型计算机原理及接口技术第8章外设接口技术外设接口技术374微型计算机原理及接口技术8.1 8.1 键盘接口技术键盘接口技术8.1.1 键盘的结构8.1.2 PS/2串行接口8.1.3 工作原理8.2 8.2 显示器接口技术显示器接口技术8.2.1 液晶显示器8.2.2 LED显示器8.3 USB8.3 USB接口技术接口技术8.3.1 USB规范8.3.2 应用举例8.4 8.4 模模/ /数、数数、数/ /模接口技术模接口技术8.4.1 模/数接口技术8.4.2 数/模接口技术8.5 8.5 习题习题375微型计算机原理及接口技术8.1 8.1 键盘接口技术键盘接口技术 信息的输入对于PC机系统来说是必不可少的。常用的信息输入方法是用户利用键盘将信息以字符的方式输入PC机。目前,标准的PC键盘作为PC机的常用输入外设,已经非常成熟。随着制造工业的进步,键盘价格不断下降。而且,随着键盘的功能不同,其外部结构、按键数量也不尽相同。有些制造厂商,在标准的PC键盘上增加一些特殊的功能按键,为信息的输入提供了更加便利的途径。目前,市面上的键盘主要包括PS/2和USB接口键盘。本节将针对常用的标准83101键盘及其PS/2接口进行介绍。8.1.1 8.1.1 键盘的结构键盘的结构 1981年IBM推出了IBM PC/XT键盘及其接口标准。该标准定义了83键,采用5脚DIN连接器和简单的串行协议。1984年IBM推出了IBM AT键盘接口标准。该标准定义了84101键,采用5脚DIN连接器和双向串行通讯协议。1987年,IBM推出了PS/2键盘接口标准,定义了84101键。事实上,键盘主要由两大部分构成:由按键组成的矩形结构键盘阵列和由键盘处理器组成的键盘扫描电路。键盘扫描电路的作用是不断地扫描键盘矩阵,采用“行列扫描法”识别按键。376微型计算机原理及接口技术表8-1 键盘扫描码表 键盘与主机采用6芯的PS/2接口进行连接通信。键盘上的处理器上电复位后,便开始扫描监视键盘电路,一旦有键被按下,经过键盘扫描电路,键盘处理器就可以按照表8-1获得键盘扫描码,并按照PS/2接口的串行通信协议将键入的信息传送给PC机。键扫描码键扫描码键扫描码键扫描码Esc01U162BF640102I17Z2CF741203O18X2DF842304P19C2EF9434051AV2FF10445061BB30Numlock45607Enter1CN31ScrollLock46708Ctrl1DM32Home47809A1E,334890AS1F34PgUp4900BD20/354A0CF21Shift(右)364B0DG22Prtsc374CBackspace0EH23Alt384DTab0FJ24Space39End4FQ10K25Capslock3A50W11L26F13BPgDn51E12;27F23CIns52R1328F33DDel53T14、29F43EY15Shift(左)2AF53F377微型计算机原理及接口技术8.1 8.1 键盘接口技术键盘接口技术8.1.2 PS/28.1.2 PS/2串行接口串行接口 键盘与计算机通过键盘插头相接,6芯PS/2接口的外形图及各信号线的分布图如图8-1所示。图中各信号定义如下:DATA:数据信号CLK:时钟信号 NU:空 +5V:电源GND:地图8-1 PS/2接口图 当DATA和CLK同时为高电平期间,允许键盘向计算机发送数据。当CLK为低电平时,键盘则不能发送数据给计算机,只能将要发送的数据暂存于发送缓冲区,直到CLK变为高电平为止。当键盘检测到DATA变为低电平时,则准备接收计算机下发的命令。378微型计算机原理及接口技术 键盘发送一个字节数据的时序如图8-3所示。键盘处理器首先输出低电平给DATA,通知计算机准备接收数据。然后,发出时钟信号到PS/2接口的CLK。在该时钟作用下,依次发送数据。每当CLK出现下降沿时,经DATA送出的数据为有效数据。此时,计算机可在CLK的下降沿读取数据。发送的时钟信号由键盘产生。 键盘接收一个字节数据的时序如图8-4所示。首先,计算机发出低电平信息到CLK,通知键盘不要发数据。然后,传送低电平信息给DATA,表明发送数据开始,同时释放CLK,由键盘接管CLK并产生时钟信号。在时钟信号驱动下按顺序依次发送数据。键盘在CLK的下降沿读取数据。键盘接收完校验位后,如果在下一个时钟周期检测到DATA处于空闲态(高电平),则会对新数据进行处理。在此期间,键盘处理器将输出低电平给DATA,直到数据处理完毕。如果收到校验位后,键盘检测到DATA没有处于空闲态,它将继续发送时钟信号直到DATA空闲。图8-3 键盘发送一个字节数据的时序示意图图8-4 键盘接收一个字节数据的时序示意图379微型计算机原理及接口技术8.1 8.1 键盘接口技术键盘接口技术8.1.3 8.1.3 工作原理工作原理 1 1键扫描原理键扫描原理 扫描码由接通扫描码(简称通码)和断开扫描码(简称断码)两部分组成,分别表示键是“按下”状态和“松开”状态。 当键按下时,发送通码;键松开时,发送断码。若一直按下某键,则以按键重复率连续发送该键的通码。断码是在通码前加一个断开标志F0H字节构成。 当有键按下时,键盘处理器获得扫描码后通过PS/2接口以串行数据形式将其发送给计算机。例如A键的通码是1EH,断码是F0H、1EH。A键被按下时,1EH被发送出去,如果按住不放,则以按键重复率连续发送1EH,直到释放该键,才发出断码F0H、1EH。380微型计算机原理及接口技术2 2先进先出(先进先出(FIFO)缓冲区工作原理)缓冲区工作原理 在键盘扫描电路中定义了一个“先进先出”(FIFO)的循环队列缓冲区。它有一个队列头指针,一个队列尾指针。图8-5 循环队列空Bp1=Bp2图8-7 字符出队列图8-8 指针循环指向队列起始图8-6 字符进入队列381微型计算机原理及接口技术3 3键盘的系统功能调用键盘的系统功能调用(1)键盘BIOS调用INT16HBIOS调用采用软中断INT 16H的方式来实现。这种方式主要包括以下三个步骤:等待从输入缓冲区读一个字符;从输入缓冲区读一个字符且返回;读键盘状态。INT 16H功能调用详见表8-2所示。表8-2 INT 16H 功能调用功能名称调用号出口参数说明读入一个字符(等待)(AH)=00HAL=字符代码AH=扫描码读出后该字符从缓冲区抹去若缓冲区空,等待键盘输入读入一个字符(不等待)(AH)=01H(ZF)=0:AX为字符代码(ZF)=1:缓冲器空读出后该字符仍在缓冲区若缓冲区空,返回(ZF)=1读特殊键状态(AH)=02HAL为特殊键状态字节当AL的D0D7位中任意一位为1,则特殊键按下(AL)0=右SHIFT键按下(AL)1=左SHIFT键按下(AL)2=CTRL键按下(AL)3=ALT键按下(AL)4=SCROLLLOCK键按下(AL)5=NUMLOCK键按下(AL)6=CAPSLOCK键按下(AL)7=INSERT键按下382微型计算机原理及接口技术(2)键盘DOS调用从功能上来讲,键盘的DOS调用比BIOS调用较为丰富。DOS调用不但可以输入单个字符或字符串,也可以对输入的字符进行显示。除此之外,DOS调用可以检查键盘的输入状态或清除键盘的输入缓冲区。相关功能见表8-3。 功能号功能入口参数出口参数备注00H01H02H03H04H05H06H07H08H09H0AH0BH0CH4CH结束一个程序等待键入一个字符,有回显显示一个字符从主串口读入一个字符向主串口写一个字符向打印机发送一个字符字符显示/字符输入等待键入一个字符,无回显等待键入一个字符,无回显显示字符串等待键入一串字符,送用户数据缓冲区,有回显查询有无键盘输入清除键盘缓冲区,然后调用由AL指定的功能终止当前程序的运行,并把控制权转交给调用他的程序CS=程序段前缀段基址无DL=待显字符的ASCII码无DL=待输出的字符编码DL=待打印字符的ACSII码DL=FFH(输入)DL=0FEH(输出)无无DS:DX=字符串首地址,字符串必须以$为结束标志DS:DX=缓冲区首址无AL=功能号(01、06、07、08或0AH)AL=返回码(或者不设置)无AL=按键的ASCII码无AL=从主串口读到的字符编码无无AL=输入字符的ASCII码AL=按键的ASCII码AL=按键的ASCII码无AL=0,无键按下AL=FFH,有键按下无无可由Ctrl+C终止等待该项功能要破坏AL的内容该项功能执行时,若有键按下,Z标志为1,否则Z标志为0不能由Ctrl+C终止等待可由Ctrl+C终止等待该项功能要破坏AL的内容可由Ctrl+C终止等待AL=功能号(01、06、07、08或0AH)与前面所讲的01、06、07、08或0AH功能调用时的功能相同当用户程序执行1,2,8,9,0AH,0BH, 0CH功 能 调 用 时 , 如 果 键 入Ctrl+C或者CtrlBreak,DOS将自动调用INT23H中断处理程序,从而强行使用户程序中断,我们称为响应Ctr1+C。表8-3 DOS系统常用的输入/输出(INT 21H)功能调用383微型计算机原理及接口技术4 4应用举例应用举例例例8-1 8-1 设计一程序,要求按左边的SHIFT键时显示大写字母A,按右边SHIFT键时显示大写字母B,当按任意数字键时则程序运行结束。 能实现题目要求的程序清单如下: DATA SEGMENT KEYIN DB INPUT=,$ KEEP_ES DW? KEEP_BX DW? FLG DB00H NUM DB00H DATA ENDS CODE SEGMENT ASSUME CS: CODE,DS: DATA START: MOVAX, DATA MOV DS, AX MOV AH, 09H;显示字符串 LEA DX, KEYIN INT 21H CLI MOV AH, 35H;读取原中断向量 MOV AL, 09H 384微型计算机原理及接口技术 INT 21H MOV KEEP_ES, ES ;保存原中断向量 MOV KEEP_BX, BX PUSH DS MOV DX, OFFSET KBINT;装入自编键盘中断程序的中断向量 MOV AX, SEG KBINT MOV DS, AX MOV AH, 25H MOV AL, 09H INT 21H POP DS IN AL, 21H;允许键盘中断 AND AL, 0FCH OUT 21H, AL STI;开中断AGAIN1:CMP FLG, 1;检查键盘中断标志JNZ AGAIN1;无,则继续检查 MOV FLG, 0;有,将键盘中断标志清零 MOV AL, NUM;将键盘的扫描码 AL CMP AL, 2AH;判断是否为左SHIFT键的扫描码JZ DISPA;是,转显示A 385微型计算机原理及接口技术CMP AL, 36H;判断是否为右SHIFT键的扫描码JZ DISPB;是,转显示BCMP AL, 02H;判断是否为数字键的扫描码JB NEXT2 CMP AL, 0BH JA NEXT2JMP EXIT;是数字键,转结束DISPA: MOV DL, A;显示A MOV AH, 02H INT 21HJMP NEXT2DISPB:MOV DL, B;显示B MOV AH, 02H INT 21HNEXT2:JMP AGAIN1EXIT:MOV DX, KEEP_BX ;恢复原来的中断向量MOV AX, KEEP_ESMOV DS, AXMOV AH, 25HMOV AL, 09H386微型计算机原理及接口技术INT 21HMOV AH, 4CHINT 21HKBINTPROC FAR ;键盘中断服务程序AGAIN:PUSH AX ;保护现场PUSH BXMOV FLG, 1 ;置中断标志IN AL, 60H ;从PA口读取扫描码PUSH AX IN AL, 61H OR AL, 80H OUT 61H, AL AND AL, 7FH OUT 61H, AL POP AX MOV NUM, AL ;保存扫描码NEXT1:CLI ;关中断MOV AL, 20H ;发中断结束命令OUT 20H, AL 387微型计算机原理及接口技术POP BX ;恢复现场POP AXIRET ;中断返回KBINTENDPCODEENDSEND START388微型计算机原理及接口技术8.2 8.2 显示器接口技术显示器接口技术显示器是一类常用的计算机外部设备,广泛应用于手机、照相机、计算机、智能仪器仪表等产品中。在工业控制中,显示器用于对工业现场的监视,包括控制系统参数、被控物理量等等。8.2.1 8.2.1 液晶显示器液晶显示器1 1基本原理基本原理 LCD显示器按显示方式可分为段式LCD、点阵字符式LCD和点阵图形式LCD三类。段式LCD只能固定地显示简单的字符段。点阵图形式LCD不仅可以显示文字,还能以点阵的形式画出图形。 点阵图形式LCD又可以分为自带汉字字库和不带汉字字库两种。对于自带汉字字库的点阵图形式LCD,在显示时只需要向LCD显示模块写入汉字的字库编号即可显示指定的汉字。 不带汉字字库的点阵图形式LCD,需要向LCD模块里写入汉字的点阵编码(即字模),才能显示字符。 按方向可分为横向和纵向,横向取模又分为左高右低和左低右高两种,纵向取模又分为上高下低和上低下高两种。389微型计算机原理及接口技术 图8-9为1616的汉字“微”的点阵图形,若按纵向、上低下高取模,其基本步骤为: 将图8-9分为上下两组,分别称为1组和2组,1组由18行组成,2组由916行组成; 由于每组均有16列,故每组应有16个字节,按从左到右的顺序依次获取相应字节数据; 点阵图形中黑色部分为“1”,否则为“0”; 将所得数据按1组、2组顺序依次排列即得到“微”的字模,即DB010H,088H,0F7H,022H,05CH,050H,05FH,050H,05CH,020H,0F8H,017H,012H,0F0H,010H,000H,DB001H,000H,0FFH,040H,020H,01FH,001H,001H,0BFH,050H,021H, 016H,008H,0F7H,040H,000H,图8-9 汉字“微”的模390微型计算机原理及接口技术2 2接口技术接口技术 (1) 12864点阵的图形LCD显示模块内部结构及引脚功能 12864点阵图形LCD显示模块主要由行驱动器IC3、列驱动器IC1和IC2,以及12864点阵液晶显示器组成。图8-1012864点阵图形液晶模块芯片结构框图391微型计算机原理及接口技术管脚号管脚名称LEVER管脚功能描述1VSS0电源地2VDD+5.0V电源电压3V0-液晶显示器驱动电压4D/I(RS)H/LD/I=“H”,表示DB7-DB0为显示数据D/I=“L”,表示DB7-DB0为显示指令数据5R/WH/LR/W=“H”,E=“H”数据被读到DB7-DB0R/W=“L”,E=“HL”数据被写到IR或DR6EH/LR/W=“L”,E信号下降沿锁存DB7-DB0R/W=“H”,E=“H”DDRAM数据读到DB7-DB07DB0H/L数据线8DB1H/L数据线9DB2H/L数据线10DB3H/L数据线11DB4H/L数据线12DB5H/L数据线13DB6H/L数据线14DB7H/L数据线15CS1H/LH:选择芯片(右半屏)信号16CS2H/LH:选择芯片(左半屏)信号17RETH/L复位信号,低电平复位18VOUT-10VLCD驱动负电压19LED+-LED背光板电源正极20LED-LED背光板电源负极表8-4 12864点阵液晶模块引脚和功能392微型计算机原理及接口技术(2)显示与控制命令 显示缓冲区的地址与内容的对应关系如图8-11所示,DDRAM中每个字节的内容按纵向、上低下高显示在LCD屏幕上。行地址X被称为页地址,Y地址计数器具有自加一功能,每次读写数据后Y地址计数器会自动加1,指向下一个DDRAM单元。图8-11DDRAM地址示意图393微型计算机原理及接口技术表8-5 LCD显示器常用指令码指令名称控制信号控制指令R/WD/IDB7DB6DB5DB4DB3DB2DB1DB0显示开关0000111111/0显示起始行设置0011XXXXXX页设置0010111XXX列地址设置0001XXXXXX读状态10BUSY0ON/OFFRST0000写数据01写数据读数据11读数据 对于LCD的操作,可以通过其内部的一系列指令实现,见表8-5。操作时,根据操作指令,对DDRAM内的相应地址写入待显示的数据后,打开显示开关即可。394微型计算机原理及接口技术(3)工作时序 对LCD模块的操作包括读和写两种时序,分别如图8-12和8-13所示。设计者需要根据时序中各个信号的关系来进行接口电路设计。如果CPU的工作时钟很快,为了满足时序要求,可以适当增加延时指令。图8-12读时序图8-13写时序395微型计算机原理及接口技术(4)内部寄存器 指令寄存器(IR),用于存放操作模块的指令码。当D/I=0时,在E信号下降沿的作用下,指令码写入IR。 数据寄存器(DR),用于存放被操作的数据。当D/I=1时,在下降沿作用下,图形显示数据写入DR,或在E信号高电平作用下由DR读到DB7-DB0数据总线。DR和DDRAM之间的数据传输是模块内部自动执行的。 忙标志(BF),表示了内部工作情况,外部CPU可以通过BF来判断LCD模块是否准备接受指令或数据。BF=1表示模块正在执行内部操作,处于忙状态。此时模块不接受外部指令和数据。BF=0表示模块为准备状态,可接受外部指令和数据。 显示控制触发器(DFF)用于控制屏幕显示开和关。DFF=1为开显示,DDRAM内部的内容就显示在屏幕上,DFF=0为关显示。 XY地址计数器是一个9位计数器。高3位是X地址计数器,低6位为Y地址计数器,XY地址计数器实际上是作为DDRAM的地址指针,X地址计数器为DDRAM的页指针,Y地址计数器为DDRAM的Y地址指针。396微型计算机原理及接口技术 显示数据RAM(DDRAM)是存储图形显示数据的存储空间。数据为1表示显示,数据为0表示不显示。 Z地址计数器是一个具有循环计数功能的6位计数器,用于显示行扫描同步。当完成一次行扫描,地址计数器自动加1,指向下一行扫描数据。RST复位后Z地址计数器为0。397微型计算机原理及接口技术3. 3. 应用举例应用举例例例8-2 8-2 设LCD芯片与微型计算机接口示意如图8-14所示,请编程实现在LCD模块上显示汉字“微”。程序中将对LCD控制信号地址定义为宏。同时,定义DIN、IIN和BUSY分别为写指令、写数据和忙判断子程序。在代码段中定义了ZK作为字库首地址,XADD和YADD为X和Y起始地址,ZADD为显示起始地址。图8-14LCD与微型计算机接口示意图398微型计算机原理及接口技术DATASEGMENTZKDB 010H,088H,0F7H,022H,05CH,050H,05FH,050H,05CH,020H,0F8H,017H,012H,0F0H, 010H,000H,001H,000H,0FFH,040H,020H,01FH,001H,001H,0BFH,050H,021H,016H,008H, 0F7H, 040H,000H;字模ZADDDB 00H;显示起始地址XADD DB 00H;X地址YADD DB 00H;Y地址DATAENDSMOVDX, 0F01H;左部分有效OUTAL, 00HCALLBUSYCALLIINMOVDX, 0F01H;开显示MOVAL, 3FHOUTDX, AL CALLBUSYMOVAL, 0C0H;写显示起至地址ORAL, ZADDOUT DX, ALCALLBUSYMOVAL, 0B8H;前16个字节,写X地址ORAL, XADDOUTDX, ALCALLBUSYMOVAL, 40H;写Y地址399微型计算机原理及接口技术ORAL, YADDOUTDX, ALCALLBUSYCALLDIN;写数据DISP:MOVBl, 8000hMOV DX, 0F01HLEASI, ZK;BX指向字形码表首址L1: MOVAL,SIOUTDX, AL;输出字形码CALLBUSYSHRBL, 1;修改位选信号JCL2INCSI;修改显缓区首址JMPL1L2:CALLIINMOVAL, 0B8H;写后16个字节,X地址加一ORAL, XADDINCALOUTDX, ALMOVAL, 40H;写Y地址ORAL, YADDOUTDX, ALCALLBUSYJMP DISPLAY400微型计算机原理及接口技术BUSY:MOVDX, 0F02HIN AL, DXSHLAL, 1;判断忙标志JCBUSYRETIIN:MOVDX, 0F02H;写指令MOVAL, 00HOUTDX, ALRETDIN:MOVDX, 0F02H;写数据MOVAL, 01HOUTDX, ALRET401微型计算机原理及接口技术8.2.2 LED8.2.2 LED显示器显示器1. 1. 工作原理工作原理 常用的八段LED显示器由8个发光二极管组成,其中7段发光管排列成“日”字型,第8段位于右下角作为小数点,如图8-15所示。八段LED显示器能显示数字09及部分英文字母。LED显示器是一种电压低、寿命长、成本低的显示方案。 图8-15 数码显示器结构图图8-16 共阴极八段数码显示器内部结构图8-17 共阳极八段数码显示器内部结构 八段LED显示器有共阴极和共阳极两种形式。共阴极LED显示器是8个发光二极管的阴极全相连,如图8-16所示;共阳极LED显示器是8个发光二极管的阳极全相连,如图8-17所示。例如,在操作对共阴极LED显示器时,只需将共阴极端cc接低电平,ah中某些位接高电平即可。402微型计算机原理及接口技术2. 2. 接口电路接口电路 LED显示器常用接口方式有两种:静态显示和动态显示接口方式。静态显示接口电路如图8-18所示。每一个LED显示器用一个锁存器锁存字型代码。在操作时,只需把要显示的字型代码发送到对应的锁存器即可。这种接口方式的优点是CPU的开销小、显示稳定,缺点是使用的芯片较多,成本较高。图8-18 静态显示接口电路图403微型计算机原理及接口技术 动态显示接口电路如图8-19所示。图中,由一个锁存器同时控制共阴极显示器LED0LED5的8个笔划段ah。另一个锁存器控制LED0LED5的公共端COM。LED0LED5能同时接收到CPU送出的字型码,但只有COM端为低电平的显示器才会显示数据。因此,利用人的视觉暂留现象及发光二极管的余辉效应,采用分时巡回显示的方法循环控制各个显示器的COM端,使各个显示器循环显示。在速度足够快的情况下,显示器就不会闪烁。图8-19 动态显示接口电路图404微型计算机原理及接口技术3 3应用举例应用举例(1)静态显示方式例例8-3 8-3 在如图8-20所示的显示器LED0LED5上同时显示:123456,其字形码分别为0C0h,0F9h,0A4h,0B0h,99h,92h,82h,0F8h,80h。锁存器IC0IC5的地址分别为0F00H、0F01H、0F02H、0F03H、0F04H、0F05H。图8-20 静态显示接口电路图405微型计算机原理及接口技术程序如下:DATASEGMENTMESSDB 0C0H,0F9H,0A4H,0B0H,99H,92H; 定义字形码表DISPDB 01H,02H,03H,04H,05H,06H; 定义显缓区DATAENDSCODESEGMENTDISPLY:MOV BL, 20H;预置位选信号MOV DX, 0F00HLEA SI, MESS;SI指向字形码表首址L1: MOV AL, SI OUT DX, AL;输出字形码 SHR BL, 1 ;修改位选信号 JC EXIT;6位均操作完毕退出 INC SI;修改显缓区首址 INC DX JMP L1.EXIT.406微型计算机原理及接口技术(2)动态显示方式例例8-4 8-4 在如图8-21所示的显示器LEDLED5上同时显示:123456,其字形码分别为0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H。图8-21 动态显示接口电路图407微型计算机原理及接口技术程序如下:DATASEGMENTMESSDB 0C0H,0F9H,0A4H,0B0H,99H,92H; 定义字形码表DISPDB 01H,02H,03H,04H,05H,06H; 定义显缓区DATAENDSCODESEGMENTDISPLY:MOV AH, 20H;预置位选信号LEA SI,DISP LEA BX, MESS;BX指向字形码表首址L1: MOV AL, SI XLAT MOV DX, 0F00H OUT DX, AL;输出字形码 MOV DX, 0F01H MOV AL, BL OUT DX, AL;输出位选信号 CALL DELAY SHR AH, 1;修改位选信号 JC DISPLY INC SI ;修改显缓区首址 JMP L1. 408微型计算机原理及接口技术8.3 USB8.3 USB接口技术接口技术 USB是一种支持热插拔的高速串行传输总线,使用差分信号来传输数据。它用于规范电脑与外部设备的连接和通讯,支持设备的即插即用和热插拔功能。USB接口是一个“万能接口”,可用于连接多达127个种外设,包括显示器、键盘、鼠标、调制解调器、游戏杆、打印机、扫描仪和数码相机等,支持“总线供电”和“自供电”两种供电模式,连接结点的距离可达5m。 USB接口的主要特点为:(1)它是一种快速、双向通用串行总线,适用范围宽,节省空间;(2)它具有很强的连接能力,最多可以连接127个物理设备到同一系统;(3)它有同步、中断和批量三种数据传送工作方式,可编程选择。409微型计算机原理及接口技术8.3.1 USB8.3.1 USB规范规范1.USB1.USB信号定义信号定义在USB 2.0规范中,USB接口在一条4线电缆上传送信号和电源:VBus(电源)、GND(地)、D+(信号正端)、D-(信号负端)。其中,信号(D+和D-)线既可以传送单端信号,也可以传送差动信号;另一对电源(VBus和GND)线则可以为设备提供电源。如图8-22所示,USB连接器为4芯插针,其中D+和D-用于信号连接,VBus和GND用于电源连接。USB接口的引脚配置见表8-6。USB接口的+5V电源最大能够驱动100mA的外设。图8-22 USB接口定义表8-6 USB引脚配置1VBus5.0V2D-信号负端3D+信号正端4GND地410微型计算机原理及接口技术2. USB2. USB的拓扑结构的拓扑结构 USB可以作为中、低速率的外设与PC机的接口进行数据传送,不需要搭配附加的接口卡来占用PC机的扩展槽。PC机上的USB HOST最多可以同时支持128个地址。图8-23 USB连接图地址0作为默认地址,只在设备枚举期间临时使用,而不能被分配给任何一个设备。USB连接体系以 转 接 器 ( HUB) 与 设 备 节 点(NODE)方式连接,采用分层的星型拓扑来连接所有 USB设备,最大允许层数为7(包括根层)。USB主机USB设备411微型计算机原理及接口技术3. USB3. USB协议协议 USB的所有传输都由主机发起,数据包以广播的方式在不同物理传输线上传输,而且任何时刻整个USB体系内仅允许一个数据包的传输。USB 采用“令牌包”“数据包”“握手包”的传输机制,在令牌包中包含了数据包去向或者设备地址和端点(Endpoint),从而保证了只有一个设备对被广播的数据包/令牌包做出响应。在一个确定的事务中,数据要么从主机传到设备,要么从设备传到主机。在每一个事务中,主控制器发送一个描述事务的类型和方向、USB设备地址及目的端编号的包作为开始,这个包被称作令牌包(token packet)。被寻址的USB设备通过译码相应的地址来判断是否进行处理。数据的传输方向在令牌包中规定。在令牌包之后,由事务源发送一个数据包,或停止传输的指示。412微型计算机原理及接口技术4. 4. 四种传输类型四种传输类型(1)控制传输:是一种可靠的双向传输,一次控制传输可分为三个阶段。第一阶段为从HOST到设备的SETUP事务传输,这个阶段指定了此次控制传输的请求类型;第二阶段为数据阶段,也有些请求没有数据阶段;第三阶段为状态阶段,通过一次输入/输出传输表明请求是否成功完成。(2)中断传输:是一种单向轮询的传输方式,HOST通过固定的间隔对中断端点进行查询。若允许,则进行数据传输,否则表示尚未准备好。(3)批量传输:批量传输是一种可靠的单向传输,它尽可能地利用可用带宽来完成传输,适合数据量比较大的传输。(4)同步传输:是一种实时的、不可靠的传输,不支持错误重发机制。USB不同版本的规范对USB的结构、数据流模型、主机、设备、机械、电气、协议等作了详细规定,具体细节可参考相应规范。413微型计算机原理及接口技术8.3.2 8.3.2 应用举例应用举例1. 1. 接口芯片接口芯片CY7C68013是Cypress公司的一款集成了USB接口的微控制器,内部结构如图8-24所示。除USB 2.0接口外,该芯片还集成了带8KB片内RAM的8051CPU、16位并行地址总线、8位数据总线、I2C总线、4kB FIFO存储器以及通用可编程接口GPIF和串行接口引擎SIE。其数据传输速率可达480Mbps。图8-24 CY7C68013内部接口图414微型计算机原理及接口技术 芯片具有GPIF(通用可编程接口,General Programmable Interface)、主从端点FIFO 。这两个模块提供了USB接口与现有的多种接口进行数据传输的无缝连接。图8-25 GPIF 信号连接图信号名称方向功能FD015双向CY7C68013与外部设备进行数据传输的数据线CTL05输出CY7C68013对外部设备提供的控制信号输出ADR08输出CY7C68013对外部设备提供的地址信号输出RDY05输入CY7C68013对外部设备的状态进行检测的信号线表8-7 GPIF引脚功能说明415微型计算机原理及接口技术2. USB2. USB接口硬件设计接口硬件设计 如图8-26所示,模数转换器采用具有12位分辨率的AD1674。CY7C68013的FD110直接与AD1674的DB110相连。CY7C68013的控制信号CT0连接到AD1674的,用于控制模数转换的启动和数据的读取。CY7C68013的RDY0接到AD1674的转换状态信号STS,用于检测模数转换状态。AD1674工作于双极性、12位并行数据输出方式,输入模拟量范围为010V。编程GPIF单元定义CTL波形对AD1674进行控制。图8-26 数据采集系统信号连接图416微型计算机原理及接口技术3. 3. 软件开发流程软件开发流程 (1)固件程序设计 固件程序的作用是对CY7C68013中各部分硬件单元进行初始化以及各种内部功能的调用。设计者可以对CY7C68013微控制编程,完成固件程序设计。(2)驱动程序设计 驱动程序提供应用程序与USB设备请求和数据传输的接口,完成应用程序与底层硬件的通信。因为在Windows操作系统中,已经包括了USB总线驱动程序和USB主控制器驱动程序。 (3)应用程序设计 应用程序设计是为了满足用户需要,能够实现一定功能且运行于操作系统之上的计算机程序。在USB接口应用设计中,应用程序就是USB外部设备与用户进行信息交互的接口。其主要功能是根据用户的命令,通过人机交互界面,从USB外部设备读取数据,并对数据进行处理,或者对USB外部设备进行控制。417微型计算机原理及接口技术8.4 8.4 模模/ /数、数数、数/ /模接口技术模接口技术数字化控制系统和智能仪表需要对工业现场的物理量(如温度、压力、流量、位移、速度、光亮度等)进行采集,然后根据这些物理量对现场的参数进行显示或对系统进行控制。模拟/数字转换器(Analog-to-Digital Conversion,简称ADC)将信号转换成微型计算机能识别和处理的数字量。除此之外,经过计算机运算得到的控制信号是数字量,而工业现场的执行器可能是随时间连续变化的模拟量。数字/模拟转换器(Digital-to- Analog Conversion,简称DAC)将数字量转换为模拟量,并通过执行器对现场控制系统的被控量进行调节。418微型计算机原理及接口技术8.4.1 8.4.1 模模/ /数接口技术数接口技术1. A/D1. A/D转换原理转换原理 A/D转换器是将模拟量转换为数字量的器件,其种类繁多,常见的A/D转换器主要有逐次逼近式、双斜积分式、并行式等。逐次逼近式A/D转换器的转换时间与转换精度比较适中,转换时间一般在s级,适用于一般场合。双斜积分式A/D转换器速度较慢,抗干扰性能强,转换精度高。其核心部件是积分器,转换时间一般在ms级或更长,适用于精度较高的智能仪表。并行式转换速度较快,抗干扰性能较差,可用于转换速度较快的仪器。419微型计算机原理及接口技术(1) 逐次逼近型A/D转换原理工作原理为:当接收到外部的“启动转换”信号时,SAR和输出缓冲器清零,D/A转换器的输出为零。首先,逻辑控制电路设置SAR中的最高位为“1”,其余位为“0”,该预置数据被送往D/A转换器,并对其进行转换,转换结果输出到电压U0。U0与待转换输入模拟电压Ui在比较器中进行比较,若UiU0,说明SAR中预置的数据“1”有效,保留该位的数字;若UiU0,则预置的数据“1”无效,应清零该位。按此的方法,由高到低依次完成后续各位的预置、比较和判断,直至最终确定SAR的所有有效位。此时SAR寄存器中的每一位均已判断过一次,A/D转换结束。图8-27 逐次逼近型A/D工作原理示意图420微型计算机原理及接口技术一个4位的A/D转换器,输入的模拟电压范围为05.12V,Vref+5.12V,输出对应二进制值为0000B1111B,最低有效位对应的输出电压为Vref /24= Vref /16 =0. 32V。若Ui=1.2V,则逐次逼近式A/D转换器转换过程为: 位号 比较UiU0 二进制值 D3 1.2V230.32V 0 该位为0 D2 1.2V220.32V 0 该位保留1 D0 1.2V200.32V 0 该位保留1 转换结果为0011B。 421微型计算机原理及接口技术(2) 双斜积分型A/D转换原理 双斜积分型A/D转换器的内部结构及波形如图8-28(a)、(b)所示,其转换过程可分为3个阶段:停止阶段逻辑控制电路控制K4闭合,清零计数器,积分器输出为零。采样阶段 在如图8-28(b)所示,在t1时刻,逻辑控制电路控制K4断开,K1闭合,积分器开始对输入电压Ui积分,同时控制计数器开始计数。在经过固定时间T1后(即t2时刻),逻辑控制电路控制K1断开。此时,计数器计满N1个脉冲并保存,采样阶段结束。422微型计算机原理及接口技术(a)工作原理(b)工作波形图8-28 双斜积分型A/D转换器示意图423微型计算机原理及接口技术比较阶段 逻辑控制电路清零计数器,判断电压Ui极性,并让与其相反的基准电压(+UR或-UR)接入积分器,即闭合K2(或K3),电容C开始放电。当积分器输出电压达到零电平时刻,即图8-28(b)中的t3时刻,比较器输出翻转,逻辑控制电路控制计数器停止计数,发出“转换结束”信号,此时计数器的值N2反映了输入电压Ui在固定积分时间内的平均值。假设计数器的基准时钟为T0。那么N1T0和N2T0分别记录了模拟输入电压Ui向电容充电的固定时间和参考电压UR放电所需要的时间。这两个时间值之比等于模拟输入电压与参考电压的比值。424微型计算机原理及接口技术设第一次积分的时间为T1,积分电容电压为:(8-1) 其中 为Ui在积分时间T1内的平均值;设第二次积分所需时间为T2,积分结束时,则有: 综合式(8-1)和式(8-2)得到: 因此,在参考电压Uref和第一次积分时间T0固定的情况下,反向积分时间T2正比于输入电压Ui。(8-2)(8-3)425微型计算机原理及接口技术(3) 并行比较型A/D转换器 三位并行比较型A/D转换器结构图及模数取值对照表,如图8-29所示。A/D转换器结构图中包括了电阻网络、比较器和译码锁存电路。 (a)结构图(b)模/数取值对照表图8-29 三位并行比较型A/D转换器示意图426微型计算机原理及接口技术2. A/D2. A/D转换的主要技术指标转换的主要技术指标A/D转换器的性能指标较多,根据不同的应用领域,其性能指标的侧重点不同。以下将对A/D转换器的常用性能指标进行介绍。(1) 分辨率分辨率是反映A/D转换器对输入量微小变化响应的分辨能力。(2) 量程量程是指能够转换的模拟输入电压范围,分单极性和双极性两种。(3) 精度精度是指A/D转换器的实际输出与理论值的接近程度。(4) 转换时间转换时间是指A/D转换器完成一次模拟量到数字量转换所需要的最大时间。(5) 线性误差A/D转换器的理想转换特性应该是线性的,但实际转换特性曲线存在着非线性。427微型计算机原理及接口技术3. 3. 常用模拟常用模拟/ /数字转换器及接口技术数字转换器及接口技术ADC0809是一种带有8通道多路开关的8位逐次逼近式A/D转换器,线性误差为 LSB,转换时间为100s左右。图8-30 ADC0809内部结构428微型计算机原理及接口技术8通道模拟开关及通道选择逻辑该部分的功能是实现8选1操作,通道选择信号C、B、A与所有通道之间的关系见表8-8。表8-8通道与通道选择信号对应关系 在地址锁存允许信号ALE有效(上升沿)的作用下,C、B、A上的通道选择信号送入地址锁存与译码电路。对应通道i(INi,i=0、1、7)上的模拟输入量接入A/D转换器输入端。429微型计算机原理及接口技术8位A/D转换器当START信号有一个由低到高的电平变化时,8位A/D转换器开始对输入端的信号进行转换,经过100s转换结束。此时,EOC信号由低电平变为高电平。外部电路可以通过查询方式或中断方式获得A/D转换结束信号。三态输出锁存缓冲器用于存放转换结果D。当输出允许信号OE为低电平时,数据输出线D7D0为高阻状态;OE为高电平时,A/D转换后的数字量从D7D0输出。图8-31 ADC0809的转换时序示意图430微型计算机原理及接口技术设ADC0809与CPU的连接如图8-32所示,要求用查询方式从IN4通道输入信号,采样512点,采样数据存入ADBUF缓冲区。 8255端口地址为218H21BH。图8-32 ADC0809与CPU连接图431微型计算机原理及接口技术 MOV DX, 21BH ;8255初始化 MOV AL, 91H OUT DX, AL LEA SI, ADBUF MOV CX, 512LP: MOV DX, 219H ;启动A/D MOV AL, 04H OUT DX, AL MOV AL, 0CH OUT DX, AL MOV AL, 04H OUT DX, AL MOV DX, 21AH ;判断转换是否结束LP0: IN AL, DX TEST AL, 01 JNZ LP0 LP1: IN AL, DX TEST AL, 01H JZ LP1 ;转换未结束等待 MOV DX, 219H MOV AL, 14H 432微型计算机原理及接口技术 OUT DX, AL MOV DX, 218H IN AL, DX ;读结果 MOV SI, AL ;存结果 INC SI LOOP LP HLT433微型计算机原理及接口技术8.4.28.4.2数数/ /模接口技术模接口技术1. D/A1. D/A转换原理转换原理D/A转换器是一种把二进制数字信号转换为模拟信号(电压或电流)的电路。根据内部结构不同,D/A转换器可分为多种形式,下面主要介绍两种典型结构的D/A转换器:权电阻型D/A转换器和倒T型电阻D/A转换器。(1) 权电阻型D/A转换器图8-33 权电阻型D/A转换器434微型计算机原理及接口技术流经n个权电阻的电流输入到运算放大器的反相端,其求和电流为: (8-4)而此时,根据运算放大器的反相端特性,其输入输出电流相等,所以输出电压为(8-5)因此,通过单刀双掷模拟开关的位置“1”(或“0”),就可以改变输出电压的大小。435微型计算机原理及接口技术(2) R-2R网络型D/A转换器 R-2R网络型D/A转换器主要由4部分组成:基准电压VREF、R-2R T型电阻网络、电子开关Ki(i=0,1,.,n-1)和求和运算放大器。其电路结构如图8-34所示。图8-34 R-2R网络型D/A转换器436微型计算机原理及接口技术当满量程输入一个n位二进制数时,流入运放的电流为:(8-6) 当Rf=R时,相应的输出电压为:(8-7)由于数字信号Di(i=1, ,n)只有1或0的情形,故D/A转换器的输出电压VOUT与输入二进制数D0Dn-1或二进制数字量D的关系式为:(8-8)437微型计算机原理及接口技术2. D/A2. D/A转换器的主要技术指标转换器的主要技术指标(1)分辨率 分辨率是最小输出电压(对应的输入数字量只有最低有效位为“1”)与最大输出电压(对应的输入数字量信号所有有效位都为“1”)之比,即D/A转换器所能分辨的最小量化信号的能力。(2)精度精度表示了D/A转换的精确程度,分为绝对精度和相对精度。绝对精度是指在数字输入端施加给定数字量时,在输出端实际测得的模拟输出值与理想输出值之差。相对精度是指满量程值校准以后,任意数字量的模拟输出与理论值之差相对于满量程输出的百分比。(3)建立时间建立时间是指输入数字信号的满量程变化(即全“0”变为全“1”)模拟输出稳定到最终值的1/2LSB时所需的时间。它反映了D/A转换器的快速性。(4)线性误差理想转换特性(量化特性)应该是线性的,但实际转换特性并非如此。线性误差常用LSB的分数表示,如1/2LSB,或1LSB。438微型计算机原理及接口技术3. 3. 常用模拟常用模拟/ /数字转换器及接口技术数字转换器及接口技术(1) DAC0832内部结构及引脚功能 DAC0832是8位双缓冲D/A转换器,其结构如图8-35所示,它的主要组成部分有:由R-2R电阻网络构成的8位D/A转换器、两个8位寄存器和相应的选通控制逻辑。片内带有数据锁存器,可与微型计算机直接接口。图8-35 DAC0832内部结构图439微型计算机原理及接口技术符号引脚线功 能符号引脚线功 能D0D774,1613数据输入线ILE19数据允许,高电平有效Rfb9反馈信号输入1输入寄存器选择,低有效IOUT1,IOUT212,11电流输出2输入寄存器写选通,低有效VREF8基准电源输入18DAC寄存器写选通,低有效VCC20电源输入17DAC寄存器选择,低有效AGND3数字信号地DGND10数字地表8-9 DAC0832引脚功能440微型计算机原理及接口技术(2) DAC0832工作方式DAC0832有3种工作方式:单缓冲方式:此方式适用于只有一路模拟量输出或多路模拟量非同步输出的情况。该方式控制8位输入寄存器和DAC寄存器同时接收数据,或者只有一个寄存器接收数据,而另一个寄存器接为直通方式。图8-36 DAC0832单缓冲工作方式的连接电路441微型计算机原理及接口技术双缓冲方式:此方式用于控制多个DAC0832同步输出模拟量的情况。其方法是先分别使各个DAC0832的8位输入寄存器接收数据,再控制这些DAC0832同时把数据传送到DAC寄存器,以实现多个D/A转换同步输出。图8-37 DAC0832双缓冲工作方式的连接电路 直通方式:此方式用于连续反馈控制系统中。在直通方式下,数据不通过缓冲器,即引脚 、 、 、 均接地,ILE接高电平。442微型计算机原理及接口技术(3) 输出极性图8-38 DAC0832的单极性输出图8-39 DAC0832的双极性输出443微型计算机原理及接口技术图8-38中VOUT1为单极性输出,且有:(8-10)其中D为输入数字量,VREF为DAC0832的基准电压。图8-39中VOUT2为双极性输出,且有:(8-11) 式中,D从0 , 从- 。444微型计算机原理及接口技术DAC0832采用的是单缓冲工作、单极性输出的接线方式,输入寄存器的地址为0098H,DELAY为延时子程序。图8-40在单缓冲工作、单极性输出方式下DAC0832与计算机连接图MOV AL, 0FFH ;置输出电平为5V,将待转换数据送入输入寄存器,DAC寄存器直通LP: MOVDX, 98H OUT DX, AL CALL DELAY;形成方波顶宽NOT AL;置输出电平为0V, 形成方波底宽 JMP LP445微型计算机原理及接口技术DAC0832采用的是双缓冲工作、双极性输出的接线方式,输入寄存器的地址为0098H,DAC寄存器的地址为0099H,DELAY为延时子程序。图8-41在双缓冲工作、双极性输出方式下DAC0832与计算机连接图 LP: MOV DX, 98H OUT DX, AL MOV DX, 99H ;将待转换数据送入DAC寄存器 OUT DX, AL CALL DELAY;形成方波顶宽 NOT AL;置输出电平为-5V,形成方波底宽 JMPLPMOV AL, 0FFH;置输出电平为5V,将待转换数据送入输入寄存器446微型计算机原理及接口技术8.5 8.5 习题习题1. 简述PS/2键盘与计算机的通信方式及工作原理。2. 设计12864液晶显示器与计算机的接口电路。3. 简述共阴极和共阳极LED的区别。4. 设计8位共阴极八段LED显示器与计算机的动态和静态显示接口电路。5. 简述USB接口的四种传输方式。6.设 被 测 温 度 变 化 范 围 为 01200,如 果 要 求 误 差 不 超 过 0.4,应 至 少 选 用 多 少 位的A/D转换器。7.采用AD0809与8位微型计算机,设计2路双极性同步采集电路,模拟量输入范围为-10V+10V。1)画出与8位微型计算机的接口电路。2)画出AD0809外围电路。3)写出程序流程图,简述其工作过程。8. 采用DAC0832与8位微型计算机,设计2路双极性同步模拟量输出电路,模拟量输出范围为-5V+5V。1)画出与8位微型计算机的接口电路;2)画出DAC0832外围电路;3)1路输出频率为10Hz,幅值为-5V+5V的方波,另一路输出频率为20Hz,幅值为0V+5V的锯齿波,画出流程图。447微型计算机原理及接口技术第9章总线448微型计算机原理及接口技术9.1 9.1 概述概述9.1.1 总线的分类9.1.2 总线信号线类型9.1.3 总线标准 9.1.4 总线的数据传输9.2 ISA9.2 ISA总线总线9.2.1 ISA总线概述9.2.2 ISA总线的体系结构 9.2.3 ISA总线的应用9.3 PCI9.3 PCI总线总线9.3.1 PCI总线概述9.3.2 PCI总线的体系结构9.3.3 PCI总线的应用5.3.4 主流内存条简介9.4 PCI Express9.4 PCI Express总线总线9.4.1 PCI Express总线概述9.4.2 PCI Express总线的体系结构 9.4.3 PCI Express总线的应用449微型计算机原理及接口技术9.1 9.1 概述概述 9.1.1 总线的分类总线的分类 1.1.片内总线片内总线 总线分为如下4类:片内总线、元件级总线、系统总线及外总线。 片内总线是集成电路芯片内部,用以连接各功能单元进行信息传送及交换的通路。 2.2.元件级总线元件级总线 元件级总线是印刷电路板上连接各芯片之间的公共通路。450微型计算机原理及接口技术3.3.系统总线(又称内总线)系统总线(又称内总线) 系统总线是微型计算机机箱内的底板总线,用以连接微型计算机系统的各插件板,一般为并行总线。常用的系统总线有ISA和PCI等。 4.4.外总线(又称通信总线)外总线(又称通信总线) 外总线用于微型计算机系统与系统之间、微型计算机系统与仪器或其他外部设备(例如打印机)之间的连接。外总线可以是并行总线或串行总线,其数据传输率一般比系统总线低。常用的外总线有RS-232C、IEEE-488等。451微型计算机原理及接口技术9.1.2 总线信号线类型总线信号线类型 1. 1.地址总线地址总线 总线通常少则有几十条,多则有上百条信号线,根据其不同的功能大体上可分成以下几种类型: 地址总线是微型计算机用来传送地址信息的信号线,它的数目决定了微型计算机直接寻址的范围。地址总线均为单向、三态总线。 2.2.数据总线数据总线 数据总线是用来传送数据和代码的信号线,为双向、三态总线。452微型计算机原理及接口技术 3.3.控制总线控制总线 控制总线是传送控制信号的总线,用来实现命令和状态的传送、中断、DMA控制、提供系统时钟和复位信号等。控制总线根据不同的使用条件,可以为单向或双向、三态或非三态。 4.4.电源和地线电源和地线 它们决定了总线使用的电源种类及地线的分布和用法。 5.5.备用线备用线 留给厂家和用户自行定义,作为功能扩充和用户的特殊技术要求使用。453微型计算机原理及接口技术9.1.3 总线标准总线标准 总线标准是厂家和用户在把各种不同的模块组成系统时所要遵守的公共标准。它为各模块互连提供透明的标准界面,连接界面的任一方只需根据总线标准要求实现和完成接口的功能,而不必考虑另一方的接口方式。 总线标准一般包括如下基本内容: 机械结构标准:规定模块尺寸、总线插头、连接器等规格。 功能结构标准:规定总线接口引脚的定义、传输速率的设定、时序及信息格式和功能。 电气标准:规定信号的逻辑电平、负载能力及最大额定值、动态转换时间等。454微型计算机原理及接口技术9.1.4 9.1.4 总线的数据传输总线的数据传输总线的数据传输总线的数据传输 系统总线上的数据传输是在主控模块的控制下进行的,主控模块是有控制系统总线上的数据传输是在主控模块的控制下进行的,主控模块是有控制总线能力的模块,当多个模块均需使用总线进行数据传输时,则会发生总线冲总线能力的模块,当多个模块均需使用总线进行数据传输时,则会发生总线冲突。为了避免总线冲突,常采用的方法是分时复用方式,一个一个地轮流交替突。为了避免总线冲突,常采用的方法是分时复用方式,一个一个地轮流交替使用总线。即将总线传送时间分成若干个时间段,每个时间段完成模块之间一使用总线。即将总线传送时间分成若干个时间段,每个时间段完成模块之间一次完整而可靠的信息交换,被称为一个次完整而可靠的信息交换,被称为一个“ “传输周期传输周期” ”或者一个或者一个“ “总线操作周期总线操作周期” ”。为完成一次数据传输周期,通常需要。为完成一次数据传输周期,通常需要4 4个阶段:个阶段: 1.1.1.1.申请阶段申请阶段申请阶段申请阶段 当系统总线上有多个主控模块时,需要使用总线的主控模块需提出申请,由当系统总线上有多个主控模块时,需要使用总线的主控模块需提出申请,由总线仲裁逻辑确定将下一个传输周期的总线使用权交给哪个模块。总线仲裁逻辑确定将下一个传输周期的总线使用权交给哪个模块。455微型计算机原理及接口技术 2.2.寻址阶段寻址阶段 取得总线使用权的主控模块通过总线发出本次要访问的从属模块的存储器地址或I/O端口地址及有关命令,以启动参与本次传输的从属模块。 3.3.数据传输阶段数据传输阶段 主控模块和从属模块之间进行数据传输,在主控模块发出的控制信号作用下,数据由源模块发出,经数据总线传送到目的模块。 4.4.结束阶段结束阶段 主从模块的有关信息均从系统总线上撤除,让出总线,以便其他模块能继续使用。456微型计算机原理及接口技术9.2 ISA9.2 ISA总线总线9.2.1 ISA9.2.1 ISA总线概述总线概述ISA总线又称为PC-AT总线,是IBM公司在上世纪80年代中期随PC/AT微型计算机的推出而使用的总线。它将原来8位的PC总线扩展为16位的AT总线。该总线针对80286CPU设计,具有16位数据宽度,24位地址线,可寻址16MB。工作时钟频率为8MHz,数据传输率最高可达16MB/s。 ISA总线是在PC总线基础上扩展形成,在不改变原设计的前提下增加了数条信号线,一并解决了寻址与数据传输上的问题,同时也增加了有关内存控制的信号。 ISA总线支持8种类型的总线周期:存储器读、存储器写、I/O读、I/O写、中断、DMA传输、刷新和仲裁周期。457微型计算机原理及接口技术9.2.2 ISA9.2.2 ISA总线的体系结构总线的体系结构 1. 1.数据信号线数据信号线 ISA总线是在PC总线的基础上扩展一个36线插槽形成的。ISA总线由同一轴线的基本插槽和扩展插槽两段组成。基本插槽有62条信号线,兼容PC总线;扩展插槽有36条信号线,为ISA总线新增加的信号。 D15D0:用于完成微处理器与各设备间的数据传送。8位设备的数据传送通过DD0来完成,16位设备的数据传送则通过D15D0实现。当16位微处理器向8位设备传送数据时将通过两个8位传送来实现。458微型计算机原理及接口技术 2.2.地址信号线:地址信号线:1 10 0、 (1)A19A0:提供对存储器和I/O端口的寻址。对存储器寻址时与LA23LA17可达16MB的寻址能力。对I/O端口寻址时,只使用低16位地址线A15A0,故对I/O端口具有64K的寻址能力。A19A0在ALE为高时有效,并在ALE的下降沿被锁存。通过读/写命令使其保持有效。 (2)LA23LA17:用于对系统内的存储器进行寻址。当ALE为高时LA23LA17有效。由于它们是非锁存的,故不能在整个总线周期里有效。它们的目的是为一个存储器读写周期产生选中译码,并在ALE下降沿锁存这些译码信号。459微型计算机原理及接口技术 3.3.控制信号线控制信号线 AEN:用于禁止微处理器和其它设备使用系统总线,允许DMA控制器控制地址总线、数据总线和读/写信号线进行DMA传送。ISA扩展板的片选译码应包含AEN信号,以防止DMA周期中出现不正确的片选。 ALE:用来锁存地址信号。在DMA周期中ALE被强制为高。此信号与AEN并用时表明一个有效的微处理器或DMA地址。 中断请求信号IRQ3IRQ7、IRQ9IRQ12、IRQ14 IRQ15:用于外设向微处理器发出中断请求信号。当IRQ线由低向高跳变时产生中断请求。请求信号必须一直保持为高,直到微处理器响应了中断请求(执行中断服务程序)。其中IRQ9IRQ12、IRQ14IRQ15的请求优先级较高(IRQ9优先级最高),而来自IRQ3IRQ7的请求优先级较低(IRQ7优先级最低)。460微型计算机原理及接口技术 DMA请求信号DRQ0DRQ3、DRQ5DRQ7:用于外设向DMA控制器发出服务请求信号,或向总线主控设备发出总线控制权的请求。当DRQ线为高电平时,产生请求信号。该高电平信号必须一直保持到相应的DACK#有效为止。在 DRQ0DRQ3、DRQ5DRQ7中DRQ0的优先级最高,DRQ7的优先级最低。DMA响应信号DACK0#DACK3#、DACK5#DACK7#:分别被用来确认DRQ0DRQ3和DRQ5DRQ7的DMA请求。IOR#:I/O端口读命令。该信号有效(低电平)时,指令所选中的I/O设备将数据送到数据总线上。该信号由总线控制设备驱动。 IOW#:I/O端口写命令。该信号有效(低电平)时,指令所选中的I/O设备从数据总线上获取数据。该信号由总线控制设备驱动。SMEMR#:存储器读命令。该信号有效(低电平)时,指令所选定的一个存储单元将数据送到数据总线。该信号仅在对1MB以内的存储空间读时才有效。461微型计算机原理及接口技术 SMEMW#:存储器写命令。该信号有效(低电平)时,指令将当前数据总线上的数据写入所选定存储单元。该信号仅在对1MB以内的存储空间写时才有效。 MEMR#:存储器读命令。该信号有效(低电平)时,指令所选定的一个存储单元将数据送上数据总线。它对所有存储空间读时均有效。 MEMW#:存储器写命令。该信号有效(低电平)时,指令将当前数据总线上的数据写入到所选定的存储单元中。它对所有存储空间写时均有效。 MEM CS16#:16位存储器片选信号。该信号有效(低电平)时,表明这是一个16位的存储器读/写操作。 I/O CS16#:16位I/O端口片选信号。该信号有效(低电平)时,表明这是一个16位的输入/输出读/写操作。I/O CH CK#:I/O奇偶校验出错信号。 462微型计算机原理及接口技术 I/O CH RDY:I/O信道准备好信号。允许较慢速外设通过插入等待状态,延长I/O或内存读写周期。SBHE#:数据高字节允许信号。该信号有效(低电平)时,表明数据传送在数据总线上的高字节D15D8进行。16位设备用SBHE#控制数据总线缓冲区,使之连接于D15D8。MASTER#:主控信号。该信号和DRQ线一起获得外设上ISA总线的控制权。当接收到一个DACK#后,设备将MASTER#信号拉低,使得其获得系统地址总线、数据总线和控制总线的控制权。在此状态下,设备将在驱动地址总线和数据总线之前等待一个时钟周期,在读/写命令之前等待两个时钟周期。REFRESH#:该信号有效(低电平)时,表明正在进行内存刷新操作。 463微型计算机原理及接口技术 4.4.时钟与定时信号时钟与定时信号 OSC:周期为70ns的振荡信号(频率为14.31818 MHz)。该信号与系统时钟不同步。CLK:系统时钟信号。RESET DRV:复位信号。0WS#:该信号有效(低电平)时,表明不需插入任何等待周期,即可完成当前总线周期。OWS#信号由地址译码产生。T/C:DMAC通道计数结束信号。在DMAC通道操作中,当任意通道计数结束,该信号有效。该信号由DMA控制器发出。 5.5.电源与地线电源与地线 +5V、-5V、+12V、-12V、GND。464微型计算机原理及接口技术9.2.3 ISA9.2.3 ISA总线的应用总线的应用 ISA总线设备与计算机之间的数据通讯可通过相关指令直接对ISA总线进行读/写操作来完成。ISA总线设备的开发主要包括:硬件板卡的制作和应用程序的编写。465微型计算机原理及接口技术 ISA总线的I/O访问时序图: (a)读周期时序(b)写周期时序466微型计算机原理及接口技术 1. 1. 读周期读周期当微处理器执行输入指令时,便进入I/O读总线周期。(1) T1周期,输入指令将I/O端口地址送上地址总线,此时地址信号A0A15有效,在ALE信号的下降沿锁存该地址信号;(2) T2周期,IOR#信号有效,IOR#信号有效宽度约3个T周期,此时由A0A15译码选中的输入设备应在IOR#信号控制下,将外设的数据送上数据总线;(3) 微处理器在IOR#信号结束前从数据总线上读取数据;(4) T4周期,IOR#信号变成无效,I/O读周期结束。 467微型计算机原理及接口技术 2. 2. 写周期写周期当微处理器执行输出指令时,进入I/O写周期。(1) T1周期,输出指令将I/O端口地址送上地址总线,使地址信号A0A15有效,ALE信号的下降沿锁存地址信号,(2) T2周期,IOW#信号有效并持续大约3个T周期,在IOW#信号有效后,微处理器将数据送上数据总线;(3) 由A0A15译码选中的I/O端口,应在IOW#信号上升沿将数据总线上的数据送给外部设备;(4) T4周期,IOW#信号变成无效,I/O写周期结束。468微型计算机原理及接口技术9.3 PCI9.3 PCI总线总线 9.3.1 PCI 9.3.1 PCI总线概述总线概述PCI(Periphreal Component Interconnect)总线,已成为了计算机的一种标准总线。它以自身独有的优势一直持续使用到现在而没被其他总线完全取代,虽然它的功能并不十分强大,但是它的有许多优点,比如即插即用(Plug and Play)、中断共享等。PCI总线是一种同步的独立于微处理器的32位或64位局部总线,最高工作频率为33MHz,峰值速度在32位时为132MBs,64位时为264MBs,总线规范由PCISIG发布。与ISA总线相比,PCI总线的主要特点为:469微型计算机原理及接口技术1. 1. 高速性高速性 PCI局部总线以33MHz的时钟频率操作,采用32位数据总线,数据传输速率可高达132MBs,远超过以往各种总线。另外,PCI总线的主控设备(Master)可直接与微型计算机的内存交换数据,而不必通过微处理器进行中转,提高了数据传送的效率。 2. 2. 即插即用性即插即用性PCI板卡的硬件资源则是由微型计算机根据其各自的要求进行统一分配,当板卡插入系统时,系统会自动对板卡所需资源进行分配,如基地址、中断号等,并自动寻找相应的驱动程序。此时扩展板卡间、扩展板卡与系统间均不会有任何硬件资源的冲突发生,这就是即插即用性。470微型计算机原理及接口技术3. 3. 可靠性可靠性 PCI独立于处理器的结构,形成了一种独特的中间缓冲器设计方式,将处理器子系统(包括主处理器、高速缓存和存储器)与外围设备分开。这样用户可以随意增添外围设备,以扩充微型计算机系统而不必担心在不同时钟频率下会导致性能的下降。4. 4. 复杂性复杂性 PCI总线的强大功能增加了硬件设计和软件开发的实现难度。硬件上需采用大容量、高速度的CPLD或FPGA芯片来实现PCI总线复杂的功能设计。软件上则要根据所用的操作系统,编制支持即插即用功能设备驱动程序。 471微型计算机原理及接口技术5. 5. 自动配置自动配置 PCI总线规范规定PCI插卡可以自动配置。PCI定义了3种地址空间:存储器空间,I/O空间和配置空间,每个PCI设备中都有256字节的配置空间用于存放自动配置信息,当PCI扩展卡插入系统,BIOS将根据读到的该卡信息,结合系统的实际情况为扩展卡分配存储地址、中断和其他相关信息。6. 6. 共享中断共享中断 PCI总线是采用低电平有效方式,多个中断可以共享一条中断线,而ISA总线是边沿触发方式。 472微型计算机原理及接口技术 7. 7. 扩展性好扩展性好 如果需要把许多设备连接到PCI总线上,而总线驱动能力不足时,可以采用多条PCI总线,这些总线上均可以并发工作,每条总线上均可挂接若干设备。PCI总线与ISA,EISA及MCA总线完全兼容。 8. 8. 多路复用多路复用 在PCI总线中为了优化设计,采用了地址线和数据线共用一组物理线路,即多路复用。PCI接插件尺寸小又采用了多路复用技术,减少了元件和管脚个数,提高了效率。 9. 9. 严格规范严格规范 PCI总线对协议、时序、电气性能、机械性能等指标都有严格的规定,保证了PCI总线的可靠性和兼容性。由于PCI总线规范十分复杂,其接口的实现就有较高的技术难度。473微型计算机原理及接口技术9.3.2 PCI9.3.2 PCI总线的体系结构总线的体系结构 1. 1. 系统信号系统信号 在一个PCI总线的应用系统中,如果一个PCI设备取得了总线的控制权,就称其为“主设备”,而被主设备选中以进行通信的设备称为“从设备”或“目标设备”。PCI局部总线中各信号作用如下:CLK IN:时钟信号。PCI总线上的所有操作都是与该时钟信号同步的,系统在CLK的上升沿采样PCI上设备的所有输入信号。时钟信号的频率范围是033MHz或066MHz。而66MHz时钟仅支持3.3V的信号环境。时钟仅在节省电源状态下才会停止。RST# IN:复位信号,低电平有效。当该信号有效时,将所有PCI专用的寄存器、定时器和信号复位到指定状态。一般情况下,全部输出信号处于高阻状态。474微型计算机原理及接口技术2. 2. 地址和数据信号地址和数据信号AD310 T/S:地址、数据复用信号。PCI总线上地址和数据的传输,必需在FRAME#有效期间进行。当FRAME#有效时的第1个时钟,AD310上的信号为地址信号,称地址期;当IRDY#和TRDY#同时有效时,AD310上的信号为数据信号,称数据期。PCI总线传输周期包含一个地址期和一个或多个数据期。C/BE30# T/S:总线命令和字节允许多路复用信号。在地址期,这4条线上传输的是总线命令;在数据期,它们传输的是字节使能信号,用来指定在数据期,AD310线上4个字节数据中哪些字节为有效数据,以进行传输。 PAR T/S:奇偶校验信号。它通过AD310和C/BE30进行奇偶校验。主设备为地址周期和写数据周期驱动PAR,从设备为读数据周期驱动PAR。475微型计算机原理及接口技术3. 3. 控制信号控制信号FRAME# S/T/S:帧周期信号,由主设备驱动。表示一次总线传输的开始和持续时间。当FRAME#有效时,预示总线传输的开始;在其有效期间,先传地址,后传数据;当FRAME#撤消时,预示总线传输结束,并在IRDY#有效时进行最后一个数据期的数据传送。IRDY# S/T/S:主设备准备好信号。IRDY#要与TRDY#联合使用,当二者同时有效时,数据才能传输。否则,即未准备好,进入等待周期。在写周期,该信号有效时,表示数据已由主设备提交到AD310线上;在读周期,该信号有效时,表示主设备已做好接收数据的准备。TRDY# S/T/S:从设备(被选中的设备)准备好信号。同样TRDY#要与IRDY#联合使用,只有二者同时有效,数据才能传输。476微型计算机原理及接口技术STOP# S/T/S:停止数据传送信号。该信号有效时表示从设备要求主设备停止当前的数据传送。显然,该信号应由从设备发出。LOCK# S/T/S:锁存信号。该信号有效表示驱动它的设备进行的操作可能需要多个传输周期才能完成。IDSEL IN:初始化设备选择信号。在参数配置读写期间,用作片选信号。 DEVSEL# S/T/S:设备选择信号。该信号有效表示驱动它的设备已成为当前访问的从设备。该信号由从设备发出。477微型计算机原理及接口技术4.4.仲裁信号仲裁信号REQ# T/S:总线占用请求信号。该信号有效表明驱动它的设备要求使用总线。GNT# T/S:总线占用允许信号。该信号有效,表示申请使用总线的请求已被获准。5.5.错误报告信号错误报告信号PERR# S/T/S:数据奇偶校验错误报告信号。一个设备只有在响应设备选择信号(DEVSEL#)和完成数据期之后,才能报告一个PERR#。 SERR# O/D:系统错误报告信号。用做报告地址奇偶错、特殊命令序列中的数据奇偶错,以及其他可能引起灾难性后果的系统错误。它可由任何设备发出。478微型计算机原理及接口技术6.6.中断信号中断信号在PCI总线中,中断是可选项,不一定必须具有。 INTA# O/D:用于请求中断。 INTB#、INTC#、INTD# O/D:用于请求中断,仅对多功能设备有意义。所谓的多功能设备是指:将几个相互独立的功能集中在一个设备中。各功能与中断线之间的连接是任意的,没有任何附加限制。7.7.附加信号附加信号PRSNT12# IN:卡存在信号。该信号不是设备的信号,而是插件板提供的信号。该信号用以指出PCI插槽上是否存在一个插件板,如果存在则要求母板为其供电。 CLKRUN# IN、O/D、S/T/S:时钟运行信号。该信号是可选的,作为设备的输入信号,用来确定CLK的状态,设备通过漏极开路输出请求CLK的开始与加速。479微型计算机原理及接口技术8.648.64位总线扩展信号位总线扩展信号AD6332 T/S:扩展的32位地址和数据复用线。在地址期,若使用DAC命令且REQ64#有效,则为64位地址的高32位,否则保留;在数据期,当REQ64#和ACK64#同时有效,这32条线上含有高32位数据。C/BE74# T/S:总线命令和字节使能多路复用信号线。在数据期,若REQ64#和ACK64#同时有效。在地址期,如果使用了DAC命令且REQ64#信号有效,表明C/BE74#上传送的是总线命令,否则保留。REQ64# S/T/S:64位传输请求信号。该信号由当前主设备驱动,表示本设备需要采用64位通路传输数据。它与FRAME#具有相同的时序。ACK64# S/T/S:64位传输认可,表明从设备将用64位传输。此信号由从设备驱动,并且和DEVSEL#具有相同的时序。PAR64 T/S:奇偶双字节校验,是AD6332和C/BE74#的校验位。480微型计算机原理及接口技术9.JTAG9.JTAG边界扫描信号边界扫描信号TCK IN:测试时钟信号。TDI IN:测试数据输入信号。TDO OUT:测试数据输出信号。TMS IN:测试模式选择信号。TRST# IN:测试复位信号。481微型计算机原理及接口技术9.3.3 PCI9.3.3 PCI总线的应用总线的应用 PCI总线设备的开发通常有两种方式:)利用大规模可编程逻辑器件,依据PCI总线协议实现PCI总线设备之间的数据交互;)选用集成好的PCI总线协议的接口芯片,根据接口芯片的时序要求完成数据交互。 PCI规范要求每个PCI设备必须提供一个PCI配置空间来保存设备的配置信息,以便于PCI设备的管理,实际空间大小为64个双字。64个双字的配置空间被分成两个区域,即:16个双字的配置首部区和用户自定义区域。这个存储空间被看作是一些按不同要求设置的寄存器组成。因此,也称为配置寄存器空间。不同的设备只要对每个区域中的相关寄存器进行设置即可。 配置寄存器 配置首部区有三种格式:称为首部类型0、1、2。482微型计算机原理及接口技术首部类型0配置寄存器483微型计算机原理及接口技术 命令寄存器(Command Register):提供了对于设备反应和/或执行PCI访问的能力。 状态寄存器:用于记录PCI局部总线有关事件的状态信息。 首部类型寄存器:位(60)定义了配置首部双字4到15的格式,位7定义了是单功能(位7=0)还是多功能(位7=1)设备。484微型计算机原理及接口技术9.4 PCI Express9.4 PCI Express总线总线9.4.1 PCI Express9.4.1 PCI Express总线概述总线概述 继1992年Intel公司及PCI SIG推出第二代总线PCI以来,又于2002年推出了可代替第二代总线PCI的第三代通用I/O总线PCI Express 总线。 PCI Express单通道单向2.5Gbit/s(PCI Express 1.0规范)的传输速度,提高了I/O的数据吞吐量; 在3D图像处理加速、解决高端服务器数据吞吐瓶颈、高速数据采集等领域,PCI总线已经难以满足要求。PCI Express在继承PCI总线的优点的基础上,用可升级的全串行总线取代了PCI的并行总线技术,并通过先进的点对点互连技术、基于开关的技术和封包协议提供了许多新的性能和特性。485微型计算机原理及接口技术9.4.2 PCI Express9.4.2 PCI Express总线的体系结构总线的体系结构 PCI Express总线有三个不连续的层,即物理层(Physical Layer)、数据链路层(Data Link Layer)和事务层(Transaction Layer)组成。 PCI Express设备层486微型计算机原理及接口技术 每个层都可完成发送信息(Tx)和接收信息(Rx)。各层间以及不同设备间均利用数据包的形式进行信息交换。数据包有三种,即事务层数据包(TLP)、数据链路层数据包(DLLP)和物理层数据包(PLP)。由事务层、数据链路层、物理层处理的数据包分别称为事务层数据包、数据链路层数据包、物理层数据包。 事务层数据包的组装与拆解事务层数据包的组装与拆解487微型计算机原理及接口技术1. 1. 事务层(事务层(Transcation LayerTranscation Layer)事务可以分为四类,即存储器事务、I/O事务、配置事务、消息事务。一个事务需要完成一个或多个TLP的传输。事务层主要完成出站TLP的创建、入站TLP的分解、TLP发送/接收缓冲、流量控制、虚拟信道管理和排序的功能。主要功能模块有: (1) 事务层数据包(TLP)该数据包由三部分组成,在发送方向上依次为:头、数据有效载荷(data payload)(可选)、ECRC校验码(TLP Digest)(可选)。 (2)(虚拟信道)缓冲区 PCI Express通过给不同的事务流(虚拟信道)设置缓冲区的办法,提供一种在物理链路上支持多个独立逻辑数据流的手段,提高了链路的效率。488微型计算机原理及接口技术 (3) 流量控制 流量控制要求发送端口在发送TLP前,必须先检验接收端口是否有足够的VC缓冲区空间来接收所发送的TLP,以免使得发送的TLP造成接收端口VC缓冲区溢出。 (4)虚拟信道管理 PCI Express提供了针对不同流量的优先级,根据基于优先级的虚拟通道仲裁机制,提供差异性服务的功能。 (5)排序 流量类别相同的TLP通过同一VC时,需要对其按照PCI Express排序规则进行排序,以利于所有TLP以正确的顺序通过PCI Express构架。 489微型计算机原理及接口技术 (6)发送和接收TLP过程 发送TLP时,事务层从设备核心接收待发送的数据以及组成TLP头所需的信息并计算可选的TLP摘要字段,组成TLP,存储在VC缓冲区中。接收TLP时,接收方事务层先将TLP存储在接收VC缓冲区中,然后校验ECRC字段,如果无误,则将ECRC字段删除,并根据TLP头中得到的信息,将有效载荷发送给设备核心。2.2.数据链路层(数据链路层(Data Link LayerData Link Layer) 数据链路层位于事务层和物理层之间。它的主要作用就是为链路上的两个设备的TLP交换提供可靠的机制。数据链路层的主要功能为:数据交换、错误探测和重试、初始化和电源管理。主要功能模块有:490微型计算机原理及接口技术 (1)数据链路层数据包 数据链路层数据包是在链路上两个直接相连设备数据链路层之间传输的数据包。它包含ACK/NAK DLLP、电源管理DLLP、流量控制DLLP三种。它由三部分组成,在发送方向上依次为:DLLP类型(1字节)、附加属性字段(3字节)、CRC(2字节)。(2)重发缓冲区 重发缓冲区用于保存那些已经发送但还未确认已经发送成功的TLP,使其在发送失败时,能够将原来的TLP重发。 (3)ACK/NAK DLLP ACK/NAK DLLP用于通知发送方数据链路层TLP是否接收成功。发送方数据链路层如果接收到ACK DLLP表明接收方接收到的TLP是完好的。反之,如果收到NAK DLLP则表明接收方接收到的TLP有误。491微型计算机原理及接口技术 (4)多路复用器和多路分配器 多路复用器将不同类型的数据包(TLP、DLLP)复用到同一个路径上发送。多路分配器将一个路径上的数据包分配到不同的接收单元。 (5)TLP错误检查 检查接收到的TLP中的CRC错误,如果检查到错误,则发送一个带该数据包ID的NAK DLLP发送到发送方数据链路层。 (6)发送和接收过程 发送时,在待发送TLP的前面加上12位的序列号,以便于接收方数据链路层探测TLP在传输过程中是否丢失。接收时,接收方数据链路层先检查接收到的TLP的CRC错误。如果无误,剥除这个TLP中的序列号和LCRC,将TLP向上传递给事务层,并返回一个带序列号的ACK DLLP给发送方,由发送方删除其重发缓冲区中这个TLP的副本。如果有误,返回一个带序列号的NAK DLLP给发送方,要求其重新发送。492微型计算机原理及接口技术 3.3.物理层(物理层(Physical LayerPhysical Layer) 物理层在PCI Express分层结构的最底层。它包含逻辑物理层和电气物理层两部分。逻辑物理层包含所有对数据包进行操作的数字逻辑。电气物理层包含PCI Express设备和链路的物理接口,即差分驱动器和差分接收器。主要功能模块有: (1) 物理层数据包(PLP) 物理层数据包源于发送设备物理层,而终止于接收设备的物理层。物理层数据包结构非常简单,开始是1个字节的COM字符,后面是定义PLP类型及其他信息的3个或多个字符,物理层数据包的大小是4字节的整数倍。 (2) 编码器/解码器 PCI Express使用8b/10b传输码传输数据。8b/10b编码器将待发送的8位数据编码成10位的数据。8b/10b解码器则检查收到的10位数据是否有错,如果没错,将待接收的10位数据解码成8位数据。493微型计算机原理及接口技术 (3) 并行串行/串行并行转换器 并行串行转换器将8b/10b编码器定时输入进来的250MHz频率的10位数据,按一定的比特顺序以2.5GHz频率定时输出串行化的比特流。串行并行转换器则将按接收时钟定时输入的串行比特流,转换成250MHz频率的并行10位数据。 (4) 差分驱动/接收器 差分驱动器完成将串行化的比特流驱动到差分传输介质上,并以2.5Gbit/s的速度完成数据的差分传输。接收器完成检测链路上的信号,并将2.5GHz的差分信号转化为串行化的比特流。 (5) 发送和接收过程494微型计算机原理及接口技术9.4.3 PCI Express9.4.3 PCI Express总线的应用总线的应用 1.1.事物层数据包事物层数据包 (1) 数据包的一般格式实现PCI Express端点功能的一部分主要工作是围绕事务层数据包(TLP)而展开的。PCI Express有4种独立空间,即存储器空间、I/O空间、配置空间和消息空间。访问这些空间需要使用不同类型的TLP,如存储器读请求数据包(MemoryReadRequest)、存储器写请求数据包(MemoryWriteRequest)、I/O空间读写请求及完成数据包(I/ORead/WriteRequest/Completion)等。这些TLP的格式随数据包类型的不同而有所不同,协议中把它们分成了三类,完成包属于Cpl包,内存写数据包和消息包属于Posted包,其他属于Non-posed包,但它们都符合下图通用头格式。495微型计算机原理及接口技术 通用TLP头格式 Fmt:指明这个TLP头的大小以及是否含有数据有效载荷。Type:指明TLP的类型。TC:指明需要应用于此TLP及与其相关的完成数据包的流量类别。TD:ECRC校验码(TLP Digest)是否有效,1表示有效。 EP:指明TLP中数据是否有效,1表示无效。 Attr:指明TLP是否按照严格顺序以及是否进行缓存侦测保护。Length:指明TLP数据有效载荷的传送大小。496微型计算机原理及接口技术 (2)TLP路由 三种路由方式:地址路由、ID路由和隐式路由。 当PCI Express设备收到TLP时,首先判断需要使用的路由方式: 第一,如果是地址路由,则根据TLP头地址字段判断它或者它的下游设备是不是预期完成者,如果是,则接收该数据包。如果不是,则将TLP转发到上游链路。如果TLP没有任何设备能接收,则将它当作不支持请求处理。 第二,如果是ID路由,则根据TLP头的类型、总线号、设备号、功能号字段判断它或者它的下游设备是否是预计完成者,如果是,则接收该数据包。如果不是,则将TLP转发到上游链路。如果TLP没有任何设备能接收,则将它当作不支持请求处理。 第三,如果是隐式路由,则设备仅仅根据TLP头的类型和消息代码字段检查这个TLP是否适合它。497微型计算机原理及接口技术 2.PCI Express2.PCI Express配置空间配置空间 PCI Express PCI Express配置空间结构配置空间结构498微型计算机原理及接口技术 PCI Express配置空间可以分成3部分:(1)PCI头 偏移地址000H03FH,共64字节,是PCI兼容寄存器区域,可用PCI方式或PCI Express增强配置机制访问。(2)PCI设备专用寄存器组和新功能寄存器组 偏移地址040H0FFH,共192字节,PCI Express功能结构(PCI Express Capability Structure)必须在该区域实现;(3)PCI Express扩展配置空间 偏移地址100H0FFFH,共3840字节,用于实现可选的PCI Express扩展功能寄存器,如高级错误报告、虚拟信道、功率预算等。499微型计算机原理及接口技术 供应商代码(Device)、设备标识(Vender ID)、版本号(Revision ID)、类代码(Class Code)、命令寄存器(Command Register)、状态寄存器(Status Register)和首部类型寄存器(Header Type)等为强制性首部寄存器,其定义与PCI总线基本相同,不同点如下:命令寄存器:增加了对位10的定义,将位10定义为中断禁止位,控制PCI Express设备产生INTx中断消息的能力。此位写为0时,设备产生INTx中断消息的能力被使能;此位写为1时,设备产生中断消息的能力被禁止。状态寄存器:增加了对位3的定义,将位3定义为只读中断状态位。为1时,表明设备有一个挂起的中断请求,即此设备早先曾发送了一条中断消息,正在等待服务。500微型计算机原理及接口技术
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号