|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 lvben5d 于 2011-7-8 10:01 编辑
[; r0 E1 Q% q' |2 K: [- y+ Y/ V! X3 T5 h% L" l) p0 @. O$ |
ATAP6或7的寄存器访问时序中,有一个错误如下(我认为是错误) 见下图片
: [ S4 n, n: d& e2 j' w
而参照的下图是cirrus公司的ARM9有关IDE接口时序的不同(DIOR-/DIOW-这个引脚时序和标准相反)
+ ?+ i# _1 t0 M
3 X2 h( w" E" b2 e1 f* }
因为DIOR-/DIOW-是低电平有效,我们以ARM9时序中写寄存器分析:首先地址ADDR VALID需要建立时间t1,然后DIOWn下降沿锁存地址,并维持t2时间有效(这期间接近结束,数据也要出现)当数据写入的时候,DIOW应该处于低电平,然后通过上升沿锁存要写入的数据。然后等待t2i恢复时间。
1 f9 m6 p; R4 M1 T+ U1 R# M分析ATAPI6时序:推测寄存器地址和要写入的数据的锁存发生在DIOW,DIOR的跳变沿。首先DIOR默认是高,接着地址出现,就需要拉低DIOR/DIOW 保持t1, 然后靠上升沿锁存寄存器地址,然后等待t2时间,在t2结束之前,如果是写数据,则需要提前把数据放在DD[7:0]上,给予t3建立时间,然后下降沿锁存,保持DIOR-/DIOW-为低。哈哈,这样分析,ATAPI6协议倒是没错了。备注: 我感觉ARM9提供的时序比较靠谱,因为地址是在DIOR-DIOW-为低建立,等待上升沿锁存。这个时候IDE转SATA接口的寄存器地址就被访问了。然后IDE转SATA芯片内部在t2时间下去处理数据寄存器(写==把D[7:0]的数据放入数据寄存器,读==把D[7:0]bus从数据寄存器拿出来) 接着控制DIOR-/DIOW-上升沿锁存数据到/出数据寄存器form/to D[7:0]总线。
" c) J3 k! k' @$ p+ N0 H2 O! M$ T |
|