Documentos de Académico
Documentos de Profesional
Documentos de Cultura
CONTADOR DE 0 A 16
OBJETIVO: La presente prctica tiene como objetivo disear un contador de 0 a 16,
activando una bandera cuando llega a este valor y el conteo ascendente y descendente se
realiza automticamente llegando a los valores limite de 0 y 16.
DESARROLLO:
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, contine sin agregar nada.
Una vez teniendo toda esta informacin podemos generar el proyecto, dando click en
finish. Se presentara un resumen de las caractersticas del proyecto.
o Usamos el lenguaje AHDL que es bastante simple y verstil para comenzar a construir
nuestro cdigo. Declaramos nuestra variable conta la cual ser flip-flop D DFF para
que no haya prdida de datos.
o Una vez declarando nuestras seales, y las variables que ocuparemos. Asignamos en
BEGIN, una seal de reloj y de reset a las variables que tengamos (conta[]).
o Tambin tenemos que tomar en cuenta que en cada de estado de una mquina de
estados, se tiene que refrescar las variables que ocupemos, esto es para evitar una
perdida e informacin al pasar de un estado a otro.
Procedemos a elaborar el cdigo en base a nuestro diagrama a flujo.
o Posteriormente
escribimos nuestro cdigo, que en este caso seria el
siguiente:
SUBDESIGN Contador16
(
CLK
RESETN
CONTA[5..0]
SALIDA
)
:INPUT;
:INPUT;
:OUTPUT;
: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;
WHEN ST1 =>
IF conta[]>0 THEN
conta[]=conta[]-1;
SALIDA=VCC;
ELSE
conta[].d=conta[].q;
estados=ST0;
END IF;
WHEN OTHERS =>
estados=ST0;
END CASE;
END;
la
opcin
Despus de asignar los pines podemos cambiar los nombres asignados por default
por los de nuestro diagrama.
- Asignacin de terminales
o
Para asignar los terminales creados en el proyecto a los del FPGA, accedemos al
men Assignments>Pins .
Comprobamos que en el men Category este seleccionada la categora
pin.
- Simulacin.
o
Para colocar nuestras seales accedemos a node finder (View -> Utility Windows),
con esta herramienta podemos visualizar todos las seales 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.
De Node Finder, podemos arrastrar las seales que queramos hacia el espacio de
trabajo en donde dice Name. En este caso agregaremos todas
CLK necesitamos que sea una seal de reloj, por lo que a esta le hacemos lo mismo
que la seal anterior pero en lugar de forcing high, le asignamos una seal clock, con
lo que se abre una ventana donde podemos configura el periodo y la fase de la seal
de reloj, ponemos 100 MHz y damos OK.
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 seal Ascendente para
cambiar el sentido del conteo en el momento que sea de la simulacin.
Ya que tengamos nuestra seal de reloj asignada y nuestro reset en alto podremos
guardar nuestro archivo y comenzar la simulacin. Esto lo hacemos con Start
Simulation
- Programacin
o