Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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.
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
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.
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.
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