fpga-implementierung eines digitalfilter

Gast #297132
Lesenswert?

schön guten tag zusammen,ich begrüsse euch ...,
 Ich hätte gern die Implementierung(digitalfiltern FIR und IIR) von
Algorithmen der Digitalen Signalverarbeitung demonstrieren und
untersuchen und das wird durch die anwendung verschiedener Zahlen-und
Arithmetiksysteme.

das ist ja mein problem und hätte gern fragen , wie soll ich mal
anfangen und welche Schritte soll ich folgen.????

ich bedanke mich im voraus.
Gast #297133
Lesenswert?

hallo salas,

ganz so einfach ist es nicht. es gibt ja bei filtern unterschiedliche
implementierungsformen (abhängig von der mathematik die dahinter
steckt).
für welchen bereich soll es denn gelten (audio/hf/regelung usw.) ?

ich selbst arbeite an einem audio-prozessor (gibt es auch ein projekt
zu .. siehe http://www.mikrocontroller.net/articles/Audio-Projekt )
und benutze iir-filter mit der kanonischen form (war es glaube ich, bin
mir aber nicht so sicher, da ich in mathe nicht so fit bin).
ein buchtip vielleicht zum einstieg : digitale signalverarbeitung von
udo zölzer. ist speziell für den audio-bereich und enthält
einigermassen anschaulich grundlagen. (und formeln zur berechnung von
filterkoeffizienten)

gruß
rene
Gast #297134
Lesenswert?

Das Buch "DSP with Field progr. Gate Arrays" ist auch sehr zu
empfehlen zu diesem Thema. Da stehen konkrete Realisierungen von FIR-
und IIR-Filtern in VHDL und Verilog drin. Aber natürlich muss man sich
die Filterkoeffizienten erstmal vorab berechnen, mit Matlab zB.
Gast #297135
Lesenswert?

Hier mal aus dem Buch den VHDL-Code eines FIR-Filters mit den 4
Koeffizienten: -1, 3.75, 3.75, -1
1
PACKAGE eight_bit_int IS    -- User defined types
2
  SUBTYPE BYTE IS INTEGER RANGE -128 TO 127;
3
  TYPE ARRAY_BYTE IS ARRAY (0 TO 3) OF BYTE;
4
END eight_bit_int;
5

6
LIBRARY work;
7
USE work.eight_bit_int.ALL;
8

9
LIBRARY ieee;
10
USE ieee.std_logic_1164.ALL;
11
USE ieee.std_logic_arith.ALL;
12

13
ENTITY fir_srg IS                         ------> Interface
14
  PORT (clk   :   IN  STD_LOGIC;
15
        x     :   IN  BYTE;
16
        y     :   OUT BYTE);
17
END fir_srg;
18

19
ARCHITECTURE flex OF fir_srg IS
20

21
  SIGNAL tap : ARRAY_BYTE;   -- Tapped delay line of bytes
22
  
23
BEGIN
24

25
  p1: PROCESS             ------> Behavioral Style 
26
  BEGIN
27
    WAIT UNTIL clk = '1';
28
  -- Compute output y with the filter coefficients weight.
29
  -- The coefficients are [-1  3.75  3.75  -1]. 
30
  -- Multiplication and division for Altera VHDL are only
31
  -- allowed for powers of two! 
32
    y <= 2 * tap(1) + tap(1) + tap(1) / 2 + tap(1) / 4 
33
         + 2 * tap(2) + tap(2) + tap(2) / 2 + tap(2) / 4 
34
         - tap(3) - tap(0);
35
    FOR I IN 3 DOWNTO 1 LOOP 
36
      tap(I) <= tap(I-1); -- Tapped delay line: shift one
37
    END LOOP;
38
    tap(0) <= x;                -- Input in register 0
39
  END PROCESS;
40

41
END flex;
Vielleicht nützt dir das was, kannst dich ja mal versuchen
reinzufuchsen. Mich brauchst du zu dem Code nicht zu fragen, hab mich
(noch) nicht gross mit dem Buch beschäftigt...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren