完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
8237A芯片的两种工作状态分别是什么?
8237A芯片是由哪些部分组成的? 8237A芯片的引脚有哪些?其功能分别是什么? 8237A芯片是如何进行工作的? |
|
相关推荐
1个回答
|
|
9.1 8237A 的组成与工作原理
9.1.1 DMA传送 用 DMA 方式传送数据时,传送过程完全由 DMA 控制器(DMAC)控制。其基本功能: DMAC 能向CPU的 HOLD 脚发出 DMA 请求信号。 CPU响应 DMA 请求后,DMAC 获得总线控制权,由它控制数据的传送,CPU则暂停工作。 能提供读/写存储器或I/O设备的各种控制命令。 确定数据传输的始址和数据长度(CPU配置的),每传送1个数据便自动修改地址(+1或-1),数据长度 -1 。 传送完毕,能发出结束 DMA 传送的信号。 CPU在每个非锁定时钟周期结束后,都会检测 HOLD 脚上有无 DMA 请求?若有,便转入 DMA 传送周期。 8237A 是高性能可编程 DMA 控制器,主要特点: 含 4 个通道,每通道有 64K 地址(16位)和字节计数能力(16位)。 有 4 种传送方式:单字节传送、数据块传送、请求传送、级联传送。 每个通道的 DMA 请求可被允许或禁止。4 个通道的 DMA 请求有不同优先级,优先级可以是固定的,也可以是循环的。 任一通道完成数据传送后,会自动产生过程结束信号 EOP(End of Process,不常用),结束 DMA 传送;还可从外界输入 EOP 信号,中止正执行的DMA 传送。 8237A 的两种工作状态 1)从态方式 开始 DMA 传送前,8237A 是系统总线的从属设备,由CPU对它进行编程,如指定通道、传送方式和类型、内存单元起始地址、地址是递增还是递减以及要传送的总字节数等等;CPU也可读取 DMAC 的状态。 2)主态方式 当 8237A 取得总线控制权后,它就完全控制了系统,使I/O设备和存储器之间或者存储器与存储器之间进行直接的数据传送。 8237A 芯片的内部结构和外部连接与这两种工作状态密切相关。 9.1.2 8237A的内部结构 时序与控制逻辑 从态时,接收系统时钟、复位、片选和读/写等信号,完成相应控制操作;主态时, 向系统发控制信号。 其中与设备相连的是 IOR ‾ , IOW ‾ overline {text{IOR}},overline {text{IOW}} IOR,IOW ,其他的要么和CPU相连,要么和系统总线相连。 MEMR ‾ , MEMW ‾ overline {text {MEMR}},overline {text{MEMW}} MEMR,MEMW 是主态时进行内存读写的命令。 优先级编码电路 对同时提出 DMA 请求 HRQ(Hold Request) 的多个通道进行排队判优,决定哪个通道优先级最高,然后进行响应 HLDA(Hold Acknowledge)。 可选固定或循环优先级。某个优先级高的设备服务时,禁止其它通道请求。 数据和地址缓冲器组 8237A的 A7~A4(单向输出)、A3~A0(双向:从态时 A3-A0 输入有4根线,说明占了 16 个端口地址;主态时:A3-A0、A7-A4、DB7-DB0 共16根地址线往内存输出,读或写数据) 为地址线; DB7~DB0 在从态时传输(CPU配置或读取DMA的)数据,主态时传送地址。它们都与三态缓冲器相连,便于接管或释放。 命令控制逻辑 从态时接收CPU送来的寄存器选择信号(A3~A0),选择寄存器;主态时译码方式字的 D1D0 ,以确定操作类型。A3~A0 与 IOR text{IOR} IOR 、 IOW text{IOW} IOW 配合组成各种操作命令。 内部寄存器组 每通道有 16 位基址寄存器、基字计数器、当前地址寄存器、当前字计数器以及 6 位工作方式寄存器。 片内还有命令寄存器、屏蔽寄存器、请求寄存器、状态寄存器和暂存寄存器。 不可编程的字数暂存器和地址暂存器。 9.1.3 8237A的引脚功能 8237A 为 40 引脚 DIP 封装, 引脚排列: CLK 时钟信号,输入 8237A 时钟频率 3MHz ,8237A-5 为 5MHz 。 CS ‾ overline text{CS} CS 片选信号,输入,低电平有效。 从态方式下选中 8237A ,接受CPU对它的编程等。 READY 准备好,输入,高电平有效 慢速 I/O 设备或存储器参与 DMA 传送时,可使 READY 变低,让 8237A 在 DMA 周期中插入等待周期 TW ;当它们准备就绪时 READY 变高。 A3~A0 低 4 位地址线 从态为输入,寻址 8237A 内部寄存器,实现编程;主态时输出要访问内存的低 4 位地址。 A7-A4 高 4 位地址线 始终是输出或浮空,主态时输出 4 位地址信息 A7-A4 。 DB7-DB0 8 位数据线,与系统数据总线相连。 从态时,CPU经过数据线读取各有关寄存器内容,并对各寄存器编程。 主态时,由它们输出高 8 位地址 A15-A8 ,并由 ADSTB 信号将它们锁存到外部的高 8 位地址寄存器中,与 A7-A0 输出的低 8 位地址构成 16 位地址。 存储器-存储器传送方式下,源存储器读出的数据,经它们送暂存寄存器,暂存器中数据再经它们写到目的存储单元中。 AEN 地址允许信号,输出,高电平有效 送出锁存的高 8 位地址,与芯片输出的低 8 位地址一起构成 16 位内存偏址。同时使连到CPU的地址锁存器无效,保证地址线上的信号来自 DMAC 。 ADSTB 地址选通信号,输出,高电平有效 选通外部地址锁存器,将 DB7~DB0 上的高 8 位地址送到外部的地址锁存器。 IOR ‾ overline {text{IOR}} IOR I/O 读信号,双向。 从态时,控制CPU读取 8237A 内部寄存器。 主态时,与 MEMW ‾ overline {text{MEMW}} MEMW 配合,控制数据由外设传到存储器中。 DREQ3~DREQ0 通道 3~0 的 DMA 请求信号,输入 外设请求 DMA 服务时,向这些引脚发请求信号,有效极性由编程确定。固定优先级时,DREQ0 的优先级最高,编程可改变优先级。 HRQ 保持请求信号,输出,高电平有效 向CPU的 HOLD 端发出的 DMA 请求信号,可从 8237A 任一个未被屏蔽的通道发出。 HLDA 保持响应信号,输入,高电平有效 与CPU的 HLDA 相连,CPU收到 HRQ 信号后,至少经过1个时钟周期后,使 HLDA 变高,表示已让出总线控制权,8237A 收到 HLDA 信号后,便开始 DMA 传送。 DACK3~DACK0 通道 3~0 的 DMA 响应信号,输出 其有效电平极性由编程确定。相应通道开始 DMA 传送后,DACKi 有效,通知外部电路现已进入 DMA 周期。 EOP ‾ overline {text{EOP}} EOP 传输过程结束信号,双向,低电平有效 DMA 传送中,任一通道的字计数器减为 0 ,再由 0 减为FFFFH 而终止计数时,会在 EOP ‾ overline {text{EOP}} EOP 引脚上输出低电平信号,表示 DMA 传输结束。 也可在 EOP ‾ overline {text{EOP}} EOP 脚上输入低电平信号来终止 DMA 传送。 若通道设置成自动预置状态,该通道完成一次 DMA 传送,出现 EOP ‾ overline {text{EOP}} EOP 信号后,又能自动恢复有关寄存器的初值,继续执行另一次 DMA 传送。 9.1.4 8237A的内部寄存器 8237A的内部可编程寄存器主要有 10 种: 当前地址寄存器 16 位,每通道 1 个,存放 DMA 传送的存储器地址值。每传送 1 个数据,地址值自动 +1 或 -1 ,指向下个单元。 编程时可写入初值,也可被读出,但每次只能读/写 8 位,所以读/写要两次完成。 自动预置操作方式,在 EOP text{EOP} EOP 有效时,会重装入基地址值。 当前字计数寄存器 16 位,每通道 1 个,编程时置其初值为实际传送字节数少1。每传送 1 字节,自动 -1 。由 0~FFFFH 时,将产生终止计数信号TC 。 自动预置操作方式,在 EOP text{EOP} EOP 有效时,会重装入基字计数寄存器的内容。 基地址寄存器 16 位,每通道 1 个,存放通道当前地址寄存器初值,与当前地址寄存器地址一样,编程时写入相同值。 其内容不能读出和修改。用在自动预置操作时,使当前地址寄存器恢复到初值。 基字计数寄存器 16 位,每通道 1 个,存放通道当前字计数器初值,该值也是编程时与当前字计数器一起写入的。 其内容不能读出和修改,用于自动预置操作时,使当前字计数器恢复到初值。 命令寄存器 全局,8 位,控制 8237A 的操作。由CPU编程来设置 8327A 操作方式, 复位时清除。 D0 位:能否进行存储器到存储器传送,D0=1 允许。并规定先用通道 0 从源单元读入 1 字节放入暂存器,然后由通道 1 把该字节写到目的单元,接着两通道的地址分别 +1 或 -1 ,通道 1 的字计数器 -1,它减为 0 时产生终止计数信号 TC,并输出 EOP text{EOP} EOP 信号,终止DMA 服务。 D1 位:存储器到存储器传送时,通道 0 地址能否保持不变。D1=1 ,通道 0 在传送中保持同一地址,从而可把该单元中的数写入一组存储单元。D1=0 禁止。当 D0=0 时这种方法无效。 D2 位:允许或禁止 8237A 工作,D2=0 允许,D2=1 则禁止。 D4位 优先权控制。D4=0 为固定优先权,通道 0 优先级最高;D4=1 为循环优先权,刚服务过的通道 i 优先权最低,而通道 i+1 优先权最高。随着 DMA 操作不断进行优先权不断循环,防止某通道长时间占用总线。 D6 位:决定 DREQ 的有效电平,0 高电平有效,1 则低电平有效。 D7 位:决定 DAC K的有效电平,1 高电平有效,0 则低电平有效。 D3 位和 D5 位:有关时序的操作,见后面时序讨论。 工作方式寄存器 6 位,每通道 1 个,选择 DMA 的传送方式和类型等,格式: D1D0 位:选择通道,并进一步由 D2-D7 指定选定通道的工作方式。这样 4 个通道可合用 1 个方式寄存器。 D3D2 位:决定所选通道的 DMA 操作类型。从 3 种 DMA 传送类型中选定一种: 10:读传送,存储器-》I/O设备, 发 MEMR ‾ , IOW ‾ overline {text{MEMR}},overline {text{IOW}} MEMR,IOW , 01:写传送,存储器《-I/O设备, 发 MEMW ‾ , IOR ‾ overline {text{MEMW}},overline {text{IOR}} MEMW,IOR , 00:校验传送,伪传送,8237A 会产生地址信息和 EOP text{EOP} EOP 信号,不会发出读写控制信号,用于测试。 D4 位:所选通道是否进行自动预置操作。如果 D4=1 ,则选择自动预置。 D5 位:方向控制位。D5=0 数据传送由低址向高址方向进行,每传送 1 字节,地址 +1 。D5=1 时传送方向相反。 D7D6 位:定义所选通道操作方式。有 4 种传送方式: 1) 单字节传送方式(常用于软盘) 每次DMA操作只传送 1 字节。之后字计数器 -1 ,地址寄存器 +1 或 -1,HRQ 无效,释放系统总线。当字计数器由 0 减为 FFFFH 时,产生终止信号 TC 。 此后即使 DREQ 继续有效,8237A 的 HRQ 输出仍进入无效状态并让出总线,由CPU控制至少一个总线周期。 2) 数据块传输方式 进入 DMA 服务后,可连续传输一批数据,直到字计数器由 0 减为 FFFFH 产生 TC 信号,或从外部送来 EOP text{EOP} EOP 信号时,才释放总线,结束 DMA 传输。 3)请求传送方式 也连续传送数据,直到字计数器由 0 减为 FFFFH 产生 TC ,或外界送来 EOP text{EOP} EOP 信号。但每传送 1 字节后,都要测试 DREQ 端,一旦发现此信号无效,马上停止。 地址和字计数器的中间值会被保存在通道的现行地址和字计数器中,外设准备好新数据时,可使 DREQ 再变为有效,又从断点处继续进行传输。 4)级联传送方式 连接多个 8237A 以扩充 DMA 通道,连线见图11.5。 主片 DREQ —从片 HRQ ,主片 DACK—从片 HLDA ,主片 HRQ 和 HLDA 与CPU的 HOLD 和 HLDA 相连。1 块主片可连 4 块从片。主片置为级联传送,从片设成其它三种方式。主片不输出地址和读写信号。 请求寄存器 相应请求位置 1 时,对应通道可产生 DMA 请求。相应位可由DREQ 信号置1,也可写入通道请求字来置 1 或清 0 。 D1D0 位选通道号,D2 位为请求位。请求位不能屏蔽,其优先权受优先权逻辑控制,TC 或外部的 EOP text{EOP} EOP 信号能将相应的请求位清 0 ,RESET 信号则使整个请求寄存器清 0 。 屏蔽寄存器 4 位,1 个/通道。禁止/允许对应通道的 DREQ 请求进入请求寄存器。有两种屏蔽字,端口地址不同。 1)通道屏蔽字 可对该寄存器写入通道屏蔽字来对单个屏蔽位置 1 /复位。通道屏蔽字格式与通道请求字格式类似: 2)主屏蔽字 还允许用主屏蔽命令设置通道的屏蔽触发器。D3~D0 位对应通道 3~0 的屏蔽位,1 屏蔽,0 清除屏蔽。可写入主屏蔽字,一次完成 4 个通道的屏蔽位设置。可用软件同时清除 4 个通道的屏蔽位。 状态寄存器 8 位状态寄存器存放状态信息,供CPU读出。如 D3~D0 中置 1 的通道,已达计数终点 TC 或外部送来了 EOP text{EOP} EOP 信号。D7-D4 中置 1 的通道,DMA 请求还未处理。复位或被读出后,相应状态位被清除。状态字格式: 暂存寄存器 在存储器-》存储器传送时,保存所传送的数据。其中始终保存着最后 1 个传送的字节,RESET 信号会将其清除。编程状态下,可由CPU读出这个字节。 软件命令 编程状态下,8237A 可执行 3 个附加的特殊软件命令,只要对特定端口进行一次写操作,命令就会生效。 1)清除先/后触发器 8237A 仅 8 根数据线,而地址寄存器和字计数器均为 16 位,CPU要分两次读写。先/后触发器控制高低字节读写次序。清 0 读写低 8 位,随后自动置 1 ,读写高 8 位。接着又清 0 ,… 。对该触发器所在的寄存器执行一次写操作便清 0 ,复位和 EOP text{EOP} EOP 信号有效也将它清为 0 。 2)主清命令 主清命令也称为复位命令,功能与 RESET 信号同,它可使命令寄存器、状态寄存器、请求寄存器、暂存寄存器和内部先/后触发器均清 0 ,而把屏蔽寄存器置 1 。复位后,8237A 进入空闲状态。 3)清除屏蔽寄存器 该命令能清除 4 个通道的全部屏蔽位,允许各通道接受 DMA 请求。 各寄存器的端口地址 对 8237A 内部寄存器读写时, CS ‾ overline {text{CS}} CS 端必须为低电平,该信号由高位地址经I/O译码后产生。 A3~A0 线选择不同寄存器,共占 16 个I/O端口地址。常将它们与地址总线低 4 位 A3~A0 相连,选择各寄存器。 例如,PC/XT 机中,地址 A9~A4=000000 时,经I/O译码电路选中 8237A,使其有效。 地址 A3~A0 与 8237A 的 A3~A 0脚连接实现片内寻址。因此基地址 =00H,记为 DMA=00H 。由此可得其他寄存器的地址,如DMA+00H 为通道 0 基地址与当前地址寄存器地址,DMA+08H 为状态寄存器地址等: 9.2 8237A的时序 空闲周期 SI :未发生 DMA 请求时 检测 CS :CPU是否对其操作 检测 DREQ :外设是否有请求 过渡状态 S0 :DMAC 发出 HRQ 之后,收到 HLDA 之前。 有效周期:DMAC 收到 HLDA 之后,接管总线: 包括 4 个状态周期(S1、S2、S3、S4),慢速I/O或M还可通过令 READY=0 申请插入 SW ,8237A-5 在 S3 中检测 READY ,SW 中的操作同 S3 : S1 :更新高8位地址,AEN 、ADSTB 有效,DMAC 将 M 的 A8~15 放到 DB0~7 上;只有当 A8~15 有变化时才出现 S2 :选中两个介质,输出 16 位地址选中 M :低 8 位由 A0~7 直接输出;高 8 位由 DB0~7 经外部锁存器(由 ADSTB 下降沿锁存)输出;发出有效的 DACK 选中I/O S3 :读周期。发出 IOR(DMA写)或 MEMR(DMA读),从源读数据到 DB0~7,等待写周期。 S4 :写周期。发出 MEMW(DMA写)或 IOW(DMA读),将 DB0~7 上的数据写到目标中。 扩展写:写提前到与读同时开始(S3),与读一样扩展到 2 个时钟周期。 压缩时序:去掉 S3 ,读与写同为 1 个时钟周期。 SW :慢速I/O或M传送时,在 S3 和 S4 间插入 SW 。 9.3 8237A的编程和应用举例 9.3.1 DMA系统组成 PC机的DMA系统: 8237A-5 页面地址寄存器 总线裁决逻辑 9.3.2 DMA系统有效地址的生成 第一代PC机中的地址是 20 位的,而 8237A 是 16 位的。为此需要一个 74LS670 扩展地址。 1. 74LS670工作原理 74LS670 的 RA,RB 和 DACK2,DACK3 连接,内有 4 个 4 位寄存器。读写分开控制: 写: GW ‾ = 0 overline {text{GW}}=0 GW=0;WA、WB:写入寄存器选择;D1~4:数据输入 读: GR ‾ = 0 overline {text{GR}}=0 GR=0;RA、RB:读出寄存器选择;Q1~4:数据输出 2. DMA系统有效地址的生成 如何提供存储器的地址: A16~19 :由 74LS670 提供; A8~15 :由 8237A-5 的 DB0~7 经 74LS373 提供; A0~7 :由 8237A-5 的 A0~7 直接提供; 如何对I/O设备寻址,用 DACK 信号取代芯片选择和片内端口选择: 3. IBM-PC微机的DMA系统 单片 DMAC 的 DMA 系统:4 个通道;8 位传送;1MB 寻址;64KB 计数 双片DMAC的DMA系统: 7 个通道;16MB 寻址;64KB 计数 片(0):8 位传送 片(1):使用偶地址;16 位传送 如果我们打开设备管理器,可以在直接内存访问控制器中看到上图双片DMAC结构中,出现的端口地址。 4. DMA系统的初始化 注意事项: 初始化前要对芯片检测 初始化前禁止工作或屏蔽通道 所有通道的方式寄存器均加载 要初始化页面地址寄存器 初始化编程: ① PC机检测芯片(8 个 16 位寄存器全 1 、全 0 的读写)及加载校验方式: MOV AL, 04H ;0000_0100:前4位默认配置,正常时序,禁止工作,CR0地址不保持,禁止内存到内存 OUT DMA+08H, AL ;写入命令寄存器 OUT DMA+OCH, AL ;清先后触发器 MOV AL, 0FFH ;1111_1111:全1的读写测试 C16: MOV BL, AL ;全1或全0 MOV BH, AL ;全1或全0 。。. 。。. MOV CX, 8 ;对8个寄存器做读写测试 MOV DX, DMA ;从DMA开始测试 C17: OUT DX, AL ;全1或全0写入DX OUT DX, AL ;再写一次,16位写两次,先写低八位,再写高八位 IN AL, DX ;读出低八位 MOV AH, AL ; IN AL, DX ;读出高八位,放入AX中 CMP BX, AX ;和之前保存的AL对比 JE C18 ;如果相同,证明该寄存器没有出错 HLT ;不相同则停机 C18: INC DX ;DX端口号+1 LOOP C17 ;再重复循环 。。. INC AL ;AL+1=全0 JE C16 ;为0,跳转回C16,做全0测试 。。. 。。. 。。. 。。. 。。. 。。. SUB AL, AL ;AL清0 OUT DMA+08H, AL ;写入命令寄存器,高4位按照默认配置,低4位正常时序,允许工作,其他位默认;启用芯片 ;下面将40H,41H,42H,43H先后写入工作方式寄存器,,即对全部的通道写入同样的工作方式 MOV AL, 40H ;0100_0000针对0号通道 OUT DMA+0BH, AL ;单字节方式,地址递增,禁止地址预置,校验方式 MOV AL, 41H ;0100_0001针对1号通道 OUT DMA+0BH, AL ;单字节方式,地址递增,禁止地址预置,校验方式 MOV AL, 42H ;0100_0010针对2号通道 OUT DMA+0BH, AL ;单字节方式,地址递增,禁止地址预置,校验方式 MOV AL, 43H ;0100_0011针对3号通道 OUT DMA+0BH, AL ;单字节方式,地址递增,禁止地址预置,校验方式 5. DMA传送的应用 例:利用级联的 IBM PC/AT 的 8237 主片通道 5 ,将内存其始地址为 80000H 的280H 字节的内容直接输出到外部设备。 MOV AL, 04H ;命令字, 禁止82C37工作 OUT 0D0H, AL ;写命令寄存器 MOV AL, 0 OUT 0D8H, AL ;清除先/后触发器 OUT 0C4H, AL ;写低位地址 OUT 0C4H, AL ;写高位地址 MOV AL,04H ;页面地址为8 OUT 08BH, AL ;写页面寄存器 MOV AX, 280H ;传输字节数 DEC AX OUT 0C6H, AL ;写字节数低位 MOV AL, AH OUT 0C6H, AL ;写字节数高位 MOV AL, 89H ;方式字: 单字节读, 地址加1 OUT 0D6H, AL MOV AL, 05H ;写请求寄存器 OUT 0D2H, AL DMA控制器与I/O设备的连接:DMAEN 是 DMA 申请允许信号;软盘接口中的数据输出寄存器(3F2H)的 D3 位控制,高有效 ROM-BIOS 中软盘 DMA_SETUP: AL——方式字(CH2,单一传送,非自动预置,地址增量) 42H:DMA校验(软盘校验) 46H:DMA写(读软盘) 4AH:DMA读(写软盘) ES:BX——内存首址 DH——要传送的扇段数 字节数/扇段在磁盘基址区 DISK_BASE 的 3 号单元 0:128 字节/扇段 1:256 字节/扇段 2:512 字节/扇段 3:1024 字节/扇段 DMA_SETUP PROC PUSH CX ;保护现场 CLI OUT DMA+12, AL ;清先/后触发器 OUT DMA+11, AL ;设置方式 ;形成物理地址 MOV AX, ES MOV CL, 4 ROL AX, CL MOV CH, AL AND AL, 0F0H ADD AX, BX JNC J33 INC CH J33: PUSH AX ;低16位地址入栈 。。. ;设置地址寄存器及页面地址 OUT DMA+4, AL ;写低16位地址 MOV AL, AH OUT DMA+4, AL MOV AL, CH AND AL, 0FH ;写高4位地址 OUT 81H, AL ;设置字节计数器 MOV BX, 6 CALL GET_PAM ;取DISK_BASE的3号单元作为移位次数 MOV CL, AH MOV AH, DH SUB AL, AL SHR AX, 1 SHL AX, CL DEC AX PUSH AX ;N-1入栈保护 。。. OUT DMA+5, AL MOV AL, AH OUT DMA+5, AL STI ;判DMA是否超界 POP CX ;用低16位地址与N-1相加设置CF POP AX ADD AX, CX POP CX ;恢复现场 MOV AL, 02H OUT DMA+10, AL RET DMA_SETUP ENDP |
|
|
|
只有小组成员才能发言,加入小组>>
4345个成员聚集在这个小组
加入小组3287 浏览 0 评论
航顺(HK)联合电子发烧友推出“近距离体验高性能Cortex-M3,免费申请价值288元评估板
4233 浏览 1 评论
4239 浏览 0 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 08:59 , Processed in 0.663766 second(s), Total 74, Slave 58 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号