Newsgroup: it.hobby.elettronica.digitale
Titolo: DSP

Ciao,
volendo fare qualche esperienza con il DSP, ovvero implementare qualche 
filtro FIR o IIR pensavo di provare con i dspPIC. Vorrei chiedere alcune 
cose, non tanto sui dspPIC quanto in generale:
1) A lezione abbiamo sempre ipotizzato che in ingresso ci fosse una 
sequenza di campioni. Nel caso reale si tratta dei campioni forniti 
dall'ADC. Come avviene l'elaborazione? Si genera un interrupt ad ogni 
campione in arrivo e occorre esesguire le moltiplicazioni e somme 
necessarie prima dell'int. successivo? Si può variare facilmente la 
frequenza di campionamento o realizzare in maniera comoda zero-padding e 
simili?
2) Ho visto che spesso ci sono diversi canali di ADC per gli ingressi ma 
non ho trovato (nei dspPIC) dei DAC in uscita. Mi sarei aspettato invece 
di trovarli... una volta filtrato il segnale dovrò pur riconvertirlo (a 
meno che non faccia parte di una catena più lunga). Come si fa di 
solito? Si mettono DAC esterni?
Per il momento basta così :)
Marco / iw2nzm

 solito? Si mettono DAC esterni?
La casa madre stessa definisce i dsPIC Digital Signal Controllers, ovvero qualcosa di simile ad un microcontrollore...
con funzionalità DSP. Tali funzionalità sono concentrate in un core DSP, un ADC spinto (10 bit 500ksps,  oppure 12bit
200ksps), e un'architettura a 16 bit che raggiunge i 30mips. Manca un DAC interno, anche se sono presenti diversi canali
in PWM a 16 bit di risoluzione, ma puoi facilmente interfacciarti con un chip esterno utilizzando la SPI di sistema,
oppure utilizzare un CODEC, sempre esterno. Trovi molti esempi sul sito microchip, comprese routine apposite "dsPIC30F
Speech Recognition Library". Si intende che utilizzare un oggetto come questo presuppone che tu scriva il software in un
linguaggio a livello più elevato dell'assembler. Puoi scaricarti il compilatore C30 in versione demo.
Una volta installato, aggiungi le librerie "dsPIC30F DSP Algorithm Library" e avrai la possibilità di esercitarti con
poche righe di codice su tutti i filtri e zero-padding che desideri.
Saluti,
--
simone.bern
Mr. Heisemberg is not the only one who can affect a measurement by looking at it (Robert A. Pease)
zsimone...@zliberoz.it
 (Rimuovere i caratteri di zorro per rispondere via mail)

 poche righe di codice su tutti i filtri e zero-padding che desideri.
Ti ringrazio per le informazioni!
Un'ultima cosa, se ho ben capito quindi i dsPIC (o eventuali analoghi di 
altre case) sono microcontrollori orientati all'elaborazione numerica 
ovvero dispongono di periferiche adatte e ottimizzate allo scopo.
Secondo te per fare un po' di pratica senza troppe pretese sarebbe 
possibile usare un comune micro? Esempio, volendo giocare con qualche 
FIR o IIR in banda audio (anche con freq. di campionamento bassa, tipo 
11KHz) ci si riesce? Ovviamente limitando la complessità del filtro alle 
risorse disponibili!
Ad ogni modo vado a leggermi la documentazione che mi hai segnalato e a 
scaricare il compilatore, così da farmi un'idea più precisa.
Grazie!
Marco / iw2nzm

 solito? Si mettono DAC esterni?
In effetti non sono moltissimi i microcontrollori con dei DAC integrati.
Quelli della silabs che ho consigliato all'altro utente mi pare che ce li
abbiano, altrimenti hai due strade: o metti un DAC esterno, oppure generi
con il micro un segnale a onda quadra con duty cycle proporzionale al tuo
segnale di uscita, e poi lo filtri con una rete RC per riottenere un
segnale continuo. Ma quest'ultima č proprio l'estrema ratio...
-- 
asd

 segnale continuo. Ma quest'ultima è proprio l'estrema ratio...
Per fare le cose bene è chiaro che un DAC esterno è l'ideale. Ma per 
fare qualche cosa casereccia... :)
Dici che un filtro del primo ordine è sufficiente a interpolare 
correttamente? Io pensavo ad esempio a un passa banda tipo a reazione 
multipla con op-amp, li si riesce ad avere un Q piuttosto alto. Che ne dici?
Marco / iw2nzm

 multipla con op-amp, li si riesce ad avere un Q piuttosto alto. Che ne dici?
Dipende tutto dal rapporto fra la frequenza massima che puoi usare per il
PWM e la frequenza dei campioni che stai generando; se ad esempio puoi
impostare la frequenza del PWM almeno 100-200 volte più alta della
frequenza di campionamento, ti basterà un filtro passa-basso del secondo
ordine che ad esempio tagli a Fs. In questo modo non attenuerai da 0 a
Fs/2, mentre Fs*100 (la frequenza del PWM) sarà attenuata di migliaia di
volte.
Ah, un'altra annotazione, che però è importante se stai facendo esperimenti
didattici: se piloti il DAC alla stessa frequenza con la quale campioni
l'ingresso, ovviamente il segnale che otterrai in uscita al DAC non sarà il
corretto segnale ricostruito. Se sai di cosa parlo hai già capito tutto,
altrimenti chiedi ulteriori dettagli. ;)
-- 
asd


Volevo solo aggiungere che la Maxim fornisce DAC di tutti i tipi e con tutte 
le interfacce possibili. Prova a vedere da loro, trovi sicuramente qualcosa 
di semplice da pilotare.
Bye!
-- 
  Redentore 

 Bye!
Hai ragione!
Marco / iw2nzm

 mancanza, sigh :)
Problemi di tecnologia. I DAC piu' comuni implicano
la costruzione sul chip di resistenze molto precise che richiedono
processi costruttivi diversi da quelli dei micro.
Tutto si puo' fare, ma i costi salgono e percio' e' piu' conveniente
usare chip separati. A proposito, quali sarebbero i micro con DAC
integrato? Personalmente non ne conosco.
Invece si possono costruire ADC con piu' o meno gli stessi processi
produttivi dei micro, percio' e' facile integrarli nello stesso chip.

 integrato? Personalmente non ne conosco.
Ad esempio quelli della Silabs che ho già citato, poi ci sono i MSP430
della Texas Instruments, gli AT91xxx della Atmel, i processori della
Philips derivati dall'8051, i MAXQxxxx della Maxim, e probabilmente
qualcuno della Infineon e della Renesas.
-- 
asd

 disponibili!

Questa non l'ho capita io :)
Mi spieghi cosa intendi?
Emiliano.


 altrimenti chiedi ulteriori dettagli. ;)
Non sono sicuro di aver capito cosa intendi: ti riferisci forse al fatto 
che l'interpolatore sarà un filtro reale (causale) e quindi la corretta 
ricostruzione necessita di un maggior numero di campioni rispetto a 
quelli previsti dal teorema del campionamento?
Marco / iw2nzm

 Mi spieghi cosa intendi?
Intendo dire che se ti limiti a spedire i campioni al DAC otterrai in
uscita un segnale a gradini, non il segnale ricostruito. Anche se a volte
si tende a dimenticarselo, il problema degli alias esiste anche nella
conversione da digitale ad analogico.
Per avere il segnale ricostruito si deve fare una convoluzione fra i
campioni che ottieni e un segnale opportuno (sinc, che č poi la risposta
impulsiva di un filtro passa-basso ideale). Questo lo puoi fare in digitale
(aumentando di almeno una trentina di volte la frequenza e facendo la
convoluzione con questo segnale) oppure in analogico (inserendo un filtro
molto ripido in uscita al DAC).
Questi sono i primi documenti che ho trovato sull'argomento:
http://www.cs.virginia.edu/~gfx/Courses/2003/ImageSynthesis/scribed_notes/09_sampling.pdf
http://www.abdn.ac.uk/physics/px4508/hndt-3
http://www.upscale.utoronto.ca/GeneralInterest/Drummond/Micro/sig_proc.pdf
-- 
asd