La generazione di forme d' onda mediante le funzioni di Walsh

Stampa
( 0 Votes ) 
Valutazione attuale:  / 0
ScarsoOttimo 
Categoria: Elettronica
Data pubblicazione
Scritto da Thermidor Visite: 3317

La generazione di forme d' onda mediante le funzioni di Walsh


Le funzioni di Walsh sono una sorta di "serie di Fourier" digitale, ma il loro impiego è decisamente più semplice.

Introduzione

Chi si è cimentato nel corso degli anni allo studio e realizzazione di sintetizzatori, ha sicuramente passato il momento nel quale si vuole creare qualsiasi forma d' onda, e per farlo si deve ricorrere alla sintesi addittiva.
Dopo l' entusiasmo iniziale, si capisce che ci si trova di fronte ad un ostacolo difficilmente superabile (dove difficilmente è un eufemismo), così puntualmente si lascia perdere.
Per ottenere l' obbiettivo prefissato occorre naturalmente fare ricorso alla serie di Fourier, che di per sè sarebbe il meno, peccato che vorrebbe dire costruire un numero considerevole di oscillatori controllati in tensione, perfettamente correlati, con la possibilità per ogni frequenza di disporre della funzione sia del seno che del coseno. Insomma una missione impossibile.
Ovviamente oggi con la tecnologia a disposizione si possono realizzare dispositivi che realizzano questa funzione, ma credo che escano dal contesto puramente amatoriale, almeno per chi come me, è di estrazione analogica.
L' utilizzo delle funzioni di Walsh permette di semplificare notevolmente il lavoro, data la loro natura digitale.

La serie di Fourier

Questa breve descrizione non è fornita per dare una spiegazione della serie di Fourier, vi sono ben altre fonti molto più autorevoli, piuttosto per illustrare la similitudine con l' espansione in serie delle funzioni di Walsh.

 

Secondo quanto esposto dal matematico Fourier, ogni funzione, ripetitiva, è scomponibile in una serie di armoniche, una sommatoria il cui risultato finale è appunto la funzione di origine. In altre parole è possibile analizzare una funzione non più nel dominio del tempo ma della frequenza.

 

In realtà dire che che è la sommatoria di una serie infinita di armoniche, è una spiegazione da elettronico, da un punto di vista teorico, la trasformata di Fourier di una funzione è:

 



Dove:

 



 

Quindi la (1) diventa:

 



 

Che è la formula generale della trasformata. In pratica risolvendo l' integrale alle varie frequenze (omega = 2*pigreco*f), si ottiene il contributo che ogni frequenza presa in esame dà alla formazione della funzione y(t).

La risoluzione è ovviamente la sommatoria dei valori istantanei di y moltiplicato un numero complesso, in un determinato periodo di tempo.

 

Ovviamente esiste anche il procedimento inverso, l' antitrasformata:

 



 

Attraverso la quale è possibile ricostruire la funzione nel dominio del tempo. In realtà eseguire una antitrasformata è di una difficoltà notevole, ma il senso delle formule (3) e (4) è quello di dimostrare come si può scomporre una forma d' onda in una serie di infinite componenti, ognuna con il proprio peso (in termini di ampiezza) e con ben determinata fase.

 

Per riportare la trasformata di Fourier su un piano più terreno, si ricorre alla sua espansione in serie:

 



 

La sommatoria di una serie di funzioni seno e coseno, multiple rispetto alla fondamentale, ciascuna con il proprio peso:

"a" per il coseno e "b" per il seno. Il termine a0/2 rappresenta una componente continua, praticamente il valor medio della funzione.


Il valore di questi pesi si ricava abbastanza facilmente:

 



 



 

Dove:

 

  • T è il periodo del segnale che si vuole esaminare
  • n corrisponde al numero dell' armonica in esame (n=1 fondamentale; n=2 seconda armonica e così di seguito)
  • omega = 2*pigreco/T, oppure 2*pigreco*f
  • t è il valore di tempo istantaneo che viene valutato (in pratica il rapporto t/T)
  • dt può essere associato al tempo di campionamento
 

Il fatto che le formule siano rappresentate come integrali non deve assolutamente scoraggiare, in quanto dalla rappresentazione grafica del segnale da analizzare, con calcoli abbastanza semplici e un po' di pazienza, si arriva facilmente alla determinazione dei coefficienti "a" e "b" per ogni armonica presa in considerazione.

Questo perchè l' integrale altro non è che una sommatoria.

 

Le Funzioni di Rademacher

La serie delle funzioni di Rademacher sono piuttosto intuitive, le cito perchè fanno parte delle funzioni di Walsh.

Queste funzioni, come quelle di Walsh, non sono rappresentate da delle sinusoidi ma da onde quadre, il cui valore è compreso tra +1 e -1.

E' quindi possibile assimilarle a segnali digitali, e di fatto, le funzioni di Rademacher, corrispondono alla divisione della frequenza di un clock per 2, 4, 8, 16 e così via, insomma quello che si ottiene con un 74161, o un 74393, o i relativi componenti della serie CD.

Sommando e sottraendo tra di loro queste funzioni, è possibile ricreare un certo numero di forme d' onda.

Questa tecnica è stata largamente usata negli organi elettronici degli anni '60 e '70.

 

Le Funzioni di Walsh

 Le funzioni di Walsh, come quelle di Rademacher, sono costituite da una serie di onde quadre il cui valore varia tra +1 e -1, ma a differenza delle funzioni di Rademacher che offrono solo multipli di 2, le funzioni di Walsh comprendono anche tutti gli altri multipli.

Questo risultato non è raggiunto usando diversi clock, ma attraverso una serie di XOR, generando una sequenza di onde così dette ortogonali.

Le funzioni di Walsh vengono classificate come WALn, per valori di n che vanno da 0 a, teoricamente, infinito.

All' interno della classificazione classica, si usa distinguere le funzioni in due categorie: SALn e CALn, dove SAL e CAL a parità di pedice, corrispondono alla stessa funzione ma con sfasamento di 90°.

Per farla breve le funzioni SALn corrispondono alla interpretazione digitale della funzione seno, mentre CALn a quella del coseno.

La figura di seguito rende meglio l' idea più di tante parole:

 

L'immagine è stata ridimensionata. Clicca qui per vedere l'immagine ingrandita. Le dimensioni originali sono 800x259
+
Figura 1

 

La Fig1, è il risultato di una simulazione, quindi le forme d' onda ottenute sono di tipo digitale, e rappresentano le funzioni da SAL1 a SAL8 e da CAL1 a CAL7, in pratica le funzioni da WAL1 a WAL15.

La funzione WAL0 in genere non è usata, almeno per lo scopo di generare forme d' onda in quanto rappresenta un valore continuo.

Il circuito per generare le forme d' onda di Fig1 è illustrato di seguito:

 

L'immagine è stata ridimensionata. Clicca qui per vedere l'immagine ingrandita. Le dimensioni originali sono 800x582
+ Figura 2

 

Come si può notare vengono generati i segnali diretti sia quelli negati, questo principio è molto importante in quanto le funzioni di Walsh, a differenza della serie di Fourier, non rappresentano una sintesi addittiva ma piuttosto un mix tra sintesi addittiva e sottrattiva.

La serie di Walsh-Fourier

La serie di Walsh-Fourier ricalca ovviamente quella di Fourier, solo che al posto della rappresentazione seno-coseno nel tempo, viene utilizzata la sequenza di SAL-CAL nel tempo.

 



Anche in questo caso occorre trovare il valore dei pesi per ogni sequenza:

 





 

La similitudine con la serie di Fourier è evidente. La differenza sostanziale sta nel fatto che nel caso della serie di Walsh il calcolo diventa banale in quanto i valori istantanei delle sequenze possono essere +1 o -1.

La determinazione dei pesi

Sia con la serie di Fourier che con quella di Walsh-Fourier, da una forma d' onda, anche disegnata a mano, è possibile ricavare l' incidenza delle varie componenti, sia in termini di seno-coseno, che di sequenze SAL-CAL.

Questo tipo di procedimento, almeno per quello che riguarda la serie di Fourier, è una approssimazione degli integrali delle formule (6) e (7), e prevede una sorta di campionamento del segnale, almeno due volte superiore alla armonica più alta che si vuole analizzare.

Questo non rappresenta invece un problema nel caso della serie di Walsh-Fourier, data la natura dei segnali digitali, e quindi la ricostruzione della funzione approssimata, un po' come se fosse una conversione digitale-analogica.

Il calcolo dei pesi nella serie di Fourier

Come detto in precedenza, basta ricondurre gli integrali delle formule (6) e (7), a delle sommatorie del valore istantaneo della funzione da valutare, moltiplicato il valore del seno (o coseno) dell' armonica in esame.

 

Ad esempio, volendo valutare l' incidenza della funzione coseno:

 



 

Cioè il peso del coseno dell' amonica "n" sarà la somma di tutti i prodotti del valore istantaneo della funzione "y" per il coseno attuale dell' armonica "n". Attenzione che il coseno è calcolato non da gradi ma da radianti.

Questo metodo è chiaramente una approssimazione e non è detto che restituisca la funzione di uscita di pari ampiezza di quella che si valuta, però il rapporto tra i pesi è abbastanza corretto, alla fine occorre intervenire per aggiustare il livello del segnale.

 

Per fare un esempio si può tentare di ricostruire un' onda triangolare, quella illustrata nella figura di seguito:

 



Figura 3

 

Immaginiamo di volerla ricostruire utilizzando otto campioni:

 

  • t=0 ; y=0
  • t=1ms ; y=0,5
  • t=2ms ; y=1
  • t=3ms ; y=0,5
  • t=4ms ; y=0
  • t=5ms ; y=-0,5
  • t=6ms ; y=-1
  • t=7ms ; y=-0,5
 

Dato che vengono presi in considerazione solo otto campioni, la massima armonica valutabile sarà la quarta, superare questo limite vuole dire generare un effetto di aliasing.

Essendo il periodo della forma d' onda 8ms, la frequenza è 125Hz.

Con questi valori si può cominciare a calcolare il peso del seno della prima armonica (n=1):

 

  • t=0 ; y=0 -> ovviamente il valore sarà 0
  • t=1ms ; y=0,5 -> 0,5*sin(1*6,28*125*0,001) = 0,353
  • t=2ms ; y=1 -> 1*sin(1*6,28*125*0,002) = 1
  • t=3ms ; y=0,5-> 0,5*sin(1*6,28*125*0,003) = 0,354
  • t=4ms ; y=0 -> 0
  • t=5ms ; y=-0,5 -> -0,5*sin(1*6,28*125*0,005) = 0,353
  • t=6ms ; y=-1 -> -1*sin(1*6,28*125*0,006) = 1
  • t=7ms ; y=-0,5 -> -0,5*sin(1*6,28*125*0,007) = 0,354
 

Adesso basta fare la somma di tutti i valori ottenuti e il risultato è 3,415, questo è il peso del seno della prima armonica.

A questo punto basta rifare le stesse operazioni sostituendo n (2,3,4) poi fare altrettanto con i coseni.

I valori trovati saranno:

 



Seno
Armonica Ampiezza
1 3,415
2 -0,003
3 -0,587
4 0


Coseno
Armonica Ampiezza
1 0,005
2 0
3 -0,003
4 0
 

 

 Come si può notare le funzioni coseno non hanno praticamente nessuna incidenza, come pure le funzioni seno della seconda e quarta armonica, quelle che hanno un peso significativo sono il seno della fondamentale e il seno della terza armonica (invertita di fase, segno -).

Facendo una semplice simulazione il risultato:

 



 
Figura 4

 

Ovviamente il risultato è approssimato a solo quattro armoniche, ma si può immaginare quale sarà il risultato aumentando i punti di campionamento e di conseguenza l' intervento di più armoniche.

 
In fondo questo tipo di calcolo non è nulla di strano, semplicemente è una applicazione della trasformata discreta di Fourier (DFT), un esempio di calcolo fatto da TheAlu10000 è riportata in fondo a questo articolo.

 

Il calcolo dei pesi nella serie di Walsh-Fourier

 
Per trovare il valore dei pesi, utilizzando le sequenze di Walsh, si procede come per la serie di Fourier, ma con una enorme facilitazione in quanto le funzioni di Walsh hanno solo due stati: +1 e -1, quindi il risultato istantaneo dei valori campionati sarà: o il valore effettivo o il suo negato.

 
Prendendo l' esempio precedente basta prendere il valore campionato e moltiplicarlo per il corrispondente valore della sequenza associata (SALn o CALn).

 
Per comodità si può riportare il tutto su un foglio di Excel. Io ne ho fatto uno per dare l' idea:

 
 

 
L'immagine è stata ridimensionata. Clicca qui per vedere l'immagine ingrandita. Le dimensioni originali sono 984x595
+  



Figura 5

 

Con questo esempio si può trovare il valore dei pesi per funzioni SAL1-SAL8 e CAL1-CAL7, la forma d' onda deve essere distribuita su 16 punti.

Le differenze tra Fourier e Walsh 

Nonostante le molte similitudini tra i calcoli della serie di Fourier e quella di Walsh-Fourier, esiste una differenza di base: mentre Fourier è una sintesi puramente addittiva, Walsh realizza una sorta di sintesi addittiva sottrattiva.

Se si volesse ad esempio generare un segnale sinusoidale tipo y(t)=sin(omega*t), con Fourier sarebbe semplicissimo: basterebbe usare una sola sinusoide.

Con Walsh i pesi diventerebbero:

 



SAL
SAL1 10,52
SAL2 0
SAL3 -4,168
SAL4 0
SAL5 -0,828
SAL6 0
SAL7 -2
SAL8 0
 

CAL
CAL1 -2
CAL2 0
CAL3 -0,828
CAL4 0
CAL5 0,168
CAL6 0
CAL7 -0,396
 

Come si può notare con le funzioni di Walsh occorre fare una serie di somme tra segnali in fase e in controfase ben maggiore.

Tutto questo è ovvio e deriva dal fatto che le sequenze sono onde quadre, il cui contenuto armonico è composto da componenenti di ordine dispari così ad esempio SAL1 è composta dalla 1,3,5,7,9 e via di seguito (armoniche con ampiezza decrescente).

Allo stesso modo SAL2 rappresenterà, rispetto a SAL1, le armoniche 2,6,10,14,18, SAL3 partirà dalla terza armonica e via di seguito.

Occorre in sostanza non solo sommare le armoniche principali, ma anche sottrarre quelle in eccedenza.

Una rapida simulazione della generazione di una sinusoide con Walsh è illustrata di seguito:

 

+

Figura 6

 

Si vede come il tutto assomiglia ad una sorta di conversione digitale/analogica, ad ogni modo l' analisi spettrale del segnale ottenuto non è neanche così male, certamente è meglio filtrare per avere un segnale più pulito.

 

+

Figura 7

 

Conclusioni

L' utilizzo delle funzioni di Walsh trova spazio in molti settori, ma dal punto di vista dell' impiego in musica richiede, come per Fourier, molte risorse e circuiti piuttosto elaborati.

Il tentativo di usare le sequenze per scopi musicali, ebbe un certo interesse negli anni '70, nel cuore dello sviluppo dei sintetizzatori analogici, ma nessuno degli studi effettuati portò a dei risultati concreti.

Ad ogni modo il loro impiego, nel campo del synthing DIY, può ancora essere utile impiegando in modo indiretto le funzioni.

Invece di realizzare in hardware le funzioni e il relativo controllo dei pesi, che lascio immaginare cosa comporterebbe, si potrebbero memorizzare all' interno di un microcontrollore solamente i valori dei pesi delle forme d' onda desiderate, e solo quelli impiegati per quell' onda, in modo che quando viene richiamato un segnale, tramite una tastierina o dei pulsanti, il processore provvede a calcolare in modo estremamente veloce l' onda richiesta e a riempire una memoria RAM, ovviamente esterna, dei dati calcolati. A questo punto tramite un VCO e una catena di divisione, si possono leggere i dati e convertirli in analogico.

Di seguito uno schema a blocchi di principio su come potrebbe svilupparsi il tutto:

 

L'immagine è stata ridimensionata. Clicca qui per vedere l'immagine ingrandita. Le dimensioni originali sono 860x362
+ Figura 8

 

Con una struttura di questo tipo, usando vecchie ram statiche da 2k x 8, si possono memorizzare fino a 64 segnali campionati a 16 punti, a questo punto si può decidere se leggerne solo uno, o più di uno in sequenza.

Utilizzando due convertitori D/A, e giocando sui reference, come una sorta di cross-fading, si può ad esempio passare dalla forma d' onda 1 alla 2, quando il processo è completo passare dalla 2 alla 3, cambiando magari il tempo di cross-fading.

Inoltre nella EEPROM dei microcontrollori, sarebbe possibile memorizzare i pesi delle "User Waves".

Insomma realizzare una sorta di sintesi WaveTable, ma anche una eventuale espansione verso la sintesi granulare.

Insomma spazio per sperimentare ce n' è ancora.



 

Citazioni e riferimenti

Due esempi dell' applicazione della Discrete Fourier Transform, e della Fast Fourier Transform, realizzati a mano da TheAlu10000:

infoportal.it/uploads/fckeditor/thermidor/file/Walsh/DFTbyALU.pdf

infoportal.it/uploads/fckeditor/thermidor/file/Walsh/FFTbyALU.pdf

 

Il sito del professor Sisto Baldo:

profs.sci.univr.it/~baldo/

 

Bernard A. Hutchins:

electronotes.netfirms.com/AES1.PDF

electronotes.netfirms.com/AES2.PDF

 

Henning F. Harmuth:

www.cesca.centers.vt.edu/research/r ... LSHFCT.pdf

www.cast.uni-linz.ac.at/Department/ ... en9_04.doc

 

Tim Ressel:

home.comcast.net/~t.ressel/walsh.html

 

Alcuni US PATENT riguardanti l' argomento:

 

www.freepatentsonline.com/3701143.pdf

www.freepatentsonline.com/3795864.pdf

www.freepatentsonline.com/3878749.pdf

www.freepatentsonline.com/4499550.pdf

www.freepatentsonline.com/4193332.pdf

www.freepatentsonline.com/3821527.pdf

www.freepatentsonline.com/4238984.pdf

 

Due fogli di calcolo di Excel per trovare i pesi (una versione con SAL1-8 e CAL1-7, l' altra con SAL1-16 per scopi musicali quest' ultima è la migliore in quanto non è importante il controllo della fase del segnale):

infoportal.it/uploads/fckeditor/thermidor/file/Walsh/WALSH_16.xls

infoportal.it/uploads/fckeditor/thermidor/file/Walsh/WALSH_SAL_32.xls

 



 



 



 




Joomla 1.7 Templates designed by College Jacke