Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Practica1 Cuartus
Practica1 Cuartus
CONTADOR DE 0 A 16
DESARROLLO:
o En la siguiente ventana del asistente se nos pide seleccionar los archivos que
deseamos asignar al proyecto. Si se tiene un archivo existente (diagrama a bloque,
texto, etc.), se puede agregar al proyecto, sino, continúe sin agregar nada.
o Posteriormente tendremos que seleccionar el dispositivo que se va a usar para
descargar el firmware (EP2C8Q208C7).
o Una vez teniendo toda esta información podemos generar el proyecto, dando click en
finish. Se presentara un resumen de las características del proyecto.
En el diagrama a flujo podemos visualizar la lógica que vamos a necesitar para generar
nuestro código correcto. Una vez declaradas las variables que usaremos, accedemos al
primer estado de nuestra máquina, que esta demarcada con rojo, en esta se pregunta por
el valor de CONTA[ ] , la cual se compara con 16, si es menor se suma en 1 a dicho
valor, si esta condición es falsa, es decir, que ya alcanzo el valor de 16, se accede al otro
estado, marcado en azul, donde ahora la comparación es con cero. Si esta condición es
verdadera, se descuenta 1 a CONTA[ ], en caso contrario, es decir, que ya haya
alcanzado el cero, se regresa al primer estado para continuar el ciclo.
o Usamos el lenguaje AHDL que es bastante simple y versátil para comenzar a construir
nuestro código. Declaramos nuestra variable conta la cual será flip-flop D “DFF” para
que no haya pérdida de datos.
o Una vez declarando nuestras señales, y las variables que ocuparemos. Asignamos en
“BEGIN”, una señal de reloj y de reset a las variables que tengamos (conta[]).
o También tenemos que tomar en cuenta que en cada de estado de una máquina de
estados, se tiene que refrescar las variables que ocupemos, esto es para evitar una
perdida e información al pasar de un estado a otro.
VARIABLE
conta[5..0] :DFF;
estados :machine with states (ST0, ST1);
BEGIN
conta[].(clk,clrn)= (clk,resetN);
estados.(clk,reset)= (clk,!resetN);
CASE estados IS
WHEN ST0=>
IF conta[]<16 THEN
conta[]=conta[]+1;
ELSE
conta[].d=conta[].q;
estados=ST1;
END IF;
END CASE;
END;
- Generación de nuestro diagrama a bloques.
o Después de escribir el código guardamos el archivo con el nombre que escribimos
después de SUBDESIGN en nuestro código (contador16), este nombre tiene que ser
diferente del nombre del proyecto.
o Después de asignar los pines podemos cambiar los nombres asignados por default
por los de nuestro diagrama.
- Asignación de terminales
o Para asignar los terminales creados en el proyecto a los del FPGA, accedemos al
menú Assignments>Pins .
o Para colocar nuestras señales accedemos a node finder (View -> Utility Windows),
con esta herramienta podemos visualizar todos las señales que tengamos en nuestro
proyecto. Por default, en Look in aparece el proyecto actual. Damos click en List
para ver todos los nodos que se han encontrado.
o CLK necesitamos que sea una señal de reloj, por lo que a esta le hacemos lo mismo
que la señal anterior pero en lugar de forcing high, le asignamos una señal clock, con
lo que se abre una ventana donde podemos configura el periodo y la fase de la señal
de reloj, ponemos 100 MHz y damos OK.
o Podemos seleccionar segmentos de la recta para poder dar un valor alto, bajo, etc.
Esto lo podemos hacer para asignar le valor bajo o alto a la señal Ascendente para
cambiar el sentido del conteo en el momento que sea de la simulación.
o Ya que tengamos nuestra señal de reloj asignada y nuestro reset en alto podremos
guardar nuestro archivo y comenzar la simulación. Esto lo hacemos con Start
Simulation
- Programación