Cos'è ElectroYou | Login Iscriviti

ElectroYou - la comunità dei professionisti del mondo elettrico

Plot di un filtro Fir

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

0
voti

[1] Plot di un filtro Fir

Messaggioda Foto Utentejayeffe » 5 feb 2022, 2:00

Salve a tutti, sto lavorando con un FPGA ad un progettino didattico di filtraggio di dati da DAC ad ADC

In pratica, senza entrare troppo nel dettaglio ho catturato tramite il tool i segnali in ingresso al DAC e all'ADC.

I segnali sono di questo tipo in allegato. sono 2047 elementi
Sono riuscito ad importarli in Matlab e ho creato un vettore per ADC_DB, e stessa cosa ho fatto per gli altri segnali.

Ciò che devo fare è creare un filtro FIR in matlab che prenda in ingresso il Segnale ADC_DB e lo filtri con le stesse specifiche che ho usato via Hardware.


L'obiettivo è avere un confronto dei segnali sia via HW che via SW.

Ovviamente via Hardware ho usato un IP core che si chiama FIR COMPILER e ho parametrizzato il filtro che in uscita ha 14 bit .
Ho provato a vedere FilterDesigner e sono riuscito ad ottenere lo stesso filtro (con i parametri usati nell'ip core)



Qualcuno che può aiutarmi?. Purtroppo in matlab non so muovermi.
Grazie a tutti
Allegati
Immagine 2022-02-05 005201.png
Avatar utente
Foto Utentejayeffe
51 1 3 7
Frequentatore
Frequentatore
 
Messaggi: 299
Iscritto il: 27 apr 2017, 15:28

0
voti

[2] Re: Plot di un filtro Fir

Messaggioda Foto Utenteg.schgor » 5 feb 2022, 10:53

Avatar utente
Foto Utenteg.schgor
57,8k 9 12 13
G.Master EY
G.Master EY
 
Messaggi: 16971
Iscritto il: 25 ott 2005, 9:58
Località: MILANO

0
voti

[3] Re: Plot di un filtro Fir

Messaggioda Foto Utentejayeffe » 5 feb 2022, 11:01

Grazie. Devo lavorare con MATLAB però
Avatar utente
Foto Utentejayeffe
51 1 3 7
Frequentatore
Frequentatore
 
Messaggi: 299
Iscritto il: 27 apr 2017, 15:28

0
voti

[4] Re: Plot di un filtro Fir

Messaggioda Foto UtenteMarcoD » 5 feb 2022, 11:18

Ciò che devo fare è creare un filtro FIR in matlab che prenda in ingresso il Segnale ADC_DB e lo filtri con le stesse specifiche che ho usato via Hardware.


Premetto che sono di poco aiuto :mrgreen: .
Decenni fa avrei implementato l'algoritmo del filtro in Basic o C++, oppure con qualche acrobazia in Excell.
Che tipo di filtro FIR implementi: passa basso, banda, alto ? quante celle ?
E un filtro tipo IIR ? O_/
Avatar utente
Foto UtenteMarcoD
12,2k 5 9 13
Master EY
Master EY
 
Messaggi: 6696
Iscritto il: 9 lug 2015, 16:58
Località: Torino

0
voti

[5] Re: Plot di un filtro Fir

Messaggioda Foto UtenteSandroCalligaro » 5 feb 2022, 11:22

Se ho capito bene, vuoi applicare un filtro ad un segnale noto.
Non sono certo un esperto di DSP, ma fin qui penso di poterti aiutare. :D

Suppongo che tu abbia un vettore con i coefficienti del filtro.
Essendo un filtro FIR, la cosa è molto semplice (ma potrebbe esserlo anche con un IIR, avendo i due vettori).

L'opzione secondo me più semplice e didatticamente più "utile" è l'uso della convoluzione.
Il filtraggio non è altro che una convoluzione per la risposta impulsiva. Nei FIR questa è, per definizione, di durata finita, quindi rappresentabile con un vettore di valori, che poi sono esattamente i coefficienti del filtro (infatti, se applicassi la convoluzione tra un impulso discreto ed i coefficienti del filtro, ritroveresti una sequenza, ossia la risposta impulsiva, che corrisponde esattamente al vettore dei coefficienti).
Magari dico cose banali, ma a volte un punto di vista diverso può essere utile. :-)

Un'altra opzione è quella di usare la funzione apposita, "filter", che forse richiede qualche toolbox.
Questa ti darebbe la possibilità di imparare ad usare uno strumento più complesso, adatto anche a filtri IIR, e con qualche opzione in più:
https://it.mathworks.com/help/matlab/ref/filter.html

Una terza opzione sarebbe quella di scrivere il codice che implementa il filtro con un programma (ciclo for, per capirci), cosa che potrebbe essere utile per capire come verrebbe implementato ad esempio in C su un DSP.
EDIT: Questo è più o meno quello che dice anche Foto UtenteMarcoD, credo (abbiamo scritto quasi contemporaneamente).
MarcoD ha scritto:Decenni fa avrei implementato l'algoritmo del filtro in Basic o C++, oppure con qualche acrobazia in Excell.
Avatar utente
Foto UtenteSandroCalligaro
2.970 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1181
Iscritto il: 6 ago 2015, 19:25

0
voti

[6] Re: Plot di un filtro Fir

Messaggioda Foto Utentejayeffe » 5 feb 2022, 12:16

Esattamente ho visto la funzionalità filter, ma non so implementarlo nel mio caso. via hardware il filtro funziona
Avatar utente
Foto Utentejayeffe
51 1 3 7
Frequentatore
Frequentatore
 
Messaggi: 299
Iscritto il: 27 apr 2017, 15:28

0
voti

[7] Re: Plot di un filtro Fir

Messaggioda Foto UtenteSandroCalligaro » 5 feb 2022, 12:22

Non capisco. Conosci il principio che sta dietro l'implementazione che hai fatto in HW?

Per usare filter hai solamente bisogno di un array con i campioni del segnale (x) e di uno con i coefficienti del filtro (b), che sono i coefficienti del polinomio in z, nella funzione di trasferimento. L'array dei coefficienti del denominatore (a) puoi impostarlo a 1.
Codice: Seleziona tutto
y = filter(b,a,x)


Stessa cosa per conv:
Codice: Seleziona tutto
y = conv(x,b)
(in questo caso, l'ordine non è rilevante).
Avatar utente
Foto UtenteSandroCalligaro
2.970 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1181
Iscritto il: 6 ago 2015, 19:25

0
voti

[8] Re: Plot di un filtro Fir

Messaggioda Foto Utentejayeffe » 5 feb 2022, 12:29

L'array con i campioni lo tengo. Poi in matlab ho usato Filter Designer che è il tool per costruire il filtro. Ho usato gli stessi parametri che ho usato via hardware.
https://it.mathworks.com/help/dsp/ug/us ... igner.html


Per il resto non so come fare il plot
Avatar utente
Foto Utentejayeffe
51 1 3 7
Frequentatore
Frequentatore
 
Messaggi: 299
Iscritto il: 27 apr 2017, 15:28

0
voti

[9] Re: Plot di un filtro Fir

Messaggioda Foto UtenteSandroCalligaro » 5 feb 2022, 12:47

E' da tanto che non uso fdatool, ma puoi esportare i coefficienti del filtro in vari modi, tra cui quello "solito", che corrisponde alla forma in cui normalmente si scrive la funzione di trasferimento.
Dopo aver applicato filter, il plot è banale: plot(y).
Avatar utente
Foto UtenteSandroCalligaro
2.970 2 4 5
G.Master EY
G.Master EY
 
Messaggi: 1181
Iscritto il: 6 ago 2015, 19:25

0
voti

[10] Re: Plot di un filtro Fir

Messaggioda Foto Utentejayeffe » 5 feb 2022, 13:04

applicando la funzione filter mi esce questo plot qui
questo facendo plot(y)
Allegati
Immagine 2022-02-05 120244.png
Avatar utente
Foto Utentejayeffe
51 1 3 7
Frequentatore
Frequentatore
 
Messaggi: 299
Iscritto il: 27 apr 2017, 15:28

Prossimo

Torna a Programmi applicativi: simulatori, CAD ed altro

Chi c’è in linea

Visitano il forum: Nessuno e 8 ospiti