when design ATA host , i met with the problem:after hardware reset, power on or software reset, the host designed by me , has red the value from the registers such as status register, LBA low register , LBA High register LBA mid register, or Device register in ATA hard disk(MAXTOR 250G). To my surprise, the values are the same: 0xFF7F. Why????????? help me , thank u again !!!!
the cable is ok, no problem.
The time sequence is designed according to ATA/ATAPI-6. However, the host cannot read the register block.After hardware reset, DD[15:0] == FF7Fh.
But all the values read by the host are FF7Fh. Why?
Whatever the ATA harddisk(MAXTOR 250GB PATA 133 HDD) is configured(using the jumper) as master or slave mode, the results are the same: REGISTER BLOCK
can't be written or read.
Only J50 is usually OK.
master mode:
o o — o o
|
o o o o o
J50 J48 J46 J44 J42
I don't know why.......
Help me, thank u from my heart!!!
Who have made ATA HDD host controller to read and write data from/to ata hard disk ?
mode IO, Ultra DMA133 or Ultra DMA100 .
I have seen IDE core on opencores, it is almost only time sequence coordination.
but how to design a host controller with FPGA like CPU to transfer to/from ATA devices? I have written FSM in Verilog HDL, but when i test it, found that the registers block can't be operated:the values can't be read or written from registers in HDD.
the master operates at register/PIO mode0,the values red by host are 0xFF7F.
Why??????
cheak that you have made the hard disk driver the main or slave,and everytime you write the read command cheak if you have indicated the hard disk driver properly!
Added after 5 minutes:
Also you can do the work below:First,you can cheak if the address you write are correctly,second,you can cheak if you have reset the hard disk driver properly and initiate it with right parameters!
Now I have a fact that is HDD operates on default PIO mode after HDD reset. The host can write/read data:512B to/from a sector in HDD.
TO set device PIO mode 4, the host writes 8'h03 into the feature register, 8'h0C into the sector count register, and commond code:8'hEF into the command register.
However, read/ write time cycle don't reduce.
Why? Help me, please
Now I am testing my program that supports PIO mode 0...4,but when continully
read/write data from/to the cache of Maxtor HDD,it goes wrong more with the more sectors operarted successively.
Why??????
When I design HDD host controller with Ultra DMA Mode 5(ie. UDMA100),
after 256 words writtten, the value is 51h in the status register.
I infer that CRC data is error,so how to solve the problem?
help me,please.
3x u
I am sure that i using 80 conductor cable , 256 words written, and INTRQ asserted
then the value is 51h of the status register,ICRC asserted(1) in the Error register.
Why????????????
In addition, CRC rules come from ATA/ATAPI 6.
Help me,please
3k u
do u get the crc error in lower speed udma mode also?
if crc error are seen only in mode5 then there could be some signal integrity issues in the board. make sure the signals are properly terminated.