EDN首页   博客首页 用户登陆  |  注册
aaa
发表于 2009/6/20 22:34:21

0

关于投票

如何阅读ATA-5协议文档

    ATA-5标准规范文档(下文简称ATA-5文档)是我工作以后用到的第一份比较全面而复杂的标准文档。这份文档,在我第一份工作近三年的时间内被我反复的阅读和使用。在它的指导下,我完成了一款ATA设备端产品的维护、升级和另一款新产品的开发。正如对自己的第一份工作怀有深厚的感情一样,对ATA协议,我也一直在关注着它的发展变化。 riple
    最近在“ATA协议A、B、C”小组看到有网友说看了ATA标准规范文档后不知道从何入手,这一困惑我也曾经有过。在这篇文章里,我就尝试着把ATA-5文档的大致结构捋一下,把文档中我熟悉的重点和难点部分标示出来。 riple

    ATA-5文档共分10个条款:

条款1 描述了文档内容涉及的范围。 riple
条款2 提供了文档参考的其他规范。 riple
条款3 提供了文档中用到的名词定义、缩写定义和文档格式约定。 riple
条款4 包括了PATA接口的电气和机械特性。 riple
条款5 包括了PATA接口的信号描述。 riple
条款6 描述了ATA接口的概要的操作要求。 riple
条款7 包括了ATA接口的寄存器描述。 riple
条款8 包括了ATA接口的命令描述。 riple
条款9 包括了ATA接口的协议描述。 riple
条款10 包括了接口的时序图。 riple
    条款4、5是物理规范部分,描述了PATA设备的接口特性,是进行物理设计的参考;条款的7、8、9、10是逻辑规范部分,描述了ATA设备的行为特性,是进行逻辑设计的参考;条款6是对ATA设备特征的一个概述,为后面4个章节做了铺垫。 riple

    ATA-5文档是从规范性和兼容性角度描述PATA协议的,内容是详细完整而自洽的。文档的内容包含了完成主机端或设备端硬件和软件设计的所有规范。但是,从设计实现的角度看,文档的结构并不适合顺序地逐章阅读,原因是每一个条款的内容都很丰富,对于初次接触文档的读者来说,由于对协议的整体框架和ATA接口要实现的功能没有整体的把握,很难理解每一个条款对于设计实现的意义所在,很难把文档的具体内容与设计实现过程中的各个主题联系起来,很容易看了前面,忘记了后面,反复多次通读文档才能逐渐有所收获。 riple

    如果按照如下的顺序阅读ATA-5文档,就比较容易掌握文档的结构:
    0. 在网络上查找对ATA接口的通俗解释和说明,弄清ATA接口的基本用途和功能。 riple
    1. 通读条款3,不要求对内容记忆深刻,只要求掌握条款3的结构,记得条款3都说过哪些内容即可。这么说,并不代表条款3的内容不重要;相反,条款3是最重要的,在对文档整体熟悉后,进行设计实现时,必须按照条款3的要求对后续条款字斟字酌。由于条款3是为后续条款服务的,所以只有在阅读后续条款时它才有意义。在阅读后续条款的过程中遇到问题时再返回条款3来查找,几次之后就烂熟于心了。 riple
    2. 精读条款6,选读条款8。精读条款6的目的是明确ATA设备都具备哪些功能,为后续条款的阅读做准备。精读要根据自己的设计实现要求有侧重点地进行。比如只要求实现PIO,那么就可以略过DMA的相关内容;比如只要求兼容ATA,那么就可以略过ATAPI相关的Packet命令。初次阅读略过的内容,可以在基本协议实现后,返回来阅读。可以不阅读6.7以后的各个小节。 riple
    精读条款6的6.4小节,就可以确定设计实现必须要实现的基本命令集,明确设计目标,也明确了后续条款的阅读目标。在此过程中,要参考条款8中各条命令的描述部分,以明确各条命令的意义。在阅读完6.4小节之后,需要生成一个列表,该列表包括了要实现的所有命令及其对应的协议。命令和协议的对应关系可以通过附录中的表格F.3获得。 riple
    3. 精读条款4和5。这两章,对PCB设计和FPGA引脚约束(位置、电平、电流强度)是至关重要的。这是整个板级设计成功的保证。没有稳定的物理接口这个基础,FPGA实现和调试是不可能顺利的。这两个条款不要求反复阅读,只要求在PCB设计确定前读透读明白。对于FPGA设计者来说,UDMA相关的内容可以在初次阅读时略去,在实现MDMA基本功能后返回来阅读;对PCB设计者来说,出于兼容性设计的考虑,UDMA相关的内容应该尽量读明白。 riple
    4. 精读条款9、8、7。要按照“先协议、后命令、最后寄存器”的逆序进行。协议是一类命令的共同行为特性,掌握了一个协议,就可以掌握一类命令;明白了命令的输入和输出,就可以弄明白为什么要设置这些寄存器和寄存器的位意义。要打破条款的自然章节划分,按照协议及相关的命令和寄存器纵向阅读。比如9.4小节的non-data命令协议对应了28条命令,所有这些命令都遵循同一个协议规定的简单行为;8.37小节的SET FEATURES命令属于non-data协议,8.37.8给出了该命令的描述,8.37.9 - 8.37.20给出了该命令的子命令介绍,8.37.4和8.37.5给出了该命令对应的输入输出寄存器;大部分寄存器的内容都是命令相关的,所以条款7必须结合着条款8阅读才有意义;附录中的表格F.4给出了寄存器与物理引脚之间的关系。 riple
    明确了协议-命令-寄存器-引脚之间的关系,就可以着手进行逻辑实现了。 riple
    5. 通读条款10。这是对第一次阅读文档的要求。在进行逻辑实现时,必须详细阅读这一条款,明确主机与设备之间的物理握手,并明确各个时序参数该如何在具体设计中得以实现。 riple

    条款1、2没有什么实际内容,可以略去不读;附录的6个小节中包含了重要的信息和表格,需要深入阅读和反复参考。 riple


相关链接:
如何下载ATA协议文档

系统分类: CPLD/FPGA  |  用户分类: ATA 协议  |  标签: ATA协议  |  来源: 原创  | 

点击查看原文

发表评论 阅读全文(1023) | 回复(4)

发表于 2009/6/16 12:31:06

0

关于投票

如何下载ATA协议文档

下载ATA协议,就要到T13的官网上。T13是什么意思?我不知道。只知道有一个T10是管SCSI的,还有一个T11是管FC的,T13是管ATA的。这三个Technical Committee都是与存储技术有关的。 riple

T13上面有两类文档:标准(Standards)和草稿(Drafts)。标准都是要收费的,草稿是免费下载的。我们进行设计就可以参考草稿。下载草稿的页面可以从主页上如下的链接进入:Projects -> Last Drafts riple

点击看大图


ATA协议最新的版本是ATA-8ATA-1ATA-3都是废弃的老版本了,ATA-4以后的版本都是有效的。ATA-5应该是一个稳定的,得到广泛应用的版本,许多兼容设计都可以以此版本为参考。ATA-6及之前的版本中,ATA协议就等于PATA协议,各个版本协议的格式基本一致。从ATA-7开始,协议中加入了SATA部分,为了总结SATAPATA协议的异同点,ATA-7协议分成了三卷,卷一、卷二的内容覆盖了以前版本的内容,卷三是针对SATA相关内容而增加的。从ATA-8开始,协议进一步细化为4部分:ATA8-AAMATA8-APTATA8-ASTATA8-ACS。其中,ATA8-ACS相当于ATA-7的卷一(具体协议部分移到了ATA8-AAM中),ATA8-APT相当于ATA-7的卷二,ATA8-AST相当于ATA-7的卷三。ATA8-AAMATA-8中提纲挈领的一卷,在这一文档中,总结了所有ATA实现形式的共性内容,首次提出了ATA协议的分层概念(这有点像是以太网的分层概念),首次提出了ATA协议的“客户端-服务器”模型。 riple

个人认为,ATA8-AAM在ATA协议发展具有里程碑意义。有了AAMATA协议的实现形式就更容易多样化,既有P-ATA,也有S-ATA,还有ATAoE,任何一种实现形式都可以在兼容AAM的前提下自由发展,任何一种实现形式发展到了尽头都可以被抛弃。ATA协议由于抽象出了AAM而得以长葆青春,获得了更广阔的发展空间。 riple



相关链接:

Parallel ATA on Wikipedia

Serial ATA on Wikipedia

ATA over Ethernet on Wikipedia

CE-ATA

 

背景知识:

INCITS (InterNational Committee for Information Technology Standards)

INCITS is the primary U.S. focus of standardization in the field of Information and Communications Technologies (ICT), encompassing storage, processing, transfer, display, management, organization, and retrieval of information. As such, INCITS also serves as ANSI's Technical Advisory Group for ISO/IEC Joint Technical Committee 1. JTC 1 is responsible for International standardization in the field of Information Technology.

 

INCITS TECHNICAL COMMITTEES
Languages / Database Media / Education Security / ID Storage Information Services / Office / Text INCITS Executive Board Study Groups

 

系统分类: CPLD/FPGA  |  用户分类: ATA 协议  |  标签: ATA协议  |  来源: 原创  | 

点击查看原文

发表评论 阅读全文(971) | 回复(0)

发表于 2007/12/10 15:16:42

3

关于投票

PATA硬盘接口的设备端UDMA协议实现要点分析

    一年前费了好大的力气才用FPGA实现了PATA硬盘接口UDMA协议的设备端功能,现在需要把这一接口电路移植到新的项目中。借此机会把以前混乱的思路整理一下。 riple

    整理了当初设计时考虑到和后期调试中发现的几个设计难点,罗列如下。随着我对这些难点的逐一分析和解决,还会不断地充实。 riple

1. PATA接口的MDMAUDMA传输协议复用信号。 riple

    同一组握手和触发信号,在MDMAPIO方式下是一套信号名称,在UDMA方式下换成了另外一套名称,相应地,信号的时序特性也发生了改变。在UDMA方式下,同一个信号,在主机数据输出data_out和主机数据输入data_in两种不同的数据传输方向下,其定义也发生了变化。 riple

 

2. UDMA协议握手信号数量增加,握手信号关系复杂。 riple

    在MDMA传输方式下,握手信号仅有2个,读写触发信号2个;在UDMA传输方式下,握手信号增加到4个,读写触发信号1个。在data_out方向下,主机控制2个握手信号,1个触发信号,设备控制2个握手信号;在data_in方向下,主机控制3个握手信号,设备控制1个握手信号,1个触发信号。 riple

 

3. 本地时钟频率的确定问题。 riple

    对于同步时序电路,需要考虑异步信号跨时钟域传输的同步问题及其引入的延迟问题。从设计设备端接口的角度看来,主机信号的同步需要两个本地时钟周期。对于握手信号来说,协议要求的时序很宽泛,以50MHz时钟20ns一个周期,延迟两拍计算,设备端驱动的信号的响应时间在协议允许范围内;对于触发信号来说,协议要求的时序就很紧张。在data_in方向下,设备驱动触发信号,协议只有对触发信号的下限要求,没有上限约束,容易实现;在data_out方向下,主机驱动触发信号,很有可能达到协议要求的下限,设备必须在下限时间内实现触发信号的同步和数据的采集及写入,对延时很敏感。 riple

 

4. UDMA支持模式的问题。 riple

    UDMA模式越高,触发信号的周期越短,由于在触发信号的双边沿传输数据,所以周期减半。在data_in方向下,设备端驱动触发信号的数据,可以运行在较低的触发信号频率下;设备端的FIFO能够以多高的速度存入数据,决定了设备端在data_out方向下,能够支持的最高UDMA模式,该模式即设备能够支持的UDMA模式。采用数据宽度增倍的方式可以减半数据的写入频率,要求同步处理引入的延时不超过一个UDMA整周期,需要一个32位的buffer(注:在奇数个数据传输后,如果主机中止data_out传输,该方法会引发数据高低地址问题,处理较复杂);采用流水方式可以避免奇数次中止问题,但是FIFO写入频率与半周期频率相等,并且要求同步处理引入的延时不超过一个UDMA整周期,需要两个16位的buffer。另外,16CRC校验电路的运行频率也影响支持模式的确定。 riple

 

5.主从设备共用总线的问题。 riple

    设备端驱动的信号需要在有效状态和高阻状态之间适时地切换。 riple

 

6. CRC相关问题: riple

 

6.1. 双边沿触发数据CRC实现和时序问题。 riple

    可以与FIFO处理相同。采用加倍数据宽度方式可以提高性能,但是会带来资源的增加(其实没有提高性能);采用连续流水方式可以节省资源,但是会有性能下降问题。 riple

 

6.2. data_indata_out共用CRC实现问题。 riple

    把FIFO同步触发脉冲加入到该模块,用data_dir实现切换。 riple

 

6.3 CRC检查结果返回问题。 riple

    在每一次中止协议结束后,在DMACK-上升沿采样主机CRC结果,进行CRC校验,并返回结果。(中断方式,及时返回;查询方式,及时返回) riple

 

7. data_in协议相关问题: riple

 

7.1 data_in源同步传输方式,数据与触发信号同步产生,数据和触发信号的相位问题。 riple

    采用计数器分频信号产生触发信号,该信号需要符合奇数次中止问题。用寄存器延时实现内部和外部数据的相位调整。 riple

 

7.2 data_in设备启动协议。 riple

    用DMACK-的下降沿采样STOP信号(采样后的信号在每次中止协议发生后复位),与STOP信号同步之后的信号进行逻辑处理,该信号作为进入正常传输的跳转条件。 riple

 

7.3 data_in主机暂停协议。 riple

    用HDMARDY-信号控制触发信号发生电路,实现暂停 ,但是要实现电平保持功能。不需要在状态机中实现该状态。 riple

 

7.4 data_in设备暂停协议。 riple

    用rfifo_al_emptyrfifo_empty信号实现暂停,但是要保持暂停前的电平。不需要在状态机中实现该状态。 riple

 

7.5 data_in主机中止协议。 riple

    由STOP信号同步后的信号引发状态机跳转,设备需要拉低DMARQ信号。在中止状态,需要判断CRC结果,并根据结果决定跳转方向。如果正确,可以根据数据传输量进入相应的状态;如果错误,要返回错误。 riple

 

7.6 data_in设备中止协议。 riple

    正常情况下,不在数据传输结束前由设备发出中止协议。在后端超时和传输结束时由设备发出中止协议。此时DSTROBE信号已经由暂停协议确定电平,设备只需要拉低DMARQ信号即可。在非正常状态中止时,设备需要返回错误信息。 riple

 

7.7 data_in主机中止、设备重新启动的实现。 riple

    在数据没有传输完毕时,主机启动了中止协议,设备进入中止协议处理状态后,需要等到DMACK-无效后,并进行CRC结果判断。如果结果正确,才能进入下一次启动协议;如果结果错误,要返回错误信息(中断或主机查询方式)。 riple

 

7.8 data_in主机奇数次传输中止,设备偶数次启动时,DSTROBE信号的有效、无效边沿区别问题。 riple

    在奇数次传输中止时,DSTROBE信号保持低电平;在偶数次启动时,DSTROBE是高电平。需要在中止协议里实现对DSTROBE信号高电平复位的操作。 riple

 

8. data_out协议相关问题: riple

 

8.1 data_out源同步传输方式,如何实现双边沿数据捕获,同步写入问题。 riple

    用每一个边沿采样数据。在每一个边沿产生同步脉冲,采用流水线方式同步写入FIFO。由于奇数次中止问题,不考虑加倍数据宽度方式。 riple

 

8.2 data_out设备启动协议。 riple

    用DMACK-的下降沿采样STOP信号(采样后的信号在每次中止协议发生后复位),与STOP信号同步之后的信号进行逻辑处理,该信号作为进入正常传输的跳转条件。用DMACK-STOP信号的组合逻辑(异步或同步后)实现DDMARDY信号的高电平向低电平跳转。 riple

 

8.3 data_out主机暂停协议。 riple

    设备端不需要考虑。 riple

 

8.4 data_out设备暂停协议。 riple

    用wfifo_al_full控制DDMARDY信号的低电平向高电平跳转。 riple

 

8.5 data_out主机中止协议。 riple

    由STOP信号同步后的信号引发状态机跳转,设备需要拉低DMARQ信号,DDMARDY信号由STOP信号的高电平跳转引发高电平跳转。在中止状态,需要判断CRC结果,并根据结果决定跳转方向。如果正确,可以根据数据传输量进入相应的状态;如果错误,要返回错误。 riple

 

8.6 data_out设备中止协议。 riple

    用传输数据量控制DDMARDY信号向高电平跳转,延时后控制DMARDY信号向低电平跳转。状态机进入中止协议处理状态。在中止状态,需要判断CRC结果,并根据结果决定跳转方向。如果错误,要返回错误。 riple

 

8.7 data_out主机中止、设备重新启动的实现。 riple

    在数据没有传输完毕时,主机启动了中止协议,设备进入中止协议处理状态后,需要等到DMACK-无效后,并进行CRC结果判断。如果结果正确,才能进入下一次启动协议;如果结果错误,要返回错误信息(中断或主机查询方式)。 riple

 

8.8 data_out主机奇数次传输中止,设备偶数次启动时,HSTROBE信号的有效、无效边沿区别问题。 riple

    在采用双倍数据宽度处理方式中,在中止后重新启动时需要根据上一次传输中止时记录的HSTROBE信号的高低电平(低电平为奇数次)决定数据写入的高低地址。在采用流水方式进行的数据采样过程中,只需要根据STOP原始信号的低电平判断是否进行同步脉冲生成即可,不需要考虑奇数次中止问题。 riple

9. mdma、pio信号与udma信号的切换逻辑。 riple

    由于实现udma的设备至少要支持pio模式,所以必须在udma方式和pio方式之间切换相关的电路。切换信号的选择和该信号的跳变时刻很重要。可以选择nDMACK信号作为切换信号。 riple

10.DMARQ上升沿到nDMACK下降沿之间,主机可能有查询寄存器的操作。 riple

    针对该问题,可以采用如上的方法,防止出现寄存器操作干扰udma操作的问题。 riple

 

相关链接:ATA-100标准跟我看,内容老了些(01),但是反映了当初技术的前沿

在PatentStorm上搜索“ata + disk”的专利 riple

Method for detecting a cable type by utilizing the peripheral device to measure and send a state of the PDIAG-signal to the host riple

Synchronous DMA burst transfer protocol having the peripheral device toggle the strobe signal such that data is latched using both edges of the strobe signal riple

System for increasing data transfer rate using sychronous DMA transfer protocol by reducing a timing delay at both sending and receiving devices riple

Quantum的老文档pdf riple

SCSI vs. IDE Bus Mastering for DAWs riple

[精华] 【知识】Windows系统会自行关闭硬盘DMA模式(附设置DMA工作模式的方法) riple

为什麽UltraDMA/33「不」能让硬碟跑得更快 riple

系统分类: 接口电路  |  用户分类: ATA 协议  |  标签: UDMA ATA协议 硬盘  |  来源: 原创  | 

点击查看原文

发表评论 阅读全文(2463) | 回复(15)

发表于 2007/3/12 22:21:44

2

关于投票

ATA协议的新发展——ATA体系结构模型和一些想法

    “穿新鞋,走老路”似乎是含有贬义的,但是ATA协议在发展过程中,因为脱掉了“旧鞋”,不但“老路”越走越宽了,甚至可能走上新路。 riple 
    在ATA-7协议之前,ATA协议等同于PATA协议;从ATA-7开始,到去年年底发布的ATA-8协议,ATA协议中加入了SATA这一新的协议实现形式。现在的ATA协议是由PATA协议和SATA协议共同构成的:ATA-8协议的第一卷给出了ATA协议的基本内容,第二卷给出了PATA协议的实现规范,第三卷给出了SATA协议的实现规范。在ATA-7之前的ATA协议中,第一卷和第二卷的内容是合并在一起的,第三卷的内容是没有的。 riple 
    随着ATA-8协议的正式发布,经过了两年的反复修订,作为ATA-8协议一部分的《ATA体系结构模型》也浮出了水面。在这一文档中,明确区分了“ATA体系结构模型”、“ATA实现标准”和“ATA具体实现”的概念。这一文档给出了现有ATA协议实现方式中共同遵循的抽象结构,并指明,各种实现方式只要兼容这一标准,可以采用各种形式。由此一来,只要提出新的实现标准,ATA协议就可以实现新的兼容形式。ATA的路越走越宽了。 riple

点击看大图


    在这一体系结构模型中,提出了ATA协议的分层结构,提出了ATA协议的“客户端-服务器”模型。设备作为“服务器”,具有了和主机同等的地位和层次结构。ATA协议在主机端和设备端都获得了巨大的发展空间。 riple

点击看大图点击看大图

    纵观ATA协议的发展历史,通过从ATA协议中抽象出“ATA体系结构模型”(AAM),PATA和ATA终于分清了形式和内容的关系——PATA和SATA一样,都是ATA协议的特例,是ATA协议具体的实现方式,各自遵循特定的实现标准。这就好比一个人穿着一双旧鞋(PATA)走了很久的路,却一直没有意识到脚上穿着鞋,直到有人建议他换双新鞋(SATA)试试,他才意识到脚(ATA)是可以和鞋(PATA)分开的,自己是可以脱掉旧鞋,换双新鞋的。换上新鞋,老路越走越轻快。可以设想,从此以后这个人还会尝试不同形式的鞋(XATA),甚至走上完全不同的路。 riple

    横观SCSI协议的发展历史,通过抽象出“SCSI体系结构模型”(SAM),出现了SCSI协议的各种实现形式:并行SCSI、串行SCSI、iSCSI、光纤通道、IEEE1394。可以预见,ATA协议也必将经历这样一个百花齐放的发展历程。 riple

点击看大图

    在学习计算机接口技术时,我读到过各种协议演进和消亡的历程,有的轰轰烈烈,有的悄无声息。作为一个年轻的工程师,我常常以为这些都是“故事”,是我不可能亲身经历的历史。但是现在,看到ATA协议在几个月之前刚刚完成了脱胎换骨的发展阶段,走上一条崭新的宽广大路,我的心情不能平静:历史正在我的身边发生。世界不再是一幅静止的、可以任我从不同角度和高度徐徐观察的画卷,我正置身于不断演进和发展的世界之中,仅需一瞥,就会看到新的可能,新的发展——我感到了一种真实的存在感。 riple

 

题外话:

    在代码开发中,也存在着这种先设计后认识的过程。我们详细阅读设计规范,提出概要设计、详细设计,在自以为无法不着手编码的阶段开始了编码,历经几周甚至几个月的编码和调试终于得到了可以工作的代码,这时再审视我们的设计,我们往往会有新的认识,会提出对现有代码结构和实现方式的改进。如果加以时日,我们的设计经过实用的考验,通过修改各种bug,我们又会提出新的看法。这一过程常常令我惊奇:我设计的代码为何连自己都没有认识清楚? riple

     实践—〉 认识—〉再实践—〉再认识,这是辩证唯物主义的认识观。 riple

    问题域和解决域之间的映射关系是客观的,需要我们去认识和发现,认识的唯一途径就是实践。这就解释了我上面的疑问:我们在开始编码以前对于映射关系的认识往往是不全面的,随着不断地实践,我们的认识也逐渐地深入起来,这时就会对先前的映射实现产生新的见解。换句话说,在编码之前,我们要假定已经存在着这样一种映射关系和实现这种映射关系较好的方式;我们必须把编码的过程看作是“发现”,而不是“发明”的过程;代码不光是我们对映射关系认识的成果,更是我们认识映射关系的工具。 riple

    为了提高“实践—〉认识”这一螺旋上升过程的效率,我们必须注重每一个阶段的质量:制定尽可能详细的设计,开发风格尽可能良好、结构尽可能清晰的代码,执行尽可能全面和深入的测试。目标只有一个:以最少的迭代,逼近最佳的映射实现。 riple

系统分类: 接口电路  |  用户分类: ATA 协议  |  标签: ATA协议 体系结构  |  来源: 原创  | 

点击查看原文

发表评论 阅读全文(3277) | 回复(4)

发表于 2007/2/12 15:51:32

1

关于投票

答avan的“一个关于硬盘接口的问题”

    今天偶然在avan老哥的博客里看到了这样一篇文章:一个关于硬盘接口的问题。这个问题前些天我也碰到过,在学习IDE协议时也看到过相关问题的说明,只是每次看到的时候都因为“更重要”的问题而把它忽略了。看到avan老哥能够不耻下问,我也按捺不住,决定一探究竟,消除这个知识盲点。 riple

    查看了ATA-5文档中的相关章节,获得了如下几点认识: riple

  1. 在80线的电缆上,可能有三个连接端,依次是:主机端(蓝色,在连接端子的侧面有一个缺口,可以看到里面的金属)、从设备端(黑色)、主设备端(黑色);在40线的电缆上,这三个连接端的顺序是:主机端、主设备端、从设备端。  riple
  2. 引入80线电缆的原因是为了支持UDMA传输方式,所以主机必须区分是何种电缆才能确定采用哪种传输方式。  riple
  3. 40线电缆和80线电缆的连接端子是相同的(兼容性的考虑,余出来的40根电缆连接到Ground上),主机通过34脚(CBLID-: PDIAG-)输入的高低电平来判断是哪种电缆判断的依据来自线缆本身,80线电缆的34脚在主机端是连接到Ground上的。  riple
  4. 40线电缆上,主、从设备端34脚和主机端34脚是直接连通的;80线电缆上,主、从设备上的34脚是通过电缆连通的,主机端的34脚连出来的线缆却不连接到任何一个设备端上,而是连接到Ground线上(这是线缆本身的连接方式,不是主板的连接方式)。同一根线,在线缆的不同段落上有不同的连接方式。 riple 
  5. 需要注意的是:80线电缆上,34脚在主机端的定义和在设备端的定义是不同的。在主机端34脚被叫做CBLID-,供主机判断电缆的类型;在设备端被叫做PDIAG-,是主设备在上电自检时用来判断从设备是否完成自检的信号。80线电缆上,34脚在主机端是输入引脚(直连到地),在主设备端是输入引脚(连到从设备端),在从设备端是输出引脚(连到主设备端)。如下图所示。 riple

点击看大图

 

    所以,avan老哥说的对调电缆造成传输速度下降的现象就好解释了。对调前,主机端的CBLID-信号通过80线电缆的主机端34脚连接到Ground线上,主机查询一下就知道是低电平,从而做出正确判断;对调后,主机端的CBLID-信号通过80线电缆的主设备端34脚连接到从设备端34脚上(很有可能悬空),主机查询不到一个确定是低电平的引脚,从而判断电缆为40线,在传输过程中就会采用速度低于UDMA的方式(PIO或MDMA)。 riple

   

   IDE接口中还有一个CSEL(Cable Select)信号(28脚),它不是用来判断电缆类型的,而是用来配置电缆上的设备是否是主设备的。这个信号在主机端(主板上)连接到Ground上,通过线缆连接到主设备端上,设备通过这个低电平信号知道自己被配置成主设备;电缆上的从设备连接端子在28脚上是和电缆断开的,连接到这个端子上的设备就会认为自己是从设备。这就是为什么两块硬盘都配置成CS方式后,可以连接到同一根电缆上的原因——不同的连接位置决定了设备的主从关系。 riple

   

点击看大图

 

    ATA接口发展了这么多年(ATA-8),为了保证向下兼容,产生了许多构思巧妙的设计。这些设计既要利用已有的形式,又要添加新的功能,真是难为了协议制定者。今天看来,ATA接口差不多发展到了头,能用于开发新功能和提升性能的物理形式都用上了。这可能就是并行总线在功能演进上的劣势:空间上的有限性限制了进一步发展的灵活性。而串行协议由于不具备空间上的扩展性,就充分发挥了时间上的可扩展性,在提高速度的同时还可以使功能定义具备极大的灵活性。 riple

    SATA取代PATA应该是历史的必然。 riple

    相关链接:http://www.t13.org/Documents/Default.aspx?DocumentType=4  riple

              http://www.interfacebus.com/Design_Connector_IDE.html#top riple

系统分类: 接口电路  |  用户分类: ATA 协议  |  标签: 硬盘 数据线 ATA协议  |  来源: 原创  | 

点击查看原文

发表评论 阅读全文(2629) | 回复(2)

Total , Page /