Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CONTADOR DE 0 A 16
DESARROLLO:
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 HDL 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.
o Posteriormente
siguiente: escribimos nuestro código, que en este caso seria el
SUBDESIGN Contador16
(
CLK : INPUT;
RESETN : INPUT;
CONTA[5..0] : OUTPUT;
SALIDA : OUTPUT;
)
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 pines
o Para asignar los pines creados en el proyecto a los del FPGA, accedemos al menú
Assignments>Pins .
- Simulación.
o La simulación de onda nos permitirá visualizar el comportamiento de
nuestro diseño, para comprobar si tienen un funcionamiento correcto antes de
descargar el firmware.
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.
- Programación