Descargar la presentación
La descarga está en progreso. Por favor, espere
Publicada porSal Villa Modificado hace 10 años
1
Vhdl para síntesis Alfredo Rosado Muñoz Universidad de Valencia Ingeniería Electrónica Diseño de Circuitos y Sistemas Electrónicos
2
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Objetivos Realizar descripciones VHDL óptimas para implementación hardware Saber utilizar las construcciones destinadas a hardware específico Reset, reloj, triestados, unidades funcionales, ... Evitar el empleo de VHDL no sintetizable o poco eficiente Pensar “hardware” a pesar de describir “software” Proceso de traducción de un sistema descrito mediante una herramienta de captura de diseño, y de optimización para la generación de un formato intermedio entre la herramienta de captura y la de implementación hardware Síntesis: Definición Conversión del diseño a un nivel de estructuras capaces de ser acomodadas en el dispositivo destino Justificación: Portabilidad Trabajo en grupo Menor tiempo de diseño Diferentes descripciones (RTL, Comp., Estruct.) 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
3
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
TEMA 8. LENGUAJES DE DESCRIPCIÓN HARDWARE ORIENTADOS A SÍNTESIS. (3 HORAS) 8.1 Herramientas de síntesis: metodología y modo de funcionamiento. 8.2 Síntesis de lógica combinacional 8.3 Síntesis de lógica secuencial: Inferencia de latches, inferencia de flip-flop. 8.4 Tipos de descripción específicos: Puertas triestado y puertos bidireccionales, máquinas de estados, memorias. 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz. 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
4
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Metodología 8.1 Herramientas de síntesis: metodología y modo de funcionamiento PROBLEMA: Software con características particulares SOLUCIÓN: Descripciones “universales” Metodología de diseño: Recomendaciones IEEE ieee.std_logic_1164.all ieee.numeric_std.all Tipos: std_logic, integer signed, unsigned 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
5
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Consideraciones 8.1 Herramientas de síntesis: metodología y modo de funcionamiento Tener presente la estructura hardware a diseñar y el paralelismo de las descripciones No emplear construcciones claramente no sintetizables: inicialización, “after”, ficheros, ... Asignar tipos de datos de forma uniforme No utilizar enteros en puertos I/O, en operaciones lógicas y de desplazamiento Ciertos operadores aritméticos no son sintetizables: **, /, rem, mod Evitar la generación indeseada de registros en descripciones combinacionales Descomponer cualquier diseño en módulos combinacionales y secuenciales 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
6
Completar SIEMPRE todas las condiciones
Lógica Combinacional 8.2 Síntesis de Lógica Combinacional No es necesario el uso de procesos Se admite el uso de cualquier operador predefinido (and, nand, or, nor, not, xor, xnor) Sentencias concurrentes a emplear: entity puerta is port (a, b, c: in std_logic_vector (1 downto 0); d: out std_logic_vector (1 downto 0)); end puerta; architecture p_a of puerta is begin d <= a when c="00" else b when c="01" else "11" when c="10" else "00" when a="11" else "01" ; end p_a; entity puerta is port (a, b, c: in std_logic_vector (1 downto 0); d: out std_logic_vector (1 downto 0)); end puerta; architecture p_a of puerta is begin d <= a when c="00" else b when c="01" else "11" when c="10" else "00" when a="11"; end p_a; When..else architecture p_a of puerta is begin with c select d <= a when "00", b when "01", "11" when "10", "00" when "11", "00" when others; end p_a; Completar SIEMPRE todas las condiciones With..select 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
7
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Lógica Combinacional 8.2 Síntesis de Lógica Combinacional Uso de if..then..else en procesos: Agrupar en una sola sentencia todas las condiciones siempre que sea posible Number of ports : 10 Number of nets : 28 Number of instances : 22 Total accumulated area : Number of IBUF : 6 Number of OBUF : 4 Number of gates : 14 if c="00" then d <= a; e <= b; elsif b="00" then e <= a; d <= b; else e <= (others =>'0'); d <= (others =>'0'); end if; Number of ports : 10 Number of nets : 41 Number of instances : 35 Total accumulated area : Number of IBUF : 6 Number of Latches : 2 Number of OBUF : 4 Number of gates : 24 if c="00" then d <= a; e <= b; end if; if b="00" then e <= a; d <= b; end if; if c/="00" and b/="00" then e <= (others =>'0'); d <= (others =>'0'); end if; NO incluir la señal de reloj en la lista de sensibilidad de un proceso combinacional 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
8
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Lógica Secuencial 8.3 Síntesis de Lógica Secuencial Es necesario conocer el tipo de descripción concreto a realizar para que se reconozca un elemento secuencial Es obligado el uso de procesos (excepto latches), y recomendable que incluyan lista de sensibilidad Diferencia entre variables y señales Aconsejable incluir siempre un reset global que aplique un valor de inicialización entity latch is port (a, b: in std_logic; d: out std_logic); end latch; architecture l_a of latch is begin d <= a when b=’1’; end l_a; Inferencia de Latches entity latch is port (a, b: in std_logic; d: out std_logic); end latch; architecture l_a of latch is begin process (a,b) if b=’1’ then d <= a; end if; end process; end l_a; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
9
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Lógica Secuencial 8.3 Síntesis de Lógica Secuencial: Inferencia de registros activos por flanco Es el método más habitual de describir sistemas síncronos Los dispositivos lógicos incluyen registros activos por flanco (generalmente de tipo D) Existen varias formas de especificar la llegada de un flanco: rising_edge(reloj) if reloj’event and reloj=‘1’ if reloj’event and reloj=‘1’ and reloj’last_value=‘0’ Descripción genérica entity registro is port (d, reset, preset, reloj: in std_logic; q: out std_logic); end registro; architecture r_a of registro is begin process (d, reset, preset, reloj) if reset = ’1’ then q <= ‘0’; elsif preset = ‘1’ then q <= ‘1’; elsif rising_edge(reloj) then q <= d; end if; end process; end r_a; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
10
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Lógica Secuencial 8.3 Síntesis de Lógica Secuencial: Inferencia de registros activos por flanco No emplear más condiciones else ó elsif en la misma sentencia if..then..else después de la condición de evaluación del reloj En la misma evaluación if del reloj no se deben comparar otras señales o variables La sentencia if del reloj no puede estar dentro de un bucle La sentencia if del reloj no debe estar anidada, se pueden incluir más if dentro de ella Sólo se puede incluir una evaluación de flanco por proceso: varios relojes varios procesos En comparaciones múltiples, emplear la sentencia case No utilizar relojes derivados, alternativamente, emplear habilitación de reloj r_derivado <= not a and (b or c); process (d, reset, preset, reloj, r_derivado) begin if reset = ’1’ then q <= ‘0’; elsif preset = ‘1’ then q <= ‘1’; elsif rising_edge(reloj) then if r_derivado = ‘1’ then q <= d; end if; end process; end r_a; r_derivado <= reloj and not a and (b or c); process (d, reset, preset, r_derivado) begin if reset = ’1’ then q <= ‘0’; elsif preset = ‘1’ then q <= ‘1’; elsif rising_edge(r_derivado) then q <= d; end if; end process; end r_a; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
11
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Módulos Específicos 8.4 Módulos funcionales específicos En sistemas complejos es necesaria una correcta partición del diseño (Top-Down) Las descripciones de mayor nivel suelen ser estructurales (componentes y subprogramas) Aconsejable emplear módulos del fabricante (generadores automáticos, módulos IP, ...) Consultar documentación del software de síntesis Herramientas y atributos especiales Módulos específicos usuales: Multiplicadores, RAM, ROM, UART, filtro FIR, interface PCI, ... Puertas triestado Necesaria la utilización del tipo std_logic ó std_ulogic que define el estado 'Z' Basta con incluir una condición en la que uno de los resultados ('True' o 'False') deja la salida en alta impedancia architecture hab_b of hab is begin process (entrada, oe) begin if (oe = ’1’) then salida <= entrada; else salida <= ’Z’; end if; end process; end hab_b; entity hab is port( entrada1, entrada2, oe1, oe2 : in std_logic; salida : out std_logic ); end; architecture hab_a of hab is begin salida <= entrada1 when oe1 = '1' else 'Z' ; salida <= entrada2 when oe2 = '1' else 'Z' ; end hab_a; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
12
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Módulos Específicos 8.4 Módulos funcionales específicos: Puertos bidireccionales Para puertos bidireccionales la descripción es similar a los triestado: Tipo inout entity bidir is port ( bid : inout std_logic ; a, b, c, oe : in std_logic; salida : out std_logic); end bidir ; architecture bidir_a of bidir is signal interna1, interna2 : std_logic ; begin bid <= interna1 when oe = '1' else 'Z'; interna2 <= bid; interna1 <= (a and b) nor c; salida <= (c xor interna2) when oe='0' else 'Z'; end bidir_a ; Máquinas de estados Es necesaria una descripción específica con definición de un tipo enumerado Hay que hacer una división de la descripción en dos procesos distintos: 1. Cambio síncrono de estado 2. Evaluación de condiciones para dirigirse a un estado 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
13
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Módulos Específicos 8.4 Módulos funcionales específicos: Máquinas de estados entity bebida is port (reloj, reset, veinte, diez : in std_logic ; preparada, servir, devolucion, moneda: out std_logic); end bebida ; architecture bebida_a of bebida is type estados is (A, B, C, D, F, I); signal estado_actual, estado_sig : estados ; begin cambiaest: process (reloj, reset) is begin if (reset ='1') then estado_actual <= A; elsif (rising_edge(reloj)) then estado_actual <= estado_sig; end if; end process cambiaest; asignaest: process (veinte, diez, estado_actual) is begin preparada <= '0'; servir <= '0'; devolucion <= '0'; moneda <= '0'; case estado_actual is when A => preparada <= '1'; if (veinte = '1') then estado_sig <= D; elsif (diez = '1') then estado_sig <= C; else estado_sig <= A; when B => servir <= '1'; estado_sig <= A; when C => moneda <= '1'; if (veinte = '1') then estado_sig <= F; elsif (diez = '1') then estado_sig <= D; else estado_sig <= C; end if; when D => estado_sig <= B; when F => estado_sig <= I; when I => devolucion <= '1'; end case; end process asignaest; end bebida_a; Ejemplo: type estados is (A, B, C, D, F, I, V, W); signal estado_actual, estado_sig : estados ; attribute ENUM_ENCODING : STRING; attribute ENUM_ENCODING of estados : type is ” ”; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
14
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Módulos Específicos 8.4 Módulos funcionales específicos: Memorias package ROMS is constant ANCHO_ROM: INTEGER := 5; subtype ROM_WORD is BIT_VECTOR (1 to ANCHO_ROM); subtype ROM_RANGE is INTEGER range 0 to 7; type ROM_TABLE is array (0 to 7) of ROM_WORD; constant ROM : ROM_TABLE := ( ("10101"), -- contenido de la ROM ("10000"), ("11101"), ("11111"), ("10101"), ("00011"), ("11000")); end ROMS; use work.ROMS.all; entity ROM5x8 is port( ADDR: in ROM_RANGE; DATA: out ROM_WORD); end ROM5x8; architecture rom_a of ROM5x8 is begin DATA <= ROM(ADDR); end rom_a; Memoria ROM Si el tamaño de la memoria es reducido, ésta puede implementarse mediante recursos lógicos comunes (funciones lógicas y registros) Habitualmente, existen en hardware estructuras regulares que las implementan y donde se sintetizan si la descripción VHDL es apropiada 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
15
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Módulos Específicos 8.4 Módulos funcionales específicos: Memorias En el caso de RAM, es necesario comprobar que el dispositivo incorpora este recurso lógico library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity ram1 is port ( dato: in std_logic_vector (7 downto 0); direccion: in unsigned (5 downto 0); we, inclock, outclock: in std_logic; q: out std_logic_vector (7 downto 0)); end ram1; architecture ram1_a of ram1 is type mem_type is array (63 downto 0) of std_logic_vector (7 downto 0); signal mem: mem_type; begin l0: process (inclock, outclock, we, direccion) begin if (rising_edge(inclock)) then if (we = '1') then mem(to_integer(direccion)) <= dato; end if; if (rising_edge(outclock)) then q <= mem(to_integer(direccion)); end process; end ram1_a; Memoria RAM 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
16
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Se propone un ejemplo que incluya: 1. Descripción de VHDL para síntesis 2. Diseño de sistemas digitales, desde su concepción hasta su descripción 3. Uso intensivo de recursos VHDL para simulación: bancos de pruebas Planteamiento: Se desea reducir el ruido de 50Hz en las señales de adquisición de ECG Solución: Filtro adaptativo LMS 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
17
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Las ecuaciones que rigen el valor de los pesos y la salida filtrada: Siendo la constante de adaptación : M= núm etapas del filtro (M=2) Recuento de operaciones aritméticas: 4 multiplicaciones (dos con tres factores) 3 sumas 1 resta Restricción: Sólo se debe emplear un módulo aritmético de cada tipo (multiplicador, sumador y restador) 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
18
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Especificaciones: 1. Entradas/salidas de 12bits 2. Números con signo (compl. a 2) 3. =0,25012 =512 (desnormalizado) 4. Existen 3 entradas de 12 bits: Señal con ruido, ruido 50Hz y ruido 50Hz desplazado 90º 5. Existen entradas Reloj, Reset y dato listo Hab_ext 6. Existe salida fin de final de filtrado de muestra 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
19
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Propuesta: Características: 1. Pipeline: Son necesarias cinco etapas para obtener todos los resultados 2. Existen periodos de latencia, o bien la señal de reloj es más rápida que el periodo de muestreo de las señales de entrada 3. Una máquina de estados debe controlar el acceso a las unidades de cálculo 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
20
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Diseño VHDL estructurado: 1. Se diseña cada módulo por separado 2. Se simula la funcionalidad de cada módulo 3. Las señales de control son generadas por la FSM 4. Se unen los módulos en un diseño de nivel superior 5. Se genera un banco de pruebas que simule el sistema Se proponen 4 módulos: Multiplicador, sumador-restador, FSM y memoria intermedia Se define un paquete con las definiciones globales del sistema library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; package LMS_pkg is constant beta_desp : integer:=9; -- 2**beta_desp=beta real constant external_length : integer:=12; constant internal_length : integer:=(2*external_length); subtype external_vector is signed ((external_length-1) downto 0); subtype internal_vector is signed ((internal_length-1) downto 0); end LMS_pkg; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
21
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Módulo multiplicador: Realiza la multiplicación de los valores de entrada que correspondan mux_y_mul : process (reset,reloj,hmul) variable mul_result : internal_vector; variable mul1,mul2,mul_sal : external_vector; begin if reset = '0' then mul_salida <= (others =>'0'); elsif rising_edge(reloj) then if hmul = '1' then if control1 = '0' then mul1 := sen_in; -- sen_in corresponde a u0 else mul1 := cos_in; -- control1 = '1', cos_in corresponde a u1 end if; if control2 = "00" then mul2 := weight1; elsif control2 = "01" then mul2 := weight2; elsif (control2 = "10") or (control2 = "11") then mul2 := salida_ext; mul_result := mul1 * mul2; mul_sal(external_length-1) := mul_result(internal_length-1); if control2 = "10" then En este caso se debe desplazar el resultado mul_sal(beta_desp-1 downto 0) := mul_result((internal_length-3) downto (internal_length-2-beta_desp)); for i in beta_desp to external_length-2 loop mul_sal(i) := mul_result(internal_length-1); end loop; else se redondea el valor sin desplazar mul_sal(external_length-2 downto 0) := mul_result(internal_length-3 downto external_length-1); mul_salida <= mul_sal; end if; end if; end process; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
22
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Módulo almacenamiento: Almacena el resultado del multiplicador un ciclo de reloj library IEEE; use IEEE.std_logic_1164.all; use IEEE.numeric_std.all; use WORK.LMS_pkg4.all; entity LMS6_acc is port (mult_result : in external_vector; reset,reloj : in std_logic; acc_salida : out external_vector); end LMS6_acc; architecture LMS6_accarchi of LMS6_acc is begin acc_or_direct : process(reset,reloj) if reset='0' then acc_salida <= (others => '0'); elsif reloj'event and reloj='1' then acc_salida <= mult_result; end if; end process; end LMS6_accarchi; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
23
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Módulo Sumador-restador: Dependiendo del control suma dos valores, o suma y resta suma_y_resta : process(reset,reloj) variable suma1,salida,suma_def,weight1s,weight2s : external_vector; variable resta1 : external_vector; begin if reset='0' then inicializacion de pesos y puesta a cero salida_re <= (others => '0'); salida_def <= (others => '0'); weight1 <= (others => '0'); weight1s := (others => '0'); weight2 <= (others => '0'); weight2s := (others => '0'); elsif reloj'event and reloj='1' then if hsum='1' then if control4 = "00" then suma1 := weight1s; elsif control4 = "01" then suma1 := weight2s; elsif (control4 = "10") or (control4 = "11") then suma1 := acc1; end if; suma_def := suma1 + suma2; if control5 = "00" then weight1s := suma_def; weight1 <= suma_def; elsif control5 = "01" then weight2s := suma_def; weight2 <= suma_def; elsif (control5 = "10") or (control5 = "11") then resta1 := suma_def; if hrest = '1' then salida := in_sig - resta1; salida_def <= salida; salida_re <= salida; end if; end if; end process; 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
24
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz entity LMS6_estados is port (reloj,reset,extern_hab : in std_logic; hmul,hsum,hres,control1,fin : out std_logic; control2,control4,control5 : out std_logic_vector (1 downto 0)); end LMS6_estados; architecture LMS6_estadosarchi of LMS6_estados is type estados_lms4 is (reset_estado,espera,ini_calc,genera_salida, peso1_mult,actualiza1_mult2,peso2_sum,peso2_calc_y_fin); signal estado_actual,estado_sig : estados_lms4; begin cambia_estado : process(reloj,reset) begin if reset = '0' then estado_actual <= reset_estado; elsif reloj'event and reloj = '1' then estado_actual <= estado_sig; end if; end process; maquina_estados : process(estado_actual,extern_hab) begin control1 <= '0'; -- se asignan valores por defecto control2 <= "00"; control4 <= "10"; control5 <= "10"; hmul <= '0'; hsum <= '0'; hres <= '0'; fin <= '0'; case estado_actual is when reset_estado => control1 <= '0'; control2 <= "00"; control4 <= "10"; control5 <= "10"; hmul <= '0'; hsum <= '0'; hres <= '0'; fin <= '0'; if extern_hab = '1' then estado_sig <= espera; else estado_sig <= ini_calc; end if; Módulo FSM: Gestiona el control desde activación de Hab_ext hasta la salida fin 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
25
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Módulo Global: Descripción estructural para unir los módulos entity LMS6 is port (in_sig,sen_in,cos_in : in external_vector; hab_ext,clock,reset : in std_logic; lms_out : out external_vector; ending : out std_logic); end LMS6; architecture LMS6archi of LMS6 is component LMS6_mult port (sen_in,cos_in,weight1,weight2,salida_ext : in external_vector; reset,reloj,hmul,control : in std_logic; control : in std_logic_vector (1 downto 0); mul_salida : out external_vector); end component; component LMS6_acc port ( mult_result : in external_vector; reset,reloj : in std_logic; acc_salida : out external_vector); 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
26
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz NEWDATA : process begin habi_ext <= '0'; wait for 215 ns; habi_ext <= '1'; wait for 615 ns; end process; MAIN : process variable noise,sinus,cosinus : integer; variable filtered : integer; variable linea1,linea2: LINE; while not ENDFILE(file_noise) loop READLINE(file_noise,linea1); READ(linea1,noise); READ(linea1,sinus); READ(linea1,cosinus); input_signal <= to_signed(noise,external_length); sen_signal <= to_signed(sinus,external_length); cos_signal <= to_signed(cosinus,external_length); wait until fin_cal'event and fin_cal='1'; filtered := to_integer(out_signal); WRITE(linea2,filtered); WRITELINE(file_filtered,linea2); end loop; wait; Módulo de prueba: Lee datos de fichero, escribe resultado en fichero y genera Reloj y Reset 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
27
TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Aplicación 8.5 Ejemplo de aplicación: Filtro LMS de eliminación de ruido de red de 50Hz Implementación: Sobre FPGA XC4010E –3 PC84 Device utilization summary: Number of External IOBs out of % Flops: Latches: Number of IOBs driving Global Buffers 1 out of % Number of CLBs out of % Total CLB Flops: out of % 4 input LUTs: out of % 3 input LUTs: out of % Number of PRI-CLKs out of % Number of STARTUPs out of % Design statistics: Minimum period: ns (Maximum frequency: 9.798MHz) Maximum net delay: ns 01 de abril de 2017 TEMA: VHDL para Síntesis. Alfredo Rosado Muñoz
Presentaciones similares
© 2024 SlidePlayer.es Inc.
All rights reserved.