发新话题
打印

IDE控制器中的寄存器

IDE控制器中的寄存器


IDE控制器中的寄存器
1 S0 K) D" J* K3 {5 s, U5 E    IDE控制器中有两组寄存器:命令寄存器和控制寄存器。命令寄存器用于接收命令和传送数据,控制寄存器用作驱动器控制。表10.15列出了IDE控制器中的寄存器。 6 u! f; {# T% w' F3 l
    从表中可以看出以下三点:
) J, _6 ~7 m$ }' T/ d4 e0 C    ·两组寄存器用CS0(上划线)和CSl(上划线)信号来区分,而组内的寄存器用DA2、DAl和DAO加以区分。 / |: q' O& h& X  u4 F
    ·表中有两个寄存器共用一个端口地址的情况:在读操作时,访问一个寄存器;而在写操作时,访问另一个寄存器。这样安排是为了节省I/O地址资源。
, G* u; v& X! l0 B7 z6 C    ·控制寄存器组中实际安排的寄存器并不多,真正用作控制的只有一个。这为以后扩充保留了足够的空间。 * }& i4 u/ F/ V* l* t
  ]/ G3 c3 x3 V
# A  s' d0 W0 s  R$ |$ K; U5 }

4 [  z; V4 D% k' m. z
6 j% {% `4 J& o- e7 }2 j/ a% \) c4 F! J6 m' E: F. K4 b3 I9 ^
    目前,大部分主板配有两个IDE接口,对第一个IDE接口,使CS0(上划线)和CSl(上划线)有效的地址范围分别是1FOH~lF7H和3FOH~3F7H,对第二个接口,使这两个信号有效的地址范围分别是170H~177H和370H~377H。下面具体说明各个寄存器的功能。在说明中只给出了第一个IDE接口的端口地址,第二个IDE接口的端口地址可类推。
5 Y0 S6 R) e; y# c5 g1 \4 C    ①数据寄存器(1FOH读/写):该寄存器用来在主机和磁盘驱动器的缓冲区之间进行8位或16位的数据交换。IOCSl6(上划线)信号有效表明进行的是16位数据传输。在进行PIO方式传输时要使用该寄存器。 $ w* e: K% s2 W( |, P) f/ ?
    ②错误寄存器(1F1H读):这是一个8位的寄存器。它反映控制器在诊断方式(在加 电、复位或执行驱动器诊断命令时所处的方式)或操作方式(执行除诊断命令以外的所有命令时所处的方式)下的错误原因。例如,在操作方式下,该寄存器的最高位为1表示访问的扇区是坏扇区,最低位为1表示地址标志没有找到。
$ t4 m+ ?$ |8 m: P0 I2 w& A    ③特性寄存器(1 F1H写):一般情况下不使用该寄存器,根据ATA标准它被用来设置接口的某些特性。例如,在ST506控制器中,该寄存器的内容等于柱面号除以4,表示开始写预补偿的起始柱面号。 4 F5 u; \$ [9 t$ n, c
    ④扇区数寄存器(1F2H读/写):该寄存器记录要访问的扇区的数目。每访问一个扇区,其值自动减1。如果初值为O,则表示扇区数是256。
% N1 b! g8 ^! n4 J) o0 S) {    ⑤扇区号寄存器(1F3H读/写):该寄存器记录要访问的第一个扇区的编号。如果使用LBA寻址(逻辑块寻址)方式,它记录起始逻辑扇区的逻辑地址的第O字节(第7~0位)。 ( F0 u* }5 D& U/ @* c5 y
    ⑥柱面号寄存器(1F4H,1F5H读/写):这是由两个8位寄存器组成的16位寄存器,1F4H为低字节,1F5H为高字节。它用来记录要操作的柱面的编号。ATA标准允许多达65536个柱面。如果使用LBA寻址方式,这两个寄存器包含起始逻辑扇区的逻辑地址的第一和第二字节(第15~8位和第23~16位)。 $ X2 q8 T  q* Q5 `9 ~
    ⑦驱动器/磁头寄存器(1F6H读/写):该寄存器记录要操作的驱动器号、磁头号和寻址方式,其定义见表10.16。 - D* \' H+ q5 ~( H- A7 k5 I) ]% j4 o

7 F0 u6 C: U  ~& @4 H
/ X4 P  J$ s8 C- b# G4 r! v5 Z% x/ D1 T) Y( O
& F, V: X( U! _3 A( r5 i! Q

- C' `+ V5 G. f其中,HS3~HSO为磁头选择,采用LBA寻址方式时,为起始逻辑扇区的逻辑地址的第三字节的低4位(第27~24位)。该字节的高4位通常情况下为0。DRV为驱动器选择,0表示选择主驱动器,l表示选择从驱动器。L表示采用的寻址方式,为l表示采用LBA寻址方式,为0表示采用CHS方式。 # d! L  s8 ]6 U6 e, Q0 e7 I
    ⑧状态寄存器(1 F7H读):该寄存器记录了硬盘驱动器执行命令后的状态。读该寄存器会清除未得到响应的中断请求信号。为了避免发生这种情况,可以读取辅助状态寄存器3F6H,这两个寄存器的内容完全相同。该寄存器的格式见表10.17。
- y5 n3 |+ [0 o4 C
% I! S5 @$ I  a' x- ~  E0 f. i. K0 @6 B. b" k

! Z" }" L. n' o: p" b& p: u( Y
. ~% y" G% L: x6 h4 Z2 q1 Q2 X9 ?7 C6 f- T; j; Z
其中,BSY为驱动器忙,DRDY为驱动器准备好,DWF为驱动器写失败,DSC为寻道结束,DRQ为请求服务,CORR为数据传输将继续进行(在出现了可以纠正的读错误的情况下),IDX为收到索引信号,ERR为命令执行出错。
, u" Z+ ?$ a* y8 Y    ⑨命令寄存器(1F7H写):该寄存器接收并保存发送到控制器的命令。命令一发送到命令寄存器中,该命令就会开始执行。 ; F3 l/ f5 N! H$ L
    ⑩辅助状态寄存器(3F6H读):它与状态寄存器的内容相同,但读该寄存器时不会清除中断请求信号。
  }7 ?; z$ @% L: b    &;#9322;设备控制寄存器(3F6H写):该寄存器的定义见表10.18。+ Z) h; \5 l  e2 l6 j9 j

9 q: S$ Q3 s3 @' e' c% r  ]7 M4 q  E. w# T
   



点击图标进入精品网摘收藏 欢迎大家加入网络收藏夹

TOP

发新话题