(Practica 1 Diseño de sistemas digitales) · Practica 1 Diseño de sistemas digitales...

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

Transcript of (Practica 1 Diseño de sistemas digitales) · Practica 1 Diseño de sistemas digitales...

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.

¿Que tiene?

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”)

Después buscamos en el browser nuestro archivo BIT

Se escoge ejemplo1.bit

Se acepta esto cada vez que salga (dos veces)

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

YES

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.

F= 50 000 000 hz si queremos a 10hz frec. Sa.l/frec. Ent. =2x10 e-8 es la cuenta