Home
Accesso / Registrazione
 di 

Alla scoperta dei D.S.P. Sesta puntata - 1

Alla scoperta dei D.S.P

Per conoscere ed imparare ad utilizzare questi nuovi processori che stanno rivoluzionando il sistema di elaborazione delle informazioni digitali. Una serie di articoli dedicati alla programmazione dei chip TMS320C5X della Texas Instruments, appartenenti ad una delle più flessibili e diffuse famiglie di DSP. Sesta puntata. Dopo aver appreso, nelle scorse puntate, le potenzialità che un dispositivo quale il DSP può offrire nell’ambito dell’elaborazione numerica dei segnali, è giunto il momento di proporre un’applicazione concreta basata sul TMS320C50.

Per fare ciò ci siamo rivolti direttamente al costruttore del chip ovvero alla Texas Instruments che abbiamo contatto tramite Internet all’indirizzo: “FTP: //FTP.ti. com/ mirrors/ tms320bbs/”. In questo sito la Texas propone una vastissima libreria di subroutine e di programmi applicativi per i suoi DSP più diffusi, dal vecchio TMS320C10 al nuovissimo TMS320C50. Proprio da questo sito abbiamo selezionato e “scaricato” l’applicazione che intendiamo presentare in questa puntata. Si tratta di un programma che utilizzando la piastra di emulazione dello Starter Kit abbinata ad un Personal Computer, consente di visualizzare sullo schermo di quest’ultimo lo spettro di un segnale presente all’ingresso. In pratica, consente di realizzare uno strumento (analizzatore di spettro) capace di fornire informazioni sulla composizione in frequenza di un segnale.

Vediamo quindi, una dopo l’altra, le varie operazioni da compiere per installare e per far “girare” questo programma. Il primo passo consiste ovviamente nel collegarsi alla BBS della Texas Instruments e nel copiare in una directory del proprio PC il file in questione, denominato: “5XDSKSPC.EXE”. Terminata questa fase, dovremo eseguire da DOS il programma: quest’ultimo provvederà automaticamente alla creazione, all’interno della stessa directory in cui è stato copiato, di nove diversi file. Controllate ora che nella directory ci siano i seguenti file: Spec50.txt, Spec50.mtp, Spec50.h, Spec50.exe, Spec50.asm, Spec50.c, Dsk_twid.asm, License.txt, Egavga.bgi. Il file Spec50.exe rappresenta l’applicazione eseguibile e quando viene “lanciato” provvede al caricamento del file Spec50.dsk nella memoria del DSP. Il file Spec50.dsk rappresenta quindi il programma compilato adatto ad essere interpretato dal microprocessore.

analizzatore_spettro_basato_tms320c50

Al contrario, il file siglato spec50.asm rappresenta lo stesso programma ma in versione sorgente, scritto cioè in linguaggio macchina. Gli altri file disponibili nella directory rappresentano delle utility necessarie al funzionamento dell’applicazione principale e tra questi rammentiamo il driver dell’interfaccia grafica del programma principale (Egavga.bgi).

;**************************************************************************
;BLOCCO 1 - Tabella per la selezione della frequenza di
; campionamento
;**************************************************************************
;Equazioni di funzionamento dell’ AIC
;Fclk = 10 MHz Frequenza d’ingresso all’AIC
;Fbit = Fclk/4 Frequenza di comunicazione della porta seriale
;Frequenza di conversione A/D in modalità sincrona (default)
;Fscf = Fclk/(2*TA) Frequenza di commutazione capacità di filtro
;Fs = Fclk/(2*TA*TB) Frequenza di campionamento A/D
;Frequenza di conversione D/A
;Fscf = Fclk/(2*TA) Frequenza di commutazione capacità di filtro
;Fs = Fclk/(2*TA*TB) Frequenza di campionamento A/D
;Note: 1) Il rapporto tra i registri TA e TB influisce sul rapporto tra
; segnale e rumore (SNR)
; 2) TA/RA settano la frequenza del filtro (SCF)
;Descrizione delle varie frequenze
;TA/RA SCF Fadc/Fdac Condiz. di funzionamento
; 1 5000.000 kHz 60.764 kHz Non utilizzabile
; 2 2500.000 kHz 30.382 kHz Non utilizzabile
; 3 1666.667 kHz 20.255 kHz rumorosa e instabile
; 4 1250.000 kHz 15.191 kHz rumorosa e instabile
; 5 1000.000 kHz 12.153 kHz rumorosa ma stabile
; 6 833.333 kHz 10.127 kHz poco rumorosa
; 7 714.286 kHz 8.681 kHz rumorosa
; 8 625.000 kHz 7.595 kHz OK
; 9 555.556 kHz 6.752 kHz OK
; 10 500.000 kHz 6.076 kHz OK
; 11 454.545 kHz 5.524 kHz OK
; 12 416.667 kHz 5.064 kHz OK
; 13 384.615 kHz 4.674 kHz OK
; 14 357.143 kHz 4.340 kHz OK
; 15 333.333 kHz 4.051 kHz OK
; 16 312.500 kHz 3.798 kHz OK
; 17 294.118 kHz 3.574 kHz OK
; 18 277.778 kHz 3.376 kHz OK
; 19 263.158 kHz 3.198 kHz OK
; 20 250.000 kHz 3.038 kHz OK
; 21 238.095 kHz 2.894 kHz OK
; 22 227.273 kHz 2.762 kHz OK
; 23 217.391 kHz 2.642 kHz OK
; 24 208.333 kHz 2.532 kHz OK
; 25 200.000 kHz 2.431 kHz OK
; 26 192.308 kHz 2.337 kHz OK
; 27 185.185 kHz 2.251 kHz OK
; 28 178.571 kHz 2.170 kHz OK
; 29 172.414 kHz 2.095 kHz OK
; 30 166.667 kHz 2.025 kHz OK
; 31 161.290 kHz 1.960 kHz OK
;**************************************************************************

;**************************************************************************
;BLOCCO 2
;**************************************************************************
AIC_CMD .word 0x0003 ;0x72 0000 0000 0000
;011=0x0003
SIG_DEL .word 0x0000 ;0x73
STAT1 .word 0x0000 ;0x74
ACCU_lo .word 0x0000 ;0x75
ACCU_hi .word 0x0000 ;0x76
REAL .word 0x0000 ;0x77
IMAG .word 0x0000 ;0x78
AUX0 .word 0x0000 ;0x79
AUX1 .word 0x0000 ;0x7A
FFT_S .word 256 ;numero tot. di campioni
FFT_S-1 .word 255
FFT_S/2 .word 128
FFT_S/2-1 .word 127
scratch .word 0
;TABELLA DEI REGISTRI ALLOCATA NEL BLOCCO RAM B0
.mmregs
.ps 080ah
B RINT ;RINT salto alla routine di ricezione
B XINT ;XINT salto alla routine di trasmissione
;INIZIO PROGRAMMA
.ps 0x0a00 ;Indirizzo di partenza
.entry ;Collocazione del programma
start:
SETC INTM ;Disabilitazione degli interrupt
SETC SXM ;Abilitazione del segno per i dati dell’acc.
SETC OVM ;Abilitazione overflow
LDP #0 ;Caricamento della pagina di memoria 0
SPLK #0830h,PMST ;Abilitazione interrupt e mem. RAM
LACC #0 ;ACC=0
SAMM CWSR ;Zero stati di attesa
SAMM PDWSR
SPLK #020h,IMR ;Setta interrupt di ricezione
AIC_RS SPLK #01h,PRD ;Genera clock per l’AIC
SPLK #20h,TCR
MAR *,AR0 ;Selezione del reg. AR0
LACC #0008h ;ACC=8 hex
SACL SPC ;FSX utilizzato come
;ingresso
LACC #00c8h ;ACC=C8 hex
SACL SPC ;Dati gestiti a 16 bit
LACC #080h ;ACC=80 hex
SACH DXR ;Invia il dato all’AIC
SACL GREG ;Inizializza mem. globale
LAR AR0,#0FFFFh ;Reset dell’AIC
RPT #500 ;Ciclo di attesa da:
LACC *,0,AR0 ;0.25ms a 50ns
SACH GREG
SETC SXM ;Abilitazione del segno per l’acc.
LACC AIC_CMD ;ACC=AIC_CMD
CALL AIC_2nd ;Chiamata alla subroutine di
;settaggio dell’AIC
LACC TB,2 ;Temporizzazione per la trasmissione
ADD TB,9 ;dei comandi di settaggio di TB
ADD #2 ;Somma 2 all’acc.
CALL AIC_2nd ;Chiama subroutine di settaggio AIC
LACC TA,2 ;Temporizzazione per la trasmissione
ADD TA,9 ;dei comandi di settaggio di TB
CALL AIC_2nd ;Chiama subroutine settaggio AIC
LDP #0 ;Carica pagina di memoria 0
LACC #010h ;ACC=010 hex
SACL IMR ;Abilita interrupt INT0
;**************************************************************************

Il kit è disponibile da Futura Elettronica

 

 

Scrivi un commento all'articolo esprimendo la tua opinione sul tema, chiedendo eventuali spiegazioni e/o approfondimenti e contribuendo allo sviluppo dell'argomento proposto. Verranno accettati solo commenti a tema con l'argomento dell'articolo stesso. Commenti NON a tema dovranno essere necessariamente inseriti nel Forum creando un "nuovo argomento di discussione". Per commentare devi accedere al Blog

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ci sono attualmente 13 utenti e 69 visitatori collegati.

Ultimi Commenti