Lab 4 2020 2
Lab 4 2020 2
Lab 4 2020 2
Resumen— En esta práctica de laboratorio se implementa un sistema lineal en Quartus II® y se realiza la prueba y simulación en
Matlab®. El objetivo de esta práctica es verificar los resultados obtenidos de ejercicios teóricos, mediante el uso de Matlab y Quartus
II.
I. INTRODUCCIÓN
Para la práctica se plantea implementar una ecuación en diferencia en Quartus II®, software que permite diseñar y
simular circuitos digitales;. La ecuación a implementar se presenta en la Eq.1
5 1
𝑌(𝑛) = 6 𝑌(𝑛−1) − 6 𝑌(𝑛−2) + 𝑋(𝑛) (1)
Si se considera un ADC de 10 bits, se puede realizar el escalamiento de cada uno de los coeficientes del filtro por 2 10
o lo mismo multiplicar por 1024 cada coeficiente en la ecuación.
A. Implementación en Quartus®
Para implementar el sistema 𝑌(𝑛) en Quartus se usa el entorno grafico ver fig.1 para poder utilizar la herramienta de
diseño MegaWizard plug-in manager, el cual permite generar bloques lógicos que desarrollen procesos matemáticos como
sumas, restas o procesos lógicos como compuertas lógicas o registros que retienen una muestra pasada de la salida del
sistema.
Para poder analizar el comportamiento del circuito, se genera un vector de formas en el cual se establece un valor de las
señales de entrada; para el caso del reloj, se emplea una señal digital periódica, con un periodo menor al mayor tiempo de
retardo del sistema; para la entrada 𝑋(𝑛) se ingresa un impulso en este caso un valor de 1, pero como el diseño esta escalado,
el valor de entrada para el impulso será de 1024, el cual se simula con un alto en la entrada en un periodo de reloj, esto se
enseña en la fig.2
Para este caso se debe despejar 𝑋(𝑛) de la Eq.1 además de emplear la función de Matlab® Impseq para obtener la
respuesta al impulso del sistema 𝑌(𝑛) .
5 1
𝑌(𝑛) − 𝑌(𝑛−1) + 𝑌(𝑛−2) = 𝑋(𝑛)
6 6
La función impz de Matlab tiene como argumentos b, a y n, donde a es un vector con los coeficientes de 𝑌(𝑛) , b es un
vector con los coeficientes de 𝑋(𝑛) y n es un vector con el número de instantes en los que se va a analizar el sistema.
Para poder comparar la respuesta al impulso obtenida con Matlab, con la respuesta al impulso del circuito digital, se
debe convertir los datos de Matlab® a valores digitales, esto se emplea multiplicando la función impz por 1024
C. Procedimiento
library ieee;
use ieee.std_logic_1164.all;
entity RegisterD is
port (
clk : in std_logic;
enable : in std_logic;
DataIn : in std_logic_vector(15 downto 0);
DataOut : out std_logic_vector(15 downto 0)
);
end entity;
begin
process (clk)
begin
if (rising_edge(clk)) then
if (enable = '1') then
DataOut<=Datain;
end if;
end if;
end process;
end rtl;