Beruflich Dokumente
Kultur Dokumente
5. CAPTURA ESQUEMÁTICA
6. LENGUAJES DE DESCRIPCIÓN
DE HARDWARE
Modos
Como ya se mencionó, uno puede definir
la dirección en el cual el dato es
transferido a través de un puerto. Un
modo puede tener uno de cuato valores:
vectores de bits. Tome el siguiente
ejmplo.
Vector_A = [A3,A2,A1,A0]
Vector_B = [B3,B2,B1,B0]
Vector_SUMA = [S3,S2,S1,S0]
8.1 Flip-flops
El elemento de memoria utilizado Fig 6.3 Diagrama de tiempos contador
indistintamente del tipo de sistema binario 4 bits
secuencial se conoce como flip-flop, cuya
característica es mantener un bit de La presentación del diagrama de tiempos
manera indefinida hasta que a través de de este circuito tiene la finalidad de
una señal cambie de estado. Los más ilustrar el procedimiento que se sigue en
conocidos son SR, JK, T(fig 6.2) y D. la programación, ya que puede observarse
con claridad el incremento que presentan
las salidas cuando se aplica un pulso de
reloj en la entrada.
1. library ieee;
2. use ieee.std_logic_1164.all;
Fig 6.2 Tabla de verdad flip-flop T
3. use work.std_arith.all;
El led enciende siempre y cuando los 4 Para atender el asunto de las direcciones y
dígitos insertados sean iguales a los estado final, se tienen planteados 2
almacenados en la memoria. diseños que se conectan de igual forma en
Ahora la parte que resultaría compleja el mismo numero de pines, pero con
sino contáramos con un PLD. Como la distinta lógica, aquí solo se describirá en
descripción dice que el GAL debe que consiste uno de ellos, el segundo
comparar las salidas de 2 circuitos lo cual diseño podrá ser consultado en un link
serían entradas para el GAL, y en cada externo que se coloca al final del
acierto cambiar de transición o estado documento, el cual solo requiere análisis
para que al llegar a la meta final se de por del código mientras que el alambrado
encendido el led. Además debe genera sigue intacto.
direcciones para saltar entre localidades.
De acuerdo con el análisis requerimos de Generar direcciones para localidades
una maquina tipo Mealy, ya que la salida de memoria
(LED) dependerá de las entradas (A y B). Se plantea utilizar un contador de 4 bits,
Otro punto a destacar es la salida que inicia en 00, el cual su programación
(direcciones) las cuales deberán cambiar y secuencia no es nada nuevo. Con ello
cada que se presiona una tecla, un detalle cada que hay un flanco de subida en el
que se tiene sin cuidado, puesto a que se clock del GAL, cambie de dirección y
trabajara con un sistema síncrono en asegurarse que se guardan o comparan
donde el Ouput Enable del teclado siempre los dígitos siguientes de la clave
actuará como pulso de reloj. de acceso. Independientemente del estado
en que se encuentre el sistema, seguirá
generando direcciones (contando). (ver
figura 8.4)
Diagrama maquina de estados cualquiera de los 4, se debe regresar al
Ahora la descripción de la secuencia. estado inicial puesto que ya no esta
Tenemos que un usuario introduce 4 permitido acceder al sistema. En caso de
números, en cada número se hace una acertar los 4 dígitos, se tiene que pasar de
comparación si lo presionado es igual a la 0 a 1 la salida (LED) que indica permitir
salida de memoria, de ser así pasar a un acceso. Para visualizar esta descripción
siguiente estado, si se equivoca en (ver figura 8.4).
1. library ieee;
2. use ieee.std_logic_1164.all;
3. use ieee.std_logic_arith.all;
4. use work.std_arith.all;
5. entity alarm is port (
6. clk: in std_logic;
7. a: in std_logic_vector(3 dow
nto 0);
8. b: in std_logic_vector(3 dow
nto 0);
9. ledOn: out std_logic;
Fig 8.4 Maquina de estados
10. x: inout std_logic_vector(1
downto 0));
Observe que el camino rojo se toma
siempre y cuando A y B sean iguales, en 11. attribute pin_numbers of alarm: ent
caso contrario se regresa al estado inicial ity is
para así asegurarse de no dar acceso. Para 12. --inputs
el último estado si no coinciden las 13. "b(0):6 b(1):5 b(2):4 b(3):3 "
entradas, el led no enciente, pero si son 14. &
iguales como se llego al último estado,
15. "a(0):10 a(1):9 a(2):8 a(3):7 "
proceden a encenderse.
16. --outputs
S0 S1 S0 0 0 20. "ledOn:17";
S1 S2 S0 0 0 21. end alarm;
S2 S3 S0 0 0 22.
S3 S0 S0 1 0 23. architecture arch_alarm of alarm is
24. type states is (state0,
state1, state2, state3 );
25. signal stado_pres,
stado_fut: states;
26. begin 56. p_reloj: process(clk,x) begin
40. else ty is