zoukankan      html  css  js  c++  java
  • 微机原理复习整理

    第一章 微型计算机系统概述

    1. 微型计算机系统组成

    1. 微处理器:运算器、控制器、寄存器
    2. 微型计算机:输入输出接口、总线、内存
    3. 微型计算机系统:由硬件和软件共同组成的完整的计算机系统

    2. 系统总线

    • 地址总线AB
      • 输出将要访问的内存单元或I/O端口的地址
      • 地址线的多少决定了系统直接寻址存储器的范围
    • 数据总线DB
      • CPU读操作时,外部数据通过数据总线送往CPU
      • CPU写操作时,CPU数据通过数据总线送往外部
      • 数据线的多少决定了一次能够传送数据的位数
    • 控制总线CB
    • 协调系统中各部件的操作,有输出控制、输入状态等信号
    • 控制总线决定了系统总线的特点,例如功能、适应性等

    3. 基于8088CPU的PC微机系统结构

    4. 微处理器(CPU)内部结构

    • 指令处理单元(控制器):对机器指令译码,产生指令执行所需的控制信号,并按照指令规定的时序将控制信号传送到CPU内部各器件或传送到总线。

    • 算术逻辑单元(运算器):接收到控制器发出的各种运算控制信号后,执行相应运算,并影响相应标志位。

    • 寄存器组:CPU内用于暂时存放数据、地址的存储单元,CPU从内存读取指令、在内存中读写数据,均需要这些寄存器完成寻址、暂存的功能。其中标志寄存器能够间接影响程序执行流程

    • 8088的内部结构从功能分成两个单元

    1. 总线接口单元BIU——管理8088与系统总线的接口,负责CPU对存储器和外设进行访问
    2. 执行单元EU——负责指令的译码、执行和数据的运算
    3. 两个单元相互独立,分别完成各自操作
      两个单元可以并行执行,实现指令取指和执行的流水线操作

    8088 CPU 外部特性与 IBM PC总线结构

    image

    1. 8088的两种组态模式

    • MN/MX*接高电平为最小组态模式
    • MN/MX*接低电平为最大组态模式

    2. 8088最小组态的引脚信号

    1. 数据和地址引脚
    1. AD7~AD0
    • 地址/数据分时复用引脚,双向、三态
    • 在访问存储器或外设的总线操作周期中,这些引脚在第一个时钟周期输出存储器或I/O端口的低8位地址A7~A0
    • 其他时间用于传送8位数据D7~D0
    1. A15~A8(Address)
      中间8位地址引脚,输出、三态
      这些引脚在访问存储器或外设时,提供全部20位地址中的中间8位地址A15~A8
    2. A19/S6~A16/S3(Address/Status)
    • 地址/状态分时复用引脚,输出、三态
    • 这些引脚在访问存储器的第一个时钟周期输出高4位地址A19~A16
    • 在访问外设的第一个时钟周期全部输出低电平无效
    • 其他时间输出状态信号S6~S3
    • S6始终为低;
    • S5为标志寄存器的中断允许标志的状态位,它在每一个时钟周期开始时被修改;
    • S4和S3用以指示是哪一个段寄存器正在被使用,00为ES,01为SS,10为CS,11为DS。
    • 在DMA方式时这4条线处于高阻状态
    2. 读写控制引脚
    1. ALE(Address Latch Enable)
    • 地址锁存允许,输出、三态、高电平有效

    • ALE引脚高有效时,表示复用引脚:AD7~AD0和A19/S6~A16/S3正在传送地址信息

    • 由于地址信息在这些复用引脚上出现的时间很短暂,所以系统可以利用ALE引脚将地址锁存起来

    1. IO/M*(Input and Output/Memory)
    • I/O或存储器访问,输出、三态

    • 该引脚输出高电平时,表示CPU将访问I/O端口,这时地址总线A15~A0提供16位I/O口地址

    • 该引脚输出低电平时,表示CPU将访问存储器,这时地址总线A19~A0提供20位存储器地址

    1. WR*(Write)
    • 写控制,输出、三态、低电平有效
    • 有效时,表示CPU正在写出数据给存储器或I/O端口
    1. RD*(Read)
    • 读控制,输出、三态、低电平有效
    • 有效时,表示CPU正在从存储器或I/O端口读入数据
    1. READY
    • 存储器或I/O口就绪,输入、高电平有效
    • 在总线操作周期中,8088CPU会在第3个时钟周期的前沿(下降沿)测试该引脚
      如果测到高有效,CPU直接进入第4个时钟周期
      如果测到无效,CPU将插入等待周期Tw
    • CPU在等待周期中仍然要监测READY信号,有效则进入第4个时钟周期,否则继续插入等待周期Tw
    1. DEN*(Data Enable)
    • 数据允许,输出、三态、低电平有效
    • 有效时,表示当前数据总线上正在传送数据,可利用他来控制对数据总线的驱动
    1. DT/R*(Data Transmit/Receive)
    • 数据发送/接收,输出、三态
    • 该信号表明当前总线上数据的流向
      高电平时数据自CPU输出(发送)
      低电平时数据输入CPU(接收)
    1. SS0*(System Status 0)
      最小组态模式下的状态输出信号
    • 它与IO/M和DT/R一道,通过编码指示CPU在最小组态下的8种工作状态:
    3. 中断请求和响应引脚
    1. INTR(Interrupt Request)
    • 可屏蔽中断请求,输入、高电平有效
    • 有效时,表示请求设备向CPU申请可屏蔽中断
    • 该请求的优先级别较低,并可通过关中断指令CLI清除标志寄存器中的IF标志、从而对中断请求进行屏蔽
    1. INTA*(Interrupt Acknowledge)
    • 可屏蔽中断响应,输出、低电平有效
    • 有效时,表示来自INTR引脚的中断请求已被CPU响应,CPU进入中断响应周期
    • 中断响应周期是连续的两个,每个都发出有效响应信号,以便通知外设他们的中断请求已被响应、并令有关设备将中断向量号送到数据总线
    1. NMI(Non-Maskable Interrupt)
    • 不可屏蔽中断请求,输入、上升沿有效
    • 有效时,表示外界向CPU申请不可屏蔽中断
    • 该请求的优先级别高于INTR,并且不能在CPU内被屏蔽
    • 当系统发生紧急情况时,可通过他向CPU申请不可屏蔽中断服务
    4. 总线请求和响应引脚
    1. HOLD
    • 总线保持(即总线请求),输入、高电平有效
    • 有效时,表示总线请求设备向CPU申请占有总线
    1. HLDA(HOLD Acknowledge)
    • 总线保持响应(即总线响应),输出、高电平有效
    • 有效时,表示CPU已响应总线请求并已将总线释放
    • 此时CPU的地址总线、数据总线及具有三态输出能力的控制总线将全面呈现高阻,使总线请求设备可以顺利接管总线
    • 待到总线请求信号HOLD无效,总线响应信号HLDA也转为无效,CPU重新获得总线控制权
    1. RESET
    • 复位请求,输入、高电平有效
    • 该信号有效,将使CPU回到其初始状态;当它再度返回无效时,CPU将重新开始工作
      8088/86复位后
      CS=FFFFH、IP=0000H,
      所以程序入口在物理地址FFFF0H
    1. CLK(Clock)
      时钟输入
    5. 其它引脚
    1. MN/MX*(Minimum/Maximum)
      组态选择,输入
    2. TEST*
      测试,输入、低电平有效
    6. 8088的基本总线时序
    1. 总线时序描述CPU引脚如何实现总线操作
    • 描述总线操作的微处理器时序有三级:
      指令周期 → 总线周期 → 时钟周期
    • 指令周期是指一条指令经取指、译码、读写操作数到执行完成的过程。若干总线周期组成一个指令周期
    • 总线周期是指CPU通过总线操作与外部(存储器或I/O端口)进行一次数据交换的过程
    • 8088的基本总线周期需要4个时钟周期
    • 总线操作中如何实现CPU与内存、接口芯片间的时序同步是关键
    • 同步时序:
      各部件都以系统时钟信号为基准
      当相互不能配合时,快速部件(CPU)插入等待状态等待慢速部件(I/O和存储器)
    • 异步时序:
      CPU与外设接口通过应答联络信号实现同步操作
    7. 8088最小组态的总线时序
    • 存储器读总线周期
    • 存储器写总线周期
    • I/O读总线周期
    • I/O写总线周期
    8. 8088最大组态中的引脚定义
    • 有些控制信号不相同,主要是用于输出操作编码信号,由总线控制器8288译码产生系统控制信号:
    • LOCK*——总线封锁信号
    • S2、S1、S0*——3个状态信号
    • QS1、QS0——指令队列状态信号
    • RQ/GT0、RQ/GT1——2个总线请求/同意信号
    9. 8088最大组态的总线形成

    系统地址总线

    1. 采用三态透明锁存器74LS373和三态单向缓冲器74LS244
    2. 系统数据总线
      通过三态双向缓冲器74LS245形成和驱动
    3. 系统控制总线
      主要由总线控制器8288形成
      MEMR、MEMW、IOR、IOW、INTA*

    第五章 半导体存储器及接口

    1. 半导体存储器的分类
    1. 读写存储器RAM:SRAM.DRAM,NVRAM
    2. 只读存储器ROM
    • 掩膜ROM:信息制作在芯片中,不可更改
    • PROM:允许一次编程,此后不可更改
    • EPROM:用紫外光擦除,擦除后可编程;并允许用户多次擦除和编程
    • EEPROM(E2PROM):采用加电方法在线进行擦除和编程,也可多次擦写
    • Flash Memory(闪存):能够快速擦写的EEPROM,但只能按块(Block)擦除
    2. 半导体存储器芯片的内部结构
    1. 每个存储单元具有一个唯一的地址,可存储1位(位片结构)或多位(字片结构)二进制数据
    • 存储容量(bits)与地址、数据线个数有关:
      芯片的存储容量=2^M×N
      =存储单元数×存储单元的位数
    1. 地址译码电路结构
      单译码,双译码
    2. 片选和读写控制逻辑
      片选端CS或CE
      有效时,可以对该芯片进行读写操作
      输出OE*
      控制读操作。有效时,芯片内数据输出
      该控制端对应系统的读控制线
      写WE*
      控制写操作。有效时,数据进入芯片中
      该控制端对应系统的写控制线
    4. 随机存取存储器
    1. 静态RAM(SRAM)
      image
    • SRAM的基本存储单元是触发器电路
    • SRAM一般采用“字结构”存储矩阵
    • SRAM芯片2114外部特性:
      10根地址线A9~A0
      4根数据线I/O4~I/O1
      片选CS*
      读写WE*
    • SRAM芯片6264外部特性
      28个引脚:
      13根地址线A12~A0
      8根数据线D7~D0
      片选CS1、CS2
      读写WE
      、OE*
    1. 动态RAM
    • 每个存储单元存放一位,芯片内每个位单元具有独立地址
    • 需要8个存储芯片构成一个字节单元,每个
    • DRAM芯片4116外部特性
      • 7根地址线A6~A0,
      • 1根数据输入线DIN,
      • 1根数据输出线DOUT,
      • 行地址选通RAS*,
      • 列地址选通CAS*,
      • 读写控制WE*.
    • DRAM 4116的刷新:采用“仅行地址有效”方法刷新
    • DRAM芯片2164外部特性
      • 8根地址线A7~A0
        1根数据输入线DIN
        1根数据输出线DOUT
        行地址选通RAS*
        列地址选通CAS*
        读写控制WE*
    5. 只读存储器
    1. EPROM 2716
    • 11根地址线A10~A0
      8根数据线DO7~DO0
      片选/编程CE/PGM
      读写OE

      编程电压VPP
    1. EPROM 2764
    • 13根地址线A12~A0
      8根数据线D7~D0
      片选CE*
      编程PGM*
      读写OE*
      编程电压VPP
    1. EEPROM
      用加电方法,进行在线(无需拔下,直接在电路中)擦写(擦除和编程一次完成)
    2. EEPROM 2717A
    • 11根地址线A10~A0
      8根数据线I/O7~I/O0
      片选CE*
      读写OE、WE
      状态输出RDY/BUSY*
    1. EEPROM 2864A
    • 13根地址线A12~A0
      8根数据线I/O7~I/O0
      片选CE*
      读写OE、WE
    6. 半导体存储器与CPU的连接
    1. 存储芯片的数据线
    • 若芯片的数据线正好8根:
      一次可从芯片中访问到8位数据,全部数据线与系统的8位数据总线相连
    • 若芯片的数据线不足8根:一次不能从一个芯片中访问到8位数据,“位扩充”
      image
    1. 存储芯片的地址线
    • 芯片的地址线通常应全部与系统的低位地址总线相连
    • 寻址时,这部分地址的译码是在存储芯片内完成的,我们称为“片内译码
    1. 存储芯片的片选端
    • 存储系统常需利用多个存储芯片扩充容量,也就是扩充了存储器地址范围
    • 进行“地址扩充”,需要利用存储芯片的片选端对多个存储芯片(组)进行寻址
    • 这个寻址方法,主要通过将存储芯片的片选端与系统的高位地址线相关联来实现
    • 这种扩充简称为“地址扩充”或“字扩充”

    译码和译码器

    全译码

    1. 所有的系统地址线均参与对存储单元的译码寻址
    2. 包括低位地址线对芯片内各存储单元的译码寻址(片内译码),高位地址线对存储芯片的译码寻址(片选译码)
    3. 采用全译码,每个存储单元的地址都是唯一的,不存在地址重复
    4. 译码电路可能比较复杂、连线也较多

    部分译码

    1. 只有部分(高位)地址线参与对存储芯片的译码
    2. 每个存储单元将对应多个地址(地址重复),需要选取一个可用地址
    3. 可简化译码电路的设计
    4. 但系统的部分地址空间将被浪费

    线选译码

    • 只用少数几根高位地址线进行芯片的译码,且每根负责选中一个芯片(组)
    • 虽构成简单,但地址空间严重浪费,必然会出现地址重复
    • 一个存储地址会对应多个存储单元
    • 多个存储单元共用的存储地址不应使用
    1. 存储芯片的读写控制线
    • 芯片OE*与系统的读命令线相连
      当芯片被选中、且读命令有效时,存储芯片将开放并驱动数据到总线
    • 芯片WE*与系统的写命令线相连
      当芯片被选中、且写命令有效时,允许总线数据写入存储芯片
    7. 存储芯片与CPU的配合
    1. 总线驱动
    • CPU的总线驱动能力有限
    • 单向传送的地址和控制总线,可采用三态锁存器和三态单向驱动器等来加以锁存和驱动
    • 双向传送的数据总线,可以采用三态双向驱动器来加以驱动
    1. 时序配合
    • 分析存储器的存取速度是否满足CPU总线时序的要求
      如果不能满足:考虑更换芯片,总线周期中插入等待状态TW
    8. 8086存储器组织
    1. 寻址空间(20位地址线)
      220=1M bytes的存储器寻址空间
      分段的概念
    2. 分段组织
      段寄存器的16位值左移4位,得到的20位值加上16位的偏移量。
    3. 字与字节访问
      AD0 信号和BHE信号组合,选择奇偶字节或字。

    第6章 基本输入输出接口

    I/O接口概述

    • I/O接口是位于系统与外设间、用来协助完成数据传送和控制任务的逻辑电路
    • PC机系统板的可编程接口芯片、I/O总线槽的电路板(适配器)都是接口电路
    1. 信号转换
      对信号的形式和数据的格式进行变换
      微机直接处理:数字量、开关量、脉冲量
    2. 数据缓冲
      对输入输出数据进行缓冲和锁存
      输出锁存缓冲环节,输入锁存缓冲环节
    3. 对I/O端口进行寻址
    4. 与CPU和I/O设备进行联络

    I/O接口的典型结构

    1. 接口电路的内部结构
    • 数据寄存器
      保存外设给CPU和CPU发往外设的数据
    • 状态寄存器
      保存外设或接口电路的状态
    • 控制寄存器
      保存CPU给外设或接口电路的命令
    2. 接口电路的外部特性
    • 面向CPU一侧的信号:用于与CPU连接、主要是数据、地址和控制信号
    • 面向外设一侧的信号:用于与外设连接、提供的信号种类繁多、功能定义、时序及有效电平等差异较大
    3. 接口电路芯片的分类
    • 通用接口芯片
      支持通用的数据输入输出和控制的接口芯片
    • 面向外设的专用接口芯片
      针对某种外设设计、与该种外设接口
    • 面向微机系统的专用接口芯片
      与CPU和系统配套使用,以增强其总体功能
    4. 接口电路的可编程性

    3. I/O端口的编址

    1. 数据寄存器、状态寄存器和控制寄存器占有的I/O地址常依次被称为数据端口、状态端口和控制端口,用于保存数据、状态和控制信息
    2. 两类编排形式
    • I/O端口独立编址

    优点

      • I/O端口的地址空间独立
      • 控制和地址译码电路相对简单
      • 专门的I/O指令使程序清晰易读

    缺点

      • I/O指令没有存储器指令丰富
    • I/O端口与存储器统一编址

    优点:

      • 不需要专门的I/O指令
      • I/O数据存取与存储器数据存取一样灵活

    缺点:

      • I/O端口要占去部分存储器地址空间
      • 程序不易阅读(不易分清访存和访问外设)

    4. 8088/8086的输入输出指令

    输入指令
    IN AL,i8	;字节输入,直接寻址
    IN AL,DX	;字节输入,间接寻址
    IN AX,i8	;字输入,直接寻址
    IN AX,DX	;字输入,间接寻址
    输出指令
    OUT i8,AL	;字节输出,直接寻址
    OUT DX,AL	;字节输出,间接寻址
    OUT i8,AX	;字输出,直接寻址
    OUT DX,AX	;字输出,间接寻址
    
    
    1. 8088/8086的I/O端口
    • 8086用于寻址外设端口的地址线为16条,端口最多为216=65536(64K)个,端口号(端口地址)为0000H ~ FFFFH
    • 每个端口地址对应一个字节空间
    1. 寻址方式
    • 直接寻址:只用于寻址00H ~ FFH前256个端口,操作数i8表示端口号
    • 间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号,对端口号大于FFH的端口只能采用间接寻址方式
    1. 数据交换
    • 如果输入输出一个字节,使用AL寄存器
    • 如果输入输出一个字,使用AX寄存器

    5. I/O地址的译码

    6. 数据传送方式

    • 程序控制下的数据传送:通过CPU执行程序中的I/O指令来完成传送,又分为:无条件传送、查询传送、中断传送
    • 直接存储器存取(DMA)——传送请求由外设向DMA控制器(DMAC)提出,后者向CPU申请总线,最后DMAC利用系统总线来完成外设和存储器间的数据传送
    • I/O处理机——CPU委托专门的I/O处理机来管理外设,完成传送和相应的数据处理

    1. 无条件传送方式及其接口

    • 在CPU与慢速变化的设备(或简单设备)交换数据时,可以认为它们总是处于“就绪”状态,随时可以进行数据传送
    • 适合于简单设备,如LED数码管、开关等
    next:	mov dx,8000h	;DX指向数据端口
    		in al,dx	;从输入端口读开关状态
    		not al	;反相
    		out dx,al	;送输出端口显示
    		call delay	;调子程序延时
    		jmp next	;重复
    
    
    2. 查询传送方式及其接口
    • CPU需要先了解(查询)外设的工作状态,然后在外设可以交换信息的情况下(就绪)实现数据输入或输出
    • 对多个外设的情况,则CPU按一定顺序依次查询(轮询
    • 查询传送的特点是:工作可靠,适用面宽,但传送效率低
    //查询输入接口程序示例
    	mov dx,8000h	;DX指向状态端口
        status:	in al,dx	;读状态端口
    	test al,01h	;测试标志位D0
    	jz status	;D0=0,未就绪,继续查询
    	inc dx	;D0=1,就绪,DX指向数据端口
    	in al,dx	;从数据端口输入数据
    
    
    //查询输出接口程序示例
      mov dx,8000h	;DX指向状态端口
      status:	in al,dx	;读取状态端口的状态数据
    	test al,80h	;测试标志位D7
    	jnz status	;D7=1,未就绪,继续查询
    	inc dx	;D7=0,就绪,DX指向数据端口
    	mov al,buf	;变量buf送AL
    	out dx,al	;将数据输出给数据端口
    
    
    //查询方式的EEPROM编程
    next:	mov al,55h	;写入内容=55H
    		mov [bx],al	;写入存储单元
    		nop	;空操作指令,起延时作用
    		nop
    next1:	in al,dx	;查询状态口
    		test al,01h	;测试D0
    		jz next1	;D0=0,芯片还在写入
    		inc bx	;D0=1,写毕,指针移动
    		loop next	;循环至全部字节写完
    
    
    3. 中断传送方式
    • 中断请求 =>中断响应=>关中断=>断点保护=>中断识别=>现场保护=>中断服务=>恢复现场=>开中断=>中断返回
    • 中断传送是一种效率更高的程序传送方式
    • 进行传送的中断服务程序是预先设计好的
    • 中断请求是外设随机向CPU提出的
    4. DMA传送方式
    • CPU对DMA控制器进行初始化设置
    • 外设、DMAC和CPU三者通过应答信号建立联系:CPU将总线交给DMAC控制
    1. DMA传送
      DMA读存储器:存储器 → 外设
      DMA写存储器:存储器 ← 外设
    2. 自动增减地址和计数,判断传送完成否

    传送方式的比较

    • 无条件传送:慢速外设需与CPU保持同步
    • 查询传送: 简单实用,效率较低
    • 中断传送:外设主动,可与CPU并行工作,但每次传送需要大量额外时间开销
    • DMA传送:DMAC控制,外设直接和存储器进行数据传送,适合大量、快速数据传送

    第7章 中断控制接口

    1. 8088中断系统

    • 8088的中断系统采用向量中断机制
    • 能够处理256个中断
    • 用中断向量号0~255区别
    • 可屏蔽中断还需要借助专用中断控制器Intel 8259A实现优先权管理
    1. 8088的中断类型
    • 内部中断:除法错中断、指令中断、溢出中断、单步中断
    • 外部中断:非屏蔽中断、可屏蔽中断
    2. 8088的中断响应过程

    image

    • 8088各种中断源的优先权,实际上是指被识别出来的先后
    • 多种中断同时请求时,最先响应的则可能是单步中断或NMI中断
      image
    3. 8088的中断向量表
    • 中断向量:中断服务程序的入口地址(首地址)
    • 逻辑地址含有段地址CS和偏移地址IP(32位)
    • 每个中断向量的低字是偏移地址、高字是段地址,需占用4个字节
    • 8088微处理器从物理地址00000H开始,依次安排各个中断向量,向量号也从0开始
    • 256个中断占用1KB区域,就形成中断向量表
    • 向量号为N的中断向量的物理地址=N×4

    2. 内部中断服务程序

    1. 内部中断服务程序

    编写80H号中断服务程序
    功能:显示以“0”结尾字符串的功能
    ,利用显示器功能调用INT 10H,
    字符串缓冲区首地址为入口参数,
    DS:DX(段地址:偏移地址)传递参数

        intoff	dw ?//偏移
    	intseg	dw ?//段基址
    	intmsg	db ‘A Instruction Interrupt !’//字符串
    	db 0dh,0ah,0
    	//保存中断向量
        mov ax,3580h//AH=35H,AL=中断向量号
    	int 21h //DOS功能调用INT 21H
    	mov intoff,bx	;保存偏移地址
    	mov intseg,es	;保存段基地址
        //设置中断向量
        //设置中断向量(DOS功能调用INT 21H)
        push ds
        mov dx,offset new80h
        mov ax,seg new80h
        mov ds,ax
        mov ax,2580h//AH=25,AL=中断向量号
        int 21h
        pop ds
        //调用中断服务程序,设置入口参数:	//DS=段地址(已设置)
    //;	DX=偏移地址
        mov dx,offset intmsg
    	int 80h 	;调用80H中断服务程序
    //主程序结束
        mov dx,intoff
    	mov ax,intseg
    	mov ds,ax
    	mov ax,2580h
    	int 21h
    	mov ax,4c00h
    	int 21h
    //进入中断服务程序
    new80h	proc
    	sti	;开中断
    	push ax	;保护寄存器
    	push bx
    	push si
    	mov si,dx
    	//显示字符串
    new1:mov al,[si]
    	cmp al,0
    	jz new2
    	mov bx,0
    	mov ah,0eh
    	int 10h
    	inc si
    	jmp new1
    	//退出中断服务程序
    	new2:	pop si	;恢复寄存器
    		pop bx
    		pop ax
    		iret	;中断返回
    	new80h	endp
    
    

    3. 8259A中断控制器

    1. 8259A的内部结构和引脚
    1. 中断控制
    • 中断请求寄存器IRR
      保存8条外界中断请求信号IR0~IR7的请求状态
      Di位为1表示IRi引脚有中断请求;为0表示无请求
    • 中断服务寄存器ISR
      保存正在被8259A服务着的中断状态
      Di位为1表示IRi中断正在服务中;为0表示没有被服务
    • 中断屏蔽寄存器IMR
      保存对中断请求信号IR的屏蔽状态
      Di位为1表示IRi中断被屏蔽(禁止);为0表示允许
    1. 与处理器接口
      image
    2. 中断级连
    • 一个系统中,8259A可以级连,有一个主8259A,若干个(最多8个)从8259A
    • 级连时,主8259A的三条级连线CAS0~CAS2作为输出线,连至每个从8259A的CAS0~CAS2
    • SP/EN在非缓冲方式下,规定该8259A是主片(SP=1)还是从片(SP=0)
    3. 8259A的工作方式
    1. 设置优先权方式
    • 普通全嵌套方式
    • 特殊全嵌套方式
    • 优先权自动循环方式
    1. 结束中断处理方式
    • 8259A利用中断服务寄存器ISR判断:
      某位为1,表示正在进行中断服务;
      该位为0,就是该中断结束服务。
    • 自动中断结束方式
    • 普通中断结束方式,配合全嵌套优先权方式使用
    • 特殊中断结束方式,配合循环优先权方式使用
    1. 屏蔽中断源方式
    • 普通屏蔽方式
      将IMR的Di位置1,则对应的中断IRi被屏蔽
    • 特殊屏蔽方式
      将IMR的Di位置1,对应的中断IRi被屏蔽的同时,使ISR的Di位置0
    1. 中断触发方式
    • 边沿触发方式
    • 电平触发方式
    1. 数据线连接方式
    • 缓冲方式
      8259A的数据线需加缓冲器予以驱动
      8259A把SP/EN引脚作为输出端,输出允许信号,用以锁存或开启缓冲器
    • 非缓冲方式
      SP/EN引脚为输入端
      若8259A级连,由其确定是主片或从片
    4. 8259A的编程
    1. 初始化命令字ICW
    • 初始化命令字ICW最多有4个
    • 8259A在开始工作前必须写入
    • 必须按照ICW1~ICW4顺序写入
    • ICW1和ICW2是必须送的
    • ICW3和ICW4由工作方式决定
    中断控制器的初始化程序段
    //初始化主片8259A
    		mov al,11h	;写入ICW1
    		out 20h,al
    		jmp intr1
    intr1:	mov al,08h	;写入ICW2
    		out 21h,al
    		jmp intr2
    intr2:	mov al,04h	;写入ICW3
    		out 21h,al
    		jmp intr3
    intr3:	mov al,1h	;写入ICW4
    		out 21h,al
    //初始化从片8259A
    		mov al,11h	;写入ICW1
    		out 0a0h,al
    		jmp intr5
    intr5:	mov al,70h	;写入ICW2
    		out 0a1h,al
    		jmp intr6
    intr6:	mov al,02h	;写入ICW3
    		out 0a1h,al
    		jmp intr7
    intr7:	mov al, 01h	;写入ICW4
    		out 0a1h,al
    
    
    1. 操作命令字OCW
    • OCW共有3个:OCW1~OCW3
    • 写入时没有顺序要求,需要哪个OCW就写入那个OCW

    应用注意事项

    • 利用上升沿做为中断请求IRQ的有效信号
    • IRQ0~IRQ7的中断向量号依次为08H~0FH,IRQ8~IRQ15依次为70H~77H
    • 采用普通全嵌套优先权方式,中断优先权从高到低顺序为IRQ0~IRQ2、IRQ8~IRQ15、IRQ3~IRQ7,且不能改变

    5. 外部中断服务程序

    /*8259A的IRQ0(向量号为08H)中断请求来自定时器8253,每隔55ms产生一次
    
    本程序的08H号中断服务程序,每次中断显示一串信息,显示10次
    */
    	intmsg	db ‘A 8259A Interrupt !’
    		         db 0dh,0ah,0
    	counter	db 0
    	mov ax,3508h
    	int 21h
    	push bx	;保存偏移地址
    	push es	;保存段基地址
    	//设置中断向量
    		cli
    		push ds
    		mov dx,offset new08h
    		mov ax,seg new08h
    		mov ds,ax
    		mov ax,2508h
    		int 21h
    		pop ds
    		//设置中断寄存器
    		in al,21h
    		push ax
    		and al,0feh	         ;允许IRQ0
    		out 21h,al
    		mov counter,0	;设置中断次数初值
    		sti		         ;开中断
    		//循环等待中断
    start1:	cmp counter,10
    		 jb start1	          ;中断10次退出
    		 //子程序结束
    		 		cli
    		pop ax
    		out 21h,al
    		pop dx
    		pop ds
    		mov ax,2508h
    		int 21h
    		sti
    		mov ax,4c00h
    		int 21h
            //进入中断服务程序
    new08h	proc
    		  sti	         ;开中断
    		  push ax	;保护寄存器
    		  push bx
    		  push ds
    		  mov ax,data
    		  mov ds,ax	;设置数据段DS
    //中断处理
    		inc counter
    		mov si,offset intmsg	;显示信息
    		call dpstri
    //
    		     mov al,20h
    		     out 20h,al
    		     pop ds	       ;恢复寄存器
    		     pop bx
    		     pop ax
    		     iret	       ;中断返回
    new08h endp
    //显示字符串
    dpstri proc	        ;显示字符串子程序
    		 push ax
    		 push bx
    dps1:	 lodsb
    		 cmp al,0
    		 jz dps2
    //显示字符串
    		 mov bx,0
    		 mov ah,0eh
    		 int 10h
    		 jmp dps1
    dps2:	 pop bx
    		 pop ax
    		 ret
    dpstri endp
    
    
    
    
    

    第8章 定时计数控制接口

    8253/8254定时计数器

    • 3个独立的16位计数器通道
    • 每个计数器有6种工作方式
    • 按二进制或十进制(BCD码)计数
    1. 计数器结构分析
    • 计数初值存于预置寄存器;
    • 在计数过程中,减法计数器的值不断递减,而预置寄存器中的预置不变。
    • 输出锁存器用于写入锁存命令时,锁定当前计数值
    1. 计数器的3个引脚
    • CLK时钟输入信号——在计数过程中,此引脚上每输入一个时钟信号(下降沿),计数器的计数值减1
    • GATE门控输入信号——控制计数器工作,可分成电平控制和上升沿控制两种类型
    • OUT计数器输出信号——当一次计数过程结束(计数值减为0),OUT引脚上将产生一个输出信号

    8253/8254的工作方式

    • 方式0 计数结束中断
    • 方式1 可编程单稳脉冲
    • 方式2 频率发生器(分频器)
    • 方式3 方波发生器
    • 方式4 软件触发选通信号
    • 方式5 硬件触发选通信号
    1. 注意
    • 处理器写入8253的计数初值只是写入了预置寄存器,之后到来的第一个CLK输入脉冲(需先由低电平变高,再由高变低)才将预置寄存器的初值送到减1计数器。
    • 从第二个CLK信号的下降沿,计数器才真正开始减1计数。

    8253/8254的编程


    第9章 DMA控制接口

    DMA控制器8237A

    • 每个8237A芯片有4个DMA通道,就是有4个DMA控制器
    • 每个DMA通道具有不同的优先权
    • 每个DMA通道可以分别允许和禁止
    • 每个DMA通道有4种工作方式
    • 一次传送的最大长度可达64KB
    • 多个8237A芯片可以级连,扩展通道数
    1. 8237A的内部结构和引脚
    1. 请求与响应信号
    • DREQ0~DREQ3:DMA通道请求
    • HRQ:总线请求
    • HLDA:总线响应
    • DACK0~DACK3:DMA通道响应
    1. DMA传送控制信号
    • A0~A7:地址线。输出低8位存储器地址。
      DB0~DB7:数据线。输出高8位存储器地址
    • ADSTB:地址选通
    • AEN:地址允许。
    • MEMR*:存储器读
    • MEMW*:存储器写
    • IOR*:I/O读
    • IOW*:I/O写
    • READY:准备好
    • EOP*:过程结束。DMA传送过程结束,输出一个低有效脉冲。
    1. 处理器接口信号
    • DB0~DB7:数据线。
    • A0~A3:地址线。
    • CS*:片选
    • IOR*:I/O读。读取8237A内部寄存器。
    • IOW*:I/O写。写入8237A内部寄存器。
    • CLK:时钟。控制芯片内部操作和数据传输。
    • RESET:复位。使8237A处于初始状态。

    8237A的两种工作状态

    • 空闲周期:
      作为接口电路,受CPU控制的工作状态
    • 有效周期:
      作为DMAC控制DMA传送的工作状态
      image
    2. 8237A的工作时序·空闲周期

    DMA传送时序

    • S1状态——输出16位存储器地址
      AEN输出高电平,表示DMA传送
    • S2状态——输出DMA响应信号和控制信号
      DMA读:MEMR和IOW有效
      DMA写:IOR和MEMW有效
    • S3和Sw状态——检测数据传送是否能够完成,决定是否插入等待状态Sw
    • S4状态——完成数据传送
    3. 8237A的工作方式
    1. DMA传送方式
    • 单字节传送方式:一次传送一个字节,效率略低,
      DMA传送之间CPU有机会重新获取总线控制权
    • 数据块传送方式:一次请求传送一个数据块,效率高,
      整个DMA传送期间CPU长时间无法控制总线
    • 请求传送方式
      DREQ信号有效就连续传送数据
      DREQ信号无效,DMA传送被暂时中止,8237A释放总线,CPU可继续操作
    • 级连方式
    1. DMA传送类型
      · DMA读 · DMA写 · DMA检验
    2. DMA通道的优先权方式
    • 固定优先权方式——优先权固定:0,1,2.。。
    • 循环优先权方式——优先权循环变化
    1. 自动初始化方式
    4. 8237A的寄存器
    1. 通道寄存器(4个通道分别具有):基地址寄存器、基字节数寄存器、现行地址寄存器、现行字节数寄存器。

    2. 状态、命令寄存器:命令寄存器、状态寄存器、请求寄存器、方式寄存器、屏蔽寄存器、临时寄存器

  • 相关阅读:
    蓝桥杯 2014本科C++ B组 六角填数 枚举排列
    蓝桥杯 2014本科C++ B组 地宫取宝 DFS+记忆化搜索
    埃及分数 IDA*
    优先队列详解(转载)
    HDU 1242 Rescue BFS+优先队列
    HDU 1627 Krypton Factor
    2018中国机器人大赛服务机器人专项赛赛后总结
    OpenMP使用体验报告(概述)
    写在归程路上——2018ROBOCUP机器人世界杯中国赛
    ROS编译工作区缺少cv_bridge的问题解决
  • 原文地址:https://www.cnblogs.com/HannahLihui/p/10252542.html
Copyright © 2011-2022 走看看