problema di timing (IDE/ATA)

Mar 25, 2008 7 Replies

ciao!



sto implementando il protocollo IDE con un micro (niente DMA, semplicemente il PIO0)



ho un problema nel decifrare delle forme d'onda dal pdf delle specifiche ata-atapi per quel che riguarda la lettura da registro (quindi 8-bit) qui ho messo un immagine delle forme d'onda a cui mi riferisco

formatting link



dopo aver attivato il segnale DIOR- (portandolo a livello logico basso) mi aspeterei di dover inserire qualche t-wait (setup-time) per dare tempo alla logica del dispositivo IDE di rendere disponibili i dati sul bus... invece dalle forme d'onda della specifica ATA pare non essere così (t5 è infatti inserito alla fine del ciclo, cioè quando DIOR- viene riportato a livello logico alto)



purtroppo attivando dior- e leggendo subito, il dato letto è sbagliato... se invece inserisco una NOP tutto torna a posto però non mi ritrovo con la specifica ATA



qualcuno sa dirmi qualcosa a riguardo? vorrei capire cosa non va! il micro lavora con un tempo-istruzione di 100ns



grazie!



-ice-


E'passato troppo tempo dall'ultima volta che ho lavorato con 'ste cose ma sei sicuro di aver rispettato t2 ? Penso che in pratica puoi considerare che il dato e'preparato sul fronte di *salita* di DIOR- e il fronte di discesa semplicemente segnala che l'hai letto. t5 indica "solo" quanto tempo prima del fronte di discesa di DIOR- ti viene garantito di avere dei dati stabili, se rispetti t2.

Saluti, LaCar.

ice wrote:

grazie per la risposta

si (tra l'attivazione e la disattivazione di dior- passano più di 290ns nel mio caso)

Penso che in pratica puoi

il fatto è che DIOR- lo tengo sempre alto quando non accedo ai registri ide secondo te non si potrebbe pensare di fare la differenza (t2-t5) per sapere quanto aspettare prima di leggere un dato valido (dopo aver attivato dior-)?

se supponiamo di usare un cycle-time (t0) pari al minimo consentito (600ns in pio0)?

grazie ancora

-ice-

On Mar 25, 10:18 pm, "ice" wrote: [snip]

ide

e

)?

Potrei sbagliarmi, ma dunque non rispetti t1? L'indirizzo deve essere valido sul fronte di salita di DIOR- ed il dato lo devi leggere quando fai scendere DIOR-. Ovvero, semplificando, prepari l'indirizzo, lasci passare almeno un tempo t1, fai salire DIOR-, aspetti almeno un tempo t2, fai scendere DIOR- e leggi il dato.

"

=2E..non ho capito la domanda 8-| .

Saluti, LaCar.

*Ovvero, semplificando, prepari l'indirizzo, lasci passare almeno un tempo t1, fai salire DIOR-, aspetti almeno un tempo t2, fai scendere DIOR- e leggi il dato.* forse io ragiono male perchè quando sulla forma d'onda vedo dior- che va dal basso all'alto intendo che il segnale deve essere ATTIVATO e cioè portato a livello logico *basso* essendo dior- (attivo basso appunto)

*...non ho capito la domanda 8-| .* se io non so a priori quanto lungo sarà il ciclo, come faccio a sapere quando manca t5 al termine? la specifica parla di 600ns minimi come cycle-time (t0) ma se io faccio il ciclo da 2ms è sbagliato (efficienza a parte)?

grazie!

-ice-

dal

o a

Mi sono riletto la specifica, che nonostante gli sforzi di chi l'ha redatta non e'proprio chiarissima; a me pare che sia come ho scritto, ma se puo'servire ti posso dire che se cerchi dei data sheet di IC con interfacce ata trovi anche il contrario...

Direi di no, quando non devi leggere niente il cycle time si allunga di molto 8-) .

Saluti, LaCar.

*Mi sono riletto la specifica, che nonostante gli sforzi di chi l'ha redatta non e'proprio chiarissima;* in effetti...

  • a me pare che sia come ho scritto, ma se puo'servire ti posso dire che se cerchi dei data sheet di IC con interfacce ata trovi anche il contrario...* ho provato a implementare ragionando come hai detto e funziona ugualmente ma sempre inserendo la NOP

bho??? appena posso provo con un altro sispositivo IDE magari è questo che ho sotto mano (una CF) che ha problemi

grazie per l'aiuto ciao!

-ice-

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required