mikrocontroller.net

Forum: FPGA, VHDL & Co. Tiefpassfilter für QAM in VHDL -> Wie funktioniert dieser Code?


Autor: Flo (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe folgendes Problem.
Ich will eine QAM Modulation in VHDL realisieren. Der Modulator steht.
Der Demodulator auch. Bis auf die beiden Tiefpassfilter der beiden 
demodulierten I und Q Signale.

Ich habe im Netz einen Code für QAM Modulation gefunden, der einen 
anscheinend sehr einfachen TP enthält, aber ich weis nicht was der Code 
macht. Ich hoffe Ihr könnt mir helfen. Hier ein Auszug:
entity iq_demod is

  generic (   
    filter_shift  : natural  := 4;  -- left shift to scale output filter
    filter_rate   : natural  := 8   -- multiplier, filter A = rate/2**shift
    -- ...
  );

  port ( 
    -- ...
  );

end;


architecture RTL of iq_demod is    
  signal filterI, filterQ : signed(baseband_bits-1 downto 0);
  -- ...
begin

     if Rst = '1' then
      filterI <= (others => '0');
      filterq <= (others => '0');
      sumI    := (others => '0');
      sumQ    := (others => '0');
    elsif rising_edge(Clk) then
      if dump = '1' then -- Dump integrator, generate output
        -- Output lowpass
        filterI <= resize(
                     filterI  + ((signed'((sumI - filterI) * filter_rate)) sra filter_shift),
                     filterI'length);
        filterQ <= resize(
                     filterQ  + ((signed'((sumQ - filterQ) * filter_rate)) sra filter_shift),
                     filterQ'length);
        -- dump the integrator
        sumI := (others => '0');
        sumQ := (others => '0');
      end if;
      -- Integrate (or initialise, if it's the dump cycle)
      sumI := sumI + prodI;
      sumQ := sumQ + prodQ;
    end if;

  end process;
end;


Um den Code kurz zu halten wurde der Rest entfernt. Im Anhang sind aber 
der Demod + Testbench drin.

So funktionierts:
sumI und sumQ summieren die demodulierten(!) Amplitudenwerte (prodI und 
prodQ) des I und Q Kanals während einer Periode auf. dump ist dann ein 
Hilfssignal, welches nach jeder Periode sumI und sumQ zurücksetzt.

filterI und filterQ sind dann der Ausgang des TP-Filters. Eben diesen 
verstehe ich nicht. (Anm. sra ist analog zu shift_right).

Ich hoffe ihr könnt mir ein paar Tips geben

Autor: Dr.Schmock (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Aufgabe errinnert mich an eine Praktikum-Ausschreibung von EADS. ;)

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Projekt von der FH ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.