Descargar

Sigma Delta y Sistemas Digitales (PPT) (página 2)

Enviado por Pablo Turmero


Partes: 1, 2, 3
edu.red

Diagrama del A/D Sigma-Delta de 1er orden

edu.red

Análisis del modulador Sigma-Delta

edu.red

Análisis del modulador Sigma-Delta

edu.red

Espectro del “noise shaper” – Sigma-Delta de primer orden

edu.red

Espectro del “noise shaper” – Sigma-Delta de órdenes superiores

edu.red

Entrada/salida de un A/D Sigma-Delta (1er orden)

edu.red

Comparación entre los diferentes A/D’s A/D fs A/D k.fs S-D A/D k.fs Filtro digital Dec Filtro digital Dec

edu.red

Sistemas Digitales: Entidad de diseño Op A Op B Clk Resultado Load

edu.red

Entidad de diseño Op A Op B Clk Resultado Load entity multiplicador is generic(N: natural:= 5); port( OpA: in std_logic_vector(N-1 downto 0); OpB: in std_logic_vector(N-1 downto 0); Load: in std_logic; Clk: in std_logic; Resultado: out std_logic_vector(2*N-1 downto 0) ); end; (Gp:) Puertos de entrada

(Gp:) Puerto de salida

edu.red

Método tradicional de multiplicación Pasos a ejecutar Obtención de los productos parciales (cada producto parcial debe estar desplazado una posición a la izquierda respecto del producto parcial anterior) Suma de los productos parciales para obtener el resultado (Gp:) Productos parciales

(Gp:) Resultado

Multiplicando Multiplicador

edu.red

Arquitectura del multiplicador Hardware básico necesario para la implementación Tres registros (multiplicando, multiplicador y producto) Un sumador destinado a realizar las operaciones parciales

edu.red

Pasos a ejecutar en hardware (operandos sin signo) Arquitectura del multiplicador

edu.red

Arquitectura del multiplicador Arquitectura tentativa (operandos sin signo) Dos registros de N bits (uno para cada operando) Un registro de 2N bits (resultado parciales y resultado final) Un sumador de N bits destinado a realizar las operaciones parciales Un multiplexor

edu.red

Arquitectura optimizada (operandos sin signo) Tres registros de N bits (uno para cada operando y otro para las sumas parciales) Un sumador de N bits destinado a realizar las operaciones parciales Arquitectura del multiplicador (Gp:) Diferencia con la arquitectura anterior

edu.red

Arquitectura del multiplicador Arquitectura optimizada: funcionamiento

edu.red

Arquitectura del multiplicador Arquitectura optimizada: funcionamiento (operandos sin signo)

edu.red

Arquitectura del multiplicador Ejemplo: 5 x 6

edu.red

Código VHDL – Aquitectura Contenido de la arquitectura del componente multiplicador: Declaración del componente registro Declaración del componente sumador Declaración de señales a utilizar Instanciación del registro A Instanciación del registro B Instanciación del registro P Instanciación del sumador Descripción inline de los dos multiplexores Descripción de las señales de entrada de los registros P y B Descripción del resultado

Parte declarativa

edu.red

Código VHDL – Aquitectura Contenido de la arquitectura del componente multiplicador (parte declarativa):

(Gp:) component sumador is generic(N: integer:= 4); port( A: in std_logic_vector(N-1 downto 0); B: in std_logic_vector(N-1 downto 0); Cin: in std_logic; Sal: out std_logic_vector(N-1 downto 0); Cout: out std_logic ); end component;

(Gp:) component registro is generic(N: integer:= 4); port( D: in std_logic_vector(N-1 downto 0); clk: in std_logic; rst: in std_logic; ena: in std_logic; Q: out std_logic_vector(2*N-1 downto 0) ); end component;

(Gp:) signal entP, entB, salP, salSum, salB, salA, aux: std_logic_vector(N-1 downto 0); signal Co: std_logic;

edu.red

Código VHDL – Aquitectura Componente sumador (Gp:) entity sumador is generic(N: integer:= 4); — valor genérico port( A: in std_logic_vector(N-1 downto 0); — operando A B: in std_logic_vector(N-1 downto 0); — operando B Cin: in std_logic; — carry de entrada Sal: out std_logic_vector(N-1 downto 0);– resultado de la operación Cout: out std_logic — carry de salida ); end;

(Gp:) architecture sum of sumador is — declaración de una señal auxiliar signal Sal_aux: std_logic_vector(N+1 downto 0); begin Sal_aux <= ('0' & A & Cin) + ('0' & B & '1'); Sal <= Sal_aux(N downto 1); Cout <= Sal_aux(N+1); end;

edu.red

Código VHDL – Aquitectura Componente registro (Gp:) entity registro is generic(N: integer:= 4); — valor genérico port( D: in std_logic_vector(N-1 downto 0); — entrada del registro clk: in std_logic; — señal de reloj rst: in std_logic; — señal de reset ena: in std_logic; — señal de habilitación Q: out std_logic_vector(N-1 downto 0) — salida del registro ); end;

edu.red

Código VHDL – Aquitectura Componente registro (Gp:) architecture pp of registro is begin process(clk, rst, ena) begin if rst = '1' then Q <= (others => '0'); elsif clk = '1' and clk'event then if ena = '1' then Q <= D; end if; end if; end process; end;

edu.red

Código VHDL – Aquitectura Contenido de la arquitectura del componente multiplicador (parte descriptiva):

(Gp:) Sal <= salP & salB;

(Gp:) — instanciación del registro A regA: registro generic map(N) port map(A, clk, '0', '1', salA); — instanciación del registro B regB: registro generic map(N) port map(entB, clk, '0', '1', salB); — instanciación del registro P regP: registro generic map(N) port map(entP, clk, load, '1', salP); — instanciación del sumador sum: sumador generic map(N) port map(salP, aux, '0', salSum, Co);

(Gp:) entP <= Co & salSum(N-1 downto 1); entB <= B when load = '1' else salSum(0) & salB(N-1 downto 1); aux <= salA when salB(0) = '1' else (others => '0');

edu.red

Código VHDL – Banco de pruebas Para poder validar el funcionamiento de cualquier componente se lo debe someter a pruebas por medio de un banco de pruebas.

DUT MONITOR ESTIMULOS BANCO DE PRUEBAS

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente