Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Estado
siguiente
Z
0 0 0 0 S2 0
0 0 0 1 S1 0
S1 0 0 1 0 S1 0
0 1 0 0 S1 0
1 0 0 0 S1 1
0 0 0 0 S3 0
0 0 0 1 S2 0
S2 0 0 1 0 S2 0
0 1 0 0 S2 1
1 0 0 0 S2 0
0 0 0 0 S4 0
0 0 0 1 S3 0
S3 0 0 1 0 S3 1
0 1 0 0 S3 0
1 0 0 0 S3 0
0 0 0 0 S1 0
0 0 0 1 S4 1
S4 0 0 1 0 S4 0
0 1 0 0 S4 0
1 0 0 0 S4 0
Se puede ver claramente en la Tabla 1 en qu casos ocurre la transicin de estados, por ejemplo,
cuando se est en el estado S1 slo se puede pasar a S2 si P1, P2, P3 y P4 son iguales a cero.
En un estado inicial (sin que el usuario presione ningn pulsador), los leds estn encendindose
alternamente uno por uno y se detendrn cuando al menos unos de los botones est presionado.
Por otra parte tenemos la salida Z, esta indica si el botn hundido es el indicado o no (por ejemplo
en S4, para que Z sea igual a uno debe haberse presionado P4).
Ahora mostraremos una tabla semejante a la Tabla 1 , con la diferencia que los estados estarn
codificados tal como se mencion en las especificaciones de diseo.
Tabla 2. Tabla de estados codificada.
Posicin
en
decimal
Z
0 0 0 0 0 0 1 0
1 0 0 0 1 0 0 0
2 0 0 0 0 1 0 0 0 0
4 0 1 0 0 0 0 0
8 1 0 0 0 0 0 1
16 0 0 0 0 1 0 0
17 0 0 0 1 0 1 0
18 0 1 0 0 1 0 0 1 0
20 0 1 0 0 0 1 1
24 1 0 0 0 0 1 0
32 0 0 0 0 1 1 0
33 0 0 0 1 1 0 0
34 1 0 0 0 1 0 1 0 1
36 0 1 0 0 1 0 0
40 1 0 0 0 1 0 0
48 0 0 0 0 0 0 0
49 0 0 0 1 1 1 1
50 1 1 0 0 1 0 1 1 0
52 0 1 0 0 1 1 0
56 1 0 0 0 1 1 0
Nota: se puede apreciar en la anterior tabla que hay varias combinaciones que no aparecen, como
por ejemplo la combinacin 000011(representadas por
respectivamente y que es
equivalente a 3 en nmero decimal), esto ocurre porque dos o ms pulsadores no pueden estar
presionados a la vez lo que ocasiona que la salidas sean indiferentes, lo mismo aplica para el resto
de combinaciones faltantes en la tabla.
PARA
TENEMOS:
Fig 2. Mapa de Karnaugh para
=(
)+(
) +(
)+(
+(
)+ (
=(
)+
)
Fig. 2a. Circuito equivalente para
.
12
13
1
2
A
Q0
Q1
P1
P2
P3
P4
Q1+
6
1
2
4
5
A
NOT
NOT
NOT
NOT
NOT
NOT
AND
OR
OR
OR
OR
OR
PARA
TENEMOS:
Fig. 3. Mapa de Karnaugh para
=(
)+ (
)+(
+(
)+ (
=(
)+
)
Fig. 3a. Circuito equivalente para
.
Las salidas (
.
Dichos elementos permiten que haya un cambio de estado y los leds puedan prender y apagar
dependiendo de la velocidad de la seal de reloj que se tenga.
Por consiguiente nuestro circuito conectado a los FF ser el siguiente:
Fig. 4. Circuito equivalente conectando los Flip-Flops.
Nota: Cuando en la figura 4 se muestra una entrada CLK, esta se refiere a una seal de reloj.
PARA TENEMOS:
Fig. 5. Mapa de Karnaugh para .
Z= (
) + (
) + (
)
Fig. 5a. Circuito equivalente para Z.
Como bien se sabe las entradas
Donde se tiene que
.
CLK
J
CLK
Q
K
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK
J Q
K
CLK1
CLK2
En CLK1 entra la seal de reloj con la frecuencia proporcionada por la tarjeta DE0 y en CLK2
sale un valor aproximado a la frecuencia que se desea (4Hz).
DISPLAY:
Para esta parte, se utilizar exactamente el mismo DISPLAY que se implement en la primera
prctica.
Fig. 9. Bloque total del DISPLAY siete segmentos.
En primera instancia se tiene una entrada habilitadora EN, la cual activa o inactiva el display,
dicha entrada est conectada a la salida de una compuerta OR de 4 y esta a su vez est conectada a
P1, P2, P3 y P4, todo esto para obtener un uno lgico en su salida en caso de que cualquier pulsador
est presionado.
Cuando se presione algn pulsador el display se activar inmediatamente y se mostrar el resultado
S en el sistema hexadecimal (E) para S=1 o en BCD (0) para S=0; a esta entrada va conectada la
misma compuerta OR de 4 mencionada anteriormente, para que cuando se habilite el siete
segmentos, este muestre 0 o E.
Finalmente tenemos a N3, N2,N1 y N0 las entradas del display 7 segmentos y se tiene una
salida Z que tiene una conexin a las entradas N3, N2 yN1, N0 a tierra. Cuando Z es
cero al display entrara la combinacin 0000 y cuando es uno entra la combinacin 1110 (E)
(representadas por N3, N2, N1, N0 respectivamente).
* N3, N2 y N1 estas cambian con Z, es decir, si Z es cero entonces N3=N2=N1=0 y si Z es uno
entonces N3=N2=N1=1, esto indica que Z va conectada directamente a estas entradas.
DECODI FI CADOR:
Como se dijo con anterioridad cada estado fue codificado de cierta manera, por lo tanto ahora es
necesario decodificar de nuevo para ver cul es verdadero comportamiento de los estados (y los
leds).
e
f
g
EN
S
N0
N1
N2
N3
DISPLAY
a
b
c
d
Tabla 3. Tabla de verdad para el decodificador
0 0 1 0 0 0
0 1 0 1 0 0
1 0 0 0 1 0
1 1 0 0 0 1
Fig. 10. Circuito equivalente para el DECODIFICADOR.
En la figura 10, las salidas L1, L2. Representa a los cuatro leds que estn en funcionamiento.
NOT
NOT
AND
AND
AND
AND
Q0
Q1
L1
L2
L3
L4
Q1
Q0
L1
L2
L3
L4
DECO
Fig. 11. Bloque total del DECODIFICADOR.
Fig. 12. Circuito total del sistema.
NOTA: Las entradas P1, P2, P3 Y P4 estn negadas ya que la tarjeta DE0 es nodo comn.
Fig. 13. Simulacin con pulsadores inactivos*.
*Aunque Z=1, el display est apagado.
PUNTO 2
Requisitos
Disear un sumador en paralelo de ocho bits cuyo resultado se puede cargar en un registro. Los nmeros a
sumar se almacenarn en una memoria RAM. Se seleccionarn un par de nmeros binarios de la memoria y
su resultado se acumular en el registro.
Registro
Controle mediante interruptores el registro y el acarreo:
a. Una condicin de CARGAR para transferir la suma al registro y el acarreo de salida cuando se
aplica un pulso de reloj.
NOT
GND
L1
L2
L3
L4
a
b
c
d
e
f
g
P1
P2
P3
P4
CLK
Q0
Q1
Z
Q1
Q0
L1
L2
L3
L4
DECO
P1
P2
P3
P4
CLK
EN
CLK1 CLK2
N0
N1
N2
N3
S
a
b
c
d
e
f
g
DISPLAY
NOT
NOT
NOT
NOT
OR
OR
OR
b. Una condicin de DESPLAZAR, desplaza el registro a la derecha, transfiriendo el bit del
acarreo a la posicin de extrema izquierda del registro, cuando se aplica un pulso de reloj. El
valor en el flip-flop de acarreo no deber cambiar durante el desplazamiento.
c. Una condicin SIN CAMBIO que deja el contenido del registro del FF de acarreo como estaban,
aunque se apliquen pulsos de reloj.
Figura 1: Diagrama conceptual de funcionamiento por bloques.
Circuito de acarreo
El acarreo de salida se debe transferir nicamente cuando se active la condicin CARGAR y se aplique un
pulso a la entrada de reloj del FF. El FF de acarreo no deber cambiar si la condicin CARGAR se inhabilita
o si se habilita la condicin DESPLAZAR.
Para el resultado de la suma, incluido el acarreo, debe conectar displays de siete segmentos. Para las salidas
del registro, y para la direccin y los datos de salida de la RAM, conecte leds.
MARCO TERICO RESUMIDO
Todo inicia con el Multiplexor de 17 entradas (Fig. 2), 8
del nmero que viene del registro, 8 del nmero que se
pone en los switches y 1 del selector.
En este caso se puede disear para que sea 1 switch
haciendo una multiplicacin bit a bit de los nmeros
entrantes.
Con esta seleccin se elige entre los datos que vienen del
registro (suma) o los que se encuentran en los switches de
la FPGA y se envan a la RAM.
Cuando llegan a la RAM, previamente debe haberse
establecido la direccin o fila en address
1
, en esta se
almacena el nmero proveniente del multiplexor.
Para seleccionar una fila en la RAM, basta con
pulsar la CUENTA tantas veces como sea
necesario.
Es necesario a la hora de agregar el nmero a la
fila deseada tener la entrada WREN de la RAM
activa (en 1), es decir Escritura, y en el momento
de lectura tener WREN en 0.
Se agregan los nmeros a las filas deseadas y
luego se cambia WREN a modo Lectura y se
pulsa LOAD o CARGA para pasar el nmero al
Sumador.
Fig. 4: Sumador de 8 bits en paralelo
Contina con un sumador de 8 bits hecho con Full Adders, tiene 2 grupos de entradas para nmeros
de 8 bits y 9 salidas 8 de ellas corresponden al resultado (nmero de 8 bits) de la suma de los
nmeros que entraron y otra que lleva el bit de acarreo.
A la entrada tenemos el nmero de la RAM que es el primer nmero A que se ha elegido
para pasar a sumar, en principio se sumar con un nmero 0 que se encuentra en la realimentacin
del registro, pero a continuacin, cuando pasemos el segundo nmero B de la RAM, el nmero A
debe encontrarse saliendo del registro*, por lo que el Sumador va a realizar la suma A + B = C y
posteriormente, en caso de que no se reinicie, va a volver a sumarse C con el nmero que entre de la
RAM.
*Por esto seleccionaremos un registro paralelo-paralelo visto en clase, ya que despus de la carga
este se desplaza completo, lo que facilita la sincronizacin de los relojes, para que la llegada de los
nmeros al sumador sea sncrona.
Fig5: Funcionamiento del registro
El acarreo y el resultado de la suma, va a un registro que se encarga de almacenar
temporalmente el resultado y desplazar dicho registro si se quiere, los bits de salida del registro
va a retroalimentar sumador y a su vez van a un multiplexor el cual va a permitir escoger dicho
resultado para acumularlo y almacenarlo en la memoria o si ingresar un nuevo nmero y
almacenarlo para posteriormente realizar el mismo procedimiento.
PROCEDIMIENTO DE DISEO
Contador
El contador de direccin se encarga de escoger la direccin de la memoria RAM en la que se
quiera guardar cierto dato de 8 bits, simplemente es un contador normal de 4 bits mod 15 el
cual nos permite obtener nmeros desde el 0 al 15 en sistema decimal, este sistema va a ir
conectado a las entradas de direccin de la memoria RAM de 16*8 para de esta forma asignar
una de las 16 filas mediante un pulsador, que es donde posteriormente se guardara el dato.
El contador de direccin viene dado por el siguiente circuito:
Fig. 8: Contador de direccin.
RAM 16*8
La RAM es la memoria en la cual se va a guardar o bien el resultado de la suma o bien
algn numero binario cualquiera de 8 bits ingresado en los switches de la tarjeta DEO para
poder reutilizar dicho numero posteriormente para realizar una nueva operacin. La memoria
CLEAR
..
CLK
NOT
NOT NOT
NOT
Q0
..
Q1
..
Q2
..
Q3
..
Q D
CLEAR
D
CLEAR
D Q
CLEAR
Q Q D
CLEAR
RAM es de 16*8 lo cual nos indica que es capaz de almacenar un nmero de 8 bits en cada una
de sus 16 posiciones de memoria.
Proceso de construccin de la memoria:
Fig. 9: MegaWizard Plug-In Manager
Fig 9.1: Crear nueva funcin
Fig 9.2: Busca RAM y selecciona la de 1 puerto, adems le pone el nombre a la RAM
Fig 9.3: Selecciona el nmero de palabras (filas) y bits
Fig 9.4: Quita el registrode puertos de salida q.
Fig 9.5: Selecciona los archivos que desea crear, AHDL, VHDL y Symbol file.
Fig. 9.6: Ahora ya se puede seleccionar la RAM como un smbolo y tambin ver su cdigo
interno VHDL y AHDL.
Sumador de 8 bits
Primeramente procedemos a crear un Full Adder visto en clase que tome en cuenta el acarreo
entradas (A, B, Cin) y 2 Salidas (D, Cout).
2
Ya sabiendo esto, lo segundo que se hizo fue construir un sumador completo de 8 bits a partir
del arreglo en cascada de 8 full adder de 1 bit.
Fig. 10: Full adder de 8 bits
Acarreo
El circuito de acarreo bsicamente es un flip flop tipo D el cual viene alterado por ciertas
requisitos que plantea el problema de la gua, para satisfacer dichas condiciones lo que hacemos
es poner el reloj CKL en una compuerta and junto con la condicin de carga negada tal como se
muestra en la figura:
A
B
S0
S1
S2
S3
S4
S5
S6
S7
Cout
A0
A1
A2
A3
A4
A5
A6
A7
B0
B1 Cin
S
Cout
A
B
Cin
S
Cout
A
B
Cin
S
Cout
Cin
S
Cout
A
B
Cin
S
Cout
A
B
Cin
S
Cout
A
B
Cin
S
Cout
A
B
A
B
Cin
S
Cout
B2
B3
B4
B5
B6
B7
Ci n
Fig. 11: Circuito de acarreo
Con esta configuracin que va a entrar en la entrada de reloj del biestable de acarreo
garantizamos que el acarreo de salida se transfiera solamente cuando se active la condicin de
cargar y se aplique un pulso de reloj del biestable.
Tambin nos garantiza que el valor en el biestable de acarreo no cambie cuando se inhabilita la
funcin cargar o si se habilita la funcin desplazar, por obvias razones de la tabla de verdad de
la compuerta and.
MUX
Para el Mux de 16 a 8 SE utiliza ocho multiplexores con sus dos entradas de datos y su salida
cada uno, adems de su lnea de seleccin.
Cout
CLK
CARGA
ACARREO
AND
CLEAR
Q D
CLEAR
Fig. 12: Multiplexor
La lnea de seleccin tiene una entrada de inhibicin (STORE) activa a nivel bajo (0V) y una
entrada de seleccin (SEL), comn a los 8 multiplexores.
Se conecta la entrada (STORE, que vendra siendo la lnea habilitadora) a tierra de esta forma,
el circuito siempre el Mux siempre est activo y con la lnea de seleccin SEL vamos a escoger
ya sea el numero A (SEL=0) o el numero B (SEL=1) de 8 bits cada uno para que salga en las
salida Y del Mux de 8 bits tambin lgicamente.
De esta forma podemos escoger si ingresar un nuevo nmero A o escoger el resultado de la
suma que vendra siendo el nmero B.
Registro
A0
B0
A1
B1
A2
B2
A3
B3
A4
B4
A5
B5
B6
A7
B7
SEL
3
1
2
AND
AND
NOT
A6
3
1
2
Z0
Z1
Z2
Z3
Z4
Z5
Z6
Z7
AND
AND
3
1
2
AND
AND
3
1
2
AND
AND
AND
3
1
2
AND
AND
AND
AND
3
1
2
AND
AND
3
1
2
AND
AND
3
1
2
AND
VCC
Fig. 13: Registro de desplazamiento Paralelo-Paralelo
Para la construccin del registro de 8 bits con acarreo se utiliz el registro de desplazamiento
visto en clase, este es un registro que permite la carga en paralelo de un nmero de 8 bits y
desplazamiento a la derecha.
CONCLUSIONES
Se logr disear, simular e implementar una mquina de estado, usando el software
libre Quartus II 12.1 para el diseo, Altera Up Simulator para la simulacin y la tarjeta
Deo para la implementacin.
Las mquinas de estado se diferencian de los combinacionales debido a que no slo
dependen de las entradas sino tambin de la secuencia anterior.
La memoria de acceso aleatorio RAM es de gran utilidad ya que nos permite guardar
informacin y posteriormente leer dicha informacin para poder ser usada con algn
fin.
Los contadores ms all de simplemente realizar la funcin de contar pueden ser
utilizados como bloques que nos permiten acceder a la una direccin especifica usando
AND AND
OR
AND AND
OR
AND AND
OR
AND AND
OR
AND AND
OR
AND AND
OR
AND AND
OR
CLK
CLR
Q7 Q6 Q5 Q4
Q3 Q2 Q1 Q0
D7
D6 D5 D4 D3
D2 D1 D0
Q D
RESET
D Q
RESET
D Q
RESET
RESET
D Q
RESET
D Q
RESET
D Q
RESET
D Q
RESET
CARGA
NOT
Q D
solo un pulsador y por tanto ahorrndonos espacio en el hardware del dispositivo a
implementar.
Los registros de desplazamiento son de gran utilidad para guardar informacin
temporalmente.
Es importante saber con qu cantidad de elementos tiles cuenta nuestra tarjeta en la
cual vamos a implementar para de esta forma optimizar el circuito mediante
codificaciones; Tambin para saber previamente si se necesitan o no switches y/o
pulsadores adicionales.
REFERENCIAS
1
: Cuando se crea la Memoria RAM una de sus entradas toma el nombre de address, a este se
conecta el contador.
2
: Urbano M. Fernando A. Notas de clase. Circuitos Digitales I. Departamento de Telemtica,
FIET. Ingeniera Electrnica y Telecomunicaciones. Universidad del Cauca. Popayn,
Colombia. Noviembre de 2013.