Dotazione per il laboratorio di Elaborazione del Segnale e Comunicazioni Elettriche donazione Texas Instruments (circa 30 kEuro)
Digital signal processor TMS320C67x (TMS320C6711, C6711B, and C6711C) Eight 32-Bit Instructions/Cycle 100-, 150-, 167-, 200-MHz Clock Rates 10-, 6.7-, 6-, 5-ns Instruction Cycle Time 600, 900, 1000, 1200 MFLOPS Eight Highly Independent Functional Units: Four ALUs (Floating- and Fixed-Point) Two ALUs (Fixed-Point) Two Multipliers (Floating- and Fixed-Point) Dotazione: set di 25 schedine basate sul microprocessore TMS320C6711 e 25 simulatori software
Developer starter kit
codice A/D 16 bit converter (8 KHz) D/A Developer starter kit: utilizzo per il laboratorio
Developer starter kit: sistema di sviluppo
Esempio: multiplazione a divisione di frequenza e DSB
Esempio: radio – DSB Lato PC: generazione di due segnali: uno in banda base (B=2 KHz) e laltro (B=1 KHz) modulato a f 0 = 3000 Hz. Il segnale viene interpolato, amplificato e trasmesso su cavo Microprocessore: Conversione A/D con campionamento a 8 kHz Interpolazione a 16 kHz (per evitare aliasing nella demodulazione, che genera unimmagine con centro banda 6 kHz) Canale 1: filtro passa basso 0-2 KHz Canale 2: demodulazione e filtro passa basso a 1 KHz Problema: le portanti possono non essere esattamente alla stessa frequenza e si generano dei battimenti
Esempio: radio2 - DSB Lato PC: si aggiunge la portante in trasmissione Microprocessore: Estrazione della portante da usare in demodulazione Filtro passa-alto elimina continua dopo la demodulazione
Schema del ricevitore
Struttura del programma main() { short k; for (k=0;k<26; k++) stateint[k]=0; i=0; for (k=0;k<101; k++) c1state[k]=0; ic1=0; for (k=0;k<201; k++) c2state[k]=0; ic2=0; #ifdef SCHEDA comm_intr(); // init DSK, codec, McBSP if DSK present #else comm_file(); // open I/O files if DSK not present #endif while(1) { // Idle loop #ifndef SCHEDA /* * Artificially call the handler c_int12() * if DSK is not present. If DSK is present, c_int12() will * be called by the low-level interrupt handler. */ c_int12(); #endif } main: 1.inizializza stato dei filtri 2.wait for interrupt (ovvero invoca la routine di lettura- scrittura su file)
Struttura del programma Routine di interrupt (invocata con frequenza 8 kHz, ogni volta che un nuovo campione è disponibile nellADC) 1.Calcola primo campione uscita filtro interpolatore 2.se canale=1 1.aggiorna stato del filtro passa-basso di uscita (B=2 kHz) 3.else 1.estrai valore portante (normalizzato) 2.demodula il segnale 3.aggiorna stato del filtro passa-basso di uscita (B=1 kHz) 4.Calcola secondo campione uscita filtro interpolatore 5.se canale=1 1.calcola uscita del filtro passa-basso di uscita (B=2 kHz) 6.else 1.estrai valore portante (normalizzato) 2.demodula il segnale 3.calcola uscita del filtro passa-basso di uscita (B=1 kHz)
Filtri FIR: uso di buffer circolare Filtro numerico FIR implementazione : buffer circolare lettura... scrittura...
Allopera... !
Esempio: effetti di echo e riverbero in tempo reale echo : si realizza con un filtro numerico FIR implementazione : buffer circolare lettura... scrittura...
Esempio: effetti di echo e riverbero in tempo reale riverbero : si realizza con un filtro numerico IIR lettura... scrittura...
Esempio: effetti di echo e riverbero in tempo reale Struttura programma cicla aspettando le interruzioni dalla porta di ingresso (A/D) e di uscita (D/A) main: leggi il dato input scrivi input nella posizione corrente del buffer incrementa il contatore modulo N intr. A/D: calcola il dato in output se riverbero scrivi output nella posizione precedente del buffer scrivi output nella porta di uscita intr. D/A:
Esempio: effetti di echo e riverbero in tempo reale main: intr. A/D:
Esempio: effetti di echo e riverbero in tempo reale intr. D/A:
Allopera... !
Esempio: Eliminazione tono sinusoidale a 1000 Hz Il tono viene eliminato mediante lutilizzo di un filtro notch, con uno zero alla frequenza f 0 = 1000 Hz e un polo alla stessa frequenza e modulo prossimo a 1
Esempio: Eliminazione tono sinusoidale a 1000 Hz Lato PC: generazione di un segnale sinusoidale a 1000 Hz, sovrapposto al segnale vocale generato dal microfono. Il segnale viene interpolato, amplificato e trasmesso su cavo Microprocessore: Conversione A/D con campionamento a 8 kHz Filtraggio con filtro notch IIR (secondo ordine) e invio campione alla porta di uscita
Allopera... !