原创 如何阅读ATA-5协议文档

2009-8-6 22:20 4032 7 11 分类: FPGA/CPLD
    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协议文档

PARTNER CONTENT

文章评论4条评论)

登录后参与讨论

用户42640 2009-6-26 08:29

很好,这篇文章很不错,多谢楼主

用户1316725 2009-6-23 23:00

好问,学习中。。。

用户1446561 2009-6-23 14:43

riple 的心得很有借鉴意义,虽然现在的ATA协议发展了比ATA5更高的版本,但是这篇文章还是很有可读性,要是我能早点读到就不至于走那么多弯路了。

用户187793 2009-6-23 09:33

终于写写了
相关推荐阅读
ash_riple_768180695 2015-12-18 11:06
学习示例程序:FPGA快速系统原型设计--敏捷实践
        学习与开发板配套的示例程序,是敏捷实践的起点。示例程序是厂商针对开发板上提供的硬件资源和接口量身定做的工程,可以展示其FPGA芯片的功能和性能特点。从示例程序入手最大的好处就是:示...
ash_riple_768180695 2015-11-03 16:46
开发板选取:FPGA快速系统原型设计--敏捷实践
    既然是“实践”,就不能只谈编码和仿真,必须要上板运行、调试。这个虚拟项目的目标是实现一块兼容Intel82574L以太网控制器的千兆网卡,需要运行在一块具备PCIe接口和10/100/10...
ash_riple_768180695 2015-10-22 12:41
开篇:FPGA快速系统原型设计--敏捷实践
    虽然借用了 “系统原型开发”的标题,本系列文章将围绕FPGA IP级别的开发这个主题展开,如果可能的话,将扩展至FPGA System级别的开发。     先上一篇PPT:RSPwFP...
ash_riple_768180695 2013-08-26 10:21
学习SystemVerilog(二)——学习它的理由
    学习SystemVerilog的理由也很多,我在阅读SystemVerilog for Design 和 SystemVerilog for Verification两本书前言的过程中,总...
ash_riple_768180695 2013-08-26 10:19
学习SystemVerilog(一)——不学习它的理由
    想要学习SystemVerilog已经很久了。曾经尝试通过Accellera网站上给出的LRM学习,怎奈内容众多,找不出入手点和重点,只能望而却步。虽然手头有三本SystemVerilog...
ash_riple_768180695 2011-06-26 23:20
Hardware-Assisted IEEE1588 Implementation Analysis
06/18/11 11:00:05 PM         最近一段时间在研究IEEE1588-2008精确时间同步协议(PTP)。该协议可以在软件中实现,如果需要提高时间同步...
EE直播间
更多
我要评论
4
7
关闭 站长推荐上一条 /3 下一条