Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Como puede verse, este cdigo tambin es muy simple, y hace dos cosas:
(a) asigna el valor de salida y (b) se establece el siguiente estado. Todas las
seales de entrada estn presentes en la lista sensibilidad y todas las
combinaciones de entrada/salida estn especificados.
Plantilla de diseo de la mquina de estado estilo #1
Una plantilla completa se muestra a continuacin. Observe que, adems de
los dos procesos presentados anteriormente, tambin definida por el usuario
contiene un tipo de datos enumerado (aqu llamado estado), que enumera
todos los posibles estados de la mquina.
Ejemplo 8.1:
Un contador Contador BCD es un ejemplo de mquina de Moore, por la
salida slo depende de la almacenada (estado actual). Como un simple
circuito y registrado como un secuenciador, puede aplicarse fcilmente en
cualquiera de los dos enfoque: convencional (como ya hemos hecho en
anteriores captulos) o tipo de FSM. El problema con este ltimo es que
cuando el nmero de Estados es grande resulta engorroso enumerarlos
todos, un problema evitado fcilmente utilizando la instruccin LOOP en un
enfoque convencional.
El estado diagrama de un 0-en-9 Contador circular se muestra en la figura
8.2. Los Estados fueron llamados cero, uno, ..., 9, cada nombre
correspondiente al valor decimal de la salida.
Un cdigo VHDL, semejante a la del estilo de diseo de plantilla #1, se
presenta abajo. Un tipo de datos enumerado (Estado) aparece en las lneas
muestra
la
Pag 178
El nmero previsto de flip-flops necesarios para implementar este circuito es
15; tres para almacenar pr_state (la mquina tiene cinco estados, por lo que
se necesitan tres bits para codificarlos), ms de doce para el contador (es
un contador de 12 bits, para ello debe contar hasta timeMAX = 2,700).
Resultados de la simulacin se muestran en la figura 8.11. Para que los
resultados que se ajustan adecuadamente en los grficos, hemos adoptado
los valores de tiempo pequeos, con todas las CONSTANTES iguales a 3
excepto timeTEST, que se hizo igual a 1 Por lo tanto, el sistema es cambiar
el estado cada tres ciclos de reloj cuando est en operacin regular, o cada
ciclo de reloj si est en modo de prueba. Estos dos casos se pueden
observar en los dos primeros grficos de la figura 8.11, respectivamente. El
tercer grfico muestra el modo de espera se active. Como era de esperar,
STBY es asncrona y tiene mayor prioridad que la prueba, haciendo que el
sistema de quedarse en estado YY (estado 4), mientras que STBY est
activo. La seal de prueba, por otra parte, es sncrona, pero no tiene que
esperar a que el estado de temporizacin actual termine para ser activado,
como se puede observar en el segundo grfico.
Ejemplo 8.6: Generador de Seal
Queremos asignar un circuito que, a partir de una seal de reloj CLK, de
origen a la seal outp como se muestra en la figura 8.12 (a). Observe que el
circuito debe funcionar en ambos bordes
8.12
Formas de onda de ejemplo 8.6: (a) outp seal de que se generen a partir
clk y (b) seales intermedias OUT1 y OUT2 (outp = OUT1 y OUT2)
8.5 Problemas
Cada solucin a los problemas que se proponen a continuacin debe ir
acompaada de sntesis y simulacin de resultados. Verificar, al menos, los
siguientes: nmero de flip-flop funcionalidad inferido y el circuito.
Problema 8.1: FSM
Escriba un cdigo VHDL que implementa el FSM descrita por el diagrama de
estados de la figura P8.1.
Problema 8.2: Generador de Seal # 1
Utilizando el enfoque FSM, el diseo de un circuito capaz de generar las dos
seales representadas en la figura p8.2 (OUT1, OUT2) a partir de una seal
de reloj CLK. Las seales son peridicas y tienen el mismo perodo. Sin
embargo, mientras se cambia slo en el flanco ascendente de CLK, el otro
tiene cambios en ambos bordes.
Problema 8.3: Generador de Seal # 2
Diseo de una mquina de estados finitos capaz de generar dos seales,
arriba y abajo, como se ilustra en la figura P8.3. Estas seales son
controladas por dos entradas, GO y STOP. Cuando GO cambia de '0' a '1', la
UP salida debe ir a '1' tambin, pero T 10 ms tarde. Si GO vuelve a '0',
entonces UP debe volver a '0' inmediatamente. Sin embargo, la ABAJO
salida debe ahora ir a '1', de nuevo 10 ms tarde, volviendo a '0' de
inmediato si
son iguales a '' 111 '', entonces todos los desplazadores deben causar un
cambio.
Un cdigo VHDL para el circuito de la figura 9.1 se presenta a continuacin.
Los resultados de la simulacin, la verificacin de la funcionalidad del
circuito, se muestran en la figura 9.2. Como puede verse en este ltimo, la
salida es igual a la entrada cuando los bits de seleccin son iguales a 0 (es
decir, los bits de seleccin iguales a '' 000 ''). Tambin puede verse que,
siempre y cuando ningn bit de valor '1' se desplaza fuera del tonel, la
salida es igual a la entrada multiplicada por 2 (1 bit de seleccin) cuando los
bits de seleccin son iguales a 1 ('' 001 ''), multiplicamos por 4 (2 bits de
seleccin) cuando los bits de seleccin son iguales a 2 ('' 010 ''),
multiplicamos por 8 (3 bits de seleccin) cuando los bits de seleccin son
iguales a 3 ('' 011 ''), y as sucesivamente.
paquete std_logic_arith (lnea 4), la cual es necesaria para operar con dato
SIN SINGO (O CON SIGNO) (a y b fueron declarados como nmeros SIN
SIGNO en la lnea 8)
Por lo tanto, una implementacin VHDL del sumador con acarreo de rizado
es sencillo.
La solucin se muestra a continuacin funciona para cualquier nmero (n)
de bits de entrada , definido por los medios de una declaracin genrica de
la lnea 5. Resultados de la simulacin del circuito sintetizados con el cdigo
de abajo se muestra en la figura 9.7 .
Operador predefinido +
Ya hemos visto que un sumador se puede implementar directamente con el
operador + (Adicin ) (seccin 4.1 ) . En este caso , un tipo de solucin
del acarreo de solucin ser normalmente implementado por el
sintetizador . Si, sin embargo , si queremos que la solucin sea de un tipo
determinado (como el que se presenta a continuacin) , entonces un cdigo
explcito debe ser escrito .
Despus de los ocho bits se han enviado, la salida permanece baja hasta la
prxima transmisin.
Figura 9.16
Resultados de la simulacin del convertidor paralelo a serie.
Pgina 2
Pgina 3
Pgina 6
FSM Enfoque
La seal de la figura 9.20 se puede modelar como una FSM 8-estado.El uso de
un contador desde
0 a 7, se puede establecer que la onda ='0' (primero pulso) cuando el recuento
de = 0, onda= '1' (segundo pulso) cuando el recuento de= 1, y as
sucesivamente, creando as la seal se muestra en la figura. Esta
implementacin requiere un total de cuatro flip-flops: tres a nmero de tiendas
(tres bits),ms uno para almacenar onda (un bit).Recordemos del captulo 8,
apartados 8,2 a 8,3, que el salida de un FSM slo se registra si el estilo de
diseo # 2 se emplea, (seccin 8.3) aqu, porque fallos no son aceptables en
un generador de seal. El cdigo VHDL correspondiente, usando el estilo
dsign # 2 (seccin 8.3), se muestra a continuacin.
Resultados de la simulacin aparecen en la figura 9.21.Comprobacin del
archivo de informe creado por el sin- herramienta de tesis, se compruebe que
un total de cuatro flip-flops fueron efectivamente deducirse de este cdigo.
26 ------------------------------------------------- -
Pgina 11
Como puede verse en la figura 9.25 (a), el circuito tiene un bus de entrada de
datos (data_in), un dato bus de salida (data_out), un bus de direcciones (dir),
adems de reloj (CLK) y habilitacin de escritura (wr_ena) pasadores.Cuando
wr_enable se afirma, en el siguiente flanco ascendente de CLK el vector
presente en data_in se debe almacenar en la posicin especificada por
addr.data_out, en el Por otra parte, debe mostrar constantemente los datos
seleccionados por addr. Desde el registro de punto de vista, el circuito se
puede resumir como en la figura 9.25 (b).
Cuando wr_ena es baja, q est conectado a la entrada del flip-flop, y la
terminal d es abierta, por lo que no hay datos nuevos se escribir en la
memoria.Sin embargo, cuando es wr_ena gir a alta, d est conectada a la
entrada del registro, por lo que en el siguiente flanco ascendente de
clk d se almacenar. Un cdigo VHDL que implementa el circuito de la figura
9.25 se muestra a continuacin. Los capacidad elegida fue de 16 palabras de
longitud de ocho bits cada uno. Observe que el cdigo es totalmente
genrico. Resultados de la simulacin se muestran en la figura 9.26.
10.1 Introduccin
En la parte I del libro, estudiamos todo el fondo y tcnicas de codificacin de
VHDL, entre las que figuran las siguientes:
- Cdigo de estructura: declaraciones de la biblioteca, entidad arquitectura
(captulo 2)
- Tipos de datos (captulo 3)
, los operadores y los atributos (captulo 4)
- declaraciones simultneas y cdigo concurrente (captulo 5)
- instrucciones secuenciales y cdigo secuencial (captulo 6)
- Seales, variables y constantes (captulo 7)
- Diseo de mquinas de estado finito (captulo 8)
- diseos de circuitos adicionales (captulo 9)
Por lo tanto, en trminos de la figura 10.1, podemos decir que hemos
cubierto en detalle todo lo que se necesita para construir el tipo de cdigo
que aparece representado en su lado izquierdo. Una buena comprensin de
Estas nuevas unidades pueden ser ubicadas en el propio cdigo principal (es
decir, en el lado izquierdo de la figura 10.1). Sin embargo, dado que su
finalidad principal es permitir a los fragmentos de cdigo comn para ser
reutilizada y compartida, es ms usual para colocarlos en una biblioteca.
Esto conduce tambin al cdigo de particionamiento, lo cual es til cuando
se trata de cdigos de largo. En resumen, Frecuentemente utilizado trozos
de cdigo puede ser escrita en la forma de los componentes, funciones o
procedimientos, entonces se colocan en un paquete, que finalmente se
compilan en la biblioteca de destino.
10.2 Paquete
10.3 COMPONENTE
que cualquier proyecto puede hacer uso de ellas sin tener que reescribir
explcitamente tales cdigos.
Utilizar (instanciar) un componente, primero debe ser declarado. La sintaxis
correspondiente se muestra a continuacin.
Declaracin de componentes:
Componente instanciacin:
Existen dos formas bsicas para declarar un componente (figura 10.2). Una
vez que hemos diseado y colocada en la biblioteca de destino, podemos
afirmar que en el propio cdigo principal, como se muestra en la figura
10.2(a), o podemos declararla usando un paquete, como en la figura 10.2
(b). Este ltimo se evita la repeticin de la declaracin cada vez que se crea
una instancia del componente. Ejemplos de ambos enfoques se presentan a
continuacin.
Figura 10.5
Generador de paridad genrica a una instancia en el ejemplo 10.5.