Está en la página 1de 79

TUTORIAL PARA EL DISEÑO VLSI CON FPGAS DE

XILINX

- DISEÑO UTILIZANDO LA INTEGRACIÓN ISE XILINX Y


MATLAB/SIMULINK SYSTEM GENERATOR
- SIMULACIÓN UTILIZANDO LOS INSTRUMENTOS VIRTUALES DE
MATLAB/SIMULINK
- COMPROBACIÓN UTILIZANDO LA TARJETA DIGILENT NEXYS 3
INSTALACIONES

• Las versiones que logran una integración de ambos programas son:


Matlab 2013ª e ISE Xilinx 14.7, tanto para 32 como 64 bits y sistema
operativo Windows 7 (para otras versiones consultar lista de
compatibilidad en Internet).
• Instalar primero el Matlab 2013ª .
• Instalar luego el ISE Xilinx 14.7 y en el momento que pregunte si
desea instalar los toolboxes de Xilinx System Generator (XSG) para el
Simulink de Matlab, confirmar dicha acción.
• Cada proyecto debe estar en una carpeta dedicada al mismo.
Estrategia de trabajo integrado con ambas herramientas:

• Utilizar las facilidades de ISE Xilinx para la descripción de módulos VDHL con
particularidades específicas y que no se encuentren en los toolboxes de
Matlab/Simulink/XSG.
• Chequear la sintaxis de estos módulos desde el propio ISE Xilinx.
• Se pudiera utilizar el simulador integrado Isim de ISE Xilinx, aunque éste no brinda
las facilidades de interactividad que ofrece Matlab/Simulink/XSG.
• Utilizar el Matlab/Simulink/XSG como interfaz gráfica de integración de módulos
del toolbox de Xilinx, con módulos diseñados en VHDL (Black Box) y con
instrumentos virtuales propios de Simulink (oscilador, osciloscopio, display, etc.)
• Generar el fichero binario (bitstream) desde Matlab/Simulink/XSG para configurar
la tarjeta Digilent Nexys 3 utilizando la herramienta iMPACT de ISE Xilinx.
Comencemos…… una buena imagen vale más que n
palabras !
Y …… A JUGAR SE HA DICHO!

PERO ………..

Y CÓMO SIMULAR LOS SISTEMAS SECUENCIALES DESCRITOS


EN VHDL ?
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;

-- Uncomment the following library declaration if using


-- arithmetic functions with Signed or Unsigned values
--use IEEE.NUMERIC_STD.ALL;

-- Uncomment the following library declaration if instantiating


-- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;

entity deccount is
Port ( clk : in STD_LOGIC; -- IMPORTANTE: LAS SEÑALES DEBEN SER EL PAR: clk y ce
ce: in STD_LOGIC; -- PARA QUE SIMULINK ENTIENDA QUE ES UN BLOQUE SECUENCIAL
et : in STD_LOGIC;
clr : in STD_LOGIC;
ent : in STD_LOGIC_VECTOR (3 downto 0);
carry : out STD_LOGIC;
-- relojsal : out STD_LOGIC; -- intentando sacar la se;al de reloj;
sal : out STD_LOGIC_VECTOR (3 downto 0);
load : in STD_LOGIC);
end deccount;
En realidad pueden llamarse de otro nombre, pero siempre deben contener las cadenas: clk y ce, Y DEBEN ESTAR
AMBAS Y SER DEL TIPO std_logic.
Cuando el VHDL se incorpore al Black Box éstas señales no aparecerán en el mismo y Simulink utilizará como frecuencia
de la señal de reloj la definida en el System Generator, en Simulink System Period

En Clock pin location, colocar v10

El sistema, cuando genere el fichero


de configuración (*.bit) utilizará esa
señal clk como la señal de 100 MHz.
Este diseño se encuentra en la carpeta D:\tempSimulink\pruebaOK
Su vhdl describe el funcionamiento de un contador decimal (74162):

architecture Behavioral of deccount is

signal temp:std_logic_vector(3 downto 0);


signal sc:std_logic;

begin
-- relojsal <= clk; -- ya probé y no sale. Todo lo que tenga que ver con el reloj y enable del reloj lo maneja XSG
process (clk,clr,load,ce,et)
begin
if (clk='1' and clk'event) then
if clr='0' then
temp<="0000";
elsif load='0' then
temp<= ent;
elsif (ce='0' or et='0') then
temp<=temp;
elsif (temp="0000") then
temp<="0001";
elsif (temp="0001") then
temp<="0010";
elsif (temp="0010") then
temp<="0011";

elsif (temp="0011") then


temp<="0100";
elsif (temp="0100") then
temp<="0101";
elsif (temp="0101") then
temp<="0110";
elsif (temp="0110") then
temp<="0111";
elsif (temp="0111") then
temp<="1000";
elsif (temp="1000") then
temp<="1001";
sc<='1';
elsif (temp="1001") then
temp<="0000";
sc<='0';
end if;
else
temp<=temp;
end if;
end process;
sal<=temp;
carry<=sc;

end Behavioral;
Recuerde activar en el Simulation Mode: ISE Simulator

Observe a continuación los resultados de la simulación tanto


en el osciloscopio como el el Waveform Scope
Observe que la
señal de clock es
interna de 1 sec
tal como se
definió en el token
de System
Generator
Y AHORA ?

AHORA SÍ A “JUGAR” CON LOS DISEÑOS !

PERO ……

Y SI TENGO WINDOWS 10 ?
AHORA SÍ CREO QUE TERMINÉ !