nachladbare

Nachladbare FIR Filter

Moderne Systeme können es erforderlich machen, nachladbare FIR Filter einzusetzen. Wie diese Filter neuen Koeffizienten erhalten und was dafür gemacht werden muss, beschreibt diesen Artikel.

Warum werden Filter nachgeladen?

Werden Signale gefiltert, kann eine Anwendung es erfordern, dass die Koeffizienten auch nachträglich geändert werden können. Die Software kann dann die Bandbreite verändern oder aus einem Tiefpass einen Bandpass oder auch einen Hochpass bauen.

Somit ist eine Verbindung zwischen der Flexibilität eines Mikroprozessors (oder auch eines DSPs) und der Leistungsfähigkeit eines FPGAs geschaffen.

Wie können nachladbare FIR Filter erstellt werden?

In Xilinx FPGAs steht mit dem FIR Filter Compiler (hier wird der IP LogiCORE FIR Compiler v5.0 z. B. für Xilinx Spartan 6 FPGAs besprochen) die Möglichkeit bereit, ein Filter nachladbar zu gestalten. Im FIR Filter Compiler werden die Signalbreite, die Samplerate, die Kanalanzahl usw. festgelegt. Weiterhin steht hier der initiale Koeffizientensatz bereit.

Die Ports im VHDL Quelltext bei diesem Filter sehen im Beispiel so aus:

Inst_FIR_Filter : FIR_Filter 
port map 
        clk => clk, 
        coef_ld =>   FIR_coef_ld, 
        coef_we =>   FIR_coef_we, 
        coef_din => FIR_coef_din, 
        din_1 => ADC_signal, 
        din_2 => ADC_signal, 
        dout_1 => ADC_FIR1, 
        dout_2 => ADC_FIR2 
) ; 

Dabei gibt es die Signaleingänge din_x und Signalausgänge dout_x. In diesem Fall sind es zwei Kanäle, die parallel verarbeitet werden.

Weiterhin sind die Steuereingänge für das Nachladen der FIR Koeffizienten coef_ld, coef_we und coef_din vorhanden. Diese werden mit einer Statemachine benutzt, um die Koeffizienten nachzuladen. Die Reihenfolge der Koeffizienten, wie sie nachzuladen sind, wird vom FIR Compiler als Textdatei bereitgestellt.

Wie geschieht das Nachladen?

Entscheidend beim Nachladen eines FIR Filters sind die drei oben genannten Leitungen:

coef_ld

Dieser Eingang kündigt dem FIR Filter den Start des Nachladens an. Die Länge beträgt einen Taktzyklus. In diesem Moment wird auch der interne Adresszähler, mit dem die ankommenden Werte zugeordnet werden, zurückgesetzt.

coef_we

Ist dieses Signal positiv, wir das Datum am Port coef_din in das Filter übernommen und anschließend der Adresszähler um eins hochgezählt.

coef_din

An diesen Port werden die neuen Koeffizienten angelegt und verarbeitet. An welche Position im FIR Filter das Datum geschrieben wird, wird durch den Algorithmus des Filters entschieden. Die Reihenfolge ist vorab schon festgelegt.

Timingdiagramm

Fazit

Mit einem recht simplen Ablauf (z.B. in einer kleinen Statemachine) kann ein FIR Filter mit neuen Koeffizienten versorgt werden. Natürlich lassen sich auch Filter nachladen, die schon von Hause aus mehrere Koeffizientensätze haben. Dann kommt eine weitere Steuerleitung hinzu, mit der dann der entsprechende Koeffizientensatz ausgewählt wird.

Du hast Fragen oder eine Anmerkung? Dann hinterlasse bitte einen Kommentar unter diesem Artikel oder schreibe mir eine E-Mail unter david@ib-dck.de

Ich freue mich über das Teilen des Artikels in den verschiedenen Netzwerken 🙂