mercoledì 19 giugno 2013

AL422B

Immagini provenienti da una telecamera (o webcam o camera) rappresentano un flusso dati molto veloce che spesso i microcontrollori non riescono a gestire in tempo reale.

Per poter ovviare al problema è possibile utilizzare una memoria esterna che immagazzini rapidamente i byte dell'immagine permettendo una lettura in differita più lenta.

Il prezzo da pagare sarà inevitabilmente la perdita di qualche frame ma in alcune applicazioni potrebbe non rappresentare un problema.

L'integrato AL422B consiste di una memoria FIFO DRAM da 3M bits (393.216 byte) utile a questo scopo
Il funzionamento è abbastanza semplice ed intuitivo e nasconde le complessità delle memorie DRAM.

Dallo schema si evince una cache SRAM che come si legge da datasheet comporta una lettura almeno 128 byte prima della scrittura. Quando si scrive l'indirizzo 200 si potrà quindi al massimo leggere fino all'indirizzo 72.

I dati presentati come byte in ingresso (DI0-DI7) sono memorizzati al fronte di salita del segnale di clock WCK che deve essere fornito all'integrato, ed in genere proveniente dal Pixel Clock della camera, se il segnale /WE (Write Enable) è al livello logico basso. L'indirizzo interno di scrittura sarà automaticamente incrementato e non sarà necessario preoccuparsi di altro.

La lettura è pressoché analoga, i dati sono presentati in uscita (DO0-DO7) ai fronti di salita del clock RCK quando il segnale /RE (Read Enable) è al livello logico basso.

Il clock di scrittura e lettura deve sempre essere fornito all'integrato (quindi deve essere generato in modalità detta free running) anche quando non si vuole leggere o scrivere la memoria perché il più veloce dei due segnali servirà a rinfrescare la DRAM. Non è possibile fornire costantemente solo uno dei due clock pena la corruzione dei dati in memoria. La frequenza di entrambi deve essere almeno 1 MHz come da datasheet.
Questo esclude l'utilizzo di microcontrollori troppo lenti, quindi non adeguati a trattare immagini.

Coi clock "sempre andanti" si utilizzeranno quindi i segnali di abilitazione per iniziare la lettura e la scrittura.

Il segnale /OE (Output Enable) se a livello alto servirà per "scollegare l'uscita", ovvero per mandare in alta impedenza i segnali DO0-DO7.

La prima cosa da fare all'avvio della memoria è inizializzare a zero l'indirizzo di lettura e scrittura della memoria tramite i segnali /RRST ed /WRST.

Su internet è reperibile una datasheet risalente al 2001 che purtroppo presenta alcune mancanze, pubblico il Datasheet AL422B v1.5 del 2006 che chiarisce che per un reset corretto il segnale /RE non deve mai essere basso sul fronte di salita del segnale /RRST

Col segnale /RE mal impostato il reset non funziona e si ottengono letture e scritture praticamente casuali, problema particolarmente fastidioso da correggere. Prossimamente vedremo come verificare il corretto funzionamento dell'AL422B.

Alla prossima

Nota: La versione "PBF" del chip, funzionalmente identica, indica il package "Pb free"

Nessun commento:

Posta un commento