MANUAL. Practica 1 Diseño de sistemas digitales
(telecomunicaciones) con KIT basys2 Xilinx FCHE-MAIC 26/10/11
Objetivo1: conocer cómo funciona la tarjeta
Objetivo2: Comprender como se construyen sistemas digitales con el KIT basys2 y software xilinx
Objetivo3: activar el reloj
INTRODUCCION. Cómo funciona la tarjeta basys2 Es una tarjeta FPGA que permite diseñar miles de compuertas, solo programando hardware
mediante VHDL.
Cada elemento, ya sea switchs, leds y push botom(o pulsadores), se les asigna un pin para que se
enlace. La asignación de pines de acuerdo al elemento, se observa a continuación.
Experimento 1.
Al final se espera: Que el alumno aprenda a utilizar el software y hardware para un ejemplo
sencillo.
Objetivo: Programar una compuerta AND, las dos entradas estarán asignadas a dos push botom
(para el push botom 0 le corresponde el pin G12 , y el push botom 1 le corresponde el pin C11),
ambos utilizaremos y la salida la conectaremos a un led, se escoge el LD0 con pin M5.
Tenemos que tener instalado Xilinx, y Diligent Adept.
(Todos los programas Xilinx ise 8.2i, después submenú: Project navigator)
Debe aparecer así, sino en menú File selecciona “Close Projet”
1) Crear un nuevo proyecto
2) Le llamamos ejemplo 1, y next.
3) Configurar la tarjeta basys2, de esta manera. Next.
4) Seleccionamos NEW SOURCE
5) Seleccionamos de la izquierda la opción “VHDL Module” y nombramos el archivo:
ejemplo1, luego NEXT.
6) Como es una AND la que vamos a realizar, las entradas le llamamos A y B y la salida C
7) Estos valores se insertan a continuación, también se debe seleccionar si es entrada (in) o
salida (out), después NEXT
8) Después finish, next, next, finish. Y te queda esta pantalla.
9) De esta pantalla seleccionamos la pestaña: ejemplo1.vhd
10) Aparece el código a continuación y comentarios con líneas de color verde.
11) Entonces solo trabajaremos en esta parte del código. Quitemos los comentarios que están
de color verde. (los comentarios se crean con dos guiones). Debe quedar así.
12) En entity se declaran los puertos de entrada y salida, esta entidad se le pone un nombre
aquí se le llama: ejemplo1.
13) En Architecture se coloca el comportamiento de nuestro circuito, dadas las entradas y
salidas de la entidad. El comportamiento de nuestro proyecto es una “and”.
Asi es que se coloca entre begin y End, lo siguiente:
C<=Aand B;
Para asignar se utiliza <=
“ and “ es una palabra reservada
Al final de cada comando se escribe punto y coma.
observemoslo :
14) Chequemos sintaxis, dentro de sources (izquierda en medio), debe estar seleccionado
synthesize, y en process(abajo izquierda) dentro del menú “synthesize” esta “check
syntax” doble click.
Guardamos
Y tenemos en el recuadrado de abajo que salen varios avisos que se está compilando, y si
no está equivocado saldrá exitosamente “successfully”
Si estuviese equivocado checa con cuidado el código, letras mayúsculas deben ir en
mayúscula, punto y coma al final. Y vuelve a checar la sintaxis.
Ya sabiendo que está bien escrito el programa procedemos con asignar pines; en process
se escoge menú “, user constraint”. Adentro tenemos “assign Package Pins” y aparece
caja de dialogo donde se escribirán los valores de los pines. (Una caja de dialogo
intermedia para crear UCF, se debe decir “yes”)
Los nombres de los pines los dijimos al inicio que se sacaron de la tarjeta o de la tabla de
asignación de pines dada. Habíamos quedado entrada “A” el pin “C11” en la entrada ”B”
el pin ”g1” y en el led “C “ de pin ” m5”.
Ahora se guarda y cierra, estamos otra vez en la ventana anterior y ahora lo que se hace es
darle DOBLE click a tres cosas 1) sinthesize 2) Implement Design y 3) generate
programming File, en los iconos de
En la tercera opción te muestra esto, solo ciérralo.
Finalmente, si todo salió bien tendremos la pantalla siguiente.
Sino checa los numero de pines si coinciden a lo pedido.
Si todo sale bien, ya se genero un archivo .bit dentro del folder donde se ubica este
programa que hicimos.
Ahora vamos a descargarlo a la tarjeta basys2:
Requerimos el software de Adept de Diligent ya instalado, requerimos abrirlo.(todos los
programas, Diligent, Adept,se llama Adept ).
Si no está conectada la tarjeta ni prendida, te saldrá así:
Tenemos dos opciones, para ambas, conectar la tarjeta al USB y además el power (switch
de encendido que esta a la izquierda) de la tarjeta basys2, lo pones en ON.
Opción 1 escoges connect: la opción de “basys2”
Opcion2 Cierra la aplicación, y se vuelve a abrir ya con todo conectado y prendido.
(Si estuviese conectado pero apagado solo se debe inicializar la cadena , dándole click al
botón:” Initialize Chain”)
Y ahora solo programar y probar la tarjeta. Si se descargo bien a la tarjeta se mostrara lo
siguiente. (Si fallo el programa, checa, esta prendida la tarjeta?
Checa los pines si se grabaron adecuadamente.)
Ya se descargó a la tarjeta exitosamente. Solo resta probar en la tarjeta moviendo los dos
switch dados y checar que con los dos switch en ON se prende el led específico
únicamente.
En xilinx se escoge la opción CERRAR PROYECTO: “ Close project”.(NO close solo). En el
menú FILE.
Siempre recuerda al terminar cerrar proyecto.
En la tajeta Basys2, después de utilizarla solo apaga el switch de power.
FIN practica 1
Ejercicio: realiza una OR con entrada en el swith5 y switch 6 y que se prenda el led1.
Antes de empezar un proyecto nuevo checa que esté cerrado algún proyecto, en menú
FILE y submenu: “ Close project”
Practica 2. Conectando el reloj a un LED.
En la basys2 se tiene un reloj interno de 50mhz, si lo conectamos directamente a un led, el
parpadeo de prender y apagar que produce el reloj en un tiempo determinado será
imperceptible para los ojos. De manera que debemos realizar un divisor de frecuencias,
produciendo retardos de tiempo con un contador y al final conectarle el LED.
PARTE 1:
Primero se programara directamente y checaremos que el LED no se nota el parpadeo.
Entramos a Xilinx, vhdl modulo, como entrada será clk y salida un LED.
A la entrada solo se activa el reloj interno con el pin B8.
A la salida para el LED escogeremos el LED7 con pin G1
Resultado final: se prende solo el led 7 y se mantiene prendido todo el tiempo.
AL final, por favor apara el switch de la tarjeta.
Termina parte 1.
PARTE 2. Realizar el divisor de frecuencias.
Como entrada se tiene el reloj interno con pin b8, llamado CLK
Internamente tendremos un bloque donde ya se creó un retardo a propósito, al final de
ese retardo se le conectara el led.
A la salida del retardo se le conectara el LED7 con pin g1, Llamado LED.
En la parte interna se producirá un retardo o “delay”, con un ciclo.
La variable que estará variando será CLK, ya que a esta tenemos conectado el reloj
interno.
Si en el reloj se tiene una transición de cero a 1, entonces solo se verificara si ya se llego a
un tiempo dado, si es así, entonces se realiza una cuenta, pero si no, se reinicializa el
conteo; sumándole un uno a la variable: cuenta. Entonces después de lo que haya
pasado, solo se verifica si cuenta es menor que la mitad del reloj (25 mil), si es así, prende
Led, sino apaga Led.
Por otro lado se intenta con el código siguiente que se mantenga prendido a la mitad del
tiempo y se apague la otra mitad.
Checa de respuesta que al pasar el programa a la tarjeta, se prendera y apagara
automaticamente el led designado.