Download presentation
Presentation is loading. Please wait.
1
第8章 PCH中的常规接口
2
8.1 定时与计数技术 基本概念 1.定时 定义:提供的时间基准。 分类:内部定时、外部定时。 2.计数 定时与计数本质上是一致的。
计数的信号随机,定时的信号具有周期性。 3.应用 分时系统切换任务的时间基准、测速、计数
3
定时方法 1.软件定时 通过软件指令周期方法定时,如执行循环程序。 增加CPU负担,通用性差,一般用于短延时。 2.不可编程硬件定时
采用中小规模IC构成。 不增加CPU负担,成本低,定时值不可改变。 3.可编程硬件定时 采用可编程计数器完成,软件可改变计数值。 可编程定时/计数器:实质上定时和计数本质上都是脉冲计数器,定时计的是内部基准时钟源产生的脉冲,计数是计外部脉冲。
4
8.1.1 8254-2基本功能 3个独立的16位定时/计数器(T/C); 每个T/C功能: 可按二、十进制(BCD)计数;
有6种不同的工作方式; 最高频率10MHz;(82801BA中的为 MHz) 有读回状态功能。(8253没有)
5
结构与引脚 1.内部逻辑 总线缓冲器[8位R/W]:写工作方式、计数初值、当前计数值
6
注意:GATE信号的作用与应用,重写CR的效果。
2.计数器内部逻辑 16位当前计数值锁存器OL 16位减1计数器CE 16位计数初值寄存器CR OUT (减1至0时) MSB LSB 锁存后读出当前值 装入/读出初值 & CLK GATE CR:16位 CPU写入[两次]、清零 CE:16位 通过CR写入、计数、输出 OL:16位 先锁存再读出 状态REG:8位 先锁存再读出 注意:GATE信号的作用与应用,重写CR的效果。 计数初值:N=fCLKi/fOUTi,在不同工作方式及定时/计数时的应用不同。
7
3.外部引脚 (1)译码:CS#与A1A0: (2)读/写:RD#、WR#;
8
4.CPU操作功能及命令 I/O端口地址:8254提供四个端口(使用A1A0); 命令:初始化—设置工作方式、设置计数器初值 操 作—重写计数器初值、取状态命令 状态:当前计数值、工作方式及当前状态。 I/O端口操作冲突时解决方法: 写工作方式与写读取状态命令采用特征位方法; 读取当前计数值或读取状态采取时序方法。 8254命令关系表:
9
CS# 时序 RD# WR# A1 A0 操 作 特征位 D7D6 0 1 0 0 0 计数初值写入0#计数器 ** 无 0 1 0 0 1
操 作 特征位 时序 D7D6 计数初值写入0#计数器 ** 无 计数初值写入1#计数器 计数初值写入2#计数器 向控制字寄存器写控制字 00~10 写“读计数值/状态”命令 11 读0#计数器当前计数值 前一命令A1A0=11时, D7D6为11且D5为0或D7D6为非11且D5D4为00时,读取的是当前计数值; D7D6为11且D4为0读取的是状态。 读0#计数器状态 读1#计数器当前计数值 读1#计数器状态 读2#计数器当前计数值 读2#计数器状态 无操作 1 * * * * 禁止访问 * * RD# WR# A1 A0
10
8.1.3 8254-2命令及编程 1.工作方式控制字(A1A0=11) 特征位:D7D6=00~10、D5D4=01~11;
D7D6选择计数器:00-T/C0;01-T/C1;10-T/C2 D5D4选择读/写方式:01-只写低字节;10-只写高字节;11-先写低字节再写高字节(16位) D3D2D1选择工作方式:000~101六种工作方式。 D0选择计数进制:0-二进制方式;1-BCD码方式。 例:MOV AL, B ;T/C1,先低后高字节 OUT 43H,AL ;方式2,二进制方式
11
(1)不同通道的计数初值写到不同地址中; A1A0 定时/计数器 0 0 T/C0 0 1 T/C1 1 0 T/C2
2.计数初值 (1)不同通道的计数初值写到不同地址中; A1A 定时/计数器 T/C0 T/C1 T/C2 (2)每次写入一个字节; (3)根据控制字定义,决定高、低字节写入方法。 (4)初始值的范围是: 二进制为65536(0000H)、65535(FFFFH)~1(0001H)。 十进制为10000(0000H)、9999(9999H)~1(0001H)。
12
(2)计数初值的设置与T/C的CLK密切相关; (3)计数初值的设置方法由控制字决定。
(1)写工作方式控制字 (2)设置计数初值 例: MOV AL, B; T/C1,先低后高字节,方式2,BCD OUT 43H, AL MOV AX, H ; 计数初值为2000 OUT 41H, AL ; MOV AL, AH OUT 41H,AL ; MOV AL, B; T/C0,只低字节,方式3,二进制 OUT 43H,AL OUT 40H,50H ; 计数初值为50H(80) 注意:(1)每个使用的T/C均要初始化; (2)计数初值的设置与T/C的CLK密切相关; (3)计数初值的设置方法由控制字决定。
13
4.T/C数据读取 (1)读取当前计数值方法1 工作方式控制字(A1A0=11)D7D6=00~01,D5D4=00 (a)锁存当前计数值或禁止计数 (b)读取当前计数值 例:MOV AL, B; T/C1,锁存 ;先低后高字节,方式2,BCD OUT 43H,AL IN AL,41H MOV AH,AL XCHG AH,AL ;AX为T/C1当前计数值
14
(2)读取当前计数值方法2—使用读回命令(A1A0=11)
特征位:D7D6=11。(A1A0=11) 功能选择:锁存状态-D5D4=10; 锁存计数值-D5D4=01; 锁存状态与计数值- D5D4=00。(先读状态再读计数值) 计数器选择:D1=1—T/C0,D2=1—T/C1,D3=1—T/C2 特点:控制字同时只能锁存单个通道, 读回命令可同时锁存多个通道。
15
例: MOV AL,11010100B ; T/C1,锁存计数值 OUT 43H,AL IN AL,41H; MOV AH,AL
XCHG AH,AL ;AX为当前计数值 MOV AL, B ; T/C0、T/C2锁存计数值 IN AL,40H; MOV AH,AL IN AL,40H XCHG AH,AL ;AX为T/C0当前计数值 IN AL,42H; IN AL,42H XCHG AH,AL ;AX为T/C2当前计数值
16
(3)读取计数器当前状态—使用读回命令 读出的状态字格式: 例:MOV AL,11100100B ; T/C1,锁存状态值
OUT 43H,AL IN AL,41H ;若AL= ,表示T/C1 ; 为方式2,BCD码,先低后高 ;读/写,当前OUT为低电平 MOV AL, B ;T/C0,锁存状态值 IN AL,40H ;若AL= ,表示T/C0 ;为方式3,二进制码,只有低 ;字节,当前OUT为低电平
17
8.1.4 8254-2工作方式 1.方式0—计数到0时中断 特点:一次计数; GATE高允许、下降暂停、低禁止、上升继续计数;
演示 1.方式0—计数到0时中断 特点:一次计数; GATE高允许、下降暂停、低禁止、上升继续计数; WR#写[重写]后下一脉冲下降沿重新计数; OUT在控制字或计数初值写完时变低、计数值为0时变高(N+1个时钟的低)。
18
GATE上升重新、高与下降和低不影响计数; WR#写[重写]在下次GATE从0到1的跳变时有效;
2.方式1—硬件可重触发单稳 演示 特点:一次计数; GATE上升重新、高与下降和低不影响计数; WR#写[重写]在下次GATE从0到1的跳变时有效; OUT在写入控制字后变高,开始计数时变低、计数值为0时变高(N个时钟周期的低)。
19
GATE上升重新、高允许、下降停止、低禁止计数; WR#写[重写]在下次计数时有效;
3.方式2—频率发生器 演示 特点:多次计数; GATE上升重新、高允许、下降停止、低禁止计数; WR#写[重写]在下次计数时有效; OUT在计数值为1时输出宽度为1个CLK的负脉冲(周期为N个时钟周期,频率为1/N的时钟频率,实际上是对CLK的N分频)。
20
4.方式3—方波发生器 演示 特点:多次计数; GATE上升重新、高允许、下降停止、低禁止计数; WR#写[重写]在下次计数时有效;
OUT在写入控制字后变高,计数开始后,采用每脉冲计数减2: 当计数初值为偶数N时,计数到0时反向。脉冲宽度T×N/2,方波周期为T×N 。 当计数初值为奇数N时,OUT变高的第一CLK减1后装入 CE,其余每个脉冲计数减2。OUT正脉冲时,计数到0的下一个CLK时OUT反向OUT正脉冲宽度为T×(N+1)/2 ;OUT负脉冲时在计数到0时反向。负脉冲宽度为T×(N-1)/2,方波周期仍然是T×N。
21
GATE上升重新、高允许、下降停止、低禁止计数; WR#写[重写]会立即重新计数(软件触发);
5.方式4—软件触发选通 演示 特点:一次计数; GATE上升重新、高允许、下降停止、低禁止计数; WR#写[重写]会立即重新计数(软件触发); OUT在写入控制字及计数当中为高电平,计数值为0时输出1个CLK的负脉冲。
22
GATE上升重新、高与下降和低不影响计数; WR#写[重写]在下次GATE从0到1的跳变时有效;
6.方式5—硬件触发选通 演示 特点:一次计数; GATE上升重新、高与下降和低不影响计数; WR#写[重写]在下次GATE从0到1的跳变时有效; OUT在计数值为0时输出1个CLK的负脉冲。
23
方式0 方式1 方式2 方式3 方式4 方式5 OUT输出状态 写入控制字后变0,计数结束变1,并维持至重写控制字或计数初值 写入控制字后变1,GATE上升沿触发变0,开始计数,计数结束变1 写入控制字后变1,计数到1变0,维持一个Tclk变1 写入控制字后变1,装入初值且GATE=1则OUT变1,计数到变0,重装初值继续计数,计数到则反向 写入控制字后变1,计数结束变0,维持一个Tclk变1 写入控制字后变1,GATE上升沿触发开始计数,计数结束输出一个CLK的负脉冲 初值自动重装 无 计数到0重装 根据初值奇偶分别重装; 计数过程中改变初值 立即有效 GATE触发后有效 计数到1或GATE触发后有效 计数结束或GATE触发后有效 GATE 禁止计数 无影响 下降沿 暂停计数 停止计数 上升沿 继续计数 从初值开始重新计数 1 允许计数
24
8.1.5 8254-2应用举例 1.分频器设计 用8254(地址40H~43H)将5MHz的脉冲变为1Hz的脉冲。
初值=fCLK/fOUT=5×106>65536,怎么办? 需要2个T/C级联,T/C0采用方式3产生连续分频方波,做T/C1的CLK,T/C1 采用方式2产生1Hz脉冲。两个T/C的GATE统一控制。 MOV AL, B;T/C OUT 43H,AL MOV AX, H OUT 40H,AL MOV AL, AH MOV AL, B;T/C MOV AX, H OUT 41H,AL CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 D0~D7 A1 A0 RD# WR# CS# 5MHz 1Hz
25
2.占空比4:9的方波发生器 8254的CLK0的时钟频率是8KHz,问 1)T/C0最大定时时间是多少?
2)要求8254端口地址为90H、92H、94H和96H,请使用74LS138译码器加简单门电路完成地址连线。 3)现在要求使用该8254产生周期为9秒,占空比为4:9的方波,请在上面的电路图中完成电路,并编写初始化程序。 答: 1)TCLK0=1/fCLK0=1/8000=0.125ms 最大定时时间=65536×0.25ms=8.192秒 或:fCLK0/fOUT=65536=>Tmax=1/fOUT=65536/ fclk0 =65536/8000=8.192秒
26
2) 3) D7~D0 IOW IOR Y2# A1 A2 A7 A5 A4 A3 ≥1 A8 A9 A6 A0 CLK1 GATE1
WR# RD# 8254 CS# C B A 74LS138 G1 G2A# G2B# CLK0 GATE0 OUT0 OUT1 8KHz 1Hz 5V 占空比4:9,周期9秒的方波 3)
27
MOV AL, B;T/C OUT 96H,AL MOV AX, H OUT 90H,AL MOV AL, AH MOV AL, B;T/C MOV AX, 9H OUT 92H,AL
28
3.包装流水线控制 某产品的包装流水线中,一个包装箱能装24罐饮料。装箱时希望流水线上每通过24罐饮料,流水线要停4秒以等待包装箱封口,然后继续通过下一箱的24罐。流水线就是这样周而复始的运作。试利用一片8254来完成流水线控制中的定时和计数功能。假设8254的端口地址为8CH~8FH,采用的时钟频率是2KHz。
29
思路:用8254的计数通道1作为计数器,用于24个罐的计数;计数通道2作为定时器,定时为4S。当计数通道1的OUT脚出现0到1的跳变的时候,将启动计数通道2开始定时,而计数通道2定时阶段将控制计数通道1停止计数,只有其定时结束并停止定时阶段才可再次启动计数通道1开始计数。 计数通道1工作在方式2,计数初值24 计数通道2工作在方式1,计数初值8000 CLK0 GATE0 OUT0 CLK1 GATE1 OUT1 CLK2 GATE2 OUT2 D0~D7 A1 A0 RD WR CS 流水线信号 fCLK 控制流水线停和运行的信号
30
;初始化程序 ;计数通道1初始化 MOV AL, B OUT 8FH, AL MOV AL, 24 OUT 8DH, AL ;初始化计数通道2 MOV AL, B OUT 8F, AL MOV AX, 8000 OUT 8EH, AL MOV AL, AH
31
8.1.6 PCH中的8254模块 来自主板上74LS138的Y2,地址范围是40H~5FH,加上A1A0两根地址线,组成8254的端口地址是40H、41H、42H、43H。 PC系列机定时系统结构框图 返回1 返回2
32
1. 计数器0—系统定时器 工作方式:3方式,计数初值:65536。 1) 系统定时器 OUT0连接到8259A的IRQ0(中断类型号为8)上。 fOUT0= MHz/65536=18.2Hz, 即:每秒产生18.2次中断用于日时钟计时。 应用:系统BIOS的INT 8H用作日时钟计时; INT 8H调用INT 1CH作为用户定时中断接口。 2) 软盘驱动器马达自动延迟控制
33
2. 计数器1—动态存储器定时刷新控制 工作方式:2方式,计数初值:18。 连接到8237的DREQ0上,定时产生负脉冲。 脉冲宽度=1/ MHz=838ns, 脉冲周期=18/ MHz=15.08μs, 即:每隔15.08μs产生一个脉冲用于刷新。
34
工作方式:3方式,计数初值:由调用程序控制。
3. 计数器2—扬声器音频发生器 工作方式:3方式,计数初值:由调用程序控制。 与8255的PB口D1信号“与”后连接到扬声器上,控制扬声器发声频率及时长。 8255控制发声:8254的OUT2=1,CPU控制8255的PB口的D1位的电平实现; 8254控制发声:8255的PB口的D1位为高电平,控制8254的T/C2的OUT2实现。 通过改变OUT2的方波信号频率,就可以改变扬声器发声的音调。 CR预置值=CLK2脉冲频率/发声的频率 转图
35
;功能:按照指定的时间间隔发896Hz声音 ;调用:CX=指定时间 ;返回:无 BEEP PROC FAR IN AL,61H; 读8255PB口的当前值 MOV AH,AL PUSH AX MOV AL, B OUT 43H,AL MOV AX,0533H;= MHz/896Hz OUT 42H,AL MOV AL,AH POP AX
36
OR AL,03H ;置61H端口D0、D1均为1, ;打开扬声器
OUT 61H,AL NOP L1:LOOP L1 ;延迟 AND AL,0FDH ;置61H端口D1为0, ;封锁OUT2输出 MOV AL,AH RET BEEP ENDP 转图
37
8.2 DMA操作 8.2.1 DMA技术概述 1. 数据传送的控制 1)数据的来源; 2)数据的去处;
◆ 数据传送涉及的3个问题 1)数据的来源; 2)数据的去处; 3)数据本身以及如何控制数据的传送。
38
◆ DMA方式控制的数据传送
39
硬盘和软盘I/O; 快速通信通道I/O; 多处理机和多程序数据块传送; 在图像处理中,对CRT屏幕送数据;
◆ DMA传送方式通常用来高速传送大批量的数据块。如: 硬盘和软盘I/O; 快速通信通道I/O; 多处理机和多程序数据块传送; 在图像处理中,对CRT屏幕送数据; 快速数据采集; DRAM的刷新操作。
40
(1)存储单元传送:存储器→存储器。 (2)DMA读传送:存储器→I/O设备。 (3)DMA写传送:I/O设备→存储器。
41
2. DMA传送的工作过程 1)I/O设备向DMAC发出DMA请求; 2) DMAC向CPU发出总线请求; 3)CPU在执行完当前指令的当前的总线周期后,向DMAC发出总线响应信号; 4)CPU脱离对系统总线的控制,由DMAC接管对系统总线的控制;
42
5)DMAC向I/O设备发出的DMA应答信号;
7)完成设定的字节数据传送,CPU恢复对系统总线的控制。
43
3. DMA传送的方式 1) DMA操作类型 数据传送。数据传送是把源地址的数据传送到目的地址中去。
数据检验。当数据传送完毕之后,可以进行校验操作。校验操作并不进行数据传送,只进行数据校验。但操作过程仍然要通过DMAC向CPU提出申请,进入DMA周期。 数据检索。数据检索操作并不进行数据传送,只是对在指定的内存区内查找某个关键字节或某几个关键数据位是否存在,如果查找到了,就停止检索操作。
44
2) DMA操作方式 单字节操作方式。每次进行DMA操作只操作一个字节 。 连续操作方式。只要DMA操作开始,DMAC始终占用总线,直到DMA操作完成,才把总线控制权交还CPU。 请求操作方式。如果有DMA请求,则DMAC就占用总线;当DMA请求无效,或DMA操作完成,或由外部传来过程结束信号(EOP)时,DMAC都会释放总线。 级联传送方式。
45
4. DMA控制器在系统中的两种工作状态 1)主动态
在DMAC获得总线控制权之后,DMAC取代CPU而成为系统的主控者,接管和控制系统总线(数据总线、地址总线和控制总线)。通过总线向存储器或I/O设备发出地址、读/写信号,以控制在两个实体之间的传送。 2)被动态 在DMAC获得总线控制权之前,DMAC受CPU控制(。此时,CPU可对DMAC进行初始化编程,也可从DMAC中读出状态。当DMAC上电或复位时,DMAC自动处于被动态。
46
8.2.2 82C37A 的内部结构和引脚功能说明 1. 82C37A的特点 ① 具有4个独立的DMA通道,每个通道都可独立地进行初始化。
④ 每个通道进行一次传送的最大字节数为64K。 ⑤ 提供4种传送方式:单字节传送方式、数据块传送方式、请求传送方式和级联传送方式。 ⑥ 时钟频率从DC到5MHz的全静态设计。 ⑦ 在5MHz的时钟频率下传送速率高达1.6MB/s。
47
2.82C37A 的内部结构 ① DMA通道 ② 读/写控制 ③ 控制逻辑
48
82C37A内部逻辑框图
49
2.82C37A 的引脚功能
50
C37A 的内部寄存器
51
1.控制寄存器
52
2.工作方式寄存器
53
3.状态寄存器
54
4.请求寄存器
55
5.屏蔽寄存器
56
82C37A DMA控制器端口地址
57
8.2.4 软命令 1)清先/后触发器软命令 MOV AL, 0XXH ;0XXH为AL中任意值
OUT 0CH, AL ; 先/后触发器被清“0” 2)总清除软命令 MOV AL, 0XXH ;0XXH为AL中任意值 OUT 0DH, AL ;写入总清端口,执行总清除命令 3)清屏蔽寄存器软命令。 MOV AL, 0XXH ;0XXH为AL中任意值 OUT 0EH, AL ;写入清屏蔽寄存器端口
58
8.2.5 DMA控制器的工作时序 DMA空闲周期SI 过渡状态S0 DMA 有效周期(S1、S2、S3、S4)
82C37A内部状态变化流程
60
8.2.6 82C37A的初始化编程 ①命令字写入控制寄存器 ②屏蔽字写入屏蔽寄存器 ③方式字写入方式寄存器 ④清“0” 先/后触发器
◆ 初始化编程的步骤: ①命令字写入控制寄存器 ②屏蔽字写入屏蔽寄存器 ③方式字写入方式寄存器 ④清“0” 先/后触发器 ⑤写入地址寄存器字节寄存器 ⑥解除屏蔽 ⑦写入请求寄存器
61
PCH中的DMA控制器 1.82C37A DMAC的级联
62
2.如何扩展82C37A DMAC的寻址空间
64
3.应用举例 现假设在级联的82C37的主片通道1,将内存其始地址为80000H的280H字节的内容直接输出到外部设备。 MOV AL, 4 ;命令字, 禁止82C37工作 OUT 08, AL ;写命令寄存器 MOV AL, 0 OUT 0CH, AL ;清除先/后触发器 OUT 02, AL ;写低位地址 OUT 02, AL ;写高位地址
65
MOV AL, ;页面地址为8 OUT H, AL ;写页面寄存器 MOV AX, 280H ;传输字节数 DEC AX OUT , AL ;写字节数低位 MOV AL, AH OUT , AL ;写字节数高位 MOV AL, 49H ;模式字: 单字节读, 地址加1 OUT BH, AL
66
MOV AL, 40H ;命令字: DACK和DREQ低有效
OUT H, AL ;正常时序, 固定优先权 MOV AL, 01 ;清除通道1屏蔽 OUT AH, AL WAITF: IN AL, 08 ;读通道1状态 AND AL, 02 ;传输完成否 JZ WAITF ;没完成则等待 MOV AL, ;完成后屏蔽通道1 OUT A, AL ……
67
8.3 实时钟电路及其应用 8.3.1 MC146818特性及工作原理 MC146818外部引脚图
68
MC146818在系统中连接框图
69
实时钟工作原理示意图
70
COMS RAM实时钟信息存放位置表 偏移地址 信息内容 秒 7 日 1 报警秒 8 月 2 分 9 年 3 报警分 0A 状态寄存器A 4 时 0B 状态寄存器B 5 报警时 0C 状态寄存器C 6 星期几 0D 状态寄存器D 32H 日 期 世 纪 可以用INT 1A功能读取或设置这些值。
71
8.3.2 RT/CMOS RAM操作 815EP芯片组82801BA的RTC电路包含128字节标准CMOS RAM 区和128字节扩展CMOS RAM区。 访问RT/CMOS RAM的端口地址范围从70H~77H。其中,70H和71H用来访问标准CMOS RAM 区,72H, 73H用来访问扩展CMOS RAM 区。 MOV AL,6H ;6H是存放"星期几"的单元偏移地址 OUT 70H,AL ;送地址端口 JMP $+2 ;芯片I/O延时要求 IN AL,71H ;读数据端口 MOV AH, AL ;AH中存放的是当前“星期几”的信息 ;0表示星期日
72
8.3.3 CMOS 密码的破解 基本原理是破坏CMOS中的设置,使得开机后必须重新设置CMOS,从而破解密码。 mov AL, 2EH
out 70H, AL mov AL, 00H out 71H, AL mov AL, 2FH out 71H, AL CMOS中偏移为2EH和2FH的位置放的是标准校验和
Similar presentations