Documentos de Académico
Documentos de Profesional
Documentos de Cultura
control que se generan mediante Matlab y Simulink, de tal forma que se genera una
para encender y apagar un led con una frecuencia de 1Hz, así como con una
oscilara el led.
Matlab-Simulink
Programar Funciones
Matlab-Simulink
Archivos Conv. a HDL
Quartus II
Símbolos
Quartus II
Diagrama
Quartus II
Asignación de Pines
+ Compilación
Quartus II
Programar FPGA Juan Camilo Marulanda I
Universidad Autónoma De Manizales
2016
Figura 1 Metodología
Para iniciar calculamos la base del reloj que utilizaremos para la tarjeta DE0-Nano el
cual tiene capacidad para manejar relojes que van desde 200ns a 850µs y usaremos
una base de 100µs con el propósito de generar pulsos de 1 segundo de duración para
Simulink.
Abrir Simulink
hacer que el led oscile con la frecuencia deseada de 1 Hz. ó con 5 Hz.
Así si usamos una base de tiempo de 100µs, esto es 0.000100 segundos así para
generar 1 segundo tenemos que multiplicar por 10000, si queremos el led apagado el
50% del tiempo y encendido el otro 50% entonces hacemos uso de un comparador el
Y con la misma base de tiempo para generar una frecuencia de 5 Hz. requerimos un
tiempo de t = 1/f = 1/5 Hz = 0.2 segundos, así si tenemos 0.000100 segundos para
generar 0.2 segundos debemos multiplicar por 2000 y para el ciclo de trabajo del 50%
Arrastramos al
nuevo modelo
Figura 6 Contador
Y con doble click derecho del mouse sobre el bloque Counter Limited abrimos sus
Introducimos 10000
en upper limit para
generar 1 segundo
Doble click derecho
del mouse
Repetimos los pasos anteriores para introducir un nuevo contador y generarle la base
Introducimos
Doble click derecho 2000 en upper
del mouse limit para generar
0.2 segundos
se muestra en la
Introducimos 5000
para el primer
comparador y 2000
para el segundo
comparador en
Constant Value
De Commonly
Used Blocks
Seleccionamos Switch y lo
arrastramos al modelo
Figura 11 Switch
Juan Camilo Marulanda I
Universidad Autónoma De Manizales
2016
Seleccionamos una entrada selectora para activar el switch, una salida y conectamos
Seleccionamos y
arrastramos al
modelo, conectamos
y renombramos la
entrada y la salida
donde pongamos todos los archivos del proyecto quedando como la Figura 13 Modelo
metodología:
15 Configuración Solver
Seleccionamos
discrete
Seleccionamos
Seleccionamos 1 lo que
Solver significa que es
Seleccionamos un ciclo
Fixed-step
En Target seleccionamos
el archivo que estamos
trabajando, el lenguaje
VHDL y el folder de
trabajo
Seleccion
amos HDL
Seleccionamos
Code Generamos el
Generate HDL Code
Generator código
En este archivo se
Importante que muestre cero encuentra nuestro código
errores
-- -------------------------------------------------------------
--
-- File Name: C:\Users\MA\Desktop\Ejemplo1\LEDONOFF\LEDONOFF.vhd
-- Created: 2016-03-02 20:12:27
--
-- Generated by MATLAB 8.3 and HDL Coder 3.4
--
--
-- -------------------------------------------------------------
-- Rate and Clocking Details
-- -------------------------------------------------------------
-- Model base rate: 1
-- Target subsystem base rate: 1
--
--
-- Clock Enable Sample Time
-- -------------------------------------------------------------
-- ce_out 1
-- -------------------------------------------------------------
--
--
-- Output Signal Clock Enable Sample Time
-- -------------------------------------------------------------
-- led_0 ce_out 1
-- -------------------------------------------------------------
--
-- -------------------------------------------------------------
-- -------------------------------------------------------------
--
-- Module: LEDONOFF
-- Source Path: LEDONOFF/LEDONOFF
-- Hierarchy Level: 0
--
-- -------------------------------------------------------------
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.numeric_std.ALL;
ENTITY LEDONOFF IS
PORT( clk : IN std_logic;
reset : IN std_logic;
clk_enable : IN std_logic;
Key1 : IN std_logic;
ce_out : OUT std_logic;
led_0 : OUT std_logic
);
END LEDONOFF;
-- Signals
SIGNAL enb : std_logic;
SIGNAL switch_compare_1 : std_logic;
SIGNAL Counter_Limited1_count : unsigned(15 DOWNTO 0); -- ufix16
SIGNAL Counter_Limited1_out1 : unsigned(15 DOWNTO 0); -- uint16
SIGNAL Compare_To_Constant1_out1 : std_logic;
BEGIN
enb <= clk_enable;
END rtl;
Nuevo proyecto en File, New Project Wizard como se muestra en la Figura 18 New
Una vez hecho esto seguimos con la configuración dándole click al botón de Next y
agregamos nuestro archivo hdl generado con Matlab como se muestra en la Figura 20
Selección de Archivo
Buscamos el archivo y le
damos click al botón Add y
después a Next
para evitar dañarlos por accidente, activando el estado de alta impedancia (Tri-state)
para ello nos vamos al menú de Assigments --- Device --- Device and Pins Options---
unused pins ---- as input tri-state como se ve en la Figura 22 Configurando los pins no
File
Selección de AtPLL.
50 MHz
Figura 27 No Check-ups
Figura 27 No Check-ups
10 MHz y
Finalizamos
Seleccionamos Processing---- > Start ---- > Start Analysis & Synthesis
Y nos sale la siguiente pantalla en donde verificamos que la fpga está conectada,
El cual abre la siguiente Pantalla y podemos capturar los datos de nuestro experimento