8.1 - PowerPoint PPT Presentation

8 dma l.
Skip this Video
Loading SlideShow in 5 Seconds..
8.1 PowerPoint Presentation
8.1

play fullscreen
1 / 51
Download Presentation
lysandra-rose
Views
Download Presentation

8.1

Presentation Transcript

  1. 第8章 计数器/定时器与DMA控制器 • 8.1 计数器/定时器的工作原理 • 8.2 可编程计数器/定时器8253 • 8.3 DMA传送的基本原理 • 8.4 DMA控制器8237A

  2. 8.1 计数器/定时器的工作原理 • 8.1.1 微机系统中的定时 • 8.1.2 外部定时方法 • 软件定时 • 硬件定时 • 8.1.3 可编程计数器/定时器的工作原理

  3. 8.1.1 微机系统中的定时 • 微机系统常常需要为处理器和外设提供时间标记,或对外部事件进行计数。 • 内部定时是计算机本身运行的时间基准或时序关系,计算机每个操作都是按照严格的时间节拍执行的。 • 外部定时是外部设备实现某种功能时,本身所需要的一种时序关系

  4. 8.1.2 外部定时方法 • 软件定时 • 它是利用CPU内部定时机构,运用软件编程,循环执行一段程序而产生的等待延时。 • 硬件定时 • 采用可编程通用的定时/计数器或单稳延时电路产生定时或延时

  5. 控制寄存器 数据总线 计数脉冲输入CLK 计数初值寄存器 地址总线 门控脉冲输入GATE CPU 计数器 控制总线 输出OUT 计数输出寄存器 8.1.3 可编程计数器/定时器的工作原理 • 计数器,即在设置好计数初值后,便开始对外部触发脉冲作减1计数,减为0时,输出一个信号 • 定时器,即在设置好定时常数后,便对外部时钟信号作减1计数,并按定时常数不断地产生时钟周期整数倍的定时间隔

  6. 8.2 可编程计数器/定时器8253 • 8.2.1 8253内部结构及引脚功能 • 8.2.2 8253的工作方式及特点 • 8.2.3 8253的编程 • 8.2.4 8253的应用举例

  7. 8.2.1 8253内部结构及引脚功能 • 1.8253的内部结构 • 2.8253的引脚功能

  8. CLK0 GATE0 OUT0 数据总线 缓冲器 D7~D0 计数器0 内部总线 WR RD A0 A1 CS CLK1 GATE1 OUT1 读/写 逻辑 计数器1 控制字 寄存器 CLK2 GATE20 OUT2 计数器2 图8-2 8253内部结构 1.8253的内部结

  9. D7 D6 D5 D4 D3 D2 D1 D0 1 2 3 4 5 6 7 8 9 10 11 12 VCC WR RD CS A1 A0 CLK2 OUT2 GATE2 CLK1 GATE1 OUT1 24 23 22 21 20 19 18 17 16 15 14 13 8253 CLK0 OUT0 GATE0 GND 图8-3 8253 引脚 2.8253的引脚功能 表8-1 8253计数器的选择与操作

  10. 8.2.2 8253的工作方式及特点 • 方式0——低电平输出(GATE信号上升沿继续计数) • 方式1——低电平输出(GATE信号上升沿重新计数) • 方式2——周期性负脉冲输出 • 方式3——周期性方波输出 • 方式4——单次负脉冲输出(软件触发) • 方式5——单次负脉冲输出(硬件触发)

  11. ② ③ CLK WR OUT n=5 5 4 3 2 1 0 n=5 WR GATE OUT 5 4 3 2 1 0 n=9 n=4 WR OUT 9 8 4 3 2 1 0 图8-4 8253的方式0时序波形 方式0——低电平输出(GATE信号上升沿继续计数)

  12. ② ③ CLK n=4 WR GATE OUT 4 3 2 1 0 4 4 3 2 1 0 GATE OUT n=3 n=2 WR GATE OUT 3 2 1 0 2 1 0 图8-5 8253的方式1时序波形 方式1——低电平输出(GATE信号上升沿重新计数)

  13. CLK WR OUT n=4 ① ② ③ 4 3 2 1 0 3 2 1’ n=4 n=3 WR OUT 4 3 2 1 0(3) 2 1 (0) 3 n=3 WR OUT GATE 3 2 1 0 3 3 2 1 0 1 图8-6 8253的方式2时序波形 方式2——周期性负脉冲输出

  14. ② CLK WR OUT n=4 2 2 2 2 n=5 WR OUT 2 2 3 3 图8-7 8253的方式3时序波形 方式3——周期性方波输出

  15. ② ③ CLK WR OUT n=5 5 4 3 2 1 0 GATE OUT 5 5 4 3 2 1 0 n=3 n=2 WR OUT 3 2 1 0 2 1 0 图8-8 8253的方式4时序波形 方式4——单次负脉冲输出(软件触发)

  16. CLK n=4 ① ② WR GATE OUT 5 4 3 2 1 0 GATE OUT 5 4 5 4 3 2 1 0 图8-9 8253的方式5时序波形 方式5——单次负脉冲输出(硬件触发)

  17. 8.2.3 8253的编程 • 设定方式控制字 • 设定计数初值

  18. SC1 SC0 RW1 RW0 M2 M1 M0 BCD 计数格 式选择 1 十进制计数 0 二进制计数 000 方式0 001 方式1 ×10 方式2 ×11 方式3 100 方式4 101 方式5 00 计数器0 01 计数器1 10 计数器2 11 无意义 工作方式选择 读/写 控制 00 计数器锁存 01 只读/写计数器低字节 10 只读/写计数器高字节 11 读/写计数器16位数 先低字节,后高字节 图8-10 8253的方式控制字 设定方式控制字

  19. 设定计数初值 • 例8-1 设8253计数器0工作于方式3下,计数初值为6000(十进制格式),试写出其初始化程序。(设8253计数器0,计数器1,计数器2及控制端口地址分别为40H~43H。) • 根据题目要求,8253方式控制字应为00110111,具体程序如下: • MOV DX,43H ;设定控制端口 • MOV AL,37H ;写入控制字 • OUT DX,AL • MOV DX,40H ;设计数器0 • MOV AL,0 ;写计数初值低字节 • OUT DX,AL • MOV AL,60 ;写计数初值高字节 • OUT DX,AL

  20. 例8-2 假定8253的4个端口地址分别为310H、312H、314H、316H,输入脉冲频率为2MHz,编写出用计数器0输出频率为2kHz方波的初始化程序。 分析: 根据题目要求,采用计数器0、工作方式3、二进制计数。 计数初值N=(2×106)/(2×103)=1000。 方式控制字为00110110B,即36H。 MOV DX,316H MOV AL,36H OUT DX,AL MOV AX,1000 MOV DX,310H OUT DX,AL MOV AL,AH OUT DX,AL

  21. 8.2.4 8253的应用举例 • 例8-3 • 例8-4 • 例8-5 • 例8-6

  22. MOV AL,76H OUT 76H,AL MOV AX,1000 OUT 72H,AL MOV AL,AH OUT 72H,AL MOV AL,36H OUT 76H,AL MOV AX,2000 OUT 70H,AL MOV AL,AH OUT 70H,AL 设系统为8253分配的端口地址为70H~76H,其中76H为控制字寄存器端口地址,70H、72H、74H分别为计数器0、1、2的端口地址。若输入脉冲频率为2MHz,编写出用计数器0输出频率为1Hz方波的初始化程序。 分析:由于输入时钟频率为2MHz,而输出方波频率为1Hz,计算出计数器初值N=(2×106)/1=2×106。此数超出16位计数器所能够表示的范围。为了解决这一问题,可先通过计数器1将2MHz的输入脉冲变成2kHz方波,然后用OUT1输出的方波作为计数器0的输入时钟。计数器1的计数初值N=(2×106)/(2×103)=1000,计数器0的计数初值M=(2×103)/1=2×103。 例8-3

  23. DACK0BRD 74LS74 DREQ0(8237) D Q IOR IOW 74LS138 U26 RD WR CS A1 A0 D7~D0 U73 A B C G2A G2B G1 A5 A6 A7 A8 A9 AEN Y2 8253-5 IRQ0(8259) OUT0 OUT1 OUT2 GATE0 GATE1 GATE2 D Q (8255) PB0 U21 CLK0 CLK1 CLK2 74LS175 PCLK RESETDRV 图8-11 8253与系统总线的连接 > C Q 例8-4 • IBM PC/XT系统板上8253的3个计数器的使用。

  24. 启动转换 OUT0 CLK0 GATE0 8253 (方式2) (方式1) (方式3) A/D转换子系统 OUT1 GATE1 CLK1 手动/继电器开关 +5V OUT2 GATE2 CLK2 时钟发生器 例8-5 • 8253的3个计数器串级连接起来,为某A/D子系统提供可调用的启动采样频率信号。 设8253的端口地址为304H,305H,306H,307H。初始值L,N为二进制数,且小于256,M为BCD数,且大于100。 MOV AL,14H OUT 307H,AL MOV AL,L OUT 304H,AL MOV AL, 73H OUT 307H,AL MOV AX,M OUT 305H,AL MOV AL,AH OUT 305H,AL MOV AL,96H OUT 307H,AL MOV AL,N OUT 306H,AL

  25. +5V 工件 OUT0 光源 TNT 光敏电阻 R 5MHz 8255PA4 CLK1 GATE1 OUT1 驱动器 扬声器 例8-6 • MOV AL,15H • OUT 43H,AL • MOV AL,80 • OUT 40H,AL • STI • LOOP: HLT • JMP LOOP • MOV AL,01H • OUT 80H,AL • MOV AL,77H • OUT 43H,AL • MOV AL,0 • OUT 41H,AL • MOV AL,25 • OUT 41H,AL • CALL D5S • MOV AL,0 • OUT 80H,AL • 图8-13所示为一自动计数系统。当工件从光源与光敏电阻之间通过时,CLK0端即可接收到一个脉冲信号,由计数器0计数。每当有80个工件通过后,由输出端OUT0输出一个负脉冲作为中断请求信号通知CPU。CPU在处理该中断的中断服务程序中启动计数器1,由OUT1产生2000Hz的方波驱动蜂鸣器发声,提示工件以满80个,5秒后扬声器停止发声。

  26. 8.3 DMA传送的基本原理 • 8.3.1 DMA传送的特点 • 8.3.2 DAM传送的机制 • 1.周期挪用(Cycle Stealing) • 2.周期扩展 • 3.CPU停机 • 8.3.3 DMA传送的模式 • 1.单字节传送模式 • 2.数据块传送模式 • 3.请求传送模式

  27. 8.3.1 DMA传送的特点 • DMA方式可以实现外部设备与存储器之间的数据高速传输 • DMA传送主要用于需要高速大批量数据传送的系统中,以提高数据的吞吐量 • DMA传送方式的优点是以增加系统硬件的复杂性和成本为代价的 • DMA传送虽然脱离CPU的控制,但并不是说DMA传送不需要进行控制和管理

  28. 系统总线 总线允许 (HLDA) DMA允许 (DACK) DMA 控制器 I/O 接口 I/O 设备 存储器 ③ ④ ② ① CPU 总线请求 (HOLD) DMA请求 (DREQ) 图8-14 DMA传送机制示意图 8.3.2 DMA传送的机制 • 1.周期挪用(Cycle Stealing) • DMAC在处理器不访问存储器或I/O端口时控制总线 • 2.周期扩展 • DMAC在处理器不访问存储器或I/O端口时控制总线 • 3.CPU停机 • CPU停机是指在DMA操作期间,CPU交出总线控制权,由DMA控制器接管总线,完成数据传送

  29. 8.3.3 DMA传送的模式 • 单字节传送模式 • 只能一个字节一个字节地传送(或校验或检索),每传送一个字节DMAC必须重新向CPU申请占用总线。 • 数据块传送模式 • 在数据块传送的整个过程中,只要DMA传送一开始,DMAC始终占用总线,直到数据传送结束或校验完毕或检索到“匹配字节”,才把总线控制权还给CPU。 • 请求传送模式 • DMAC控制总线以后,每传送完一个字节,都由DMAC检测外设是否有继续传送的要求。

  30. 8.4 DMA控制器8237A • 8.4.1 8237A的内部结构及引脚功能 • 8.4.2 8237A的工作过程与工作方式 • 8.4.3 8237A的编程 • 8.4.4 8237A的应用举例

  31. 8.4.1 8237A的内部结构及引脚功能 • 8237A的内部结构 • 8237A的引脚功能 • 8237A的端口地址

  32. 控制寄存器 IOR IOW MEMR MEMW HRQ HLDA CLK AEN HOLD HLDA 状态寄存器 暂存器 EOP READY RESET 通道0 模式寄存器 请求触发器 屏蔽触发器 基地址寄存器 当前地址寄存器 DREQ0 DACK0 当前字节计数器 基本字节计数器 DREQ1 DACK1 DREQ2 DACK2 DREQ3 DACK3 通道1 ADSTB DB7~DB0 CS 通道2 A3~A0 A7~A4 通道3 图8-15 8237A的内部结构与主要引脚 8237A的内部结构

  33. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 IOR IOW MEMR MEMW NC READY HLDA ADSTB AEN HRQ CS CLK RESET DACK2 DACK3 DREQ3 DREQ2 DREQ1 DREQ0 VSS (地) A7 A8 A5 A4 EOP A3 A2 A1 A0 VCC(+5V) DB0 DB1 DB2 DB3 DB4 DACK0 DACK1 DB5 DB6 DB7 8237A 8237A的引脚功能

  34. 8237A的端口地址 读( 写( 表8-2 8237A控制器的寄存器口地址

  35. 8.4.2 8237A的工作过程与工作方式 • 1.8237A的工作过程 • 2.8237A的工作方式

  36. 单字节传送 数据块传送 向外提出 HRQ S0 Si S0 S1 S2 S4 S1 S3 就绪 就绪 接收到有 效的DREQ 接收到有 效的HLDA 未就绪 SW SW 有效周期 空闲周期 图8-17 8237A的内部状态转换流程 1.8237A的工作过程

  37. 2.8237A的工作方式 • (1)通道的优先级问题 • (2)工作模式 • ① 单字节传送模式 • ② 数据块传送模式 • ③ 请求传送模式 • ④ 级联模式 • (3)操作类型 • ① DMA读,用于把数据从存储器中读出,写入外设。 • ② DMA写,用于将数据从外设中读出,写入存储器中。 • ③ DMA校验,是一种空操作,并不是真正的DMA传送,只产生时序。地址信号、外设可以利用这样的时序进行校验。

  38. 8.4.3 8237A的编程 • 1.方式控制寄存器 • 2.命令寄存器 • 3.状态寄存器 • 4.请求寄存器 • 5.屏蔽寄存器 • 6.综合屏蔽寄存器 • 7.软件命令

  39. D7 D6 D5 D4 D3 D2 D1 D0 00 通道0 01 通道1 10 通道2 11 通道3 00 请求方式 01 单字节方式 10 块字节方式 11 级联方式 通道选择 传送方 式选择 地址增 减选择 00 校验传送 01 写传送 10 读传送 11 无意义 0 递增 1 递减 传送类型 预置选择 0 禁止自动预置 1 允许自动预置 图8-18 方式控制寄存器格式 1.方式控制寄存器

  40. D7 D6 D5 D4 D3 D2 D1 D0 0:禁止 1:允许 是否允许 存储器与 存储器传输 是否允许通 道0地址保持 DACK有效 0:低有效 电平选择 1:高有效 DREQ有效 0:高有效 电平选择 1:低有效 0:禁止 1:允许 X:D0=0任意 0:正常时序写 1:扩展写入选择 X:当D3=1时任意 是否禁止 芯片工作 0:允许 1:禁止 % 优先级 0:固定优先级 选择 1:循环优先级 0:正常时序 1:压缩时序 时序控制 图8-19 命令寄存器格式 2.命令寄存器

  41. 例8-7 编写初始化命令使PC微机中的8237A-5,按如下要求工作:禁止存储器到存储器传送,正常时序,滞后写入,固定优先级,允许8237A-5工作,DREQ信号高电平有效,DACK信号低电平有效。 • 命令字为00000000B=00H。 • 将命令写入命令口的程序段为: • MOV AL,00H ;命令字 • OUT 08H,AL ;写入命令寄存器

  42. D7 D6 D5 D4 D3 D2 D1 D0 1有尚未处 理的DMA 请求 通道3 通道2 通道1 通道0 通道0 通道1 通道2 通道3 1已接收到终止计数信息 0未接收到终止计数信息 0无尚未处 理的DMA 请求 图8-20 状态寄存器格式 3.状态寄存器

  43. D7 D6 D5 D4 D3 D2 D1 D0 X X X X X 00 通道0 01 通道1 10 通道2 11 通道3 通道选择 DMA请求 0 撤消请求 1 设置请求 图8-21 请求寄存器格式 4.请求寄存器

  44. D7 D6 D5 D4 D3 D2 D1 D0 X X X X X 00 通道0 01 通道1 10 通道2 11 通道3 通道选择 屏蔽设置 0 撤除屏蔽 1 设置屏蔽 图8-22 屏蔽寄存器格式 5.屏蔽寄存器

  45. D7 D6 D5 D4 D3 D2 D1 D0 X X X X 1 设置屏蔽 0 撤除屏蔽 通道0 通道3 1 设置屏蔽 0 撤除屏蔽 1设置屏蔽 0 撤除屏蔽 通道1 通道2 1 设置屏蔽 0 撤除屏蔽 图8-23 综合屏蔽寄存器格式 6.综合屏蔽寄存器

  46. 7.软件命令 • (1)清除高/低触发器(F/L触发器) • (2)软件复位命令(主清除命令) • (3)清屏蔽寄存器命令

  47. 8.4.4 8237A的应用举例 • 例8-8 • 例8-9 • 例8-10 • 例8-11

  48. 例 8-8 • 在8088CPU系统板上的DMA控制器8237A中,通过通道1将外设50字节的数据收入首地址为6000H的内存区域,编写初始化程序。 • MOV AL,04H ;命令字,关闭8237A • OUT 08H,AL ;写入命令寄存器中 • MOV AL,00H • OUT 0DH,AL ;总清除,发复位命令 • MOV AL,00H • OUT 02H,AL • MOV AL,60H • OUT 02H,AL • MOV AL,32H • OUT 03H,AL • MOV AL,00H • OUT 03H,AL • MOV AL,55H • OUT 0BH,AL ;方式字写入方式寄存器 • MOV AL,02H • OUT 0FH,AL ;写入综合屏蔽命令字 • MOV AL,00H • OUT 08H,AL ;命令字写入控制寄存器

  49. 例8-9 • 用0通道从磁盘输入32KB的数据块,传送到内存08000H开始的区域(增量传送),采用块传送方式,传送完不自动预置,外设的DREQ和DACK均为高电平有效。 • 设定8237A端口地址为00H~0FH,初始化程序如下: OUT 0DH, AL ;写入总清除命令 MOV AL, 00H OUT 00H, AL ;写入0通道基地址和当前地址寄存器的低8位 MOV AL,80H OUT 00H, AL ;写入0通道基地址和当前地址寄存器的高8位 MOV AL, 00H OUT 01H, AL ;写入0通道基字节和当前字节寄存器的低8位 MOV AL, 80H OUT 01H, AL ;写入0通道基字节和当前字节寄存器的高8位 MOV AL,84H OUT 0BH,AL ;写入模式控制字(块传送、地址增量、写传送、不自动预置) MOV AL, 00 OUT 0AH,AL ;写入屏蔽寄存器(清除通道0的屏蔽) MOV AL, 0C0H ;写入命令寄存器(DREQ、DACK为高电平有效,固定优先级) OUT 08H,AL

  50. 例8-10 • 用8237A通道0对动态存储器进行刷新,每隔15s刷新一次,利用8253实现15s定时,试编出动态刷新程序。 • MOV AL,0FFH ;写入通道0计数初值为FFFFH • OUT 01H,AL • OUT 01H,AL • MOV AL,58H ;写入模式控制字(单字节、地址递增、读传送、自动预置) • OUT 0BH,AL • MOV AL,00H ;写入命令寄存器 • OUT 08H,AL • OUT 0AH,AL ;写入屏蔽寄存器(清除通道0的屏蔽位) • MOV AL,54H ;设8253计数器1为方式2,只访问低位字节 • OUT 43H,AL • MOV AL,18 ;设计数器1定时周期为15s • OUT 41H,AL