receptorul dtmf

48
SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII FACULTATEA ELECTRONICA TELECOMUNICATII SI TEHNOLOGIA INFORMATIEI RECEPTOR DTMF STUDENT: PROFESOR: 1

Transcript of receptorul dtmf

Page 1: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

FACULTATEA ELECTRONICA TELECOMUNICATIISI TEHNOLOGIA INFORMATIEI

RECEPTOR DTMF

STUDENT: PROFESOR:

Ilie Lorenta Zoican Sorin

*** 2008 ***

1

Page 2: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Descrierea teoretica a prelucarii de semnal

DTMF (Dual Tone Multifrequency) reprezintă un sistem de

semnalizare care înlocuieşte semnalizarea clasică,cu pulsuri,în reţeaua

telefonică. De asemenea sistemul DTMF este utilizat şi în alte aplicaţii :

sisteme bancare prin telefon,poştă electronică pe linie

telefonică,control la distanţă prin telefon.

Aparatul telefonic poate transmite operaţia de numerotare

(numărul apelat) spre centrală telefonică în următoarele moduri:

a) Serii de impulsuri lipsă de curent egale ca număr cu cifra care

trebuie transmisă;

b) Semnalizare multifrecvenţă (DTMF = Dual Tone Multifrequency),

care se realizează prin transmiterea simultană în linie a două semnale

de frecvenţe standardizate pentru fiecare cifră transmisă;

Codecul DTMF conţine un codor care transformă apăsările de

taste în semnale dual-tone, şi un decodor care detectează prezenţa şi

conţinutul informaţiei semnalului de ton DTMF care va fi recepţionat.

Fiecare tastă de pe claviatură cu numerotare în cod DTMF este unic

identificată de frecvenţa de pe linie şi frecvenţa de pe coloană (ca în

2

Page 3: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

figura 1). Schema de generare şi decodare nu este aşa de complicată

şi poate fi uşor rulată pe un DSP.

Sunt folosite două frecvenţe pentru a genera un digit DTMF. O

frecvenţă este aleasă din cele patru de pe rând, iar cealaltă este

aleasă din cele patru de pe coloană. Două din cele opt frecvenţe pot fi

combinate pentru a genera 16 digiţi DTMF, diferiţi între ei. Din cele 16

butoane care apar în figura de mai sus, 12 sunt butoane care se

gasesc pe orice tastatură telefonică , iar patru dintre ele sunt rezervate

pentru aplicaţii viitoare. Tastele A, B, C, D nu sunt folosite în prezent ,

dar sunt parte integrantă a standardului.

RECEPTIONAREA TONURILOR DTMF

Apăsând orice tastă , se generează un ton care este suma a două

sinusoide pe frecvenţe diferite, corespunzătoare liniei şi coloanei din

dreptul acelei taste. Frecvenţele utilizate în DTMF sunt alese cu grijă,

astfel încât circuitele de decodare să nu le confunde cu alte semnale

care pot apărea pe linie. Deoarece transmiterea semnalelor DTMF nu

3

Page 4: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

implică o întrerupere a circuitului telefonic, tonurile DTMF pot fi

transmise şi în timpul unei convorbiri telefonice, prin simpla apăsare a

unei taste.

Un semnal multifrecvenţă (DTMF) reprezintă o sumă de două

sinusoide convenabil alese; există mai multe standarde DTMF care

diferă prin numărul de frecvenţe alese şi prin valoarea acestora. Cel

mai utilizat standard este standardul CCITT care recomandă două

grupuri de frecvenţe : un grup de frecvenţe joase şi un grup de

frecvenţe înalte. Frecvenţele tipice DTMF sunt cuprinse între 700 Hz şi

1700 Hz.

Decodarea unui ton DTMF presupune extragerea celor 2 frecvenţe (tonuri) din semnal şi

testarea acestora pentru a se determina dacă semnalul este ton DTMF;dacă cele 2

frecvenţe corespund standardului DTMF atunci se determină codul de 4 biţi asociat

semnalului DTMF receptionat.

Decodarea analogică a tonurilor DTMF se realizează prin detecţia şi numărarea

trecerilor prin zero ale semnalului testat după ce acesta a fost trecut printr-un set de filtre

trece bandă foarte selective.În prelucrarea digitală este convenabil să se efectueze o

transformare din domeniul timp în domeniul frecvenţă. Această transformare este

efectuată utilizînd algoritmul Goertzel.Implementarea acestui algoritm se face cu ajutorul

unui filtru IIR de ordin 2 deci receptorul DTMF contine si el un asemenea filtru.In figura

1 este prezentată structura filtrului IIR de ordin 2.

4

Page 5: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Figura 1.Filtru IIR de ordin 2 care implementeaza algoritmul Goertzel

Algoritmul Goertzel este urmatorul:

| X(k) | 2 = A 2 + B 2 - A.B.c kA = Q k (N-1); B = Q k (N-1);Q k (n) = c k .Q k (n-1) - Q k (n-2) + x(n);c k = 2. cos (2πk/N);Alegerea lui N şi k se face conform relaţiei:f recvenţa dorită k----------------------------------- = -----( frecvenţa de eşantionare) N

Pentru detecţia unui ton DTMF este necesară determinarea amplitudinii celor 2

componente spectrale (frecvenţele care însumate generează tonul DTMF) şi a

armonicelor acestora. k = (N.frecvenţa dorita)/(frecvenţa de eşantionare) ;trebuie ales N

astfel încît k să rezulte cît mai apropiat de un numar întreg. Se alege N = 205 pentru

frecvenţele fundamentale şi N = 201 pentru armonici. Frecvenţa de eşantionare este de 8

kHz.

Avantajele folosirii algoritmului Goertzel:

nu este necesară stocarea a N eşantioane ale semnalului testat (N este numărul de

puncte în care se calculează transformata Fourier discretă).

calculul unui punct al DFT se realizează simultan cu citirea eşantionului curent al

semnalului testat.

nu este necesară adresarea cu inversarea biţilor (ca la FFT).

implementarea algoritmului Goertzel este simplă (echivalentă cu un filtru IIR de

ordin 2).

Testele care se efectueaza dupa ce a fost trecut prin filtre sunt:

1. - determinarea frecvenţei de linie şi a frecvenţei de coloană cu amplitudini

maxime, din cele 8 componente spectrale asociate frecvenţelor fundamentale.

2. - verificarea amplitudinii componentelor spectrale alese la punctul 1 (acestea

trebuie să depăşească un prag minim impus).

5

Page 6: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

3. - se verifică dacă mai există şi alte componente spectrale care au

amplitudinea peste pragul impus la punctul 2 (acest lucru nu este permis pentru un ton

DTMF).

4. - se calculează diferenţa în decibeli dintre nivelul frecvenţei de rînd şi nivelul

frecvenţei de coloană (determinate anterior) şi se compară cu un prag impus (altul decît

cel definit anterior);diferenţa nu trebuie să depăşească acest prag.

5. - pentru frecvenţele de rînd şi de coloană determinate se verifică amplitudinile

componentelor spectrale ale armonicii a -2 -a ;acestea trebuie să fie neglijabile.

6. - codul binar asociat tonului DTMF se generează numai dacă acesta are durata

corectă (tonul DTMF are o durată de 40-50 ms ). Specificaţiile date de AT&T

despre durata tonului arată următoarele:10digiţi/sec este rata de date

maximă pentru semnalele Touch-Tone. Pentru un interval de timp de

100 milisecunde, durata tonului este de cel putin 45 de milisecunde şi

nu mai lungă de 65 milisecunde. Esenţial este faptul că seria digiţilor

generaţi de la claviatură sunt transformate în serii de “dualtones” cu

durate bine specificate care sunt întrerupte de pauze, care sunt de

asemenea de anumite durate. Pauzele sunt de asemenea necesare

pentru a face deosebirea între doi sau mai mulţi digiţi intraţi succesiv.

Un ton DTMF se obtine prin însumarea unei frecvenţe din

grupul frecvnţelor joase cu o frecvenţă dingrupul frecvenţelor înalte.

Avantajele utilizării procesorului de semnal ADSP 2181 în generarea şi

recepţia tonurilor DTMF sunt urmatoarele:

- precizie ridicată în generarea frecvenţelor necesare;

- modificarea simplă a standardului DTMF (prin schimbarea structurii

de date a programului);

- posibilitatea implementării unor sisteme de generare şi recepţie

DTMF multicanal;

SCHEMA BLOC A SISTEMULUI

6

Page 7: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Organigrama programului

7

Page 8: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Organigrama pentru algoritmul Goertzel

Iniţializare variabile, întreruperi, stare

Iniţializare codec

SETUPIniţializare DSP

restart

Asteaptă întreruperi pe SPORT0

Prelucrări associate algoritmului de recepţie

Evaluarea şi generarea codului tonului decodat

nu

da

8

Page 9: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Organigrama pentru calc outcode:

Organigrama de conversie:

s-a primit întrerupere pe SPORT0

Buclă de aşteptare

Se citeşte eşantionul

N=N-1

N=0?

Apel feed-forward

Se calculează amplitudinile la pătrat corespunzatoare fiecarei frecvenţe şi se stochează în mnsqr

rts

Cntr=tones

Contor expirat?

Se umple bufferul circular Q1Q2_buff cu valorile calculate

nu

nu

da

da

Se iniţializează i1, i2, i3, cntraf=pass 0

Call test_and_output

Amplitudinea la pătrat corespunzătoare frecvenţelor tonurilor DTMF este mai mare decât nivelul minim?

rts

Outcode=ar

Contor expirat?

af=ax1 or afar=pass af

nuda

da

nu

9

Page 10: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Listingurile programului in limbaj de asamblare:

#include "def2181.h"

#define f_sample 8000 /*se defineste frecventa de esantionare*/#define N 205 /*sunt N puncte de esantioane= N puncte de calcul pt fourier*/#define tones 8 /*sunt 8 tonuri dtmf*/#define tones_x_2 16 /*se face decodare de doua ori*/#define M 1000 /*larginmea bufferului in*/#define scale -8 /*se defineste constanta scale =-8*/.section/dm data1; /*sectiunea de date in memorie*/.var/circ Q1Q2_buff[tones_x_2]; /* Goertzel feedback loop storage elements ,este un buffer circular in care se stocheaza coeficientii

Goertzel*/

Se citeşte outcode în registrul AR

Selectăm zona k=HI (frecvenţe înalte)

k=2?

k=4?

k=8?

k=1?

r=0r=1

r=2 r=3

mr1=r

Selectăm m=LO

m=1?

m=2?

m=4?

m=8?

c=0c=1

c=2

c=3

ERRError=1

ay1=c

sr1=4*r

ar1=sr1+c

tone=ar

rts

da

da

da

da

nu

nu

nunu

nu

nu

nu

nu

da

da

da

da

10

Page 11: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

.var outcode; /* codul de iesire*/

.global outcode;

.extern calc_tone;

.var/circ buff_in[M]; /* bufferul de intrare*/

.var in_sample; /*{ esantionul de intrare curent }*/

.var countN; /*{ numara esantioanele 1, 2, 3, ..., N }*/ /*{ min "tone-present" mnsqr level }*/.var min_tone_level[tones]=0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003,0x0003; /*{ valorile rezultate 1.15 mnsqr Goertzel }*/ /*praguri minime*/.var mnsqr[tones]; /*se declara o variabila magnitude square (x2(k) din formula Goertzel)*/.var bits[tones]=0x0001,0x0002,0x0004,0x0008,0x0010,0x0020,0x0040,0x0080; /*.var port_in*/.var tab[16]={0x0000,0x0001,0x0002,0x0003, 0x0004,0x0005,0x0006,0x0007, 0x0008,0x0009,0x000A,0x000B, 0x000C,0x000D,0x000E,0x000F}; /*tabela tonurilor, fiecare ton e pe 4 biti*/.global tab;.var tone;.global tone;.var error;.global error;.var rx_buf[3]; /* Status + L data + R data, buffer de receptie */.var tx_buf[3] = 0xc000, 0x0000, 0x0000; /* Cmd + L data + R data, buffer de transmisie */.var init_cmds[13] = 0xc002, /* se incepe initialixarea comenzilor codecului */ /*Left input control reg b7-6: 0=left line 1 1=left aux 1 2=left line 2 3=left line 1 post-mixed loopback b5-4: res b3-0: left input gain x 1.5 dB*/ 0xc102, /* Right input control reg b7-6: 0=right line 1 1=right aux 1 2=right line 2 3=right line 1 post-mixed loopback b5-4: res b3-0: right input gain x 1.5 dB */ 0xc288, /*left aux 1 control reg b7 : 1=left aux 1 mute b6-5: res

11

Page 12: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

b4-0: gain/atten x 1.5, 08= 0dB, 00= 12dB */ 0xc388, /* right aux 1 control reg b7 : 1=right aux 1 mute b6-5: res b4-0: gain/atten x 1.5, 08= 0dB, 00= 12dB*/ 0xc488, /* left aux 2 control reg b7 : 1=left aux 2 mute b6-5: res b4-0: gain/atten x 1.5, 08= 0dB, 00= 12dB*/ 0xc588, /* right aux 2 control reg b7 : 1=right aux 2 mute b6-5: res b4-0: gain/atten x 1.5, 08= 0dB, 00= 12dB*/ 0xc680, /* left DAC control reg b7 : 1=left DAC mute b6 : res b5-0: attenuation x 1.5 dB*/ 0xc780, /* right DAC control reg b7 : 1=right DAC mute b6 : res b5-0: attenuation x 1.5 dB*/ 0xc85c, /* data format register b7 : res b5-6: 0=8-bit unsigned linear PCM 1=8-bit u-law companded 2=16-bit signed linear PCM 3=8-bit A-law companded b4 : 0=mono, 1=stereo b0-3: 0= 8. 1= 5.5125 2= 16. 3= 11.025 4= 27.42857 5= 18.9 6= 32. 7= 22.05 8= . 9= 37.8 a= . b= 44.1 c= 48.

12

Page 13: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

d= 33.075 e= 9.6 f= 6.615 (b0) : 0=XTAL1 24.576 MHz; 1=XTAL2 16.9344 MHz*/ 0xc909, /* interface configuration reg b7-4: res b3 : 1=autocalibrate b2-1: res b0 : 1=playback enabled*/ 0xca00, /* pin control reg b7 : logic state of pin XCTL1 b6 : logic state of pin XCTL0 b5 : master - 1=tri-state CLKOUT slave - x=tri-state CLKOUT b4-0: res*/ 0xcc40, /*

THIS PROGRAM USES 16 SLOTS PER FRAME miscellaneous information reg b7 : 1=16 slots per frame, 0=32 slots per frame b6 : 1=2-wire system, 0=1-wire system b5-0: res */ 0xcd00; /* digital mix control reg b7-2: attenuation x 1.5 dB b1 : res b0 : 1=digital mix enabled*/ .var stat_flag; .section/pm data2; /*sectiune memorie program*/.var/circ coefs[tones]=0x6d02,0x68b2,0x63fd,0x5eef,0x4a71, 0x4091, 0x3291, 0x23ce; /*{ 2.14 coeficientii Goertzel : 2*cos(2*PI*k/N) }*/

//{-------------------- PROGRAMUL PRINCIPAL -------------------------------------}.SECTION/PM IVreset; /* sectiune de PM cu vectori de intreruperi, sunt 12 tipuri de intreruperi*/

jump start; rti; rti; rti; /*00: reset */ jump input_samples; rti; rti; rti; /*04: IRQ2 */ //rti; rti; rti; rti; /*04: IRQ2 */ rti; rti; rti; rti; /*08: IRQL1 */ rti; rti; rti; rti; /*0c: IRQL0 */ ar = dm(stat_flag); /*10: SPORT0 tx */ ar = pass ar; /*continutul ar trece prin ALU fara sa fie schimbat, dar se modifica flagul de stare*/

13

Page 14: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

if eq rti; jump next_cmd; jump input_samples; /*14: SPORT0 rx */ rti; rti; rti; rti; rti; rti; rti; /*18: IRQE */ rti; rti; rti; rti; /*1c: BDMA */ rti; rti; rti; rti; /*20: SPORT1 tx or IRQ1 */ rti; rti; rti; rti; /*24: SPORT1 rx or IRQ0 */ nop; rti; rti; rti; /*28: timer */ rti; rti; rti; rti; /*2c: power down */ .section/pm program;start: /* shut down sport 0 */ ax0 = b#0000100000000000; /*numar in binary, reprezinta o masca*/

dm (Sys_Ctrl_Reg) = ax0; ena timer;

i5 = rx_buf; /*i5 si i6 fac parte din DAG2*/ l5 = LENGTH(rx_buf); i6 = tx_buf; l6 = LENGTH(tx_buf); i3 = init_cmds; /*i3 face parte din DAG1*/ l3 = LENGTH(init_cmds); m1 = 1; m5 = 1;/*================== S E R I A L P O R T #0 S T U F F ==================*/ /* se seteaza modul de functionare pentru portul serial SPORT0*/ ax0 = b#0000110011010111; dm (Sport0_Autobuf_Ctrl) = ax0; /* |||!|-/!/|-/|/|+- receive autobuffering 0=off, 1=on |||!| ! | | +-- transmit autobuffering 0=off, 1=on |||!| ! | +---- | receive m? |||!| ! | | m5 |||!| ! +------- ! receive i? |||!| ! ! i5 |||!| ! ! |||!| +========= | transmit m? |||!| | m5 |||!+------------ ! transmit i? |||! ! i6 |||! ! |||+============= | BIASRND MAC biased rounding control bit ||+-------------- 0 |+--------------- | CLKODIS CLKOUT disable control bit +---------------- 0 */

ax0 = 0; dm (Sport0_Rfsdiv) = ax0;

14

Page 15: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

/* RFSDIV = SCLK Hz/RFS Hz - 1 */ ax0 = 0; dm (Sport0_Sclkdiv) = ax0; /* SCLK = CLKOUT / (2 (SCLKDIV + 1) */ ax0 = b#1000011000001111; dm (Sport0_Ctrl_Reg) = ax0; /* multichannel ||+--/|!||+/+---/ | number of bit per word - 1 ||| |!||| | = 15 ||| |!||| | ||| |!||| | ||| |!||+====== ! 0=right just, 0-fill; 1=right just, signed ||| |!|| ! 2=compand u-law; 3=compand A-law ||| |!|+------- receive framing logic 0=pos, 1=neg ||| |!+-------- transmit data valid logic 0=pos, 1=neg ||| |+========= RFS 0=ext, 1=int ||| +---------- multichannel length 0=24, 1=32 words ||+-------------- | frame sync to occur this number of clock || | cycle before first bit || | || | |+--------------- ISCLK 0=ext, 1=int +---------------- multichannel 0=disable, 1=enable */ /* non-multichannel |||!|||!|||!+---/ | number of bit per word - 1 |||!|||!|||! | = 15 |||!|||!|||! | |||!|||!|||! | |||!|||!|||+===== ! 0=right just, 0-fill; 1=right just, signed |||!|||!||+------ ! 2=compand u-law; 3=compand A-law |||!|||!|+------- receive framing logic 0=pos, 1=neg |||!|||!+-------- transmit framing logic 0=pos, 1=neg |||!|||+========= RFS 0=ext, 1=int |||!||+---------- TFS 0=ext, 1=int |||!|+----------- TFS width 0=FS before data, 1=FS in sync |||!+------------ TFS 0=no, 1=required |||+============= RFS width 0=FS before data, 1=FS in sync ||+-------------- RFS 0=no, 1=required |+--------------- ISCLK 0=ext, 1=int +---------------- multichannel 0=disable, 1=enable */ ax0 = b#0000000000000111; dm (Sport0_Tx_Words0) = ax0; /* ^15 00^ transmit word enables: channel # == bit # */ ax0 = b#0000000000000111; dm (Sport0_Tx_Words1) = ax0; /* ^31 16^ transmit word enables: channel # == bit # */ ax0 = b#0000000000000111; dm (Sport0_Rx_Words0) = ax0; /* ^15 00^ receive word enables: channel # == bit # */ ax0 = b#0000000000000111; dm (Sport0_Rx_Words1) = ax0; /* ^31 16^ receive word enables: channel # == bit # */

15

Page 16: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

/*============== S Y S T E M A N D M E M O R Y S T U F F ==============*/ /*initializare adsp*/ ax0 = b#0001100000000000; dm (Sys_Ctrl_Reg) = ax0; /* +-/!||+-----/+-/- | program memory wait states | !||| | 0 | !||| | | !||+---------- 0 | !|| 0 | !|| 0 | !|| 0 | !|| 0 | !|| 0 | !|| 0 | !|+----------- SPORT1 1=serial port, 0=FI, FO, IRQ0, IRQ1,.. | !+------------ SPORT1 1=enabled, 0=disabled | +============= SPORT0 1=enabled, 0=disabled +---------------- 0 0 0 */ ifc = b#00000011111110; /* clear pending interrupt */ nop;

icntl = b#00010; /* ||||+- | IRQ0: 0=level, 1=edge |||+-- | IRQ1: 0=level, 1=edge ||+--- | IRQ2: 0=level, 1=edge |+---- 0 |----- | IRQ nesting: 0=disabled, 1=enabled */

mstat = b#1100000; /* ||||||+- | Data register bank select |||||+-- | FFT bit reverse mode (DAG1) ||||+--- | ALU overflow latch mode, 1=sticky |||+---- | AR saturation mode, 1=saturate, 0=wrap ||+----- | MAC result, 0=fractional, 1=integer |+------ | timer enable +------- | GO MODE*/ /*ADSP 1847 Codec initialization*/ /* clear flag */ ax0 = 1; dm(stat_flag) = ax0; /* enable transmit interrupt */ ena ints; imask = b#0001000001; /* |||||||||+ | timer ||||||||+- | SPORT1 rec or IRQ0 |||||||+-- | SPORT1 trx or IRQ1

16

Page 17: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

||||||+--- | BDMA |||||+---- | IRQE ||||+----- | SPORT0 rec |||+------ | SPORT0 trx ||+------- | IRQL0 |+-------- | IRQL1 +--------- | IRQ2 */ ax0 = dm (i6, m5); /* start interrupt */ tx0 = ax0;check_init: ax0 = dm (stat_flag); /* wait for entire init */ af = pass ax0; /* buffer to be sent to */ if ne jump check_init; /* the codec */ ay0 = 2;check_aci1: ax0 = dm (rx_buf); /* once initialized, wait for codec */ ar = ax0 and ay0; /* to come out of autocalibration */ if eq jump check_aci1; /* wait for bit set */check_aci2: ax0 = dm (rx_buf); /* wait for bit clear */ ar = ax0 and ay0; if ne jump check_aci2; idle; ay0 = 0xbf3f; /* unmute left DAC */ ax0 = dm (init_cmds + 6); ar = ax0 AND ay0; dm (tx_buf) = ar; idle; ax0 = dm (init_cmds + 7); /* unmute right DAC */ ar = ax0 AND ay0; dm (tx_buf) = ar; idle;/* end codec initialization, begin filter demo initialization */ call setup; /*initializare buffere Q1Q2buff , coefs*/ call restart;

i1=buff_in; /* i1 este pointer catre bufferul de intrare*/i0=Q1Q2_buff;

i4=coefs; ifc = b#00000011111110; /* clear any pending interrupt, registru de fortare intreruperi */ nop;

imask = b#0001100001; /* enable rx0 interrupt */ /* |||||||||+ | timer ||||||||+- | SPORT1 rec or IRQ0 |||||||+-- | SPORT1 trx or IRQ1

17

Page 18: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

||||||+--- | BDMA |||||+---- | IRQE ||||+----- | SPORT0 rec |||+------ | SPORT0 trx ||+------- | IRQL0 |+-------- | IRQL1 +--------- | IRQ2 */ stop : nop; /*bucla de asteptare, sta in ea pana apare intrerupere*/ jump stop; /* SPORT0 interrupt handler*/input_samples:

ena sec_reg; /* use shadow register bank, se folosesc registrele secundare */ si=dm(rx_buf + 2); /* get new sample from SPORT0 (from codec), in si se scrie ce

se gaseste pe ultima pozitie din rx_buf */

sr=ashift si by scale (hi); /*se face impartire la 256*/ dm(in_sample)=sr1; /* stocarea esantionului de intrare */ /*---------- DECREMENTAREA CONTORULUI DE ESANTIOANE -------------------------*//*cand ay<0 se trece la feedfwd dupa ce termina prelucrarea esantioanelor*/ decN: ay0=dm(countN); ar=ay0-1; dm(countN)=ar; if lt jump skip_backs;//{----------- F A Z A F E E D B A C K ---------------------------------------}feedback: ay1=dm(in_sample); /*{ extrage esantionul la intrare AY1=1.15*/ cntr=tones; do backs until ce; mx0=dm(i0,m0), my0=pm(i4,m4); /*{extrage Q1 si COEF Q1=1.15, COEF=2.14*/ mr=mx0*my0(rnd), ay0=dm(i0,m2); /*inmulteste, get Q2 MR=2.30, Q2=1.15*/ sr=ashift mr1 by 1 (hi); /*schimba 2.30 in 1.15 */ ar=sr1-ay0; /*Q1*COEF - Q2 AR=1.15*/ ar=ar+ay1; /*Q1*COEF - Q2 + intrarea AR=1.15*/ dm(i0,m0)=ar; /*rezultatul = noul Q1 */backs: dm(i0,m0)=mx0; /*vechiul Q1 = noul Q2*/ jump end;;//{---------- C A N D F A Z A F E E D B A C K E S T E G A T A -------------}/*cand count N=0*/ }skip_backs: call feedforward; call test_and_output; call calc_tone; call restart;end: nop;rti;

18

Page 19: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

/* transmit interrupt used for Codec initialization*/next_cmd: ena sec_reg; ax0 = dm (i3, m1); /* fetch next control word and , citeste prima pozitie din vectorul init_cmds*/ dm (tx_buf) = ax0; /* place in transmit slot 0 */ ax0 = i3; ay0 = init_cmds; ar = ax0 - ay0; if gt rti; /* rti if more control words still waiting */ ax0 = 0xaf00; /* else set done flag and */ dm (tx_buf) = ax0; /* remove MCE if done initialization */ ax0 = 0; dm (stat_flag) = ax0; /* reset status flag, la sfarsitul initierii codecului stat_flag=0 */ rti; /*se intoarce la IVReset, la jump input-samples*//*{-------------------- S U B R U T I N E ---------------------------------------}{ M si L registre in generatoarele de adresa, and seteaza ICNTL } */ setup:

l0 = tones_x_2; l1 = 0; l2 = 0; l3 = 0; l4 = tones; m0 = 1; m2 = -1; m4 = 1;

icntl=b#01111; rts;/*{ reseteaza pointerii,reseteaza valorile contorului }{ aduce bufferele Goertzel feedback la zero, etc }{ */ restart: i0=Q1Q2_buff; i4=coefs; cntr=tones_x_2; do zloop until ce;zloop: dm(i0,m0)=0; ax0=N; dm(countN)=ax0;

19

Page 20: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

i1=buff_in; rts;

//{--------------- F A Z A F E E D F O R W A R D ----------------}feedforward: cntr=tones; i2=mnsqr; /*i2 indexeaza vectorul mnsqr in care se retine amplitudinea patratica corespunzatoare frecventelor DTMF*/

do forwards until ce; mx0=dm(i0,m0); /*extrage doua copii Q1 1.15 */ my0=mx0; mx1=dm(i0,m0); /*extrage doua copii Q2 1.15 */ my1=mx1; ar=pm(i4,m4); /*extrage COEF 2.14*/ mr=0; mf=mx0*my1(rnd); /* Q1*Q2 1.15 */ mr=mr-ar*mf(rnd); /* -Q1*Q2*COEF 2.14 */ sr=ashift mr1 by 1 (hi); /*2.14 -> 1.15 format conv. 1.15 */ mr=0; mr1=sr1; mr=mr+mx0*my0(ss); /* Q1*Q1 + -Q1*Q2*COEF 1.15 */ mr=mr+mx1*my1(rnd); /* Q1*Q1 + Q2*Q2 + -Q1*Q2*COEF 1.15 */forwards: dm(i2,m0)=mr1; /* stocheaza in bufferul mnsqr 1.15 , se memoreaza x2(k)*/ rts;

//{------------- Testarea nivelelor si a codului de iesire ----------------}test_and_output: i3=bits; /*indexari la prima pozitie a vectorilor*/ i1=min_tone_level; i2=mnsqr; cntr=tones; af=pass 0; do thresholds until ce; ax1=dm(i3,m0); /* preia pozitia bitilor la set/clear */

ax0=dm(i2,m0); /*preia valoarea calculata tone mnsqr */ ay0=dm(i1,m0); /* preia valoarea de prag min tone level */ ar=ax0-ay0; /* mnsqr - min_tone_level */thresholds: if gt af=ax1 or af; ar=pass af; dm(outcode)=ar; /* scrie rezultatul la iesire */ rts;

PROGRAM DE CONVERSIE DE LA 8 BITI LA 4 BITI.section /pm program;.extern outcode;.global calc_tone;

20

Page 21: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

.extern tone;

.extern tab;

.extern error;calc_tone:AR=dm (outcode);AY0=0X00F0;AR=AR AND AY0;SR=LSHIFT AR BY -4(HI); //kAX0=SR1; //ax0=kay0=1;ar=ax0-ay0;if eq jump r0;ay0=2;ar=ax0-ay0;if eq jump r1;ay0=4;ar=ax0-ay0;if eq jump r2;ay0=8;ar=ax0-ay0;if eq jump r3;jump err;r0:mr1=0; // rjump e1;r1:mr1=1; // rjump e1;r2:mr1=2; // rjump e1;r3:mr1=3; // re1:AR=dm(outcode);AY0=0X000F;AR=AR AND AY0; // ar=max0=ar; // ax0=may0=1;ar=ax0-ay0;if eq jump c0;ay0=2;ar=ax0-ay0;if eq jump c1;ay0=4;ar=ax0-ay0;if eq jump c2;

21

Page 22: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

ay0=8;ar=ax0-ay0;if eq jump c3;jump err;c0:ay1=0; // cjump e2;c1:ay1=1;jump e2;c2:ay1=2;jump e2;c3:ay1=3;e2://4*r+c = 4*mr1+ay1

SR=ASHIFT mr1 BY 2(HI);AR=sr1+AY1; // ar=4r+c

I1=tab;M3=AR;MODIFY (I1,M1);AR=dm(I1,M1);dm(tone)=AR;

rts;err: si=1;dm(error)=si;

RTS;

Programul de conversie:

Outcode: 0 0 0 0 0 0 0 0 f7 f6 f5 f4 f3 f2 f1 f0

Tab[4*r+c] c

f0 f1 f2 f3f4 0 1 2 3f5 4 5 6 7f6 8 9 A B

k=2^rm=2^c

22

r

Page 23: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

f7 C D E F

k,m iau valori din mulţimea {1,2,4,8}c,r iau valori din mulţimea {0,1,2,3}Important este doar ultimul octet din outcode, format din HI şi LO.

SCHEMELE ELECTRICE

23

Page 24: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

24

Page 25: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

25

Page 26: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Detalieri ale schemelor electrice

Structura microprocesorului ADSP2181

ADSP2181 este un microcalculator optimizat pentru procesarea semnalelor

digitale(DSP) si alte aplicatii de procesare numerica la viteze mari.

Acest procesor combina arhitectura de baza a familiei de procesoare ADSP2100 cu doua

porturi seriale, un port intern DMA pe 16 biti, un port DMA pe un octet, un regulator

programabil, un flag de intrare/iesire, capacitatea de a utiliza intreruperile si un chip

pentru memoria de date si de program.

ADSP 2181 integreaza 80Kocteti de memorie , configurata sub forma a 16Kcuvinte de

24 de biti pentru meoria de program RAM si 16K-cuvinte de 16 biti petru memoria

RAM de date.circuitele de joasa putere sunt construite astfel incat sa poata indeplini

conditiile de putere scazuta a echipamentelor portabile pe baza de baterie. Acest procesor

este disponibil in 2 variante :128 -leadTQFP si 128-lead PQFP packages.

Este fabricat pentru viteze mari, cu putere scazuta, bazat pe CMOS si are un ciclu

de operare a instructiunii de 25ns. Fiecare instructiune se poate executa intr-un singur

ciclu de procesor. Deoarece are o arhitectura flexibila si un set de instructiuni cuprinzator

26

Page 27: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

acesta perimte ca procesorul sa efectueze mai multe operatii in paralel. Intr-un singur

ciclu de procesor ADSP 2181 poate sa:

-genereze urmatoarea adresa de program

-sa mute una sau doua date

-sa updateze pointerii petru una sau doua adrese de date

- sa execute o noua operatie

Aceasta se intampla in timp ce procesorul continua sa:

-sa primeasca si sa transmita date prin cele 2 porturi seriale

-primeste si/sau transmite date prin portul DMA intern

-primeste si/sau transmite datele prin portul DMA de octeti

-decrementeaza contorul

Doua generatoare de adrese(DAG) ofera adrese pentru transporturile unui operand

dual, simultan (de la memoria de program si memoria de date). Fiecare DAG mentine si

updateaza patru adrese de pointeri. Oricand pointerul este folosit pentru a accesa

datele(prin adresare indirecta) este modificat ulterior de valoarea unuia din cei patru

registri modificatori. Un transfer eficient de date se obtine prin utilizarea a cinci

magistrale interne:

-magistrala de adrese pentru memoria de program (PMA) ;

-magistrala de date pentru memoria de program (PMD) ;

- magistrala de adrese pentru memoria de date (DMA) ;

- magistrala de date pentru memoria de date (DMD) ;

-magistrala pentru rezultate (R) ;

Porturi Seriale

ADSP 2181 incorporeaza doua porturi seriale sincronizate (SPORT0 , SPORT1)

pentru comunicatii seriale si multiprocesor. Porturile seriale SPORT sunt bidirectionale si

au o sectiune de transmisiune si receptie. Pot sa utilizeze un ceas extern sau sa genereze

propriunl lor ceas. Pot avea o lungime diferita a cuvintelor de la 3 la 16 biti si pot utiliza

optional legea A sau legea µ. Sectiunea de transmisiune sau de receptie poate genera

intreruperi in transferul cuvintelor ce contin date. Prezinta o interfata multicanal pentru a

primi selectiv si a transmite cuvinte de 24 sau de 32. Porturile seriale pot fi configurate

astfel incat sa aiba doua intreruperi externe si semnale de flag pentru intrare si iesire.

27

Page 28: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Configuratia pinilor

-14 pini de adresa – pini de la iesire pentru program, date octeti si spatiii de

intrare/iesire ;

-24 pini de date-pini de intrare/iesire pentru spatii de memorie de program si de

date ;

-RESET/-intrarea procesorului de reset ;

-IRQ2/-cerere de intrerupere la limita;

-IRQL0,IRLQ1/-cerere de intrerupere pe nivel;

-IRQE/-cerere de intrerupere;

-BR/-cerere de intrare pentru magistrala;

-BG/-alocarea unei iesiri pentru magistrala;

-BGH/-alocarea unei iesiri de hung pentru magistrala;

-PMS/-selectarea unei iesri din memoria de program;

-DMS/-selectarea unei iesiri din memoria de date;

-IOMS/-selectarea unei iesiri din spatiul de memorie de intrare/iesire;

28

Page 29: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

-CMS/-selectarea unei iesiri din memoria combinata;

-RD/-activarea iesirii din cititrea in memorie;

-WR/-activarea iesirii din scrierea in memorie;

-MMAP-intrare in harta de memorie;

-BMODE-intrare pentru optiunea de control pentru boot;

-CLKIN,XTAL-intrare pentru ceas sau cristal de cuartz;

-CLKOUT-iesirea ceasului;

-SPORT0 pe 5 pini-pinii portului serial de intrare/iesire;

-SPORT1 pe 5 pini-portul serial 1 aau 2 intreruperi externe, Flag in si Flag out;

-IRD/,IWR/- intrarea pentru portul de scriere/citire IDMA;;

-IS/-selectarea portului IDMA;

-IAL- activarea adresei de latch pentru portul IDMA;

-IAD pe 16 biti-magistrala de adrese/date pentru portul IDMA;

-PWD/- bit de control pentru joasa putere;

-PWDACK- bit de control pentru joasa putere;

-FL0,FL1,FL2-flaguri de iesire;

-PF7:0-pini programabili de intrare/iesire;

-EE,EBR,EBG,ERESET,EMS,EINT,ECLK,ELIN,ELOUT-pentru emulator;

-GND-11 pini de masa;

-VDD-6 pini de alimentare;

Registrul de control al intreruperilor(ICNTL)

Controleaza intreruperile necontrolate si defineste IRQ0/,IRQ1/, IRQ2/ ca fiind

intreruperi externe . IRQE/ este o intrerupere externa de nivel msi poate fi fortata sau

stearsa. IFC este un registru write-only care este folosit pentru a forta sau a sterge o

intrerupere.

Memoria de octet ofera accesul la un spatiu de memorie intins pe 8 biti printr-un

port DMA pe un octet. Interfata acestei meorii permite accesul la 4Mocteti de memorie

utilizand 8 linii de date ca linii suplimentare de adrese. Aceasta inseamna ca portul

BDMA are un sir de 22 de biti de adresa. Astfel DSP-ul poate sa incarce automat codul

bootstrap din memoria de octet

29

Page 30: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

Intreruperi

Controlerul de intreruperi permite procesorului sa raspunda la 11 posibile

intreruperi, si resetare intr-un timp foarte scurt. Membrii seriei ADSP-218xN au la

dispozitie patru pini de intreruperi IRQ2, IRQL0, IRQL1 si IRQE. In plus SPORT1 poate

fi reconfigurat pentru IRQ0, IRQ1, FI, si FO,pentru a avea in total de sase intreruperi.

Seria ADSP-218xN permite intreruperi interne de la timer,bytul DMA doua

porturi seriale, de la software si circuitul de oprire. Nivele de intreruperi au nivele de

prioritate stabile intern si mascabile (in afara de reset si oprire). Pini de intrare IRQ2,

IRQ0, si IRQ1 pot fi programati sa fie sensibili la nivel sau front. IRQL0 si IRQL1 sunt

sensibili la nivel iar IRQE la front. Nivelurile de prioritati si vectorii adresa sunt

prezentate in tabelul urmator.

Sursa intreruperii Vectorul adresa al intreruperii Reset (or Power-Up with PUCR = 1) 0x0000 (Highest Priority)Power-Down (Nonmaskable) 0x002CIRQ2 0x0004IRQL1 0x0008IRQL0 0x000CSPORT0 Transmit 0x0010SPORT0 Receive 0x0014IRQE 0x0018BDMA Interrupt 0x001CSPORT1 Transmit or IRQ1 0x0020SPORT1 Receive or IRQ0 0x0024Timer 0x0028 (Lowest Priority)

Seria ADSP-218xN mascheaza toate intreruperile pentru o instructiune ciclu ce

urmeaza executiei unei instructiuni ce modifica registrul IMASK. Acest lucru nu

afecteaza functia de autobuffering a portului serial si nici transferul DMA.

Registrul de control al intreruperilor, ICNTL, determina daca intreruperile IRQ0,

IRQ1, si IRQ2 sunt sensibile la nivel sau front. Pinul IRQE determina o intrerupere

externa , sensibila la front si poate fi fortata.

Registrul IFC este un registru write-only folosit pentru a forta si elimina

intreruperi. Stivele de pe chip memoreaza automat starea procesorului si sunt pastrate in

30

Page 31: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

timpul procesarii intreruperilor.Stiva are o adancime de 12 nivele pentru a permite

activarea sau dezactivarea serviciului de intreruperi global.Dezactivarea intreruperilor nu

afecteaza autobufferarea portului serial sau a DMA-ului.Cand procesorul este resetat

atunci servicul de interuperi este activate.

Structura CODECULUI AD1847

Codec-ul AD1847 integreaza conversia datelor audio cheie si functiile de control

intr-un singur circuit integrat. Este construit pentru a putea fi folosit in aplicatii

multimedia si jocuri audio fiind alimentat de la o singura sursa de 5V si are un cost redus.

Are o interfata seriala pentru implementarea pe placa principala a calculatorului.

Cerintele circuitului exterior sunt limitate la un numar minim de componente cu cost

redus. AD1847 poate accepta si genera doua complemente PCM de date pe 16 biti

liniare,digitale, o structura de date liniara pe 8 biti PCM si date pe 8 biti pentru legea A si

legea µ.

Configuratia pinilor

-SCLK= pinul cu numarul 1-este un semnal bidirectional care furnizeaza ceasul

ca iesire la magistrala seriala cand pinul de Bus Master este pe nivel high si accepta

31

Page 32: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

semnalul de ceas ca intrare cand pinul de BM este pe low. Acesta se ruleaza in

permanenta.

-SDFS = pinul cu numarul 6 este un semnal bidirectional care furnizeaza

semnalul de sincronizare de frame ca iesire catre magistrala seriala cand pinul BM este pe

high si accepta semnalul de sincronizare de frame ca intrare cand pinul de BM este pe

low. Functioneaza la o frecventa egala cu jumatate din rata de esantionare a lui AD1847

cu doua esantioane pe frame .

-SDI= pinul cu numarul 4- intrarea seriala de date. Este folosit in dispozitivele

periferice cum ar fi CPU sau un DSP pentru control si sincronizarea informatiei de date.

-SDO= pinul cu numarul 5- iesirea seriala de date. Este folosit ca informatie de

date pentru captare si readback . Transferurile se realizeaza pe 16 biti.

-RESET/= pinul cu numarul 11. Acest semnal este activ pe low. Lansarea acestui

semnal va initializa registrii la valorile lor de default.

-PWRDOWN/= pinul cu numarul 12-este activ pe low. Reseteaza registrii de

control de pe chip si trece codec-ul in starea de consum minim de putere. Vref si toate

circuitele analogice sunt dezactivate.

-BM= pinul cu numarul 33.Deoarece este activ pe high acest semnal indica faptul

ca AD1847 este master pe magistrala seriala. Codec-ul va trimite semnalul de ceas serial

SCLK si semnalul de sinc SDFS catre magistrala seriala. Numai AD1847 trebuie

configurat ca master al magistralei seriale. Daca BM este conectat pe low logic AD1847

este configurat ca slave si va accepta SCLK si SDFS ca semnale de intrare.un codec AD

1847 ar trebui sa fie configurat ca slave doar daca in schema mai exista un codec

AD1847 ca master.

-TSO= pinul cu numarul 7 –iesirea slotului de timp. Este setat pe high de

AD1847 si coincide cu LSB-ul ultimei dati cand acest slot a fost folosit de AD1847. este

folosit in sisteme cu mai multe codec-uri.

-TSI= pinul cu numarul 8-intrarea slotului de timp. Lansarea acestui semnal

indica faptul ca AD1847 ar trebui sa utilizeze imediat urmatoarele trei slot-uri de timp

(TSSEL=1) sau urmatoarele 6 slot-uri (TSSEL=0) si apoi se acitveaza pinul TSO. TSI ar

trebui sa fie activ pe low cand AD1847 este master intr-un sistem cu un singur codec.

32

Page 33: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

-CLKOUT= pinul cu numarul 44-iesirea ceasului. Semnalul este versiunea de

buffer a iesirii ceasului de cristal iar frecventa depinde de tipul de cristal selectat. Acest

pin poate sa aibia trei stari daca BM este setat pe low sau prin programarea bitului

CLKTS in registrul de control al pinului

Semnale analogice

-L_LINE1= pinul cu numarul 23 – intrarea liniei prin partea stanga. Nivelul de intrare pentru linie pentru primul canal stang.-R_LINE1= pinul cu numarul 17- intrarea liniei prin partea dreapta . Nivelul de intrare pentru primul canal drept.-L_LINE2= pinul cu numarul 22. intrarea liniei prin partea stanga. Nivelul de intrare pentru linie pentru al doilea canal stang.R_LINE2= pinul cu numarul 18- intrarea liniei prin partea dreapta . Nivelul de intrare pe linie pentru canalul2 drept.-L_AUX1=pinul cu numarul 26-intrarea auxiliara pe partea stanga. Intrarea nivelului de linie pentru canalul AUX1 stang. -R_AUX1=pinul cu numarul 27-intrarea auxiliara pe partea dreapta. Intrarea nivelului de linie pentru canalul AUX1 drept.-L_AUX2=pinul cu numarul 32-intrarea auxiliara pe partea stanga. Intrarea nivelului de linie pentru canalul AUX2 stang. -R_AUX2=pinul cu numarul 31-intrarea auxiliara pe partea dreapta. Intrarea nivelului de linie pentru canalui AUX2drept.- L_OUT=pinul cu numarul 30- iesirea liniei pe partea stanga. Nivelul de iesire pentru linie pentru canalul stang. -R_OUT=pinul cu numarul 28- iesirea liniei pe partea dreapta. Nivelul de iesire pentru linie pentru canalul drept.

Pini cu diferite functii

-XTAL1I= pinul cu numarul 40- intrarea pe cristalul intai pentru 24.576MHz

-XTAL1O= pinul cu numarul 41- iesirea pe cristalul intai pentru 24.576MHz

-XTAL2I= pinul cu numarul 42- intrarea pe cristalul al doilea pentru 16.9344 MHz

-XTAL2O= pinul cu numarul 43- iesirea pe cristalul al doilea pentru 16.9344 MHz

-Vref= pinul cu numarul 16-referinta de tensiune. O tensiune nominala de 2,25. aceste

semnal nu ar trebui sa aiba un semnal dependent pentru incarcare.

-XCTL1:O=pinii 37 si 36 –pentru control extern. Aceste semnale TTL reflecta starea

curenta a bitilor din interiorul registrilor codec-uluipot fi utilizati pentru semnalizare sau

pentru control extern.

-Vrefi=pinul cu numarul 15- tensiunea de referinta interna.

33

Page 34: receptorul dtmf

SISTEME DIGITALE DE PRELUCRARE A SISTEMELOR PENTRU TELECOMUNICATII

-L_FILT=pinul cu namarul 21- filtru capacitiv pentru canalul stang. Acest pin necesita un

condensator de 1 µF legat la masa analogica pentru efectuarea unei operatii

-R_FILT=pinul cu namarul 19- filtru capacitiv pentru canalul drept. Acest pin necesita un

condensator de 1 µF legat la masa analogica pentru efectuarea unei operatii potrivite.

-NC= pinul cu namarul 29- nici o canectare

-Vcc=pinii 13 si 25- tensiunea analogica de +5V

GNDA=pinii cu numarul 14,20,24- masa analogica

Vdd=pinii 2,9,34,39-tensiune digitala de +5V

-GNDD=pinii 3,10,35,38-masa digitala

Acest port implementeaza o magistrala seriala pentru multiplexare diviziunii de timp

(TDM). Poate sa contia fie 32(biti FSR pe low) sau 16(FRS biti pe high) sloturi . pentru

operatii stereo se folosesc trei cuvinte/esantioane :

-control/stare [DM(tx_buf),DM(rx_buf)]

-canal de date stang [DM(tx_buf+1),DM(rx_buf+1)]

- canal de date drept [DM(tx_buf+2),DM(rx_buf+2)]

DSP preia sau genereaza informatii si date de la un buffer care este la transmisia lui

SPORT0 si primeste autobuffere. Autobuffering in cadrul modului multicanal este cea

mai simpla cale pentru a trimitesau a primi date de cand se reduce intreruperea globala iar

utilizatorul nu trebuie sa se intereseze de slotul curent in care sunt inscrise datele. Cand se

vor transmite toate cele trei cuvinte in frame-ul curent se genereaza o intrerupere.

EPROM 27C010

Acest chip de memorie este de putere joasa , cu performante mari, organizata ca

1M pe 8 biti. Acesta nencesita o tensiune de 5 V intr-o operatie de citire obisnuita. Orice

octet poate fi accesat in mai putin de 90 ns, eliminand necesitatea vitezei si reducand

starile de WAIT in sistemele cu microprocesoare cu performante foarte bune. Toate

dispozitivele au doua linii de control (CE/ si OE/) pentru a permite proiectantilor

flexibilitatea de a preveni conflictele ce pot sa apara pe magistrala . Acest chip are

caracteristici suplimentare care asigura o buna calitate si o utilizare eficienta. Algoritmul

de programare rapida reduce timpul cerut pentru a programa o anumita parte si

garanteaza fiabilitatea programarii. Codul de identificare pentru produsul incarcat

indetifica producatorul si dispozitivul.

34