原创 ATA协议学习笔记

2008-1-29 13:35 11049 8 15 分类: FPGA/CPLD

本人近期因工作需要在学习ATA总线协议,为了更好的与同行学习交流,把我的学习笔记和心得发布出来。有兴趣的朋友欢迎加入讨论,也希望对ATA协议有研究的同行多多指点。谢谢!


1、什么是ATA协议?


ATA协议定义了ATA主机控制器与ATA存储设备之间的接口标准,它包括一下几个方面的内容:
(1)接口的物理电气特性
(2)接口信号定义
(3)接口寄存器定义
(4)数据传输中使用的命令定义
(5)数据传输协议
(6)数据传输时序


2ATA接口信号定义


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


 


3ATA接口的三种数据传输方式


 


1PIOProgrammable Input-Output)传输,可以分为PIO寄存器传输和PIO数据传输。PIO寄存器传输主要用于对ATA设备中的寄存器进行读写。读写的数据位数为8DD[7:0]ATA主机控制器根据所要读写的寄存器地址设置CS0_CS1_DA[2:0]地址信号,同时将DIOW_DIOR_设为有效,ATA主机控制器或ATA设备驱动数据总线释放数据。当DIOW_DIOR_撤销时,ATA主机控制器或ATA设备从数据总线上读取数据。对于PIO数据传输,所读写的地址为数据端口,读写数据为16位。


2MDMAMultiword DMA传输,用于数据传输。ATA主机控制器向ATA设备下达MDMA传输命令后,等待设备向主机发送DMARQ数据传输请求信号。当主机收到DMARQ信号后,向设备发送DMACK_响应信号。MDMA数据传输过程与PIO方式大致相同,也是通过DIOW_DIOR_的周期变化来控制数据的传输。在数据传输过程中,DMARQDMACK_握手信号一直保持有效。


3UDMAUltra DMA),也是用于数据传输。这种传输方式的传输速度比MDMA要快,ATA/ATAPI-5协议中所定义的UDMA传输方式最高数据传输速率是66MB/sUDMA对数据传输的控制信号重新进行了定义。另外,UDMA还引入了CRC数据校验机制,保证了数据传输过程的正确性,但其传输过程较为复杂。


 


4ATA接口寄存器的定义


 


ATA主机与设备的通信是通过主机对ATA接口上的寄存器的读写实现的,而这些接口寄存器由主机发送的地址信号CS1_CS0_DA2DA1DA0来进行寻址。除了在DMA传输模式下,CS1_CS0_全有效或全无效都是不可用的地址,在这种情况下,数据线应该在释放状态下(即数据总线没有驱动源)。当CS0_无效,CS1_有效时,DA[2:0]只有在值为06H07H时地址才为有效,在其他的无效地址状态下,设备会使数据总线处于高阻态。


ATA接口寄存器可分为命令块寄存器和控制块寄存器。


1)命令块寄存器是主机用来向设备传输命令或从设备读取状态的,这组寄存器包括:


柱面号高(Cylinder High8位寄存器


柱面号低(Cylinder Low8位寄存器


设备/磁头(Device/Head)寄存器


扇区数(Sector Count)寄存器


扇区号(Sector Number)寄存器


命令(Command)寄存器


状态(Status)寄存器


特征(Features)寄存器


错误(Error)寄存器


数据(Data)寄存器。


2)控制块寄存器是用来控制设备和替换状态,这组寄存器包括:


设备控制(Device Control)寄存器


替换状态(Alternate Status)寄存器


驱动器地址(Drive Address)寄存器


 

PARTNER CONTENT

文章评论7条评论)

登录后参与讨论

ash_riple_768180695 2008-2-27 09:14

小组建好了,大家来讨论吧:ATA协议A、B、C

ash_riple_768180695 2008-2-18 16:11

我们建个小组吧,讨论起来方便些。

ash_riple_768180695 2008-2-18 16:09

请问,你学习ATA协议的用途是什么?打算采用怎样的形式实现该协议?

用户19838 2008-2-14 09:40

因工作需要也在学习ATA协议!请多指教

用户21411 2008-2-13 00:11

需要探讨的问题可以发信息给我。

ash_riple_768180695 2008-2-1 09:20

点击ATA协议标签搜索一下,有我写的几篇blog。

ash_riple_768180695 2008-1-30 07:36

很久看不到有人设计ATA电路了,大家讨论啊,共同进步!

相关推荐阅读
EE直播间
更多
我要评论
7
8
关闭 站长推荐上一条 /3 下一条