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

2009-9-5 07:39 6131 7 9 分类: 通信

    今天偶然在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

文章评论2条评论)

登录后参与讨论

用户408448 2011-5-27 00:29

ripple,在quartus生成网表文件和延时文件,分了类,有fast 有slow...还有正常的sdo 和.vo,这样的分类有什么区别呢?

用户345776 2011-4-19 22:55

博主,,你好。(我在前一遍文章里面已经发过相同的回复了.) 我跟你发过站内PM了,不知道你收到没有? 如果收到劳烦您回复一下好吗? 我最近在研发的一个项目有些问题无法解决,希望您能给予一些帮助。 具体事项可以有直接点的方式来与您交流吗?比如QQ MSN这些,我的QQ是: 9 372401

用户626508 2008-2-26 21:03

并不是所有的机器的BIOS都会根据CBLD来区分PIN的类型~,如果区分的话BIOS只会设置UDMA3,并不根据IDFY数据中支持的UDMA模式的最大值来设置,一般进了系统,在设备管理器里面IDE控制器里面能够看到~~

PS:其实很多硬盘都可以支持UDMA6,而主机也可以兼容UDMA6的模式,但是上电过程只设置为UDMA5,这个时候如果使用个小工具Set Feature一下,可以强制将工作模式超频到UDMA6,速度最起码有10~15M的提升~~(并不一定可靠哦~~)呵呵,有兴趣可以自己研究哈

ash_riple_768180695 2007-2-13 10:51

实事求是的精神还要向avan学习。

相关推荐阅读
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)。该协议可以在软件中实现,如果需要提高时间同步...
我要评论
2
7
关闭 站长推荐上一条 /2 下一条