Esercitazione 2 Progetto e realizzazione di un semplice
Transcript
Esercitazione 2 Progetto e realizzazione di un semplice
Architetture dei sistemi integrati digitali © Alessandro Bogliolo Esercitazione 2 Progetto e realizzazione di un semplice sintetizzatore musicale basato su FPGA (A) Definizione della specifica ed esperimenti preliminari Facoltà di Ingegneria – Università di Ferrara – A.A. 2001/02 1 Architetture dei sistemi integrati digitali © Alessandro Bogliolo 1 Definizione del problema 1.1 Background minimo [http://www.marcostefanelli.com/subliminale/acustica.htm] Il suono è un’onda periodica che si propaga in un mezzo fisico (tipicamente l’aria). Il suono è caratterizzato da: altezza (frequenza dell’onda periodica), timbro (forma d’onda nel dominio dei tempi o spettro nel dominio delle frequenze), intensità (ampiezza). Ad alcune frequenze si associano le note delle scale musicali. La distanza tra due frequenze f1 ed f2 è detta ottava se f2 = 2 f1. Lo spazio di un’ottava è suddiviso in toni e semitoni che separano le diverse note. Le diverse regole di scomposizione danno origine a diverse scale musicali. Le note della scala naturale o cromatica sono: do f; re 9/8f; mi 5/4f; fa 4/3f; sol 3/2f; la 5/3f; si 15/8f; do2 2f La scala temperata si basa sulla definizione di semitono come radice dodicesima di 2 (circa 1.05946): tra due note c’è un semitono se f2 = 1.05496 f1. Il tono è il quadrato di un semitono. La distanza tra le note è espressa in termini di toni e semitoni: do <– 1 –> re <– 1 –> mi <– ½ -> fa <– 1 –> sol <– 1 –> si <– ½ -> do2 I simboli # (diesis) e b (be molle) indicano l’aumento o la riduzione di un semitono. La frequenza di 440Hz è per convenzione un LA. 1.2 Funzionalità Realizzazione di un sintetizzatore musicale che associ le note musicali ai tasti di una comune tastiera per PC e ne produca il suono a seguito della pressione dei tasti. 1.3 Criteri per la valutazione della qualità della soluzione • • • • 1.4 Estensione della testiera: numero di note riproducibili Qualità del suono: frequenza di campionamento, livelli di quantizzazione, distorsione delle forme d’onda Numero di timbri selezionabili: numero di forme d’onda associate alla stessa nota Effetti opzionali Risorse hardware utilizzabili • • • • • • FPGA xilinx XC4005XL+ • blocchi logici configurabili (CLB) Memoria SRAM AS7C1024 collegata all’FPGA sulla board di prototyping XS40 • 128K x 8 Porta PS2 collegata all’FPGA sulla board di prototyping XS40 Convertitore D/A e uscita audio collegati all’FPGA sulla board di estensione XSTend Oscillatore a 100MHz Display a 7 segmenti sulla board XS40 2 Generazione di un tono 2.1 Premessa Non disponendo di oscillatori programmabili (se non del clock a 100MHz) il suono dovrà essere prodotto in forma digitale (campioni quantizzati) e convertito utilizzando i convertitori D/A in dotazione. 2.2 Notazione • • • • 2.3 T s (t) T s n Ts W forma d’onda periodica di periodo T n-esimo campione periodo di campionamento numero di bit per campione Soluzione A: Calcolo del valore istantaneo della forma d’onda Si suppone di conoscere un’espressione analitica del valore istantaneo della forma d’onda. T T L’n-esimo campione da produrre può essere calcolato direttamente come s n = s (t0 + nTs) Vantaggi: Facoltà di Ingegneria – Università di Ferrara – A.A. 2001/02 2 Architetture dei sistemi integrati digitali • • © Alessandro Bogliolo possibilità di modificare fase (t0) e passo di campionamento (Ts) minime esigenze di memoria Svantaggi: • elevata complessità di elaborazione dipendente dalla natura della forma d’onda • hardware dedicato alla specifica forma d’onda 2.4 Soluzione B: Look-up table Si suppone di aver pre-calcolato e memorizzato i valori degli N campioni della forma d’onda tra 0 e T a T T partire da t0=0: N=T/Ts, s n=s (nTs). Il campione n-esimo si trova nell’n-esima locazione di memoria a partire da una locazione prestabilita base-address. Vantaggi: • semplicità • possibilità di modificare la forma d’onda cambiando i valori in tabella • complessità indipendente dalla forma d’onda Svantaggi: • impossibilità di modificare t0 e/o Ts • esigenze di memoria: NxW 3 Generazione di toni diversi sullo stesso registro 3.1 A T T1 L’espressione di s (t) può essere direttamente utilizzata per calcolare i valori campionati di s (t) poichè T1 T s (t) = s (t T/T1) e quindi T1 T1 T s n = s (t0+nTs) = s ((t0+nTs)T/T1) 3.2 B1 Cambiando la frequenza (e quindi il rapporto tra Ts e T) cambiano i valori campionati. La soluzione più banale per essere in grado di generare K toni diversi consiste nell’uso di K tabelle diverse. Questo aumenta l’impegno di memoria a vantaggio della complessità computazionale. 3.3 B2 Il segnale a frequenza T1 può essere generato utilizzando i campioni memorizzati di quello a frequenza T. Occorre stabilire il criterio di scelta del valore da associare all’n-esimo campione. T1 Se il rapporto tra nT e T1 è un numero intero, il campione n-esimo del segnale S corrisponde al campione T del segnale S memorizzato in posizione nT/T1. s nT 1 = s T T n T1 T1 Se il rapporto non è un numero intero, il campione n-esimo del segnale S non esiste in memoria e dee essere generato estrapolandolo dai valori disponibili. A tal fine possono essere adottati diversi criteri, tra i quali: s nT 1 = s T primo campione precedente s nT 1 = s T primo campione successivo T nT1 T nT1 1 s nT 1 = s T T + s T T n nT1 2 T 1 T T s nT 1 = s T T + s T T − s T T n − n n nT 1 n T 1 T 1 T 1 T1 Facoltà di Ingegneria – Università di Ferrara – A.A. 2001/02 media tra i due campioni più vicini interpolazione tra i due campione più vicini 3 Architetture dei sistemi integrati digitali © Alessandro Bogliolo Si noti che tutte le precedenti approssimazioni valgono sia per T>T1, sia per T<T1 e, benchè inutili in questo caso, per T=T1. Le prime due soluzioni richiedono un solo accesso in memoria per ogni campione, le restanti ne richiedono due. Inoltre l’ultima soluzione richiede una moltiplicazione, mentre la terza richiede solo uno shift. 4 Generazione di suoni con timbri diversi 4.1 A Nel caso di soluzione analitica, cambiare timbro significa cambiare la funzione per il calcolo dei campioni, e quindi la sua implementazione. La complessità dell’hardware dipende dal timbro. 4.2 B Nel caso di look-up table, cambiare timbro significa solo cambiare il contenuto della/e tabella/e. 5 Effetti 5.1 Dinamica del suono associato a ciascun tasto Il suono generato alla pressione di un tasto può seguire dinamiche diverse: • avere intensità costante fintanto che il tasto resta premuto e poi cessare istantaneamente • avere intensità costante fintanto che il tasto resta premuto e poi essere attenuato progressivamente • avere intensità nominale nell’istante in cui il tasto viene premuto per la prima volta e poi essere attenuato progressivamente anche se il tasto resta premuto (come avviene in un pianoforte) • ... 5.2 Attenuazione nel tempo Un suono attenuato può essere visto come il prodotto di un suono non attenuato per una funzione di attenuazione a(t) (funzione decrescente che vale 1 al tempo 0 e tende a 0 all’infinito). ~ snT 1 = s nT 1a( nTs ) Poichè anche la funzione di attenuazione ci interessa solo negli istanti di campionamento, la sostituiamo con la successione dei suoi valori campionati an = a(nTs). Tra le funzioni di attenuazione sono particolarmente interessanti quelle che ammettono una definizione induttiva e quindi si prestano ad un calcolo ricorsivo. Tra queste c’è l’attenuazione esponenziale: n an = c , 0<c<1 la cui definizione induttiva è a0 = 1 an = an-1c 6 Sovrapposizione degli effetti 6.1 Approccio diretto Se la pressione di un tasto produce un suono che viene smorzato nel tempo ma non cessa appena viene rilasciato il tasto, l’effetto dei tasti premuti successivamente si somma all’effetto dei tasti premuti in precedenza. Il campione da mandare al convertitore digitale analogico deve quindi essere calcolato come: sn = ~ snT11 + ~ s nT22 + ... + ~ snTmm = s nT11 a n1 + s nT22 a n 2 + ... + s nTmm a nm Il calcolo di ogni campione richiede un numero di accessi in memoria e di operazioni proporzionale al numero m di tasti di cui si sovrappone l’effetto. Il valore massimo di m è limitato dalla frequenza operativa dell’hardware, dalla periodo di campionamento (tempo disponibile per il calcolo di ogni campione) e dai tempi di accesso alla memoria. 6.2 Approccio incrementale Assumiamo che la successione dei campioni della forma d’onda che risulta dalla sommatoria delle note suonate possa essere espressa come prodotto di una forma d’onda periodica con periodo NTs e di una n funzione di attenuazione esponenziale an = c . Facoltà di Ingegneria – Università di Ferrara – A.A. 2001/02 4 Architetture dei sistemi integrati digitali 6.2.1 6.2.2 6.2.3 6.2.4 © Alessandro Bogliolo Si supponga ora di disporre di una memoria ausiliaria di dimensione N, in cui memorizzare i primi N campioni della forma d’onda da riprodurre. Uso della memoria ausiliaria per la riproduzione di una sola nota Sotto queste ipotesi, in risposta alla pressione di un tasto si accede alla look up table (LUT) della nota corrispondente, si calcolano i primi N campioni del segnale da riprodurre e li si memorizza nella memoria ausiliaria. Per calcolare i successivi campioni non è più necessario accedere alla LUT della nota, ma è N sufficiente rileggere i dati dalla memoria ausiliaria attenuandoli di un fattore c prima di riprodurli. Se i nuovi valori sovrascrivono i precedenti nella memoria ausiliaria, il procedimento può essere ripetuto esattamente uguale fino alla completa estinzione del segnale. Uso della memoria ausiliaria per la riproduzione di una seconda nota sovrapposta alla prima Se viene premuto un secondo tasto durante la riproduzione di una nota, il calcolo del campione del segnale da riprodurre comporta l’accesso alla memoria ausiliaria per recuperare il segnale di fondo, l’attenuazione del segnale di fondo, l’accesso alla LUT della nuova nota, l’attenuazione della nuova nota e la somma dei due valori. Il nuovo campione, oltre ad essere inviato al convertitore digitale analogico, sostituisce quello precedente nella memoria ausiliaria. Trascorso un periodo (N campioni) dalla pressione del tasto, il contenuto della memoria ausiliaria rappresenta già la somma di tutte le note da riprodurre, che devono solo essere attenuate prima di essere riprodotte. Uso della memoria ausiliaria per la riproduzione di una nota sovrapposta a molte precedenti Poichè il suono di fondo memorizzato nella memoria ausiliaria può rappresentare la sovrapposizione di un numero arbitrariamente grande di note, l’uso della memoria rende la riproduzione di n note computazionalmente uguale alla riproduzione di 2 sole note: si tratta sempre di sovrapporre una nuova nota al segnale di fondo. In simboli In simboli, la memoria ausiliaria viene utilizzata al passo n per recuperare il valore assunto dal segnale d’uscita al passo n-N. Questo valore deve essere attenuato ed usato come base a cui sovrapporre tutti gli eventuali suoni la cui riproduzione è iniziata da meno di un periodo: Tk nk sn = sn− N c N + ~ s nT11 + ~ snT22 + ... + ~ snkTk = s n − N c N + s nT11c n1 + s nT22 c n 2 + ... + s nk c Il vantaggio fondamentale rispetto all’equazione del paragrafo 6.1 sta nel numero massimo di addendi: là era pari al numero m di nota da suonare contemporaneamente, qui è uguale a 1+k, dove k è il numero di tasti premuti in un periodo. Non solo generalmente k è molto minore di m, ma si può fare in modo che k sia al più uguale a 1, pur senza limitare il numero massimo di note sovrapponibili. 6.2.5 Limiti all’applicazione dell’approccio incrementale L’applicabilità dell’approccio incrementale è subordinato all’esistenza di una periodicità globale NTs della forma d’onda complessiva che possa essere determinata a priori e che non superi le dimensioni della memoria disponibile. Se queste condizioni non sono soddisfatte si possono concepire approssimazioni o applicare limitazioni al numero di toni simultanei o al loro sfasamento (ad esempio iniziando a suonare una nuova nota solo all’inizio di un nuovo periodo NTs). 7 Rappresentazione dei campioni 7.1 Numeri interi con segno 7.2 Range dinamico 7.3 Volume 7.4 Sovrapposizione degli effetti 8 Valutazioni ed esperimenti preliminari 8.1 Stime dei costi • • • 8.2 Memoria Risorse di calcolo Controllo Stima delle prestazioni (Matlab) Effettuare simulazioni in Matlab per valutare l’effetto delle diverse scelte progettuali, tra cui: • Frequenza di campionamento • Livelli di quantizzazione Facoltà di Ingegneria – Università di Ferrara – A.A. 2001/02 5 Architetture dei sistemi integrati digitali © Alessandro Bogliolo • Forme d’onda e timbri • Interpolazione di campioni • Attenuazioni • Sovrapposizione del suono di più note • Uso della memoria ausiliaria per l’approccio incrementale (Utilizzare le funzioni Matlab disponibili sul sito Web come base per gli esperimenti) 8.3 Variazioni sul tema Se al posto della tastiera si pensa di utilizzare il mouse come dispositivo di input, è possibile concepire un sintetizzatore che permetta di scegliere in modo continuo (in base agli spostamenti del mouse) l’altezza e il volume della nota da suonare. 9 Interfaccia 9.1 Memoria 9.2 Porta PS2 9.3 Uscita audio Facoltà di Ingegneria – Università di Ferrara – A.A. 2001/02 6