NAND Flash, driver VHDL

 Le memorie NAND Flash sono utilizzate sempre con maggiore frequenza nelle soluzioni di tipo dedicato (embedded system).

Le ragioni che giustificano l’uso di memorie di questo tipo sono sempre più legate alla loro alta densità e al costo.Le applicazioni di tipo embedded richiedono, di solito, un driver per pilotare correttamente questi dispositivi.

Un driver è, in sostanza, uno strato di software che si interpone tra il dispositivo fisico e le richieste dell’applicazione.

In questo articolo vorrei proporvi un driver scritto in VHDL, il linguaggio utilizzato per la modellazione dell’hardware.

Il VHDL permette di descrivere un design hardware e ne gestisce il comportamento.

Il driver in questione può essere liberamente scaricato dal sito di Micron, previa registrazione. Il driver risulta ben scritto e documentato; inoltre, può benissimo essere preso come riferimento da qualsiasi progettista hardware che ha la necessità di utilizzare memorie NAND Flash, magari di casa Micron.

Infatti, il driver è stato scritto per rispettare le specifiche NAND Flash Micron, ma portare questa applicazione su altri dispositivi non dovrebbe comportare grossi impegni.

Infatti, il driver NAND Flash potrebbe anche essere utilizzato come approccio metodologico per comprendere il reale funzionamento di una memoria di questo tipo e può fornire spunti per la scrittura di un driver per la nostra personalissima applicazione.

L’implementazione di Micron mette in evidenza la sua particolare realizzazione. Nell’implentazione Micron sono supportati tutti i comandi della memoria NAND Flash , in particolare:

Il comando Page Read utilizza il comando 0h
Block erase è associato il comando 6h
Read Status, comando 7h
Program page, comando 8h
Read ID, comando 9h
Reset Flash, comando fh

Il driver scritto in VHDL può essere scaricato dal sito di micron, qui. Il driver può essere utilizzato da chiunque: da chi ha la necessità di vedere, attraverso un esempio pratico, una realizzazione di questo tipo o da chi ha l’esigenza di implementare un controller di questo tipo.