Convierte de Binario a BCDs usando una GAL22V10

Transcripción

Convierte de Binario a BCDs usando una GAL22V10
Convierte de Binario a BCDs usando una GAL22V10
El proyecto que ahora se aborda es el de convertir una puntuación recibida en binario que toma
valores de 0 a 49 representada con seis bits, a dos dígitos BCD (Decimal Codificado en Binario).
Especificación del Diseño — BIN_BCD
Para exhibir el escore, que aparece como salida de otra GAL, un convertidor de binario a BCD es
implementado. La función del convertidor es aceptar las seis líneas de datos binarios generados por
otra GAL y producir dos conjuntos de salidas con decimales codificados en binario para dos
dispositivos exhibidores BCD; uno que muestre las unidades del escore actual, y el otro que muestre
las decenas. Los cuatro bits de salida BCD1 (D3-D0) contienen las unidades del escore actual, y es
conectado al dígito de de menor orden del display. Los tres bits de salida BCD2 (D6 – D4)
contienen las decenas, y es alimentado al dígito de mayor orden del exhibidor. BIN_BCD también
produce un par de salidas para iluminar LEDs de tiro BAJO y tiro ALTO. BAJO es encendido
siempre que el escore es 27 o menos; mientras que ALTO se ilumina cuando el escore es 37 o
mayor. Notar que existen 14 condiciones irrelevantes pues el máximo número de seis bits es 63.
Método de Diseño — BIN_BCD
El diseño de BIN_BCD es ilustrado en el archivo fuente de la Figura 1. El diseño del convertidor es
fácilmente expresado con una tabla de verdad (truth_table) que liste el valor del escore (entradas S5
hasta S0 se declaran como escore) para valores de BCD1 y BCD2. BCD1 y BCD2 son conjuntos
que definen las salidas que son alimentadas a los dispositivos de siete segmentos. Tal tabla de
verdad lista valores del escore hasta el decimal 49. La tabla de verdad representa un método de
expresar el diseño “manualmente.” Uno puede usar una macro para crear una tabla de verdad en la
siguiente manera:
limpia(binario);
@repeat 49 { binario -> [binario/10,binario%10]; inc(binario);}
Como se indica en la figura 1 (y se describe en “Vectores de Prueba — BIN_BCD”), tal macro es
usada para generar los vectores de prueba para el convertidor. El file *.lst generado muestra la tabla
de verdad creada desde la macro. El diseño BIN_BCD también provee las salidas LT28 y GT36 para
controlar los LEDs BAJO y ALTO. Un par de ecuaciones generan una señal activa alta LT28 para
encender el LED BAJO cuando el escore es menor que 28, y una señal activa alta GT36 para
encender el LED ALTO cuando el escore es mayor que 36.
Vectores de Prueba — BIN_BCD
Los vectores de prueba que se muestran en la figura 1 verifican la operación de las salidas LT28 y
GT36 del convertidor al asignar varios valores para escore y cotejar para las salidas
correspondientes.
Tales vectores de prueba para el convertidor binario a BCD se definen mediante la siguiente macro:
test_vectors ( escore -> [BCD2,BCD1])
limpia(binario);
@repeat 49 { binario -> [binario/10,binario%10]; inc(binario);}
Prof. S. Saucedo
1
ICE/2007
Tal macro genera un vector para la simulación con la variable binario iniciada a 0 mediante la macro
(a) {@const ?a=0}; (en el módulo binBCD del archivo fuente, dado en la figura 1), seguido de 49
vectores proporcionados mediante la directiva @repeat. estos 49 vectores se generan al incrementar
el valor de la variable binario en la cantidad 1 para cada vector. Referirse a la línea con la macro inc
(a) {@const ?a=?a+1;}; en figura 1. En el lado de la salida de los vectores de prueba, una division se
usa para crear la salida para BCD2 (dígito de las decenas del display), mientras que el operador de
residuo (módulo) se emplea para crear la salida para BCD1 (dígito para unidades en el display).
MODULE binBCD
TITLE 'Convierte binario de 6 bits a dos BCDs'
"
"
"
"
"
"
"
Un escore de 6 bits en binario (0 - 49) se convierte en dos salidas BCD.
La division entera '/' y el operador de modulo '%' se usan para
extraer los digitos individuales a partir del escore de dos digitos.
'Escore % 10' genera las 'unidades' y
'Escore / 10' produce las 'decenas'
Las salidas 'GT36' y 'LT28' son para una segunda etapa
S5..S0
pin 2..7;
escore = [S5..S0];
" salidas
LT28,GT36
pin istype 'com';
D6..D4
pin 14..16 istype 'com';
BCD2 = [D6..D4];
D3..D0
pin istype 'com';
BCD1 = [D3..D0];
" macros para separacion de Digitos
binario = 0; " variable de trabajo
limpia
macro (a) {@const ?a=0};
inc
macro (a) {@const ?a=?a+1;};
equations
LT28 = (escore < 28); " BAJO
GT36 = (escore > 36); " ALTO
(maquina de estados).
@DCSET " Condiciones 'no importa' Para ayudar a la optimizacion
truth_table ( escore -> [BCD2,BCD1])
0 -> [ 0 , 0 ];
1 -> [ 0 , 1 ];
2 -> [ 0 , 2 ];
3 -> [ 0 , 3 ];
4 -> [ 0 , 4 ];
5 -> [ 0 , 5 ];
6 -> [ 0 , 6 ];
7 -> [ 0 , 7 ];
8 -> [ 0 , 8 ];
9 -> [ 0 , 9 ];
10 -> [ 1 , 0 ];
11 -> [ 1 , 1 ];
12 -> [ 1 , 2 ];
13 -> [ 1 , 3 ];
14 -> [ 1 , 4 ];
15 -> [ 1 , 5 ];
16 -> [ 1 , 6 ];
17 -> [ 1 , 7 ];
Prof. S. Saucedo
2
ICE/2007
"
"
"
"
18 -> [ 1 , 8 ];
19 -> [ 1 , 9 ];
20 -> [ 2 , 0 ];
21 -> [ 2 , 1 ];
22 -> [ 2 , 2 ];
23 -> [ 2 , 3 ];
24 -> [ 2 , 4 ];
25 -> [ 2 , 5 ];
26 -> [ 2 , 6 ];
27 -> [ 2 , 7 ];
28 -> [ 2 , 8 ];
29 -> [ 2 , 9 ];
30 -> [ 3 , 0 ];
31 -> [ 3 , 1 ];
32 -> [ 3 , 2 ];
33 -> [ 3 , 3 ];
34 -> [ 3 , 4 ];
35 -> [ 3 , 5 ];
36 -> [ 3 , 6 ];
37 -> [ 3 , 7 ];
38 -> [ 3 , 8 ];
39 -> [ 3 , 9 ];
40 -> [ 4 , 0 ];
41 -> [ 4 , 1 ];
42 -> [ 4 , 2 ];
43 -> [ 4 , 3 ];
44 -> [ 4 , 4 ];
45 -> [ 4 , 5 ];
46 -> [ 4 , 6 ];
47 -> [ 4 , 7 ];
48 -> [ 4 , 8 ];
49 -> [ 4 , 9 ];
Esta tabla de verdad se puede remplazar con la siguiente macro.
limpia(binario);
@repeat 49 {
binario -> [binario/10,binario%10]; inc(binario);}
" vectores de prueba editados...
" Estos vectores de prueba demostraran el uso de la macro.
test_vectors ( escore -> [BCD2,BCD1])
limpia(binario);
@repeat 49 {
binario -> [binario/10,binario%10]; inc(binario);}
END
Figura 1 Listado fuente del convertidor de binario de seis bits a dos dígitos BCD.
Asignación de Pines
La figura 2 ilustra como el software ispLEVER starter de Lattice distribuye las terminales
Prof. S. Saucedo
3
ICE/2007
Figura 2 Asignación de patitas.
Simulación de los Vectores
La figura 3 exhibe el trazo en el tiempo de la simulación del JEDEC.
Figura 3 Formas de onda de la simulación (Fragmento).
Prof. S. Saucedo
4
ICE/2007

Documentos relacionados