DSP: Cosa sono i Digital Signal Processor? – settima parte

DSP: Cosa sono i Digital Signal Processor

Come tutti i microprocessori DSP, anche il TMS320C50 della Texas Instruments dispone di piedini destinati all’interscambio di informazioni con il mondo esterno. Questi pin risultano controllati internamente al chip da apposite periferiche denominate Port di I/O (Porte di ingresso/uscita). Il controllo da parte del software utente delle varie porte, siano esse seriali o parallele, avviene mediante delle operazioni di scrittura e di lettura di particolari registri. Vediamo quindi la struttura delle porte di I/O disponibili nel nostro DSP iniziando da quella seriale.

Quest’ultima risulta suddivisa in due sezioni: una ricevente caratterizzata da un registro di ricezione dei dati (DRR) di tipo SIPO (Serial input, Parallel Output) e una trasmittente in cui lavora il registro XRS di tipo PISO (Parallel Input, Serial output). Tutte le operazioni della porta seriale sono controllate dal registro a 16 bit denominato SPC (Serial Port Control Register). Vediamo quindi il significato di ogni bit di tale registro. Il bit b1 (DLB) del registro SPC consente di abilitare la periferica al funzionamento in “Loop digitale” o in “Normal Mode”. Nel primo caso (Loop digitale), i segnali DX e DR sono connessi da un multiplexer per dare origine ad un unico segnale DR, analogamente l’FSR e l’FSX sono multiplexati per generare il segnale di FSR esterno.

Nel secondo caso (Normal Mode), ogni piedino opera singolarmente. Il bit b2 (FO) consente di selezionare la lunghezza dei dati da trasmettere o da ricevere. Portando tale bit a 0 vengono abilitati tutti i 16 bit disponibili nella seriale, mentre se viene posto a 1 si abilitano solo gli 8 bit più bassi. Il b3 (FSM) attiva la richiesta del segnale di sincronizzazione per le operazioni di ricezione e di trasmissione dei dati.

tms320c50_schema_blocchi

Il bit b4 (MCM) seleziona il clock da utilizzare: portando a 0 il bit selezioniamo un clock esterno, portando a 1 il bit si collega la periferica al clock interno al DSP. Il bit 5 (TXM) serve per configurare il piedino FSX della periferica seriale. Portando tale bit a 1 il pin FSX funziona come ingresso, portandolo a 0 il pin FSX diventa una linea di uscita. I bit b6 (XRST) e b7 (RRST) consentono di resettare la porta seriale: il primo agisce sui parametri di trasmissione, il secondo su quelli di ricezione. Il bit b8 e il b9 del registro SPC rispecchiano lo stato dei piedini CLKR (IN0) e CLKX (IN1). I bit successivi, il b10 e il b11, indicano l’avvenuto trasferimento del registro di ricezione RSR nel DRR e del registro DXR nell’XRS: quando le operazioni di trasferimento risultano concluse, questi bit assumono il valore di uno logico e, nel contempo, viene generata una richiesta di interruzione.

Il bit b12 (XRSEMPTY) viene usato dal DSP per segnalare che il registro XSR risulta “vuoto” e che quindi è possibile caricare in quest’ultimo un nuovo dato. Analogamente, il bit b13 (RSRFULL) informa che il registro di ricezione è “pieno”. Gli ultimi due bit di SPC sono dedicati all’emulazione della scheda ad opera del debugger. Completata così la descrizione del registro di controllo della seriale, diamo un’occhiata alla struttura della porta parallela.

convertitore_analogico-digitale_funzionamento

DSP: La porta parallela

La periferica parallela disponibile nel TMS320C50 consente di indirizzare un massimo di 65535 locazioni esterne. Questo dispositivo gestisce due tipi di periferiche parallele: un primo gruppo composto da sedici porte è disponibile in memoria, ovvero ad ogni singola porta è associato un registro; un secondo gruppo è rappresentato da alcune locazioni di memoria a cui si accede direttamente con le istruzioni IN e OUT. Il primo gruppo di porte risulta mappato in memoria dalla locazione 50 hex alla 5F hex e per scrivere o leggere dei dati su tali porte basta utilizzare l’istruzione SACL. Per leggere o scrivere dei dati sul secondo gruppo di porte bisogna, invece, digitare l’istruzione IN o OUT seguita dalla locazione e dal dato. Ad esempio, con l’istruzione IN 0300h,0FFFEh trasferiamo il valore presente sulla penultima porta nella locazione di memoria 0300 hex; con l’istruzione OUT 0300h,0FFFFh trasferiamo il contenuto della locazione di memoria 0300 hex nell’ultima porta.

tml32040_schema_blocchi

Come in tutti i dispositivi molto veloci è presente un pin siglato READY per gestire lo stato di attesa qualora la periferica collegata al DSP (Digital Signal Processing) risulti più lenta nello scambio di dati con il DSP stesso. La comprensione del modo di funzionamento delle porte parallele e soprattutto di quella seriale è indispensabile per la prosecuzione del Corso poiché ci occuperemo ora del convertitore AD/DA implementato sulla scheda di emulazione contenuta nello Starter Kit, questo convertitore comunica infatti serialmente con il DSP.

Prima di descrivere il funzionamento del convertitore vogliamo chiarire alcuni concetti base legati alle problematiche di conversione A/D e D/A.

trasformata_fourier

DSP: La conversione A/D

Nel processo di conversione di un segnale analogico in uno di tipo digitale bisogna rispettare alcune regole affinché il segnale convertito sia una rappresentazione fedele di quello originale. La conversione A/D deve infatti rispettare il “Teorema del Campionamento”, conosciuto anche con il nome di “Teorema di Nyquist”, il quale impone una frequenza di “Sample” (campionamento) non inferiore al doppio della frequenza più alta presente all’interno del segnale da campionare. Sempre in relazione alla frequenza di campionamento occorre segnalare un particolare fenomeno che prende il nome di “Aliaising” o “Folding”. Quest’ultimo si manifesta come “ritorno” delle componenti in alta frequenza contenute nel segnale all’interno di quelle in bassa frequenza.

convertitore_rete_resistiva_funzionamento

Per evitare questo fenomeno accorre prevedere l’utilizzo di un filtro passa basso tra la sorgente del segnale ed il circuito campionatore. Così facendo, vengono eliminate tutte le componenti in alta frequenza indesiderate consentendo di utilizzare una frequenza di Sample di appena due volte superiore alla frequenza di taglio del filtro. Il campionamento di un segnale è una fase importante del processo di digitalizzazione di un segnale continuo nel tempo ma non è l’unica operazione che merita attenzione. Infatti, dopo aver elaborato il segnale digitalizzato esso va riconvertito in una forma d’onda continua nel tempo e per fare questo occorrono dei dispositivi di conversione D/A.

H2: La conversione D/A

Questi ultimi ricevono in ingresso un numero binario e presentano in uscita un livello di tensione proporzionale al numero binario. Anche in questo caso occorre prestare attenzione al tipo di convertitore da utilizzare; esso infatti deve essere compatibile con il dispositivo utilizzato per la conversione del segnale da analogico a digitale altrimenti si rischia di perdere le informazioni acquisite con la conversione A/D. I convertitori D/A sono molto più semplici di quelli A/D, sia da usare sia nel modo in cui sono costruiti. Generalmente un DAC è realizzato da una rete resistiva “a peso” ovvero da un certo numero di resistenze collegate tra loro in modo che ad ogni bit di ingresso sia associato un determinato “peso”.

convertitore_ad-da_struttura_interna

La rete resistiva è comandata da un gruppo di interruttori analogici formati da transistor o da Fet e pilotati direttamente dai bit d’ingresso. Il segnale convertito in forma analogica si presenta composto da tanti piccoli segmenti che grazie all’interposizione di un filtro passa-basso vengono “arrotondati” e in gran parte eliminati in modo da ottenere un segnale che varia con continuità.

IL DSP TLC32040

La scheda di emulazione contenuta nello Starter Kit implementa un convertitore analogico-digitale-analogico tipo TLC32040. Quest’ultimo è caratterizzato da una risoluzione di 14 bit sia per la sezione A/D che per quella D/A e da una frequenza massima di lavoro di 16 KHz (frequenza massima del segnale da convertire di 8 KHz). All’interno del TLC32040 troviamo due sezioni indipendenti, di cui una dedicata alla conversione A/D, una dedicata a quella D/A e un sistema stabilizzato in grado di ricavare la tensione di riferimento per le due sezioni di conversione. Gli ingressi analogici, siglati IN+ e IN-, e quelli ausiliari, siglati AUX IN+ e AUX IN-, possono funzionare sia in modalità differenziale che a single-ended con guadagno regolabile da 1 a 4. L’escursione massima del segnale analogico in ingresso è funzione del guadagno dell’ingresso stesso e va limitata a +/- 6 volt se il guadagno è unitario, oppure a +/- 1,5 volt con guadagno massimo (4 volte).

La sezione di conversione A/D dispone in ingresso di un filtro passa-banda del settimo ordine, molto selettivo e controllabile via software. In pratica, il filtro in questione è realizzato da una serie di capacità che vengono inserite/ disinserite mediante degli interruttori analogici controllabili da software. Anche il convertitore D/A prevede in ingresso un filtro, questa volta di tipo passa-basso, controllabile da software. La frequenza di commutazione degli interruttori analogici presenti nel filtro passa-banda e in quello passa-basso è di 288 KHz.

L’uscita del TLC32040 comprende un amplificatore di piccola potenza in grado di pilotare un carico minimo di 300 ohm, la tensione massima supportata dall’uscita varia da +/- 3 Volt (con impedenza del carico di 300 ohm) a +/- 6 Volt (con impedenza del carico di 600 ohm).

blocco_hardware_sistema_dsp

Il TML32040 può funzionare sia in modo asincrono che sincrono. Nel primo caso, le frequenze di conversione e quella pilota dei filtri possono risultare diverse tra loro per rendere indipendente la sezione A/D dalla D/A. Nella modalità sincrona, invece, entrambe le sezioni funzionano alla stessa frequenza. La modalità di funzionamento, la frequenza base per la conversione A/D, per il filtro bassa banda, per la conversione D/A e per il filtro passa-basso vengono selezionate agendo sui registri di controllo del chip. All’atto della prima accensione, il convertitore inizializza i propri registri per lavorare con una frequenza di conversione sincrona di 8 KHz.

dsp_dominio_frequenze

Protocollo di comunicazione e DSP

Il convertitore comunica serialmente con il DSP mediante sei linee di I/O. I dati transitano sulle linee Data Trasmit (TX) e Data Receive (DR). Le due linee di controllo, siglate EODR e EODX, servono rispettivamente per informare il DSP che il dato è stato completamente ricevuto e che la trasmissione dei dati è terminata. I pin FSR e FSX generano un segnale di sincronizzazione in corrispondenza della ricezione o della trasmissione dei dati. Il settaggio di questo dispositivo avviene mediante le prime due Word inviate al chip dal DSP dopo la fase di reset. In questa fase possiamo scegliere una serie di parametri quali il guadagno dello stadio di ingresso, l’abilitazione degli ingressi ausiliari, il tipo di trasmissione e la selezione del filtro passa banda sull’ingresso.

Digital Signal Processing: Il programma

Concludiamo questa puntata proponendo il listato di un semplice programma didattico. Il programma in questione consente di leggere un segnale audio, di regolarne il volume, di filtrarlo opportunamente e di presentarlo in uscita. Il listato risulta suddiviso in quattro parti fondamentali. La prima contiene le istruzioni relative alla gestione delle interrupt. Nella seconda parte del programma trovano posto le istruzioni di inizializzazione del DSP quali l’abilitazione degli interrupt e la scelta dei registri ausiliari. La terza parte del programma esegue l’inizializzazione del convertitore TLC32040. Infine, l’ultima sezione, provvede a leggere i dati dal registro DRR, a filtrarli mediante la funzione matematica OUT= IN*k2/(1-k1) ed alla regolazione del volume mediante le due subroutine “Aumenta” e “Diminuisci” controllate dalle interruzioni INT1 e INT3. Gli interrupt in questione coincidono con i pin 1 e 3 di JP3 dello Starter Kit e risultano attivi quando vengono portati a livello logico basso.

Leave a Reply