Circuitos Digitales - proyecto electronica

 
Vista:

proyecto electronica

Publicado por daniel (1 intervención) el 30/10/2007 16:38:02
hola si ahi alguin que me quiera ayudar se lo agradecee mucho, necesito implentar un filtro digital en fpgas utlizando VHDl, o si tinen otro proyecto de electronica tales que utlicen mux, decodificadores, codificadores, sumadores, conversores, por favor ayudenme o si tienen una pagaina donde haya algun tipo de informacion relacionada...
gracias es para mañana 31 d3 octubre...
espero por favor me ayuden
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación de filtro digital en FPGA utilizando VHDL

Publicado por Alejandro (117 intervenciones) el 28/08/2023 16:38:04
Aquí tienes un ejemplo básico de cómo podrías implementar un filtro digital sencillo utilizando VHDL en una FPGA. En este caso, implementaremos un filtro de media móvil que toma una serie de muestras de entrada y calcula el promedio para cada muestra.

Supongamos que tienes una FPGA con 8 bits de entrada y salida, y deseas calcular el promedio de las últimas 4 muestras de entrada. Utilizaremos un sumador para calcular la suma de las muestras y luego dividiremos por 4 para obtener el promedio.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
 
entity FiltroMediaMoval is
    Port ( clk : in STD_LOGIC;
           reset : in STD_LOGIC;
           entrada : in STD_LOGIC_VECTOR(7 downto 0);
           salida : out STD_LOGIC_VECTOR(7 downto 0));
end FiltroMediaMoval;
 
architecture Behavioral of FiltroMediaMoval is
    signal sum : STD_LOGIC_VECTOR(9 downto 0) := "0000000000";
    signal muestras : STD_LOGIC_VECTOR(7 downto 0) := "00000000";
begin
    process(clk)
    begin
        if rising_edge(clk) then
            if reset = '1' then
                sum <= "0000000000";
                muestras <= "00000000";
            else
                sum <= (sum(8 downto 0) + entrada);
                muestras <= entrada & muestras(7 downto 1);
            end if;
        end if;
    end process;
 
    salida <= sum(9 downto 2) / 4;  -- Dividir por 4 para obtener el promedio
end Behavioral;

Este es solo un ejemplo básico de un filtro digital en VHDL. Puedes expandir y mejorar este diseño según tus necesidades específicas. Para implementar este código en una FPGA, necesitarás sintetizarlo y cargarlo en la FPGA utilizando las herramientas de desarrollo adecuadas, como Xilinx Vivado o Intel Quartus.

Recuerda que el diseño y la implementación de filtros digitales pueden ser más complejos dependiendo de los requisitos y características específicas que estés buscando. Si necesitas un proyecto completo o más información detallada, te recomiendo consultar tutoriales en línea, recursos de aprendizaje en FPGA y documentación de las herramientas de desarrollo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar