ATA接口寄存器描写叙述
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传输数据。所读写的地址为数据port。读写数据为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)寄存器
存储体寻址约束
下面是存储体開始反映命令的步骤:
1) 存储体不处于休眠状态;
2) 若存储体处于休眠状态。那么,即使DMACK-此时变为有效。存储体将忽略DIOW-/DIOR-变成有效。
若存储体不支持包命令特性集。那么存储针对命令的反映在表41中。若运行包命令特性集。反映在表42中
存储体被选择意味着DEV位相应的逻辑设备号码。
在设备被选择和DMACK-被置为有效,时仅仅用于Multiword DMA,不能用于超DMA;
注:DIOX-栏除外。A=置为有效,N=置为无效,Z=释放。X=不在乎;
在DIOX-栏中:R=DIOR-被置为有效,W=DIOW-被置为有效,X=要么DIOR-要么DIOW-被置为有效
5 I/O寄存器描写叙述
5.1 概述
命令寄存器用于发送命令到存储体或将存储体的状态发送给主机;该寄存器包好高位的LBA,中位LBA,设备寄存器,扇区数,命令寄存器,状态寄存器,特性寄存器,错误寄存器,和数据寄存器。
控制寄存器用于控制和传递交替状态。
该寄存器包括设备控制和交替状态寄存器;
每一个寄存器的包括例如以下内容:
+++地址: 寄存器的CS和DA地址。
+++方向: 指明主机对寄存器是读还是写,仅仅读,或仅仅写;
+++存取约束: 指明什么时候才干够存取。
+++作用: 指明存取该寄存器的作用;
+++功能描写叙述: 描写叙述寄存器的功能。
+++区/位描写叙述: 描写叙述寄存器包括的内容;
5.2 交替状态寄存器(读):--与设备控制寄存器复用(写)
地址:
即:CS(1:0)=10;DA(2:0)=110;
方向:
这是仅仅读寄存器。若地址被主机写,那么存储体控制寄存器为被写;
存取约束:
一旦BSY被设为1,其它的位都不能用,当存储体处于休眠状态。该寄存器中的值无效。
作用:
读该寄存器不会清除一个终端等待。
功能描写叙述:
该寄存器包括和状态寄存器相同的内容。
5.3 命令寄存器(写):--与状态寄存器复用(读)
地址:
即:CS(1:0)=01。DA(2:0)=111;
方向:
仅仅写寄存器。若地址被主机写,表明状态寄存器处于被读的状态;
存取约束:
除了DEVICE RESET命令,其它的命令仅仅有在BSY和DRQ都被清零而且DMACK-没有被设置为有效的情况下写该寄存器。若在BSY或DRQ被设为1时写该寄存器,那么命令寄存器写的结果就是不确定的。除了DEVICE RESET命令。一个处于休眠模式的存储体,若运行PACKET 命令特性集,除了DEVICE RESET命令。其它的命令写的寄存器的值都会被忽略。
作用:
当该命令寄存器被写完后,就開始运行命令,当这个寄存器被写,命令模块寄存器的内容就变成了这个命令的參数。
写这个寄存器,会清除不论什么等待的中断条件;
功能描写叙述:
该寄存器包括:发送给存储体的命令码;命令写到该命令寄存器后即刻运行命令。可运行的命令和买条命令的代码都总结在V2的附录中的表中。
区/位描写叙述:
5.4数据port
地址:
当DMACK-被设为有效,CS(1)-和CS(0)-都被设为无效,传递16位宽度的数据
即:CS(1:0)=00。
方向:
该port是一个读/写port;
存取约束:
该port仅仅用于DMA传输数据,当DMACK-和DMARQ都设为有效时。
作用:
DMA输出传输数据通过一系列的写这个port来运行,每一个写传输的数据都是在前一个写数据之后。
DMA输入数据的传输被一系列的读port运行;每一个读传输的数据都是在前一个读之后,每次在读DMA输入数据和写DMA输出数据的结果都是无效的;
功能描写叙述:
数据port是16位宽度;
区或位描写叙述:
5.5 数据寄存器:
地址:
即CS(1:0)=01。DA(2:0)=000;
方向:
读/写寄存器
存取的约束:
该寄存器仅仅用于PIO传输数据,当DRQ被设为1,而且DMACK-没有被设为有效时;该寄存器的内容在休眠模式下无效;
作用:
PIO输出传输数据是通过一系列的写寄存器来完毕的,每次写传输数据在上次之后;PIO输入传输数据是通过一系列的读该寄存器来完毕,每次读传输数据在上次写之后。PIO输入期间的读或PIO输出期间的写的结果都是无效的。
功能描写叙述:
该数据寄存器的宽度是16位。一个CFA存储体的PIO传输数据模式的数据宽度是8位,此时仅仅用到了DD7~DD0.
区/位描写叙述:
5.6设备寄存器
地址:
即:CS(1:0)=01;DA(2:0)=110;
方向:
读/写寄存器
存取约束:
仅仅有在BSY和DRQ被清零,而且DMACK-被设为无效是能够写的。它的内容仅仅有在BSY被清0时才有效。若BSY或DRQ被设为1的时候。写该寄存器,其结果将是无效的。
若存储体在不运行PACKET命令特性命令设置,在休眠模式下,这个寄存器的内容无效。而在运行PACKET命令特性命令设置,在休眠模式下,这个寄存器的内容有效。
作用:
当这个寄存器被主机或存储体的信号写的时候。DEV变成有效,其它位变成命令的參数。当命令寄存器在被写的时候。
这个寄存器的第四位选择存储体,其它为示命令而定;
区/位描写叙述
------Obsolete---表示这些位不用了。一些主机会设置这些位位1,可是存储体会忽略这些位;
------#表示这些位视命令而定;
——DEV,存储体选择,为0选存储体0,为1选存储体1;
5.7 存储体控制寄存器
地址:
即:CS(1:0)=10,DA(2:0)=110;
方向:
这是个仅仅写寄存器。若地址被主机读,那么交替状态寄存器在被主机读。
存取约束:
仅仅有在DMACK-没有设为有效时,寄存器才干够被写;
作用:
在被写的时候,这个寄存器的值就会起作用
功能描写叙述:
寄存器同意主机软复位连接的存储体,而且能够通过选择的存储体,使得INTRQ信号有效或无效;当设备控制寄存器被写的时候两个存储体都要响无论哪个存储体被选择。
当SRST被设置为1两个存储体都要运行软复位协议。存储体在休眠模式应该响应SRST的信号。
区/位描写叙述
——HOB(命令字节的高位)在48位寻址特性设置中定义,每次写命令寄存器都要清除HOB位位0。
——BIT(6:3),保留。
——SRST是软件复位位(參考6.2)。
——nIEN是存储体使主机INTRQ信号有效的使能。
当被选择的存储体的nIEN位被清零,那么应该通过一个三态缓冲使INTRQ有效,而且依据存储体适当地启动有效或无效。当被选择的存储体的nIEN位被置为1。存储体应该释放INTRQ信号;
——BIT0应该被清零
5.8 错误寄存器
地址:
即:CS(1:0)=01;DA(2:0)=001;
方向:
这是个仅仅读寄存器;若主机在写地址那么特性寄存器在被写入。
存取约束:
当BSY和DRQ被清零,而且ERR或 SE被置为1时。寄存器的内容是有效的。
在上电复位、运行完硬件、软件复位或者是运行完EXECUTE DEVICE DIAGNOSTICS或DEVICE RESET命令后,这个寄存器的内容应该是有效的。
当存储体在休眠状态时该寄存器的值无效。
作用:
无
功能描写叙述:
在运行全然部的命令除了EXECUTE DEVICE DIAGNOSTICS或DEVICE RESET命令后,若状态寄存器的ERR位被置为1,该寄存器的内容将会有效。
在上电。硬复位。软复位后,或者运行完EXECUTE DEVICE DIAGNOSTICS或DEVICE RESET命令,该寄存器包括一个诊断码。
区/位描写叙述:
注:
——第二位-ABRT被设为1表明命令运行失败。由于命令码或者命令參数不合法,不支持该命令,该命令的前提条件不满足。或出现其它故障;
——#。该位由命令决定。
5.9 特性命令寄存器--错误寄存器
地址:
即:CS(1:0)=01;DA(2:0)=001。
方向:
仅仅写寄存器;若地址被主机读,那么错误寄存器在被主机读;
存取约束:
当BSY和DRQ等于0且DMACK-被设为无效的时候,应该写该寄存器;若BSY,或DRQ被设为0。那么写该寄存器的结果是无效的。
作用:
若命令寄存器被写,那么这个寄存器的内容就变成命令參数。
功能描写叙述:
这个寄存器的值决定于命令的类型。
5.10 LBA高寄存器/字节记数高位寄存器
即:CS(1:0)=01;DA(2:0)=101;
方向:
读/写寄存器;
存取约束:
当BSY和DRQ被清0,而且DMACK-无效,寄存器可写。
当BSY和DRQ被清0,寄存器的值有效。
当BSY或DRQ被置1时。写寄存器,结果是无法确定的。
在休眠模式时,寄存器的值无效。
作用:
命令寄存器被写入。寄存器的值为命令參数。
功能描写叙述:
寄存器的值决定于命令的类型(參考第6章)。
对于没有运行包命令特性设置的存储体,寄存器为LBA高寄存器。
对于有运行包命令特性值设置的存储体,寄存器为字节记数高位寄存器。
5.11 LBA低寄存器
方向:
读/写寄存器。
存取约束:
当BSY和DRQ被清0。而且DMACK-无效,寄存器可写。
当BSY和DRQ被清0,寄存器的值有效。
当BSY或DRQ被置1时,写寄存器,结果是无法确定的。在休眠模式时,寄存器的值无效。
作用:
命令寄存器被写入,寄存器的值为命令參数。
功能描写叙述:
寄存器的值决定于命令的类型(參考第6章)。
5.12 LBA中寄存器/字节记数低位寄存器
方向:
读/写寄存器;
存取约束:
当BSY和DRQ被清0,而且DMACK-无效,寄存器可写。当BSY和DRQ被清0,寄存器的值有效。
当BSY或DRQ被置1时,写寄存器。结果是无法确定的。
在休眠模式时,寄存器的值无效。
作用:
命令寄存器被写入,寄存器的值为命令參数。
功能描写叙述:
寄存器的值决定于命令的类型(參考第6章)。
对于没有运行包命令特性设置的存储体,寄存器为LBA中寄存器。
对于有运行包命令特性值设置的存储体,寄存器为字节记数低位寄存器。
5.13 扇区计数/中断响应寄存器
方向:
读/写寄存器;
存取约束:
当BSY和DRQ被清0。而且DMACK-无效。寄存器可写。当BSY和DRQ被清0。寄存器的值有效。当BSY或DRQ被置1时。写寄存器,结果是无法确定的。在休眠模式时。寄存器的值无效。
作用:
命令寄存器被写入。寄存器的值为命令參数。
功能描写叙述:
寄存器的值依赖于命令类型(參考第6章)。
对于没有运行包命令特性设置的存储体,寄存器为扇区计数。
对于有运行包命令特性值设置的存储体,寄存器为中断响应寄存器。
5.14 状态寄存器---命令寄存器(复用)
方向:
仅仅读。假设写入地址。则为命令寄存器
存取约束:
假设BSY置1,寄存器的值将会被忽略。除位BSY外。在休眠模式时,寄存器的值无效。
作用:
其中断挂起后读这个寄存器会清0中断挂起位(參考第8章)。
当一个中断发生了,在主机能够识别信号INTRQ之前主机不能读状态寄存器。否则会清除挂起位,无法识别中断请求类型。
功能描写叙述:
这个寄存器包括了设备状态,寄存器值会被更新反映当前设备的状态。
区/位描写叙述:
--BSY(Busy)
BSY为1表示存储体忙。
在主机写命令寄存器后,在命令完毕前或是设备因覆盖命令而运行总线释放。存储体会设置BSY=1或DRQ=1。