Está en la página 1de 13

Practica 1.

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:

- Creacin del proyecto:


o

Para crear un nuevo proyecto ir al men File>New Project Wizard

A continuacin aparecer el asistente para la creacin de proyectos, deberemos


asignar la direccin donde ser guardado el proyecto (de preferencia crear una
carpeta en donde se almacenen los proyectos) as mismo asignaremos un nombre al
proyecto (ejemplo: contador) y el nombre la entidad principal de diseo (ejemplo:
contador).

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.

Posteriormente tendremos que seleccionar el dispositivo que se va a usar para


descargar el firmware (EP2C8Q208C7).

Una vez teniendo toda esta informacin podemos generar el proyecto, dando click en
finish. Se presentara un resumen de las caractersticas del proyecto.

- Generacin de nuestro cdigo.


o Lo primero que se tiene que hacer antes de comenzar a escribir nuestro cdigo es
realizar nuestro diagrama de flujo. En este caso tenemos que disearlo para un contador
ascendente descendente de 0 a 16, con un indicador que se activa cuando llegue a 16.
En el diagrama a flujo podemos visualizar la lgica que vamos a necesitar para generar
nuestro cdigo correcto. Una vez declaradas las variables que usaremos, accedemos al
primer estado de nuestra mquina, 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 condicin es falsa, es decir, que ya alcanzo el valor de 16, se accede al otro
estado, marcado en azul, donde ahora la comparacin es con cero. Si esta condicin 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 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.

Accedemos a la opcin File>New. En la ventana que se abre seleccionamos AHDL


File

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;

- Generacin de nuestro diagrama a bloques.


o

Despus de escribir el cdigo guardamos el archivo con el nombre que escribimos


despus de SUBDESIGN en nuestro cdigo (contador16), este nombre tiene que ser
diferente del nombre del proyecto.

Aun en nuestro cdigo en AHDL, accedemos


File>Create/Update>Create Symbol Files for current file.

la

opcin

o Posteriormente creamos un nuevo archivo en File>New>Block Diagram/Schematic


File e insertamos el grafico creado dando click derecho con el mouse
seleccionando Insert>Symbol o con el icono
o El diagrama creado se encuentra en la librera del proyecto.

Despus asignamos los pines de entrada y salida estos se encuentran en la librera


C/:Altera/quartus50/libraries/primitives/pin

Despus de asignar los pines podemos cambiar los nombres asignados por default
por los de nuestro diagrama.

o Guardamos el archivo con el mismo nombre del proyecto (contador) y empezamos el


anlisis con la herramienta Processing>Start Compilation.
o Al terminar, el diagrama quedara como el de la siguiente figura:

- 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.

Seleccionamos en la columna To el valor de la entada o salida que


queremos asignar y enseguida se define el numero de pin.

o Terminando la asignacin de pines debemos guardar los archivos creados.

o Posteriormente podemos compilar el proyecto mediante el men Processing>Start


Compilation.

o Al finalizar el proceso de compilado observaremos que el numero de pin ya es


asignado al diagrama de bloques.

- Simulacin.
o

La simulacin de onda nos permitir visualizar el comportamiento de


nuestro diseo, para comprobar si tienen un funcionamiento correcto antes de
descargar el firmware.

Abrimos el men New (File menu), y accedemos a la pestaa Other files, en la


cual damos click en Vector Waveform File, con lo cual abrimos un documento se
simulacin de onda.

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.

El espacio de trabajo se divide en dos secciones, una donde se encuentran los


nombres de los nodos y su valor, y en la otra una escala de tiempo para ver los
cambios en la simulacin.

De Node Finder, podemos arrastrar las seales que queramos hacia el espacio de
trabajo en donde dice Name. En este caso agregaremos todas

Tenemos 3 entradas y dos salidas, podemos manipular los valores de nuestras


entradas para ver el comportamiento de las salidas.

Seleccionamos la seal RESETN y damos click derecho, en el men que aparece


accedemos a value y seleccionamos forcing high, con lo que RESETN se pondr en
alto en toda la recta de simulacin.

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

Ahora podemos visualizar la simulacin completa en el intervalo de tiempo que


deseemos.

- Programacin
o

Para grabar el firmware en el dispositivo debemos comprobar que los siguientes


parmetros tengan los valores correctos:

En assignments>Device>Device & Pin options>General>Configuration scheme


seleccionamos Passive Serial. Y en Configuration Device EPC2.

En assignments>Device>Device & Pin options>Unused Pins>Reserve all unused


pins, seleccionamos As inputs, tri-stated

Posteriormente podemos programar nuestro firmware con la opcin


Tools>Programmer
o Seleccionamos el archivo de configuracin (extensin pof).
o

La siguiente imagen muestra el correcto funcionamiento del programa ya implementado


en el FPGA

También podría gustarte