L'esempio di progettazione del filtro di decimazione a tasso intero variabile dimostra come utilizzare Intel® DSP Builder Advanced Blockset (DSPB-AB) per implementare un filtro di decimazione in grado di modificarne la velocità di decimazione in fase di esecuzione. Supporta inoltre più canali e sfrutta la piegatura automatica di DSPB-AB per generare codice a livello di trasferimento del registro (RTL) che massimizza il riutilizzo hardware per il salvataggio delle risorse. Il design attuale supporta velocità di decimazione di 1, 2, 4, 8 e 16. Tuttavia, è possibile modificare facilmente il design per supportare altri tassi di decimazione dei numeri interi.
È possibile implementare in modo efficiente la decimazione convenzionale tramite filtri M attraverso la decomposizione della polifase con un commutatore di ingresso e percorsi paralleli M. Ogni percorso è una polifase del filtro prototipo originale. Se il commutatore di input salta ogni altra fase, invece di passare attraverso tutti i percorsi M, il tasso di decimazione diventa M/2 e così via.
Nel design reale, invece di avere un commutatore e una banca parallela di percorsi di filtro FIR (Finite Impulse Response), implementiamo un solo filtro FIR polifase, in cui i coefficienti corrispondenti ai polifasi cambiano ogni ciclo al tasso di campionamento di input. Ha lo stesso effetto di fornire campioni di input successivamente a una banca parallela di polifase. Archiviamo i coefficienti di polifase in memoria e utilizziamo un accumulatore di input come quello utilizzato in un oscillatore (NCO) a controllo numerico per controllare quale fase è attualmente in fase di lettura e inviata al percorso del filtro FIR. La dimensione del passo dell'accumulatore di fase controlla la velocità con cui il sistema attraversa le polifase, da qui il tasso di decimazione. Il segnale di overflow dell'accumulatore indica quando le fasi sono state passate in ciclo. Quando afferma, viene generato un campione di output valido con la frequenza di campionamento inferiore.
L'architettura dell'algoritmo è mostrata nella figura 1.
Il percorso del filtro FIR è un filtro FIR di forma diretta modificato. I coefficienti di filtro provengono dalla tabella di ricerca dei coefficienti (LUT) e cambiano da una polifase a un'altra. A ciascuna uscita del moltiplicatore è collegato un accumulatore. Accumula le uscite di tutti i polifasi al suo rubinetto fino a quando il segnale di rollover indica che tutte le fasi sono state visitate e che èdovutao.. In quel momento, un adder multiporta aggiunge tutte le uscite di accumulatore e genera un campione decimato finale. Allo stesso tempo, gli accumulatori cancellano il contenuto e si preparano al prossimo ciclo di accumulo.
La riconfigurazione della variazione del tasso di decimazione si ottiene variando l'incremento di fase dell'accumulatore o le dimensioni dei passaggi in fase di esecuzione. È possibile aggiornare l'incremento di fase in tempo reale tramite un processore tramite l'interfaccia Avalon® Memory-Mapped (Avalon-MM). Quando il tasso di decimazione cambia, cambia anche il numero di polifasi accumulati nel percorso del filtro FIR. Per massimizzare l'intervallo dinamico, siamo in grado di fornire un fattore di scalabilità riconfigurabile alle unità di moltiplicazione e accumulo e all'uscita finale della mammella. È inoltre possibile riconfigurare questo registro di controllo tramite un processore tramite l'interfaccia Avalon-MM.
Questo esempio dimostra anche come sfruttare la funzione di piegatura del DSPB-AB. Il folding o il multiplexing time-division realizza automaticamente la condivisione delle risorse e il riutilizzo dell'hardware in base ai parametri di sistema specificati dall'utente. È particolarmente utile nei design multicanale.
Per ulteriori informazioni sulla progettazione dei filtri di ricampionamento in DSPB-AB, fare riferimento a AN 623: Utilizzo del set di blocchi avanzati di DSP Builder per implementare i filtri di ricampionamento (PDF).
Scaricare i file utilizzati in questo esempio:
I file nel download .zip includono:
- vardecimator_rt.mdl- File di progettazione DSPB-AB per filtro di decimazione a velocità variabile
- setup_vardecimator_rt.m: script MATLAB per configurare l'inizializzazione e i parametri di vardecimator_rt.mdl
- stop_vardecimator_rt.m: script MATLAB per tracciare l'output del filtro di decimazione a tasso variabile e confrontarlo con la forma d'onda di input
- vardecimator_rt_bare.mdl: file di progettazione basato su vardecimator_rt.mdl. Alcuni blocchi di banco di prova non sintetizzabili vengono rimossi per la generazione RTL