Está en la página 1de 7

VIII Semana Nacional de Ingeniera Electrnica

Diseo e Implementacin de un Lector de Tarjeta de Memoria SD en FPGA

Ral Ruiz Meza, Csar Luis Prez Bautista

Instituto Politcnico Nacional, Unidad Profesional Adolfo Lpez Mateos s/n. Mxico, D.F., Mxico,
rarumerrm@hotmail.com, cesarluispb@yahoo.com.mx
Resumen
Los nuevos sistemas de procesamiento de imgenes, video o audio basados en FPGA requieren la
utilizacin de grandes cantidades de informacin. Los dispositivos FPGA tienen cierta cantidad de
memoria integrada que suele ser insuficiente; para solucionar este requerimiento es necesario utilizar
algn dispositivo de memoria externo. Aqu se propone el diseo y la implementacin de un sistema
para la lectura de tarjetas de memoria SD (SD Card), utilizando la tarjeta de desarrollo Spartan 3E de
Xilinx. Analizando el comportamiento de la tarjeta SD se decide utilizar el protocolo de comunicacin
1-bit SD Bus y una velocidad de transmisin de datos predefinida de 25 MHz. En este documento se
describe los mdulos necesarios para la inicializacin y la comunicacin con la tarjeta SD. Todos los
mdulos fueron escritos directamente en el lenguaje VHDL.

Palabras Clave: FPGA, SD card, spartan 3E.

I. Introduccin Este sistema ser utilizado en aplicaciones futuras


como un visor de imgenes y visualizacin de
El uso de dispositivos FPGA ha aumentado en la
archivos de texto.
mayora de aplicaciones que necesitan
procesamiento paralelo, altas velocidades de Se desarrolla el lector de tarjeta SD en el
desarrollo y bajo consumo de energa. dispositivo FPGA XC3S500E de la empresa
Xilinx, este chip esta integrado en la tarjeta
Estos dispositivos estn siendo utilizados
Spartan 3E. Esta tarjeta se usa frecuentemente en
actualmente en muchos sistemas de
investigaciones y proyectos acadmicos, razn
procesamiento de imgenes, video o audio [1, 2,
por la cual se decide realizar este sistema en
3]. En estos sistemas generalmente se usan gran
dicha tarjeta.
cantidad de datos, stos mismos necesitan ser
almacenados y/o ledos para su procesamiento. Xilinx no proporciona soporte en cuanto a un
mdulo para controlar la tarjeta SD, por tanto
Muchos sistemas utilizan la tarjeta SD como el
este sistema es desarrollado desde cero hasta
medio predilecto para almacenar datos, debido a
obtener un sistema que realizar la comunicacin
sus ventajas como: portabilidad, gran capacidad
satisfactoria con la tarjeta SD.
de almacenamiento, alta velocidad en la
transferencia y recuperacin de la informacin Como es descrito en [6] la tarjeta SD tiene
adems de mltiples protocolos de comunicacin mltiples protocolos de comunicaciones y
[4, 5]. velocidades de transferencia de datos. Aqu se
utiliza el protocolo 1-bit SD Bus y una tasa de
La necesitad de desarrollo de sistemas ms
transferencia de datos a 25 MHz.
completos que manejen un medio de
almacenamiento de datos, es la principal razn El primer paso en el desarrollo de este sistema es
para implementar y desarrollar un sistema lector entender el comportamiento de la tarjeta SD y
de tarjetas SD. con ello desarrollar el cdigo y mdulos que
manejen la lgica necesaria para la comunicacin
con la tarjeta.

3 a 5 de octubre 2012. Colima, Col. Mxico ISBN 978-607-477-902-8 583


VIII Semana Nacional de Ingeniera Electrnica

II. Funcionamiento de la tarjeta SD Los comandos tienen una longitud de 48 bits [5,
a. Protocolos de comunicacin 6], estos bits estn ordenados en 6 grupos de
La tarjeta SD permite dos diferentes protocolos diferente longitud y propsito, de acuerdo a la
de comunicacin, uno de ellos es el protocolo siguiente descripcin: Bit de Inicio, Bit de
SPI, que es utilizado por la mayora de los transmisin (1 controlador a tarjeta, 0 tarjeta a
microcontroladores existentes en el mercado, controlador), identificador de comando,
para acceder e introducir informacin en la tarjeta argumento, cdigo de redundancia cclica (CRC),
SD. para correccin de errores y por ltimo el bit de
paro. Ver tabla 1.
El segundo protocolo es nombrado SD Bus;
ste tiene dos modalidades de funcionamiento: 1-
bit o 4-bits, es decir, el protocolo de Descripcin Posicin Cantidad Valor
comunicacin usar una sola lnea de datos o las de bit de bits
cuatro disponibles en la tarjeta SD. La Bit de inicio 47 1 0
transferencia de datos en este protocolo se basa
en una cadena de datos que contiene al principio Bit de 46 1 1
transmisin
un bit de inicio y al final un bit de paro. El
protocolo SD Bus, se basa en la comunicacin Identificador 45:40 6 X
comando-respuesta, mediante estos comandos y de comando
sus correspondientes respuestas, se establece el Argumento 39:8 32 X
intercambio de informacin entre el controlador
CRC 7:1 7 X
(host) de la tarjeta y la tarjeta. Como lo fue dicho
antes una o cuatro lneas son dedicadas Bit de paro 0 1 1
especialmente para la transferencia de datos. Tabla 1.Formato de comando.
En la figura 1 se ejemplifica la comunicacin con
la tarjeta SD en una operacin de lectura de
datos. Cada comando enviado recibe una determinada
respuesta. De acuerdo a [6] existen 4 tipos
diferentes de respuesta y estas varan tanto en su
longitud como en su contenido. En general su
longitud puede variar entre 48 bits o 136 bits.
b. Descripcin de funcionamiento.
Como se menciona en [4] la tarjeta SD necesita
dos diferentes frecuencias de reloj, una de 400
KHz para el proceso de identificacin e
inicializacin de la tarjeta y otra frecuencia de 25
MHz para el proceso de transferencia de datos.
Fig. 1. Lectura de un bloque de datos con el
protocolo SD bus [6]. El proceso de identificacin inicia cuando la
tarjeta se inserta en el conector y se energiza. El
controlador debe proporcionar la frecuencia de
La figura 1 tambin muestra que la transferencia 400 KHz a la tarjeta al pin correspondiente.
de datos se realiza en bloques cuya longitud Antes de enviar cualquier comando el controlador
puede ser definida, mediante un comando por el debe esperar un periodo de 74 ciclos de reloj [6].
controlador. Sin embargo, la longitud de los Despus de esta espera, el controlador debe
bloques de informacin esta predefinida a 512 enviar la serie de comandos que confirmarn que
bytes. la tarjeta est conectada en el conector, y que

3 a 5 de octubre 2012. Colima, Col. Mxico ISBN 978-607-477-902-8 584


VIII Semana Nacional de Ingeniera Electrnica

tanto la tarjeta como el controlador tienen Despus de saber que se podr comunicar con la
capacidades similares para sostener la tarjeta, se enva un CMD2 que solicita a la tarjeta
comunicacin y la transferencia de datos. El el nmero de identificacin de esta (CID). Por
proceso de inicializacin conlleva la serie de ltimo se enva CMD3 para solicitar su direccin
comandos: CMD0, ACMD41, CMD2 y CMD 3. relativa o RCA por sus siglas en ingls, esta
Cada uno de estos comandos tiene una funcin cadena es til cuando se tiene un bus multitarjeta,
determinada que en conjuncin dejarn lista la ya que mediante el CMD7 y la RCA es posible
conexin con la tarjeta para la transferencia de seleccionar con que tarjeta se desea comunicar.
informacin. El proceso de inicializacin termina cuando se
El comando 0 (CMD0) tiene la funcin de recibe la respuesta al comando 3. Esta respuesta
reiniciar cualquier tarjeta que se encuentre contiene la direccin relativa (RCA) de la tarjeta
conectada al bus de comunicaciones. Despus de SD. La figura 2 muestra el diagrama de flujo de
este comando la tarjeta conectada est lista para este proceso.
recibir nuevos comandos. Despus de terminar el modo de identificacin, la
El comando ACMD41 es un comando especial y tarjeta pasa al modo de transferencia de datos y la
antes de enviarlo es necesario enviar el comando frecuencia de reloj debe cambiar a 25MHz.
55 (CMD55) [6]. El ACMD41 solicita a la tarjeta Inmediatamente despus de entrar al modo de
el registro de condiciones de operacin (OCR) transferencia de datos, el controlador debe enviar
para ser comparado con las capacidades del un CMD9 para preguntar a la tarjeta su registro
controlador y tener certeza de que la de datos especfico o CSD por sus siglas en
comunicacin ser exitosa. ingls. Despus de este comando le sigue un
CMD4 para configurar el registro DSR.
Aunque la longitud del bloque de datos est
predefinida en 512 bytes, es necesario estar
seguros de stos; por lo tanto, antes de enviar un
comando de lectura de datos es necesario enviar
el comando CMD16 para establecer la longitud
del bloque a 512 bytes. Para hacer lo antes
mencionado enviar el comando CMD7 antes del
CMD16 para establecer una comunicacin
directa con la tarjeta cuya RCA sea la contenida
en el argumento del CMD7.
Despus de estas acciones los siguientes
comandos que sean enviados sern los
relacionados con las operaciones de lectura,
escritura o borrado de datos. La figura 3 muestra
los comandos utilizados en el modo de
transferencia de datos y las transiciones internas
de estado de la tarjeta SD.

Fig. 2. Proceso de identificacin e inicializacin de


a tarjeta SD [6].

3 a 5 de octubre 2012. Colima, Col. Mxico ISBN 978-607-477-902-8 585


VIII Semana Nacional de Ingeniera Electrnica

Fig. 3. Modo de transferencia de datos [6].

requeridas por la tarjeta SD. Los mdulos:


c. Estructura de Datos
Generador de Comandos, Receptor de Respuesta,
La tarjeta SD es un tipo de memoria flash, Receptor de Datos y Control de estados, realizan
internamente sta tiene una estructura de datos de las comunicaciones y transacciones de datos entre
tipo FAT [2]. el chip FPGA y la tarjeta SD.
En la estructura de datos FAT el rea total de En principio el DCM provee la frecuencia de
almacenamiento de datos est dividida en varias 400KHz hasta que el proceso de identificacin e
secciones que se muestran en la figura 4. inicializacin termina; este mdulo tambin
Es importante tener en cuenta la ubicacin de provee la frecuencia de 25 MHz para el modo de
cada una de estas secciones en la tarjeta SD para transferencia de datos. Estas frecuencias son
recuperar satisfactoriamente los datos deseados. generadas por el DCM a partir de la frecuencia de
entrada de 50 MHz.
El mdulo generador de comandos se encarga de
III. Diseo e implementacin generar la serie de 48 bits que sern transmitidos
[5]. Esta cadena de bits tiene el formato
El sistema diseado est compuesto bsicamente mencionado en secciones anteriores. Este mdulo
por 4 mdulos y un DCM (Digital Clock contiene un registro que auxilia al mdulo
Manager) este ltimo proveer las frecuencias

3 a 5 de octubre 2012. Colima, Col. Mxico ISBN 978-607-477-902-8 586


VIII Semana Nacional de Ingeniera Electrnica

receptor de respuesta informando de la respuesta En conjunto, el sistema integra los 4 mdulos


que es esperada para el comando generado. desarrollados y el DCM en un sistema capaz de
El mdulo receptor de respuestas, est encargado leer datos de la tarjeta SD, estos mismos pueden
de almacenar la serie de bits que la tarjeta enve, ser desplegados o utilizados de acuerdo a las
adems de almacenar la respuesta este mdulo necesidades del sistema que integre este lector de
debe asegurar que la respuesta sea recibida sin tarjeta SD, ver figura 5.
errores de comunicacin, esta tarea la realiza
haciendo una evaluacin con el CRC y la
informacin recibida. Ya que la informacin est
libre de errores, el mdulo redirige la
informacin a los registros correspondientes en el
controlador.

Fig. 5. Diagrama de bloques del sistema.

IV. Resultados
Para demostrar el funcionamiento de este sistema
se modific por software el primer sector del rea
de usuario, de una tarjeta SD de 2GB,
introduciendo a lo largo de este sector la cadena
0x00FF55AA. El funcionamiento de este sistema
Fig. 4. Estructura del rea de datos en el sistema
se demuestra con la obtencin satisfactoria de
de archivos FAT [6].
esta cadena de datos.
El siguiente mdulo, receptor de datos, se
encarga de almacenar la informacin de archivos
almacenada en la tarjeta SD. Esta informacin,
como se dijo antes, est en bloques de 512 bytes,
stos son almacenados en una memoria temporal
en el dispositivo FPGA y analizados para
comprobar que los datos fueron recopilados sin
errores, mediante una evaluacin de errores con
CRC.
El ltimo de los mdulos diseados, Control de
estado, es una mquina de estados que se encarga
de controlar las transiciones necesarias en la Fig. 6. Implementacions del Modulo SD Card
comunicacin entre el controlador y la tarjeta. Reader en la tarjeta SPARTAN 3E.
Cierto estado realiza el proceso de inicializacin
y otro por ejemplo realiza la tarea de enviar un
comando.

3 a 5 de octubre 2012. Colima, Col. Mxico ISBN 978-607-477-902-8 587


VIII Semana Nacional de Ingeniera Electrnica

Fig. 7. Window of software ChipScope Pro.

El sistema enviar continuamente el comando de Como puede verse, los resultados obtenidos son
lectura de un solo sector (CMD17) direccionado los esperados, el registro muestra que ltimo
hacia el primer sector del rea de usuario de la comando enviado es CMD17 el cual es el
tarjeta. La direccin de este sector esta contenida comando de lectura de un bloque de datos, se
en el argumento del CMD17 y sta se debe observa tambin la cadena binaria serial antes
calcular de acuerdo a lo establecido en [6] y al dicha, por ltimo se observa el registro de la
sistema de archivos FAT16. RCA. Debido a lo anterior se puede asegurar el
funcionamiento del sistema lector de tarjeta SD.
Xilinx proporciona la herramienta ChipScope Pro
que es un analizador lgico que permite observar
seales internas, salidas o entradas del sistema,
V. Conclusiones lneas futuras
mientras este se encuentra en funcionamiento.
Gracias a esta herramienta se seleccionan tres La combinacin de una tarjeta de bajo costo, con
datos importantes del funcionamiento del uso generalmente acadmico, y la
sistema. La primera de ellas es un registro interno implementacin del lector de tarjeta SD en la
del sistema diseado, que indica el ltimo misma, genera una variedad considerable en las
comando enviado. La segunda seal es el registro capacidades futuras de desarrollo de aplicaciones,
que almacena la RCA, este dato es importante ya que requieran un dispositivo de almacenamiento.
que una vez que la tarjeta est identificada e Se ha demostrado el xito en la recuperacin de
inicializada se tendr en el registro un valor los datos. A partir de esto es posible la
diferente de 0. implementacin de un sistema ms complejo, lo
La ltima seal se trata de la lnea de datos, en cual es la intencin principal en este trabajo.
esta lnea se encuentra repetidamente, de manera El sistema ser combinado, en un futuro, junto
serial, la cadena 0x00FF55AA correctamente. con una memoria RAM y una pantalla LCD, en
La figura 7 es un fragmento de la ventana del un sistema que permita desplegar imgenes que
software ChipScope Pro que muestra las seales estarn almacenadas en la tarjeta SD.
seleccionadas y el valor actual del sistema en Por otra parte, el sistema se seguir desarrollando
funcionamiento. para que las subsecuentes versiones del mismo
permitan una lectura mltiple de bloques de

3 a 5 de octubre 2012. Colima, Col. Mxico ISBN 978-607-477-902-8 588


VIII Semana Nacional de Ingeniera Electrnica

datos. Adems de esto, tambin es la intencin VII. Autores


que el sistema soporte la escritura de datos dentro
Ing. Csar Luis Prez Bautista egresado de la
de la tarjeta.
ESIME Zac. del Instituto Politcnico Nacional.
Dr. Ral Ruiz Meza, doctor en Tecnologas y
VI. Referencias Sistemas de Comunicaciones de la Universidad
[1] Kun Gao; JunboCai; Long Zhang; Ren- Politcnica de Madrid.
nong Sheng; , "A SoPC-based mini VGA
video capture and storage system,"
Biomedical Engineering and Informatics
(BMEI), 2010 3rd International
Conference on , vol.7, no., pp.2770-2774,
16-18 Oct. 2010.
[2] Chen Zhangjin; Jin Chen; Wang Hao;
"Development of OLED demonstration
system based on SD card," Electronic
Packaging Technology & High Density
Packaging, 2008. ICEPT-HDP 2008.
International Conferenceen, vol., no.,
pp.1-4, 28-31 July 2008.
[3] Hong-wei, Liang; Jian-ai, Li; Ling-ling,
Kan; , "Implementation of SD Card Music
Player Using Altera DE2-70," Multimedia
and Signal Processing (CMSP), 2011
[4] International Conference on , vol.2, no.,
pp.150-153, 14-15 May 2011.
[5] Elkeelany, O.; Todakar, V.S.; "Data
Archival to SD Card Via Hardware
Description Language," Embedded
Systems Letters, IEEE, vol.3, no.4,
pp.105-108, Dec. 2011.
[6] Zhenlin Lu; Jingjiao Li; Yao Zhang; ,
"The Reading/Writing SD Card System
Based on FPGA," Pervasive Computing
Signal Processing and Applications
(PCSPA), 2010 First International
Conference on , vol., no., pp.419-422, 17-
19 Sept. 2010.
[7] SD Group, SD Specifications, Part 1:
Physical Layer Simplified Specification,
Version 3.01, May 18, 2010.

3 a 5 de octubre 2012. Colima, Col. Mxico ISBN 978-607-477-902-8 589

También podría gustarte