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