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