本人近期因工作需要在学习ATA总线协议,为了更好的与同行学习交流,把我的学习笔记和心得发布出来。有兴趣的朋友欢迎加入讨论,也希望对ATA协议有研究的同行多多指点。谢谢!
1、什么是ATA协议?
ATA协议定义了ATA主机控制器与ATA存储设备之间的接口标准,它包括一下几个方面的内容:
(1)接口的物理电气特性
(2)接口信号定义
(3)接口寄存器定义
(4)数据传输中使用的命令定义
(5)数据传输协议
(6)数据传输时序
2、ATA接口信号定义
ATA物理接口共40根信号线,其中大部分信号由主机控制驱动,另一些由ATA设备(如硬盘)驱动,而16位数据线是双向驱动的。
Interface signal name assignments
Description | Host | Dir | Dev | Acronym |
Cable select | (See note 1) | CSEL | ||
Chip select 0 | <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
| ® |
| CS0- |
Chip select 1 |
| ® |
| CS1- |
Data bus bit 0 |
| « |
| DD0 |
Data bus bit 1 |
| « |
| DD1 |
Data bus bit 2 |
| « |
| DD2 |
Data bus bit 3 |
| « |
| DD3 |
Data bus bit 4 |
| « |
| DD4 |
Data bus bit 5 |
| « |
| DD5 |
Data bus bit 6 |
| « |
| DD6 |
Data bus bit 7 |
| « |
| DD7 |
Data bus bit 8 |
| « |
| DD8 |
Data bus bit 9 |
| « |
| DD9 |
Data bus bit 10 |
| « |
| DD10 |
Data bus bit 11 |
| « |
| DD11 |
Data bus bit 12 |
| « |
| DD12 |
Data bus bit 13 |
| « |
| DD13 |
Data bus bit 14 |
| « |
| DD14 |
Data bus bit 15 |
| « |
| DD15 |
Device active or slave (device 1) present | (See note 1) | DASP- | ||
Device address bit 0 |
| ® |
| DA0 |
Device address bit 1 |
| ® |
| DA1 |
Device address bit 2 |
| ® |
| DA2 |
DMA acknowledge |
| ® |
| DMACK- |
DMA request |
| ¬ |
| DMARQ |
Interrupt request |
| ¬ |
| INTRQ |
I/O read |
| ® |
| DIOR- |
I/O ready |
| ¬ |
| IORDY |
I/O write |
| ® |
| DIOW- |
Passed diagnostics | (See note 1) | PDIAG- | ||
Reset |
| ® |
| RESET- |
Note: 1 See signal descriptions for information on source of these signals |
3、ATA接口的三种数据传输方式
(1)PIO(Programmable Input-Output)传输,可以分为PIO寄存器传输和PIO数据传输。PIO寄存器传输主要用于对ATA设备中的寄存器进行读写。读写的数据位数为8位DD[7:0]。ATA主机控制器根据所要读写的寄存器地址设置CS0_、CS1_、DA[2:0]地址信号,同时将DIOW_或DIOR_设为有效,ATA主机控制器或ATA设备驱动数据总线释放数据。当DIOW_或DIOR_撤销时,ATA主机控制器或ATA设备从数据总线上读取数据。对于PIO数据传输,所读写的地址为数据端口,读写数据为16位。
(2)MDMA(Multiword DMA)传输,用于数据传输。ATA主机控制器向ATA设备下达MDMA传输命令后,等待设备向主机发送DMARQ数据传输请求信号。当主机收到DMARQ信号后,向设备发送DMACK_响应信号。MDMA数据传输过程与PIO方式大致相同,也是通过DIOW_或DIOR_的周期变化来控制数据的传输。在数据传输过程中,DMARQ和DMACK_握手信号一直保持有效。
(3)UDMA(Ultra DMA),也是用于数据传输。这种传输方式的传输速度比MDMA要快,ATA/ATAPI-5协议中所定义的UDMA传输方式最高数据传输速率是66MB/s。UDMA对数据传输的控制信号重新进行了定义。另外,UDMA还引入了CRC数据校验机制,保证了数据传输过程的正确性,但其传输过程较为复杂。
4、ATA接口寄存器的定义
ATA主机与设备的通信是通过主机对ATA接口上的寄存器的读写实现的,而这些接口寄存器由主机发送的地址信号CS1_、CS0_、DA2、DA1、DA0来进行寻址。除了在DMA传输模式下,CS1_和CS0_全有效或全无效都是不可用的地址,在这种情况下,数据线应该在释放状态下(即数据总线没有驱动源)。当CS0_无效,CS1_有效时,DA[2:0]只有在值为06H和07H时地址才为有效,在其他的无效地址状态下,设备会使数据总线处于高阻态。
ATA接口寄存器可分为命令块寄存器和控制块寄存器。
(1)命令块寄存器是主机用来向设备传输命令或从设备读取状态的,这组寄存器包括:
柱面号高(Cylinder High)8位寄存器
柱面号低(Cylinder Low)8位寄存器
设备/磁头(Device/Head)寄存器
扇区数(Sector Count)寄存器
扇区号(Sector Number)寄存器
命令(Command)寄存器
状态(Status)寄存器
特征(Features)寄存器
错误(Error)寄存器
数据(Data)寄存器。
(2)控制块寄存器是用来控制设备和替换状态,这组寄存器包括:
设备控制(Device Control)寄存器
替换状态(Alternate Status)寄存器
驱动器地址(Drive Address)寄存器
ash_riple_768180695 2008-2-27 09:14
ash_riple_768180695 2008-2-18 16:11
ash_riple_768180695 2008-2-18 16:09
请问,你学习ATA协议的用途是什么?打算采用怎样的形式实现该协议?
用户19838 2008-2-14 09:40
用户21411 2008-2-13 00:11
需要探讨的问题可以发信息给我。
ash_riple_768180695 2008-2-1 09:20
ash_riple_768180695 2008-1-30 07:36
很久看不到有人设计ATA电路了,大家讨论啊,共同进步!