You are on page 1of 19

SEP. SEST. DGEST.

INSTITUTO TECNOLOGICO DE LA PIEDAD

INGENIERIA ELECTRONICA

6º E.

MAQUINAS ELECTRICAS

PROFESOR: RODOLFO HERNANDEZ RODRIGUEZ

ALUMNO:

LAUREANO CHICUELLAR DELÍN

Ensayo sobre el curso de fpga y lenguaje de programación vhdl

LA PIEDAD MICHOACAN 18-04-2010


Los FPGAs por sus siglas en ingles Field Programmable Gate Array que quiere
decir arreglo de compuertas programables, Es un dispositivo semiconductor que
contiene bloques de lógica cuya interconexión y funcionalidad se puede
programar. El cual puede realizar operaciones básicas hasta algunas mas
complejas.

Las FPGAs se utilizan en aplicaciones similares a los ASICs sin embargo son más
lentas, tienen un mayor consumo de potencia y no pueden abarcar sistemas tan
complejos como ellos. A pesar de esto, las FPGAs tienen las ventajas de ser
reprogramables (lo que añade una enorme flexibilidad al flujo de diseño), sus
costes de desarrollo y adquisición son mucho menores para pequeñas cantidades
de dispositivos y el tiempo de desarrollo es también menor.

Y el lenguaje de programación que se utiliza para programas estas maravillosas


tarjetas es el vhdl el cual se uso en el curso y por sus siglas en ingles Hardware
Description Language significa lenguaje de descripción de hardware y pues de
gran utilidad para programar nuestras tarjetas, además de ser un lenguaje
definido por el IEEE usado por ingenieros para describir circuitos digitales.

En nuestro curso el FPGA que utilizamos fue la tarjeta basys 2 y el programa que
se utilizo fue el ISE 10.1 de xilinx.
El programa que se utilizo fue el ISE 10.1 de xilinx.

Bueno ya descrito un poco acerca de los FPGAs y el lenguaje de programación


pasaremos a lo que se llevo a cabo en el curso.

Como primer ejercicio fue hacer un diseño de un sumador utilizando el programa


ISE de xilinx .

El primer paso fue crear el código de nuestro sumador el cual se muestra a


continuación

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_SIGNED.ALL;

entity sum_res_beh_cs is

Port ( a : in STD_LOGIC_VECTOR (3 downto 0);


b : in STD_LOGIC_VECTOR (3 downto 0);

c : out STD_LOGIC_VECTOR (4 downto 0);

s_r : in std_logic);

end sum_res_beh_cs ;

architecture Behavioral of sum_res_beh_cs is

begin

process (s_r, a, b)

begin

if s_r ='0' then

c<= (a(3) & a) + (b(3) & b);

else

c<= (a(3) & a) - (b(3) & b);

end if;

end process;

end Behavioral;

Al igual que todos los códigos de programación existen librerías declaramos


variables, se cumplen condiciones etc.

Ya creado nuestro código sin errores, pasamos a lo que es la asignación de los


pines o las patitas de la tarjeta que utilizaremos para nuestro diseño.

Para esto creamos un archivo .ufc, con ayuda de los manuales de la targeta
asignaremos los pines que utilizaremos para nuestro diseño.

A continuación se muestra la asignación de dichos pines en el archivo.ucf

# entrada operando a (switches, bits 3 a 0)


NET "a<0>" LOC = "P11"; # Bank = 2, Pin name = IP, Sch name =
SW0

NET "a<1>" LOC = "L3"; # Bank = 3, Pin name = IP, Sch name =
SW1

NET "a<2>" LOC = "K3"; # Bank = 3, Pin name = IO(3S100E)/IP(3S250E),Sch


name = SW2

NET "a<3>" LOC = "B4"; # Bank = 3, Pin name = IP Sch name =


SW3

# entrada operando b (switches, bits 7 a 4)

NET "b<0>" LOC = "G3"; # Bank = 3, Pin name = IP, Sch name =
SW4

NET "b<1>" LOC = "F3"; # Bank = 3, Pin name = IP/VREF_3, Sch name
= SW5

NET "b<2>" LOC = "E2"; # Bank = 3, Pin name = IO(3S100E)/IP(3S250E),Sch


name = SW6

NET "b<3>" LOC = "N3"; # Bank = 3, Pin name = IP, Sch name =
SW7

# salida resultado c

NET "c<0>" LOC = "M5"; # Bank = 3, Pin name = IO_L4N_3/GCLK21 Sch


name = LD0

NET "c<1>" LOC = "M11"; # Bank = 3, Pin name = IO_L4P_3/GCLK20 Sch


name = LD1

NET "c<2>" LOC = "P7"; # Bank = 3, Pin name = IO_L3N_3, Sch name
= LD2
NET "c<3>" LOC = "P6"; # Bank = 3, Pin name = IO_L3P_3, Sch name =
LD3

NET "c<4>" LOC = "N5"; # Bank = 3, Pin name = IO_L2N_3/VREF_3, Sch


name = LD4

# Selección (botón 0)

NET "s_r" LOC = "G12"; # Bank = 2, Pin name = IP, Sch name =
BTN0

Como podemos ver aqui se muestran la asignacion de las patas para los switch de
entradas de solidas , y el boton seleccionador de suma o resta. Ya teniendo los
dos archivos los guardamos en una carpeta donde sea factible encontrarlos para
después usarlos.

Ahora para crear nuestro diseño, ejecutamos el programa de ISE

Ya ejecutado nos aparecerá el programa .


Ahora nos vamos a la barra de tareas y le damos click en file y ahí mismo le
damos click a new proyect.

Aparecera una nueva ventana donde podemos ponerle el nombre y la hubicacion


de nuestro proyecto se recomienda situarlo en la carpeta que contiene nuestro
código y el archivo.ucf.
Le damos next la siguiente ventana que aparece se muestra a continuación:
Aquí solo se modifica la parte de arriba con excepción de produc category la
siguente la familia depende de la tarjeta en este caso es spartan 3E
Después en device también depende de la tarjeta en este caso es la de XC35100

El empaquetamiento en la parte de atrás de la tarjeta lo muestra en este caso


CP132.
Y la velocidad en -5 como se muestra en la figura.

Los demás recuadros se quedan tal y como aparecen.


Después damos next y se mostrara una nueva ventana.

En la cual no se le modifica nada.

Damos next en esta ventana agregaremos al proyecto los dos archivos que
habíamos guardado, el .vhd y el .ufc.

Le damos add source y seleccionamos nuestros archivos que guardamos.


Le damos abrir.

Ahora next y nos abrirá un resumen de los archivos cargados.


Le damos finish y abrirá una nueva ventana que nos dira que se cargaron
correctamente nuestros archivos.
Le damos ok y la suiguente ventana se muestra ya los archivos agregados

En el lado derecho muestra un resumen de todo lo que hemos hecho


anteriormente a lado izquierdo se muestra los archivos agregados y en proces los
pasos para generar nuestro archivo de programa, que son: Sintetizar,
implementar, generar archivo de configuración y configurar fpga.

Ahora se le da doble click en synthesize-XST que es el primer paso para crear


nuestro proyecto

Aquí se muestra como esta cargando para verificar que no haya errores en el
código o en el archivo .ucf

Aquí se muestra que no hay errores en los archivos.

También podemos observar nuestro diseño.

Solo le damos click a synthesize-XST el el simbolito de + y le damos click a view


synthesis repor, y veremos nuestro diseño de un sumador
También podemos ver la coneccion dentro de nuestro diseño dándole doble click
al sumador.
Ahora seguimos y damos doble click en implement dising y también se muestra
correcto-
Ahora damos doble click en generate programming file. Aquí se generara el
archivo que se cargara a la tarjeta .

Después de generar el archivo que se cargara en la tarjeta para demostrar nuestro


diseño instalamos el programa de adept que nos ayuda a grabar la memoria de la
tarjeta.
Cargamos el archivo que creó el programa y que se encuentra en nuestra carpeta
de sumador pero necesitamos tener conectada la tarjeta.

También se realizaron otros proyectos como lo son: un contador de 4 bits,


contador del 0 al 9 ascendente y descendente, contador de 4 dígitos a vcd,
memoria suma sin signo.

Y para realizar estos proyectos se siguen los mismos pasos que el sumador
explicado anteriormente.

Solo falta demostrarlo con videos

Que se mostraran más adelante.

You might also like