Download Lab 04 - Departamento de Electrónica
Document related concepts
no text concepts found
Transcript
UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO212 Laboratorio de Sistemas Digitales Laboratorio 04. Objetivos. • Programación de redes combinacionales complejas empleando EEPROM. • Analizar las especificaciones de una EEPROM en una hoja de datos. • Conocer los formatos internos de los archivos de texto, hexadecimales y binarios que se emplean para la representación de mapas de bits, y las aplicaciones que permiten visualizar dichos formatos. • Emplear una herramienta que genere archivos en formato Intel. • Simular circuitos digitales que empleen EEPROM. • Escribir la EEPROM con un grabador. • Efectuar pruebas estáticas y dinámicas mediante osciloscopio. Preparación previa. Estudio de la hoja de datos de la EEPROM. En la hoja de datos de la EEPROM leer especificación de las señales de control en Device Operation pág. 3-59 y la descripción de pines en pág. 3-58. ¿Cómo se sabe si los voltajes de salida son compatibles con lógica TTL.? Leer ciclo de lectura pág. 3-68, verificar que las direcciones no pueden cambiarse más rápidamente que el período tRC. Analizar la función de las señales de control: ce' (chip enable not) y oe' (output enable not). Cómo deben programarse las líneas de control si se desea leer una serie de direcciones sucesivas. Descripción de archivos con código hexadecimal Intel. Los archivos con extensión .hex se emplean para describir mapas binarios de contenidos asociados a direcciones. Su principal uso es describir el contenido de una ROM, mediante un archivo de texto, formado por líneas. Normalmente es generado, en forma automática por una aplicación, por ejemplo un compilador. El formato del archivo es el siguiente: Cada línea debe cumplir el siguiente formato: :10001000FE352FCD454BAEFFE43E5D55AAE435EEEF : El primer carácter de la línea es el símbolo dos puntos( colon en inglés). : 10 Los siguientes dos caracteres especifican, en hexadecimal, el número de bytes de datos presentes en la línea. (En el ejemplo que se ilustra, el número de bytes es 10H, es decir: 16 en decimal.) :10 0010 Los siguientes cuatro caracteres, especifican la dirección del primer byte de datos de la línea (0010H equivale a la dirección 16 en decimal). Esto implica que el mayor tamaño de la memoria es FFFFH, es decir una memoria de 64 KB. Existen formatos de archivos para especificar memorias mayores a 64KB, entre ellos los registros S de Motorola y los archvos con formato Textronix. Laboratorio de Sistemas Digitales. Prof. Leopoldo Silva Bijit. 26-12-2001 20 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO212 Laboratorio de Sistemas Digitales :100010 00 Los siguientes dos caracteres indican el tipo de línea o registro. El tipo 00 indica un registro normal de datos; es decir, una línea que no es la última del archivo. El tipo de la última línea del archivo debe ser 01. :10001000 FE352FCD454BAEFFE43E5D55AAE435EE Los siguientes caracteres representan los datos, en forma de bytes, que se almacenaran en posiciones secuenciales a partir de la dirección inicial de la línea. the ROM. Los 16 bytes de datos de la línea que se describe en el ejemplo son: FE, 35, 2F, CD, 45, 4B, AE, FF, E4, 3E, 5D, 55, AA, E4, 35, y EE. :10001000FE352FCD454BAEFFE43E5D55AAE435EE EF Los últimos dos caracteres son una suma de chequeo para la línea. Se denomina byte de paridad. Y se define como el valor que al ser agregado a la suma de los bytes anteriores(los bytes después del dos puntos, hasta el penúltimo) de la línea da como resultado cero. Puede decirse que es el negativo de la suma, descrita antes, expresada en complemento dos. La suma se realiza en módulo 100H ( módulo 256 en decimal). Ejemplo: Las siguientes dos líneas son el contenido de un archivo en formato hexadecimal de Intel. El cual se emplea para grabar eprom. El archivo es de texto (puede editarse con notepad); es decir, está formado por carácteres imprimibles del código ASCII, organizado en líneas separadas por 0D, 0A (CR,LF carriege return y line feed) :070100002402FDEC3400FCB9 :00000001FF La última línea tiene tipo 01, que es la última línea del archivo. Se cargan 7 bytes a partir de la dirección 0100H. Si se visualiza el archivo de texto(hex) con un editor hexadecimal, se tendrá el siguiente contenido. 3A 30 37 30 31 30 30 30 30 32 34 30 32 46 44 45 43 33 34 30 30 46 43 42 39 0D 0A 3A 30 30 30 30 30 30 30 31 46 46 El código hexadecimal para el carácter dos puntos es 3A. Para el carácter 0 es 30, y así sucesivamente. Existe aplicación Windows llamada mapa de carácteres donde pueden visualizarse los símbolos disponibles en una fuente y su valor en hex. Todos los cargadores de PROM aceptan directamente el formato Intel. Existen programas que toman como entrada un archivo hexadecimal y lo transforman a una imagen binaria (hexbin.exe). Si se transforma el archivo anterior, en formato Intel hex a binario, la información del archivo binario vista con un editor hexadecimal (edbin.exe en dos y Hex WorkShop en Windows) se vería como sigue: 00000000 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000010 0000 0000 0000 0000 0000 0000 0000 0000 ................ 00000020 0000 0000 0000 0000 0000 0000 0000 0000 ................ Laboratorio de Sistemas Digitales. Prof. Leopoldo Silva Bijit. 26-12-2001 21 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO212 Laboratorio de Sistemas Digitales 00000030 00000040 00000050 00000060 00000070 00000080 00000090 000000A0 000000B0 000000C0 000000D0 000000E0 000000F0 00000100 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 2402 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FDEC 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 3400 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 FC 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 ................ ................ ................ ................ ................ ................ ................ ................ ................ ................ ................ ................ ................ $...4.. La primera columna indica la dirección inicial, en hexadecimal. Las siguientes columnas(exceptuando la última) contienen los datos asociados a las direcciones. Se tienen 16 bytes de datos por línea; por esta razón las direcciones de la primera columna terminan en 0. La última columna es la zona Ascii, donde se colocan los 16 símbolos del código ASCII asociados a los bytes. Note que en la zona Ascii, los caracteres que no son gráficos o imprimibles(del 00 a 31 decimal, y los mayores que FFH) se visualizan con puntos; y que también se rellenan con ceros las zonas donde no se han especificado datos; este es el caso desde la dirección 00000000 hasta 000000FF. Y sólo se cargan en este mapa de memoria los siete valores especificados, a partir de la dirección 00000100. No puede verse un archivo binario, con un editor de texto. Note que la fuente para ver alineadas las columnas debe ser de espacio no proporcional, como courier o similar. La aplicación dump, pasa un archivo binario a un archivo de texto, con la información similar a la desplegada por un editor binario(o hexadecimal). Uso de PLD, para grabar EEPROM. Diseños combinacionales pueden ser implementados en EPROM, generando el archivo binario con el mapa de memoria. Se dispone de memorias genéricas, que se denominan de acuerdo al número de líneas de dirección y al del número de bits del contenido. Por ejemplo el dispositivo PROM32B8 especifica una eprom de 32 palabras de 8 bits cada una. Cuando se especifican dispositivos PROM, el compilador genera un archivo hexadecimal en formato INTEL, el cual puede grabarse fácilmente. Para enfrentar estos diseños, primero se elige un dispositivo eprom adecuado. El compilador asigna las entradas como direcciones, la más significativa primero. Entonces, la primera variable de entrada es asociada al bit de dirección más significativo. La primera salida está asociada al bit de dato más significativo. Puede ser necesario definir entradas y salidas nulas, para asegurar las posiciones de las direcciones y datos en que se tendrán las entradas y salidas, respectivamente. Luego pueden borrarse las zonas que no se empleen. Laboratorio de Sistemas Digitales. Prof. Leopoldo Silva Bijit. 26-12-2001 22 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO212 Laboratorio de Sistemas Digitales Se desea diseñar un conversor de una cifra hex a código de 7 segmentos. Se requieren 4 líneas de dirección y 7 bits de largo de palabra. El dispositivo existente más cercano en PROM32B8. En el cual se tienen 5 líneas de dirección y 8 bits de datos. En el código se agregan una entrada nula e, y una salida nula, denominada nulo. Entonces la zona desde 10h hasta 1fh, que se logra con la línea de dirección más significativa igual a uno, no será utilizada. Tampoco la línea de dato más significativa. Notar que la sintaxis es similar a la de Abel, pero con algunas diferencias. La primera línea establece el dispositivo, y las señales de entrada y salida. El primer carácter de la línea debe ser una barra vertical. Para describir la función combinacional se emplea una tabla de verdad. Pero también pueden emplearse ecuaciones. La generación de los vectores de prueba tiene una sintaxis diferente a la de Abel. El comando D)por display) indica las señales de entrada y salida que serán visualizadas en un formato determinado, la h indica que se que serán desplegadas en hexadecimal. La generación, propiamente tal, se efectúa con el comando test, que genera el producto cartesiano, del argumento del comando. |PROM32B8 in:(e, a, b, c, d), out:(nulo, seg[6..0]) | |nulo=0 |table: e, a, b, c, d -> nulo, seg[6..0] |{0h-> 3fh |01h-> 06h |02h-> 5bh |03h-> 4fh |04h-> 66h |05h-> 6dh |06h-> 7dh |07h-> 07h |08h-> 7fh |09h-> 67h |0ah-> 77h |0bh-> 7ch |0ch-> 39h |0dh-> 5eh |0eh-> 79h |0fh-> 71h} | Vectors: | { D (a,b,c,d)h, (seg[6..0])h | test a, b, c, d | End } La ejecución del programa genera un archivo, con extensión hex, que puede emplearse para grabar la EEPROM. El texto del archivo Intel que se genera es el siguiente: :100000003F065B4F666D7D077F67777C395E797150 Laboratorio de Sistemas Digitales. Prof. Leopoldo Silva Bijit. 26-12-2001 23 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO212 Laboratorio de Sistemas Digitales :1000100000000000000000000000000000000000E0 :00000001FF Notar que el programa genera las sumas de chequeo. En el ejemplo debe borrarse la segunda línea que está asociada a las direcciones que van desde 10h hasta 1fh. Otro ejemplo: |PROM32B8 in:(addrs[5..0] ), out:(data[7..0]) |table: addrs[4..0] -> data[7..0] |{0h-> 00h |01h-> 01h |02h-> 02h |03h-> 03h |04h-> 04h |05h-> 05h |06h-> 06h |07h-> 07h |08h-> 08h |09h-> 09h |0ah-> 0ah |0bh-> 0bh |0ch-> 0ch |0dh-> 0dh |0eh-> 0eh |0fh-> 0fh |10h-> 10h |11h-> 11h |12h-> 12h |13h-> 13h |14h-> 14h |15h-> 15h |16h-> 16h |17h-> 17h |18h-> 18h |19h-> 19h |1ah-> 1ah |1bh-> 1bh |1ch-> 1ch |1dh-> 1dh |1eh-> 1eh |1fh-> 1fh } | Vectors: | { D (addrs[4..0])h,(data[7..0])h | test addrs[4..0] | End } Laboratorio de Sistemas Digitales. Prof. Leopoldo Silva Bijit. 26-12-2001 24 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO212 Laboratorio de Sistemas Digitales La asignación de señales muestra en orden que se eligen las entradas y salidas SIGNAL ASSIGNMENT Pin Signal name Address Data bit bit 2. 3. 4. 5. 6. 16. 17. 18. 19. 20. 21. 22. 23. addrs4 addrs3 addrs2 addrs1 addrs0 data0 data1 data2 data3 data4 data5 data6 data7 4 3 2 1 0 - 0 1 2 3 4 5 6 7 Activity High High High High High High High High High High High High High También genera en lst. una descripción del mapa de memoria. HEXADECIMAL OBJECT FILE Addr 0 1 2 3 4 5 6 7 8 9 A B C D E F 0000 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 0010 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F Y en un archivo con extensión hex, el archivo en formato Intel. :10000000000102030405060708090A0B0C0D0E0F78 :10001000101112131415161718191A1B1C1D1E1F68 :00000001FF Simulación de diseños en base a EPROM. a) Simular el siguiente circuito: V1 0V DS1 Data 8 Seq 7 CP1 CP2 6 5 4 3 2 1 d7 d6 d5 d4 d3 d2 d1 d0 U1 PROM32 CS A4 A3 A2 A1 A0 O7 O6 O5 O4 O3 O2 O1 O0 Grabando en la prom los siguientes datos hexadecimales, a partir de la dirección 0: 10, 11, 10, 0B, 00, 43, 00, 25, 60, 21, 20, 29, 20, A1, 20, 21. Se puede usar un data seq, funcionando como contador módulo 16; o emplear en la simulación el contador 7493. Registrar las formas de ondas, para la prueba dinámica. Laboratorio de Sistemas Digitales. Prof. Leopoldo Silva Bijit. 26-12-2001 25 UNIVERSIDAD TECNICA FEDERICO SANTA MARIA DEPARTAMENTO DE ELECTRONICA ELO212 Laboratorio de Sistemas Digitales b) Generar un archivo hexadecimal lab04.hex, en formato Intel, con los datos anteriores. Recordar que debe incluirse una última línea indicando fin de datos. Generar la suma de chequeo(debe resultar 80). c) Convertir lab04.hex a lab04.bin mediante el programa hexbin2.exe. d) Visualizar el archivo lab04.bin con un editor Hexadecimal. Entendiendo el despliegue de los datos en cada zona de la pantalla. e) ¿Por cuáles pines de la eeprom salen las formas de ondas d0 a d7 registradas en a).? Especificaciones. • Armar el circuito de la parte a) de la simulación, empleando un contador y una memoria EEPROM 28256. Este es un chip de 28 pines. Deben cablearse las cuatro líneas de dirección menos significativas, las ocho líneas de datos, Vcc, tierra (es VSS), y las señales de control: ce' (chip enable not), oe' (output enable not). De este modo al aplicar las salidas del contador a las direcciones de la eeprom se leerán los contenidos de las primeras 16 posiciones de la memoria. • Diseño asistido por computador de redes combinacionales en base a ROM. Generar el archivo binario para implementar el circuito de la experiencia 3. Armar el circuito para el decodificador de una cifra hexadecimal a un display de 7 segmentos, con resistencias de alimentación y empleando un inversor a la salida de los datos de la memoria (con objeto de aislar la memoria del display). Generar el archivo hex usando la herramienta pld. Puede emplearse el armado con el display de 7 segmentos, para ambas especificaciones. En el laboratorio. Para ambos diseños: Programar la EEPROM, con un grabador. Antes de programar, efectuar un borrado y luego una verificación de que quedó efectivamente borrada. Es importante recordar que al colocar o sacar la memoria del protoboard, no se tenga aplicado Vcc. Y también tener cuidado para no doblar las patas de un extremo de la eeprom. Efectuar la prueba dinámica del circuito. Verificando las formas de ondas de las salidas, respecto de alguna entrada que debe elegirse adecuadamente, para tener visualizaciones estables en el osciloscopio. Observar parejas de señales(por ejemplo d1 con d2; d1 con d7) mediante el osciloscopio, ¿cómo disparar el barrido del osciloscopio para mantener fija una de las señales?. Variar la frecuencia del generador de pulsos que alimenta al contador, determinando la frecuencia máxima de operación(la frecuencia para seguir obteniendo las tablas de verdad correspondiente para los segmentos; no se trata de la frecuencia para visualizar los números en el display, la cual también puede medirse). Laboratorio de Sistemas Digitales. Prof. Leopoldo Silva Bijit. 26-12-2001 26