Metoda generiranja dtmf signalov in generator dtmf signalov. Generiranje in prepoznavanje DTMF signalov Čip generatorja tonskih signalov DTMF

Prvi del ta primer Aplikacija opisuje generiranje DTMF signalov z uporabo mikrokontrolerja MSP430. Podana je razlaga najpomembnejših specifikacij, uporabljenih v tem primeru, ter podana teoretična in matematična utemeljitev generiranja sinusnih valov s kvadratnimi valovi z uporabo ustreznih analognih filtrov. Primer vključuje tudi preizkušene demo programe za generiranje pravokotnih signalov na podlagi različnih časovnih konfiguracij mikrokontrolerjev MSP430. Zadnji del zagotavlja shema vezja, ki vam omogoča ustvarjanje signalov DTMF iz pravokotnih signalov.

2 Specifikacija signala DTMF

Okrajšava DTMF pomeni »Dual Tone Multi Frequency« in je metoda predstavitve števk na različnih frekvencah za namene njihovega prenosa po analognih komunikacijskih linijah, npr. telefonska linija. Pri razvoju standarda je bil upoštevan pogoj - vse frekvence morajo biti v "glasovnem" območju, kar je omogočilo zmanjšanje zahtev za prenosni kanal. Telefonska omrežja uporabljajo signale DTMF za klicanje in druge informacije. Kljub dejstvu, da se še vedno pogosto uporablja metoda pulznega izbiranja, ki je na primer standard v Nemčiji, se čas izbiranja znatno poveča, kar vodi do neproduktivne obremenitve komunikacijskih linij. Poleg tega mnogi Dodatne storitve Komunikacije so možne samo s tonskim izbiranjem. Pri kodiranju z uporabo metode DTMF številke 0-9 in črke A-D, */E in #/F predstavljajo kombinacije dveh frekvenc:

Pogostost 1209 Hz 1336 Hz 1477 Hz 1633 Hz
697 Hz 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz */E 0 #/F D

V tem sistemu stolpec predstavlja frekvenco iz "zgornje" frekvenčne skupine (Hi-Group: 1209-1633 Hz), vrstica pa predstavlja frekvenco iz "spodnje" frekvenčne skupine (Lo-Group: 697-941 Hz) . Tonske frekvence so izbrane tako, da odpravijo vpliv harmonikov. Frekvence niso večkratniki ena druge in frekvence DTMF ni mogoče dobiti z dodajanjem ali odštevanjem drugih frekvenc. Za ustvarjanje klicalnika v omrežju Deutsche Telekom so potrebne naslednje specifikacije (povzete po Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Uradna specifikacija zveznega ministrstva za pošto in telekomunikacije):

3 Ustvarite signale DTMF

Kot je opisano zgoraj, so signali DTMF analogni in sestavljeni iz dveh neodvisnih sinusnih valov. Takih signalov torej ni mogoče ustvariti samo digitalno. Digitalni signali je treba z uporabo ADC in/ali analognih filtrov pretvoriti v zahtevano sinusno obliko.

3.1 Generiranje s kvadratnimi valovi

Če se za ustvarjanje signalov DTMF uporabljajo pravokotni signali, programska oprema in strojna oprema minimalno. Vsak neprekinjen signal s periodo T je mogoče predstaviti s Fourierjevim nizom, ki je sestavljen iz neskončne vsote sinusnih in kosinusnih valov, kot sledi:

Kjer je a0/2 konstantna komponenta signala. Element vsote z najnižjo kotno frekvenco (w0) imenujemo glavni (temeljni) harmonik, ostalo so prizvoki ali višji harmoniki.

Najenostavnejši zvezni signal, ki se izvaja z uporabo mikrokrmilnika, je pravokotni val, Fourierjeva serija ima obliko:

Prispevek vsake frekvenčne komponente k celotnemu signalu je najbolje prikazan z amplitudnim spektrom (glej sliko 2):


riž. 2: Amplitudni spekter pravokotnega signala

Pri uporabi analognega filtra so enosmerna komponenta in višji harmoniki učinkovito zadušeni, na izhodu pa imamo sinusni signal s frekvenco, ki je enaka frekvenci originalnega kvadratnega vala.

3.2 Programska oprema ustvariti meander

Program generiranja meandra mora izpolnjevati naslednje zahteve:

  • Sposoben sintetizirati dva neodvisna pravokotna signala.
  • Za ločevanje signalov sta potrebna dva izhodna zatiča za generiranje signalov iz "zgornjega" (Hi-Group) in "spodnjega" (Lo-Group) frekvenčna območja oz.
  • Programska oprema mora biti sposobna nastaviti zahtevano trajanje signala v območju približno 65 ms - 100 ms.

Mikrokontrolerji serije MSP430 imajo različne vgrajene časovnike, ki lahko generirajo pravokotne signale. Družina '31x/'32x uporablja 8-bitni časovnik in vrata za časovnik za generiranje obeh pravokotnih signalov. Ta program testiran pri frekvenci MCLK enaki 1,048 MHz. Timer_A v družini '33x lahko neodvisno ustvari oba zahtevana signala. Drugi program uporablja ta časovnik za generiranje kvadratnih valov in deluje s poljubnimi frekvencami MCLK. Oba programa bosta podrobneje obravnavana v nadaljevanju.

3.2.1 Ustvarjanje kvadratnih valov z uporabo 8-bitnega časovnika in vrat za časovnik

Na sl. 3 je diagram poteka postopka inicializacije za generiranje signalov DTMF. Za sintetiziranje obeh frekvenc se uporabljajo vrata Timer Port in 8-bitni števci časovnika. Vsak od njih je programabilni števec, potreben za natančno sintezo zahtevanih frekvenc. Če so števci vrat časovnika kaskadno povezani v en sam 16-bitni časovnik in taktni na sistemski frekvenci MCLK, se lahko frekvence visokega obsega ustvarijo z visoko natančnostjo. Ko pride do prekinitve, se ustrezen izhod preklopi in oba 8-bitna registra števca se ponastavita. Naložene vrednosti so shranjene v dveh spremenljivkah v RAM-u, da se shranijo notranji registri za druge naloge.

Nizke frekvence generira 8-bitni časovnik. Ker je register števca tega časovnika širok 8 bitov, samo vsaka tretja prekinitev povzroči spremembo nivoja na zahtevanem izhodnem pinu, kar omogoča generiranje istega frekvenčnega števca.

Dva časovna izhoda - vrata se uporabljajo za oblikovanje dveh meander različnih frekvenc.

riž. 3 Diagram poteka postopka inicializacije za generiranje signalov DTMF

Postopek inicializacije se izvede samo enkrat. Po njegovem zaključku se šestnajstiška vrednost prenesenega znaka prebere iz globalne spremenljivke v RAM-u. Ko sta dve frekvenci, ki tvorita visoke in nizke tone DTMF, ustvarjeni iz dveh tabel, je vse, kar je potrebno, inicializirati in zagnati oba časovnika. Trajanje pošiljanja se kontrolira s štetjem pol-ciklov "spodnje" frekvence in se odčita iz dodatne tabele. Po zaključku tega postopka se vrnete na funkcijo anketiranja. Ustrezne rutine za obdelavo prekinitev preklopijo zatiče vrat. Ta postopek je prikazan na sl. 4 in 5.

Naloge časovnika vključujejo le snemanje dnevnika. ravni na izhodu vrat in ponovno nalaganje števca iz RAM-a, medtem ko ima delovanje 8-bitnega časovnika nekoliko bolj zapleteno strukturo: vsak vhod v prekinitev šteje števec register. Izhod lahko spremeni stanje šele po treh prekinitvah. Poleg tega se šteje tudi vsak pol-cikel. Generacija se ustavi, ko je doseženo določeno število polciklov.


riž. 4 blok – prekinitveno vezje iz 8-bitnega časovnika (Lo-Group)


riž. 5 blok – prekinitveno vezje vrat časovnika (Hi-Group)

; Definicije po meri FLLMPY equ 32 ; Frekvenčni množitelj FLL pri 1,048 MHz TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL equ 85 ; Trajanje DTMF signal (65..100 ms) LO_OUT enako 02h; Izhod "nižje" frekvence HI_OUT equ 04h; Visokofrekvenčni izhod RCOUNT equ r14; Števec dolžine DTMF RTEMP equ r15 ; servisni register.globalni DTMF_NR; globalna spremenljivka v RAM-u; za številko DTMF (0..F) ; Definicije RAM.even .bss DTMF_TL ; Parni naslov alignment.bss DTMF_TH .bss DTMF_NR ; globalna spremenljivka v RAM-u; za številko DTMF (0..F).sodo; Definicije za 8-bitni časovnik TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Definicije za vrata univerzalnega časovnika TPCTL equ 04bh; Nadzor vrat časovnika TPCNT1 equ 04ch ; Števec vrat časovnika 1 TPCNT2 equ 04dh ; Števec vrat časovnika 2 TPD equ 04eh ; Podatki vrat časovnika TPE equ 04fh ; Timer-port-resolution.text ; Frekvenčne tabele DTMF: tabela vsebuje; število ciklov MCLK za en pol-cikel. ; Tabela za "zgornjo" frekvenco; Dodan popravek; upoštevati čas vstopa v prekinitev DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvenca za 0 .besedo 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvenca za 1 .besedo 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvenca za 2 .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvenca za 3 besede 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvenca za 4 .besedo 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvenca za 5 .besed 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvenca za 6 besed 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvenca za 7 .word 0ffffh-(TCLK/(1336*2))+25 ; Visoka frekvenca za 8 .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvenca za 9 .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvenca za besedo A 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvenca za B .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvenca za C .word 0ffffh-(TCLK/(1633*2))+22 ; Visoka frekvenca za D .word 0ffffh-(TCLK/(1207*2))+28 ; Visoka frekvenca za * .word 0ffffh-(TCLK/(1477*2))+24 ; Visoka frekvenca za #; Tabela za “nižjo” frekvenco DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; Nizka frekvenca za 0 .byte 0ffh-(TCLK/(697*2*3)) ; Nizka frekvenca za 1 .bajt 0ffh-(TCLK/(697*2*3)); Nizka frekvenca za 2 .bajta 0ffh-(TCLK/(697*2*3)); Nizka frekvenca za 3 .byte 0ffh-(TCLK/(770*2*3)); Nizka frekvenca za 4 .byte 0ffh-(TCLK/(770*2*3)); Nizka frekvenca za 5 .bajtov 0ffh-(TCLK/(770*2*3)); Nizka frekvenca za 6 .byte 0ffh-(TCLK/(853*2*3)); Nizka frekvenca za 7 .byte 0ffh-(TCLK/(853*2*3)); Nizka frekvenca za 8 .byte 0ffh-(TCLK/(853*2*3)); Nizka frekvenca za 9 .byte 0ffh-(TCLK/(697*2*3)); Nizka frekvenca za A .byte 0ffh-(TCLK/(770*2*3)); Nizka frekvenca za B .byte 0ffh-(TCLK/(853*2*3)); Nizka frekvenca za C .byte 0ffh-(TCLK/(941*2*3)); Nizka frekvenca za D .byte 0ffh-(TCLK/(941*2*3)); Nizka frekvenca za *.byte 0ffh-(TCLK/(941*2*3)) ; Nizka frekvenca za #; Tabela trajanja signala DTMF_L .byte 2*941*DL/1000 ; Pol ciklov za 0 .byte 2*697*DL/1000 ; Pol ciklov za 1 .bajt 2*697*DL/1000 ; Polcikli za 2 .bajta 2*697*DL/1000 ; Polcikli za 3 .bajte 2*770*DL/1000 ; Polcikli za 4 .bajte 2*770*DL/1000 ; Pol ciklov za 5 .bajtov 2*770*DL/1000 ; Pol ciklov za 6 .bajtov 2*852*DL/1000 ; Pol ciklov za 7 .bajtov 2*852*DL/1000 ; Pol ciklov za 8 .bajtov 2*852*DL/1000 ; Pol ciklov za 9 .bajtov 2*697*DL/1000 ; Polcikli za A .byte 2*770*DL/1000 ; Polcikli za B .byte 2*852*DL/1000 ; Polcikli za C .byte 2*941*DL/1000 ; Polcikli za D .byte 2*941*DL/1000 ; Polcikli za *.byte 2*941*DL/1000 ; Polcikli za # ;******************************************** ********* ********************************* ; DTMF-TX DTMF podprogram ;******************************************** ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; Shrani številko v začasni register mov.b DTMF_L(RTEMP),RCOUNT ; Shranite števec trajanja; pripravite 8-bitni časovnik za frekvenco DTMF-Lo mov.b #0a8h,&TCCTL ; Ura iz MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Priprava registra; prednaloži mov.b #000,&TCDAT ; Nalaganje števca iz registra; prednapetost bis.b #008h,&IE1 ; Omogoči prekinitve; iz 8-bitnega časovnika; priprava časovnika za frekvenco DTMF-Hi rla r15; * 2 za 16-bitno tabelo mov DTMF_HI(RTEMP),&DTMF_TL ; shrani besedo za visokofrekvenčni mov #003,RTEMP; števec za 8-bitni časovnik bis.b #008h,IE2 ; Omogoči prekinitve; iz vrat časovnika mov.b &DTMF_TH,&TPCNT2 ; Nalaganje visokega bajta v TC2 mov.b &DTMF_TL,&TPCNT1 ; Nalaganje nizkega bajta v TC1 bis.b #080h,&TPD ; Omogoči 16-bitni časovnik bis.b #HI_OUT+LO_OUT,&TPE ; Omogoči izhode DTMF-Hi/Lo mov.b #090h,&TPCTL ; Omogoči časovnik ret ;************************************************ ******** ******************************** ; Prekinitev časovnika;********************************************* *** ******************************* TP_INT xor.b #HI_OUT,&TPD ; Obrni izhod DTMF-Hi mov.b &DTMF_TH,&TPCNT2 ; Nalaganje visokega bajta v TC2 mov.b &DTMF_TL,&TPCNT1 ; Nalaganje nizkega bajta v TC1 bic.b #007h,&TPCTL ; Čiščenje reti zastavic ;************************************************ ******** *************

3.2.2 1 Generiranje kvadratnih valov z uporabo Timer_A

Ta rutina za generiranje signala DTMF uporablja samo Timer_A za kvadratno valovanje obeh želenih frekvenc. Postopek sestavljanja izračuna ustrezne vrednosti za časovnik za uporabo programa ne glede na vrednost frekvence MCLK. Trajanje izhodnega signala je določeno s konstanto DL v milisekundah.

; Definicije strojne opreme; FLLMPY .equ 32; Frekvenčni množitelj FLL pri 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarčni DL .equ 82; trajanje signala DTMF v ms; (65..100 ms) STACK .equ 600h ; Naslov inicializacije sklada; Definicije RAM-a; STDTMF .equ 202h ; Stanje visoke in nizke frekvence TIM32B .equ 204; Razširitev registra časovnika LENGTH .equ 206h ; števec trajanja DTMF; .text 0F000h ; Začetni naslov programa; ; Inicializacija Timer_A: MCLK, neprekinjen način, omogočene prekinitve; Priprava izhodnih modulov časovnika Timer_A MCLK = 1,048 MHz (samodejno) ; INIT MOV #STACK,SP ;Inicializacija kazalca sklada CALL #INITSR ;Inicializacija množitelja; FLL frekvence in RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Inicializacija časovnika MOV.B #TA2+TA1,&P3SEL ; Izhoda TA2 in TA1 na vratih P3.5/4 CLR TIM32B; Počisti razširjeni register časovnika BIS #MCONT,&TACTL ; Zagon časovnika Timer_A EINT ; Omogočanje splošne prekinitve MAINLOOP ... ; Glavna zanka; ;Pritisnite tipko: SDTMF vsebuje odmik tabele; za 2 frekvenci (0..6,0..6) v visokem in nizkem bajtu; MOV&TAR,R5 ; Za takojšnji začetek: ADD FDTMFLO,R5 ; Odmik za krajši čas MOV R5,&CCR1 ; Prva sprememba stanja po 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms MOV #OMT+CCIE,&CCTL1; Izhodna inverzija, bitna prekinitev. MOV #OMT+CCIE,&CCTL2 ; Invertni izhod, prekinitveni bit MOV.B STDTMF,R5 ; 82 ms števec RRA R5 ; število sprememb stanja nižje frekvence MOV.B DTMFL(R5),LENGTH ; za trajanje signala... ; nadaljevanje programa; ; Upravljalnik prekinitev iz CCR0 (tu ni uporabljen); TIMMOD0 ... RETI ; ; Upravljalnik prekinitev iz registrov zajem-primerjava 1..4; TIM_HND ADD &TAIV,PC ; Obdelava zahteve z najvišjo; prioriteta RETI; brez zahteve za prekinitev: RETI JMP HCCR1 ; zahteva od CCR1 (nizka frekvenca DTMF) JMP HCCR2 ; zahteva od CCR2 (visoka frekvenca DTMF) JMP HCCR3 ; zahteva od CCR3 JMP HCCR4 ; zahteva od CCR4; TIMOVH INC TIM32B ; Razširitev Timer_A na 32 bitov RETI ; ; Nizka frekvenca DTMF: TA1 obrne izhod izhodne enote 1; Vsaka sprememba stanja se šteje za nadzor trajanja signala; HCCR1 POTISNI R5 ; Shranjevanje uporabljenih registrov MOV.B STDTMF,R5 ; Status nizke frekvence DTMF ADD FDTMFLO(R5),&CCR1 ; Dodajte trajanje polcikla DEC.B LENGTH ; Ali je trajanje signala DL končano? JNZ TARET ; ne; ; Da, zaustavi signal DTMF: onemogoči prekinitve; BIC #OMRS+OUT+CCIE,&CCTL1 ; Ponastavi TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Ponastavi TA2 TARET POP R5 ; Obnovi R5 RETI; Vrnitev iz prekinitve; ; Visokofrekvenčni DTMF: TA2 obrne izhod izhodne enote 2; HCCR2 POTISNI R5 ; Shranjevanje uporabljenih registrov MOV. B STDTMF+1,R5; Visokofrekvenčni status DTMF ADD FDTMFHI(R5),&CCR2 ; Dodajte trajanje polcikla POP R5 ; Obnovi R5 RETI; Vrnitev iz prekinitve; HCCR3 ... ;Naloga, ki jo krmili register CCR3 RETI HCCR4 ... ;Naloga, ki jo krmili register CCR4 RETI ; ; Tabela frekvenc DTMF: tabela vsebuje; število ciklov MCLK na pol cikla. Vrednosti, prilagojene za; efektivna frekvenca MCLK med postopkom montaže; in zaokroženo na minimum možna napaka frekvence; FDTMFLO .word ((TCLK/697)+1)/2 ; Nizka frekvenca DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Hz .word ((TCLK/852)+1)/2 ; 852Hz .word ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .word ((TCLK/1209)+1)/2 ; Visokofrekvenčni DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .word ((TCLK/1477)+1)/2 ; 1477Hz .word ((TCLK/1633)+1)/2 ; 1633Hz ; ; Tabela vsebuje število pol-ciklov za trajanje signala DL (ms). ; Za štetje se uporablja nižja frekvenca DTMF; DTMFL .byte 2*697*DL/1000 ; Število pol-ciklov.byte 2*770*DL/1000 ; za DL v ms.byte 2*852*DL/1000 ; .byte 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; Vektorji prekinitve časovnika Timer_A .beseda TIM_HND ; Vektor modulov 1..4 timers.word TIMMOD0 ; Modul časovnika 0 vector.sect "INITVEC",0FFFEh ; Vektor Ponastaviti.beseda INIT

Spodaj je nekoliko hitrejša rešitev. Vendar zahteva več RAM-a, ker ... Podatki, pridobljeni iz tabel, se ne preračunajo vsakič znova, ampak se na kratko shranijo v RAM DTMFLO in DTMFHI. Branje poteka iz prekinitvenih rutin časovnika Timer_A. Uporabljene tabele so enake kot v prejšnjem primeru.

FLLMPY .equ 32; Frekvenčni množitelj FLL pri 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarčni DL .equ 82; trajanje signala DTMF; v ms (65..100 ms) STDTMF .equ 202h ; Stanje visoke in nizke frekvence TIM32B .equ 204; Razširitev registra časovnika LENGTH .equ 206h ; Števec trajanja DTMF DTMFLO .equ 208h ; Pol cikla nižje frekvence DTMFHI .equ 20Ah; Zgornja frekvenca pol cikla STACK .equ 600h ; Naslov inicializacije sklada.besedilo 0F000h; Začetni naslov programa; Inicializacija Timer_A: MCLK, neprekinjen način, omogočene prekinitve; Priprava izhodnih modulov časovnika Timer_A MCLK = 1,048 MHz (samodejno) ; INIT MOV #STACK,SP ; Inicializacija kazalca sklada CALL #INITSR ; Inicializacija množitelja; FLL frekvence in RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Zagon časovnika MOV.B #TA2+TA1,&P3SEL ; Izhoda TA2 in TA1 na vratih P3.5/4 CLR TIM32B; Brisanje razširjenega registra časovnika BIS #MCONT,&TACTL ;Zagon časovnika Timer_A EINT ; Omogočanje splošne prekinitve MAINLOOP ... ; Glavna zanka; Pritisnite tipko: SDTMF vsebuje odmik tabele; za 2 frekvenci (0..6,0..6) v visokem in nizkem bajtu; MOV&TAR,R5 ; Za takojšnji začetek ADD FDTMFLO,R5 ; Odmik za krajši čas MOV R5,&CCR1 ; Prva sprememba stanja po 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Pridobite štetje dveh ciklov za frekvence DTMF; MOV.B STDTMF+1,R5 ; Visokofrekvenčni DTMF MOV FDTMFHI(R5),DTMFHI ; Trajanje polcikla MOV.B STDTMF,R5 ; Nizka frekvenca DTMF MOV DTMFLO(R5),DTMFLO ; Trajanje polcikla; ; Števec trajanja RRA R5 ; Pripravi bajtni indeks MOV.B DTMFL(R5),LENGTH ; število sprememb stanja nižje frekvence MOV #OMT+CCIE,&CCTL1 ; Izhodna inverzija, bitna prekinitev. MOV #OMT+CCIE,&CCTL2 ; Izhodna inverzija, bitna prekinitev. ... ; Vrnitev v glavno zanko; ; Upravljalnik prekinitev iz CCR0 (tu ni uporabljen); TIMMOD0 ... RETI ; ; Upravljalnik prekinitev iz registrov zajem-primerjava 1..4; TIM_HND ADD &TAIV,PC ; Obdelava zahteve z najvišjo; prioriteta RETI; brez zahteve za prekinitev: RETI JMP HCCR1 ; zahteva od CCR1 (nizka frekvenca DTMF) JMP HCCR2 ; zahteva od CCR2 (visoka frekvenca DTMF) JMP HCCR3 ; zahteva od CCR3 JMP HCCR4 ; zahteva od CCR4; TIMOVH INC TIM32B ; Razširitev Timer_A na 32 bitov RETI ; ; Nizka frekvenca DTMF: TA1 obrne izhod izhodne enote 1; HCCR1 DODAJ DTMFLO,&CCR1 ; Dodajte trajanje polcikla DEC.B LENGTH ; Ali je trajanje signala DL končano? JNZ TARET ; ne; ; Da, zaustavi signal DTMF: onemogoči prekinitve; BIC #OMRS+OUT+CCIE,&CCTL1 ; Ponastavi TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Ponastavi TA2 TARET RETI ; Vrnitev iz prekinitve; Visokofrekvenčni DTMF: TA2 obrne izhod izhodne enote 2; HCCR2 DODAJ DTMFHI,&CCR2 ; Dodajte trajanje polcikla RETI ; Vrnitev iz prekinitve; HCCR3. .. ;Naloga, ki jo krmili register CCR3 RETI HCCR4 ... ;Naloga, ki jo krmili register CCR4 RETI ; ; Tabele prekinitev in vektorji so enaki tistim, prikazanim v prejšnjem primeru.

3.3 Strojna oprema za generiranje signalov DTMF

Kot je navedeno zgoraj, mora biti v frekvenčnem območju 200 Hz do 4600 Hz nivo signala frekvence prenosa vsaj 20 dB nad nivojem tujih signalov (šuma). Poleg tega morajo imeti signali iz “zgornje” in “spodnje” skupine na podlagi specifikacije različne ravni, zato vsak signal zahteva svoj filter. Amplitude sinusne frekvence lahko dobimo iz Fourierjevega niza.

Za izbiro mejnih frekvenc pri načrtovanju analognega filtra morate upoštevati naslednje zahteve, ki temeljijo na:

  • Ker zagotoviti je treba možnost kakršnih koli kombinacij frekvenc "spodnje" skupine s frekvencami "zgornje" skupine; razlika v nivojih med najnižjo in najvišjo frekvenco v skupini ne sme presegati 3 dB.
  • Za najnižjo frekvenco v skupini (f1) dušenje harmonikov (3f1) ne sme biti slabše od 20 dB. Izpolnjevanje tega pogoja je najbolj kritično za nižjo frekvenco v skupini, saj je čim dlje od mejne frekvence filtra.

Formula opisuje kvadrat absolutne vrednosti na izhodu visokofrekvenčnega Butterworthovega filtra reda n:

Ta formula predstavlja odvisnost ojačenja Butterworthovega visokoprepustnega filtra od frekvence. Parametra fg in n določata mejno frekvenco oziroma vrstni red filtra.

Najprej je treba izračunati zahtevani vrstni red filtrov ob upoštevanju skladnosti z zgornjimi zahtevami.

Za izpolnitev prvega pogoja ne sme biti razmerje kvadratov absolutnih vrednosti najnižje in najvišje frekvence v skupini največ 3 dB ali:

Drugi pogoj bo samodejno izpolnjen, če je razmerje kvadratov absolutnih vrednosti frekvenc f1 in 3f1 večje od 10/3, v tem primeru je tretji harmonik v pravokotnem signalu 1/3 manjši (glej Fourier serija in slika 2):

Kot rezultat izračunov za frekvence obeh skupin imamo zahtevani vrstni red filtrov n=1,15. Tako bodo zahteve izpolnjene s filtrom 2. reda, ki ga je mogoče nadgraditi operacijski ojačevalnik. Če uporabljate filter 3. reda, potrebujete samo dva dodatna elementa. Vendar bo to zmanjšalo zahteve za razpršitev parametrov komponent. Obe zgornji zahtevi bosta izpolnjeni, če je mejna frekvenca v naslednjih mejah:

Spodnja skupina fg>880 Hz fg<1418 Гц
Zgornja skupina fg>1527 Hz fg<2460 Гц

Če je mejna frekvenca na minimumu, bo prišlo do največjega harmonskega zmanjšanja. Vendar bo v tem primeru razlika med najnižjo in najvišjo frekvenco v skupini 3 dB. Pri najvišji možni mejni frekvenci je razlika v nivojih minimalna, vendar so harmonične komponente potlačene le za 20 dB.

Pri izračunu filtra je bila večja pozornost namenjena dušenju harmonikov, razlika v nivojih znotraj skupine je bila fiksirana na 2 dB. Posledično sta mejni frekvenci 977 Hz in 1695 Hz. Posledično dušenje harmonikov bistveno presega zahteve. Razlika v frekvenčnih nivojih v skupini je v okviru zahtev tudi v primeru odstopanja mejne frekvence, ki je povezana z razmikom parametrov uporabljenih komponent. Pri izračunu vrednosti filtrskih elementov so bili upori izbrani glede na njihovo največjo bližino standardnim vrednostim serije E12.

Na izhodih filtrov sta rezultat dva sinusna signala z bistveno potlačenimi harmoniki. Za združevanje teh signalov je uveden dodaten seštevalnik.

Tako lahko z uporabo samo 3 operacijskih ojačevalnikov in nekaj pasivnih elementov ustvarimo signale DTMF z uporabo mikrokrmilnika brez uporabe večjih računalniških virov.

Z uporabo simulatorskih programov so bile preverjene približne vrednosti. Odziv filtrov se zelo natančno ujema z izračunanim frekvenčnim odzivom.


riž. 6: Amplitudni spekter pravokotnega signala s frekvenco 697 Hz na izhodu filtra 3. reda

Na sl. Slika 6 prikazuje amplitudni spekter pravokotnega signala s frekvenco 697 Hz, prepuščenega skozi filter 3. reda. Kot je razvidno iz slike, sta tretji in peti harmonik (2091 Hz in 3485 Hz) močno oslabljena (-25,6 dB).


riž. 7: Amplitudni spekter pravokotnega signala s frekvenco 941 Hz na izhodu filtra 3. reda

Na sl. Slika 7 prikazuje spekter pravokotnega signala s frekvenco 941 Hz. V frekvenčnem območju, ki nas zanima, do 4600 Hz, je samo en harmonik. Po prehodu skozi filter je ta harmonik 2823 Hz znatno oslabljen (-27,9 dB). Nivojska razlika med najnižjo in najvišjo frekvenco v skupini ne presega 1,9 dB.

Za uporabo nizkocenovnih komponent z velikimi variacijami parametrov je bilo izvedeno dodatno modeliranje. Rezultati simulacije so pokazali, da je dovoljena razlika v vrednostih uporov in kondenzatorjev 10%.


Slika 8: Histogram – porazdelitev ravni signalov v skupini


Slika 9: Histogram – zatiranje harmonikov

Na sl. 8 in 9 prikazujeta histograme, dobljene z analizo Monte Carlo. V tem primeru so se vrednosti komponent naključno spreminjale v 10-odstotnem razmiku. Po 100 ponovitvah se rezultati za vse simulirane filtre narišejo v histogramih. V histogramu na sl. Slika 8 prikazuje razliko v nivojih med frekvencami znotraj skupine. Najvišja dovoljena razlika 3 dB med najnižjo in najvišjo frekvenco ni bila dosežena v nobenem primeru. Povprečna vrednost je 1,6 dB, kar je nekoliko bolje od izračunane vrednosti 2 dB.

Na sl. Slika 9 prikazuje slabljenje harmonikov za "nižjo" frekvenčno skupino. Zahtevana vrednost 20 dB je dosežena v vseh primerih, povprečna vrednost je približno 27 dB. V najslabšem primeru je harmonik zadušen za 24,2 dB.

Vrednosti, izračunane za filter "spodnje" frekvenčne skupine, se izvedejo tudi za filter "zgornje" frekvenčne skupine.

Oba filtra imata enako vezje. Edina razlika je v mejnih frekvencah filtrov za zgornje in spodnje frekvenčne skupine. R1 in C1 tvorita visokofrekvenčni filter 1. reda. Ker vhodni upor vezja je odvisen tudi od R1, vrednost tega elementa ne sme biti premajhna; sicer bodo izhodi mikrokrmilnika preobremenjeni in pravokotna valovna oblika bo popačena. V tem primeru bodo signalu dodane dodatne frekvence, ki so posledica intermodulacijskega popačenja, kar bo negativno vplivalo na razmerje signal/šum.

Prenosne funkcije filtrov višjega reda ni mogoče doseči samo z uporabo pasivnih komponent.

Tako mora filter 2. reda vsebovati operacijski ojačevalnik. Ojačanje aktivnega filtra je nastavljeno na 0,2 z uporabo uporov R1-1 in R1-2. Kot lahko vidite, je signal nekoliko oslabljen. To je potrebno, da se izognete preobremenitvi op-amp, ker največja amplituda osnovnega sinusnega harmonika pravokotnega signala presega amplitudo samega pravokotnega signala (glejte Fourierjevo vrsto in sliko 2). Dodatni seštevalnik prilagodi zahtevano izhodno raven. Zaradi konstantne komponente pravokotnega signala je delovna točka operacijskega ojačevalnika nastavljena na raven Vcc/2 (glejte tudi Fourierjev niz in sliko 2). V tem primeru konstantne komponente ni mogoče odpraviti z vhodnim delilnikom R1-1/R1-2. Za ločitev vezja OS z enosmerno napetostjo se uporablja kondenzator C3.

Na vsakem od izhodov analognega filtra se ustvari signal zgornje oziroma spodnje frekvenčne skupine. V dodatnem seštevalniku se ti signali dodajo. V tem elementu vezja lahko nastavite razmerje med "spodnjo" in "zgornjo" frekvenco v skupnem signalu in nivojem izhodnega signala z uporabo uporov R4 in R5. Tako je mogoče izhodno amplitudo enostavno prilagoditi različnim zahtevam v različnih državah.

Pri izračunu vrednosti komponent so bile vrednosti kondenzatorja, kot običajno, fiksne in vrednosti uporov so bile izračunane v skladu z njimi. V tem vezju so bili uporabljeni kondenzatorji in upori standardne serije E12 z razmikom 10%.

Na sl. Slika 10 prikazuje shematski diagram analognih filtrov in seštevalnika:


riž. 10: Shema analognih filtrov z dodatnim seštevalnikom

Kondenzatorja C1-1 in C1-2 združita oba signala skupaj na delovni točki Vcc/2. Za te elemente ne smete izbrati prevelikih vrednosti, ker so nizkopasovni filtrirni elementi za odpravo nizkofrekvenčnih subharmonikov. Filtrirni kondenzator C5 odpravlja šum referenčne napetosti. Dodatni kondenzator C6, priključen vzporedno na povratni upor R6, tvori visokoprepustni filter prvega reda. Če je izbrana najnižja mejna frekvenca filtra, dodatno filtriranje visokofrekvenčnih intermodulacijskih motenj izboljša kakovost izhodnega signala, vendar bo prišlo do določenega slabljenja najvišjih frekvenc "zgornje" skupine. V nekaterih primerih generiranje najvišje frekvence DTMF 1633 Hz ni potrebno, ker uporablja se samo za oblikovanje servisnih simbolov A-D, razmerje med signalom in šumom pa je mogoče izboljšati z znižanjem mejne frekvence filtra. Tako povečanje mejne frekvence vodi do povečanja stopnje visokofrekvenčnih motenj, hkrati pa se zmanjša negativni vpliv na najfrekvenčne komponente signala DTMF.

4 Rezultati študij signalov oddajnikov DTMF

Spodnja spektrograma (sl. 11 in 12) prikazujeta izhodne signale oddajnika DTMF pri različnih frekvencah. Na sl. Slika 11 prikazuje amplitudni spekter simbola "1". Frekvence, potrebne za njegov prenos - 697 in 1207 Hz - so na ravni -10,5 dB oziroma -8,5 dB. Harmoniki pri 2091 in 3621 Hz so zadušeni za skoraj 30 dB. Za prenos simbola "D" se ustvarita dve najvišji frekvenci - 941 in 1633 Hz. Kot je razvidno iz sl. 12, je nizkofrekvenčna raven -12 dB, visokofrekvenčna raven je -11 dB. Ustrezni harmoniki so oslabljeni za več kot 30 dB. Tako izmerjene vrednosti ustrezajo rezultatom simulacije in specifikacijskim zahtevam.


riž. 11: Amplitudni spekter simbola "1": 697 in 1207 Hz


riž. 12: Amplitudni spekter simbola "D": 941 in 1633 Hz

Absolutne frekvenčne natančnosti generiranih pravokotnih signalov ni mogoče doseči z uporabo dveh različnih časovnikov; rezultat bo odvisen od kombinacije obeh frekvenc in vrste uporabljenih časovnikov. Razlog za to je konflikt prekinitve časovnika. Vendar je zahtevana natančnost ±1,8 % izpolnjena z veliko rezervo.

Če se uporabljata 8-bitni časovnik in časovnik Timer Port pri sistemski frekvenci MCLK 1,048 MHz, se frekvence "spodnje" skupine generirajo z natančnostjo, ki ni slabša od 0,3 %. Za frekvence "zgornje" skupine je bilo v praksi doseženo odstopanje največ 0,5%.

Edina izjema je znak DTMF "D", za katerega se ustvarijo najvišje frekvence. Posledično ima v tej kombinaciji frekvenca "zgornje" skupine 1633 Hz odstopanje -0,97%.

Brez te izjeme je tudi najvišja frekvenca 1633 Hz generirana z natančnostjo, boljšo od 0,5 %. Največja odstopanja za različne frekvence so navedena v tabeli:

Če se za ustvarjanje frekvenc uporablja Timer_A, bo napaka odvisna od uporabljene frekvence MCLK:

MCLK, MHz 1,048 2,096 3,144 3,800
Množitelj FLL 32 64 96 116
697 Hz +0,027% +0,027% +0,027% +0,027%
770 Hz -0,015% -0,016% +0,033% -0,016%
852 Hz +0,059% -0,023% +0,005% +0,031%
941 Hz +0,029% +0,029% +0,029% +0,035%
1209 Hz -0,079% +0,036% +0,036% -0,003%
1336 Hz +0,109% -0,018% +0,025% +0,025%
1447 Hz -0,009% -0,009% -0,009% -0,009%
1633 Hz +0,018% +0,018% +0,018% +0,018%

5 Zaključek

Programska oprema za ta primer je zelo preprosta in zavzema približno 300 bajtov ter zahteva majhno količino RAM-a in ROM-a. Zahvaljujoč vgrajenemu modulu časovnika se zahtevane frekvence generirajo z visoko natančnostjo brez zapravljanja obremenitve procesorja. V konfiguraciji, kjer se za generiranje uporabljata 8-bitni časovnik in časovnik/vrata, prekinitvene rutine zasedejo približno 12 % vira CPE. V primeru, ko frekvence generira časovnik Timer_A, se obremenitev procesorja za obdelavo prekinitvenih rutin zmanjša na 6 %. Posledično se lahko med prenosom signalov DTMF izvajajo druge naloge ali pa je CPE prestavljen v način nizke porabe, da se zmanjša trenutna poraba.

Dobro funkcionalnost opisanega modula za generiranje DTMF signalov s pravokotnimi signali dokazuje strojna zasnova vezja. Ker V vezju je mogoče uporabiti komponente s širokim razponom parametrov, cena takšne rešitve je zelo nizka. Vse specifikacijske zahteve so v veliki meri izpolnjene, zato v instrumentih, ki uporabljajo MSP430 kot kontrolni krmilnik, ni potreben ločen modul generatorja signala DTMF.

Če je v določenem primeru potrebno povečati razmerje med signalom in šumom, lahko z uporabo dodatnega operacijskega ojačevalnika izdelamo filter za dodatno zatiranje intermodulacijskega popačenja. Takšen dodatni operacijski ojačevalnik je že prisoten v quad operacijskem ojačevalniku v paketu DIL14.

6 Povezave

Bundesamt fur Post und Telekommunikation (Federal Office for Post and Telecommunications): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) des Telefonnetzes (official specification for terminal devices connected to analogue telephone lines, for excluding varnostne in klicne zahteve) / ISDN Deutschen Bundespost Telekom; Bundesministerium fur Post und Telekommunikation, Osnutek, Bonn, april 1994 Papula: Mathematik fur Ingenieure 2 (Matematika za inženirje); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10. izdaja; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: družina MSP430, poročilo o uporabi merjenja, Texas Instruments, številka 2.1, januar 1997, SLAAE10B Texas Instruments: družina MSP430, uporabniški priročnik za arhitekturo in knjižnica modulov, Texas Instruments, 1996, SLAUE10B Texas Instruments: MSP430 Family, Software User's Guide, Texas Instruments, 1996 Texas Instruments: MSP430 Family, Assembly Language Tools User's Guide, Texas Instruments, 1996 Siwy, Robert: Systementwicklung einer Telekom-Applikation zum Senden und Empfangen von DTMF-Signalen mit dem Microcontroller MSP430 (Razvoj telekomunikacijski sistem za sprejem in prenos digitalnih signalov na osnovi mikrokrmilnika MSP430); Diplomarbeit, Fachhochschule Landshut, maj 1997

Značilne lastnosti:

  • Ustvarjanje sinusnih valov z modulacijo širine impulza (PWM)
  • Združevanje različnih sinusnih signalov v en DTMF signal
  • Izvorne kode v jezikih asembler in C
  • Zasnovan za delo s STK500
  • Velikost programske kode 260 bajtov / konstantna velikost tabele 128 bajtov
  • Uporaba metode pretvorbe tabele

Uvod

Ta dokument opisuje tehniko za ustvarjanje signalov DTMF (dvotonski večfrekvenčni signali) z uporabo katerega koli mikrokrmilnika AVR, ki vsebuje enoto za modulacijo širine impulza (PWM) in statični RAM. Ti signali se pogosto uporabljajo v telefoniji, kjer se reproducirajo, ko pritisnete klicne tipke na telefonskem aparatu. Za pravilno generiranje signala DTMF morata biti skupaj postavljeni dve frekvenci: nizka frekvenca (fb) in visoka frekvenca (fa). Tabela 1 prikazuje, kako se različne frekvence mešajo za ustvarjanje tonov DTMF, ko pritisnete različne tipke.

Slika 1 – Vezje generatorja signala DTMF

Tabela 1 – Matrika generiranja tonskega signala

fb/fa 1209 Hz 1336 Hz 1477 Hz 1633 Hz
697 Hz 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz * 0 # D

Vrstice tabele 1 prikazujejo vrednosti nizke frekvence, stolpci pa vrednosti visoke frekvence. Na primer, matrika kaže, da ko pritisnete gumb "5", se frekvenci fb = 770 Hz in fa = 1336 Hz mešata. Kot rezultat seštevanja dveh sinusnih signalov različnih frekvenc nastane signal DTMF

kjer je razmerje amplitud K=A b /A a izvorni signali morajo izpolnjevati pogoj

Princip delovanja

Poleg splošnih informacij o uporabi modulacije širine impulza bo spodaj prikazano, kako modulacija širine impulza omogoča ustvarjanje sinusnih signalov. Naslednji odstavek opisuje, kako uporabiti osnovno preklopno frekvenco za pridobitev različnih frekvenc. Po pregledu teoretičnih osnov bo podan opis samega generatorja signala DTMF. Generiranje sinusnih valov

Odvisno od razmerja trajanja visokih napetostnih nivojev VH in nizkih VL se spreminja povprečna vrednost na izhodu PWM. Če je razmerje med trajanjem obeh nivojev konstantno, bo posledično ustvarjen konstanten nivo napetosti VAV. Slika 2 prikazuje impulzno širinsko moduliran signal.


Slika 2 – Generiranje ravni enosmerne napetosti

Raven napetosti je določena z izrazom:

(3)

Sinusoidni signal je mogoče ustvariti pod pogojem, da se povprečna vrednost napetosti, ki jo ustvari modulacija širine impulza, spremeni vsak cikel PWM. Razmerje med visokimi in nizkimi nivoji mora biti nastavljeno v skladu z nivojem napetosti sinusnega vala v ustreznem času. Slika 3 prikazuje ta proces. Izvorni podatki za PWM se izračunajo za vsako od njegovih obdobij in zabeležijo v pretvorbeni tabeli (TC).

Slika 3 ponazarja tudi razmerje med frekvenco osnovnega sinusnega vala in številom vzorcev. Večje kot je število vzorcev (Nc), večja je natančnost modeliranja dobljenega signala:

(4)

Frekvenca PWM je odvisna od ločljivosti PWM. Pri 8-bitni ločljivosti je končna vrednost (zgornji del števila) časovnika 0xFF (255). Ker Časovnik šteje naprej in nazaj, potem je treba to vrednost podvojiti. Zato lahko frekvenco PWM izračunamo tako, da frekvenco ure časovnika f CK delimo s 510. Tako bo pri frekvenci ure časovnika 8 MHz končna frekvenca PWM 15,6 kHz.


Slika 3 – Ustvarjanje sinusnega signala z uporabo PWM

Spreminjanje frekvence sinusnega vala

Predpostavimo, da se sinusni vzorci berejo iz iskalne tabele ne zaporedno, ampak enega za drugim. V tem primeru bo pri enaki frekvenci vzorčenja ustvarjen signal z dvojno frekvenco (glej sliko 4).


Slika 4 – Podvojitev nastale frekvence (XSW = 2)

Po analogiji, če ne berete vsake druge vrednosti, ampak vsako tretjo, četrto, peto (oziroma širina koraka je 3, 4, 5 ...) itd. mogoče je ustvariti Nc frekvence v območju . Upoštevajte, da pri visokih frekvencah nastala valovna oblika ne bo sinusna. Širino koraka po pretvorbeni tabeli označimo kot XSW, Kje

(5)

Izračun trenutnega položaja v TP za naslednjo periodo PWM (ko se časovnik prekorači) izvedemo z izrazom (6). Nova vrednost na položaju X LUT odvisno od njegovega prejšnjega stanja v položaju X" LUT z naraščajočo širino koraka XSW

(6)

Dodajanje različnih frekvenc za pridobitev signala DTMF

Signal DTMF lahko ustvarite z uporabo izrazov (1) in (2). Zaradi enostavnosti aritmetičnih operacij je vrednost koeficienta K enaka 0,75, da se aritmetična operacija nadomesti z logičnimi premiki. Ob upoštevanju izraza (6) lahko trenutno vrednost za krmiljenje PWM izračunamo z izrazom:

in ob upoštevanju tega X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, končno zapišimo

Izvedba generatorja DTMF

Ta dodatek preučuje zgradbo generatorja tonov DTMF, ki uporablja 8-bitni izhod PWM (OC1A) in tabelo s 128 vzorci sinusne funkcije (Nc), od katerih je vsak določen s 7 biti (n). Naslednji izrazi prikazujejo to odvisnost in prikazujejo tudi, kako izračunati vnose v iskalni tabeli:

(9)

Prednost uporabe 7 bitov je, da je vsota vrednosti signala visoke in nizke frekvence velika en bajt. Za podporo celotnega niza tonov DTMF je treba izračunati 8 vrednosti za vsako frekvenco DTMF iz tabele 1 in jih vnesti v iskalno tabelo.

Za večjo natančnost je bila implementirana naslednja rešitev: vrednosti, izračunane z izrazom 5, zahtevajo samo 5 bajtov. Za uporabo vseh 8 bajtov, kar bo zmanjšalo napake pri zaokroževanju, se ta vrednost pomnoži z 8. Kazalec na iskalno tabelo je zapisan na enak način. Toda v tem primeru sta potrebna dva bajta za shranjevanje 8-kratne vrednosti. To pomeni, da je treba izvesti 3 desne premike in operacijo radiksa Nc modula (logično množenje z Nc-1), preden te bajte uporabimo kot kazalec na vrednosti sinusnega vala v


Slika 5 – Diagram modula za povezavo s STK500

Signal PWM se ustvari na nožici OC1A (PD5). Dodaten izhodni filter bo pomagal narediti signal bolj združljiv s sinusno valovno obliko. Pri zniževanju frekvence PWM bo morda treba uporabiti filter s strmejšim frekvenčnim odzivom, da dobite dober rezultat.

Povezava tipkovnice je prikazana na sliki 1. Delovanje tipkovnice mora biti organizirano tako, da je možno določiti pritisnjeno tipko. To je mogoče storiti z naslednjim algoritmom:

  1. Določanje niza pritisnjene tipke
    • konfigurirajte prenosni računalnik nižjega reda vrat B kot izhod in nastavite dnevnik. "0"
    • konfigurirajte visoko tetrado vrat B kot vhod s povezavo vlečnih uporov
    • vrstica s pritisnjenim gumbom je definirana kot cifra najvišje tetrade z logom. "0"
  2. Definiranje stolpca pritisnjene tipke
    • konfigurirajte visoki prenosni računalnik vrat B kot izhod in nastavite dnevnik. "0"
    • konfigurirajte tetrad nizkega reda vrat B kot vhod s povezovanjem povlečnih uporov
    • stolpec s pritisnjenim gumbom je definiran kot števka nizke tetrade z logom. "0"

Opomba: V STK200 so upori zaporedno povezani med zatiči konektorja PORTB in zatiči mikrokrmilnika BP5, PB6 in PB7 (glejte diagram STK200). To bo povzročilo težave, če je tipkovnica priključena na priključek PORTB.

Slika 6 prikazuje delovanje podprograma za ugotavljanje pritisnjene tipke. Odvisno od pritisnjene tipke se določi trajanje intervala. Prekinitvena rutina uporablja to vrednost za izračun nastavitev PWM za dva tonska sinusna vala DTM. Postopek obravnavanja prekinitve je prikazan na slikah 7 in 8.

Ta rutina izračuna vrednost za primerjavo z izhodom časovnika za naslednje obdobje PWM. Prekinitvena rutina najprej izračuna položaj naslednje vzorčne vrednosti v iskalni tabeli in prebere tam shranjeno vrednost.

Položaj vzorca v iskalni tabeli je določen s širino impulza, dejansko širino impulza pa generirana frekvenca.

Končna vrednost, ki se zapiše v primerjalni register časovnika, se določi s formulo (7), ki upošteva vzorčne vrednosti obeh frekvenc DTMF.


Slika 6 – Blok diagram glavnega programa

Izum se nanaša na področje digitalnega generiranja dvotonskih frekvenčnih (DTMF) signalov, namenjenih prenosu podatkov, na primer na področju telefonije. Doseženi tehnični rezultat je zmanjšanje števila redundantnih elementov vezja, povečanje ekonomske učinkovitosti. Generator DTMF signalov, ki izvaja Metodo generiranja DTMF signalov, vsebuje dva akumulativna seštevalnika, dva hranilna registra, dve pomnilniški napravi, končni seštevalnik, digitalno-analogni pretvornik, pretvornik signalnih kod DTMF v zaporedje celih števil. , delilnik referenčne frekvence generatorja signala DTMF z nastavljivim koeficientom delitve, pretvornik kod signala DTMF v kodo faktorja delitve. 2 s. in 3 plače f-ly, 2 ilustr.

Izum se nanaša na metode za generiranje signalov DTMF (dvotonske frekvence) z digitalnimi metodami, namenjene prenosu podatkov, na primer na področju telefonije med tonsko-frekvenčnim izbiranjem.Najbližje v tehničnem bistvu in doseženem rezultatu zahtevanemu metoda je metoda za generiranje signalov DTMF, predstavljena v US patentu št. 5034977 z dne 04/04/89, objav. 23.07.91, M. razred. 5 N 04 M 1/00 ​​Znana metoda za generiranje signalov DTMF vključuje izbiro prve in druge kode kota vzorčenja, ki ustrezata prvi in ​​drugi frekvenci komponent signala DTMF, kumulativno ločeno seštevanje kod prvega in drugega kota vzorčenja s periodičnim oz. fiksni, s periodo, ki ustreza frekvenci vzorčenja ure, prvi in ​​drugi rezultat kumulativnega seštevanja, pridobivanje prve in druge diskretne vrednosti komponent signala DTMF, shranjenih v naslovno lociranih celicah ustreznih tabel diskretnih vrednosti komponent signala DTMF, z branjem iz ustreznih tabel na naslovih, ki ustrezajo rezultatom kumulativnega seštevanja kod kotov vzorčenja, seštevanjem prve in druge diskretne vrednosti komponent signala DTMF na pridobite tretjo diskretno vrednost, ki ustreza vrednosti signala DTMF.Znana metoda za generiranje signalov DTMF je naslednja: glede na kodo signala DTMF se s prvo pretvorbo kod signalov DTMF izbere prva koda, ki določi kot vzorčenja signala s frekvenco , ki ustreza skupini visokih frekvenc – stolpcev, s pomočjo druge pretvorbe signalnih kod DTMF pa se izbere druga koda, ki določa kot vzorčenja signala s frekvenco, ki ustreza skupina nizkih frekvenc - vrstice, periodično, s periodo, ki ustreza taktni frekvenci vzorčenja, se prva koda kota vzorčenja sešteje v ustreznem akumulativnem seštevalniku in se zabeleži v ustreznem registru, katerega izhod je rezultat, katere vrednost ustreza naslovu celice tabele, ki je shranjena v ustreznem bralnem pomnilniku in v kateri se nahajajo ustrezne diskretne vrednosti sinusov, ki določajo zgornjo frekvenco signala DTMF na enak način, periodično, z obdobje, ki ustreza taktni frekvenci vzorčenja, se druga koda kota vzorčenja sešteje v ustreznem akumulativnem seštevalniku in zabeleži v ustreznem registru, katerega rezultat je rezultat, katerega vrednost ustreza naslovu shranjene celice tabele v ustrezni pomnilniški napravi samo za branje in v kateri se ustrezne diskretne vrednosti sinusov, ki določajo spodnjo frekvenco signala DTMF, seštejejo diskretne vrednosti sinusov, ki določajo zgornje in spodnje frekvence signala DTMF navzgor v končnem seštevalniku, določanje diskretne vrednosti signala DTMF in z digitalno-analogno pretvorbo dovedeno na izhod, ki tvori stopenjski sinusni signal DTMF, ki ustreza vhodni kodi signala DTMF. Znana metoda je neučinkovita, kar je posledica nizkih tehnično-ekonomskih kazalcev in tehnoloških kazalcev.Tehnično-ekonomske kazalnike določajo potrebni stroški pri izvajanju metode za doseganje potrebnih parametrov, ki se zahtevajo za signale DTMF. Pri znani metodi je natančnost generiranja frekvence odvisna od bitne globine kode, ki ustreza kotu vzorčenja, kar zahteva veliko bitno širino akumulativnega seštevalnika, kar otežuje izvedbo metode s preprosto strojno opremo. Koda kota vzorčenja je namreč pri znani metodi določena z izrazom K = (F/F t)32..., (1.1) kjer je K koda, ki ustreza kotu vzorčenja, F generirana frekvenca, F t je frekvenca vzorčenja. Kot je razvidno, je natančnost generirane frekvence jasno odvisna od razmerja med generirano frekvenco in frekvenco vzorčenja. Da bi dosegli zahtevano natančnost generirane frekvence, in sicer ne slabše od 1,5%, očitno pri zahtevani sta najmanj dve pomembni mesti za decimalno vejico, kar zahteva predstavitev podatkov z bitno globino za nižje frekvence vsaj 8 bitov, za visoke frekvence pa vsaj 9 bitov, za kumulativno seštevanje pa najmanj 12 bitov. , kar vodi do povečanja števila sestavnih elementov naprav, ki izvajajo znano metodo. Znane naprave za izvedbo znane metode, in sicer seštevalniki, registri in trajni pomnilniki imajo vhode/izhode širine 4 in 8 bitov. Zato so pri večji bitni zmogljivosti potrebni dodatni tehnični in ekonomski stroški pri izvedbi enako funkcionalnih naprav. Poleg tega pri znani metodi zmanjšanje števila decimalnih mest povzroči frekvenčno napako, ki presega dovoljeno.Tehnološke kazalnike določa vsestranskost in poenotenje pri izvajanju metode, na primer sodobna raven tehnologije, ki vključuje zmanjšanje porabe materialov, komponent in povečanje vsestranskosti naprav, zahteva uporabo mikrokrmilnikov. Razširjeni mikrokrmilniki, ki se uporabljajo v telefoniji in telemetričnih meritvah, uporabljajo 8-bitne podatke in 8-bitno aritmetično-logično enoto, kar zahteva pri izvajanju znane metode dodatne računske operacije, povezane s seštevanjem podatkov s širino nad 8 bitov in analizo prenosni signal, ki poveča število ukazov in s tem frekvenco ure mikrokrmilnika, pa tudi količino RAM-a mikrokrmilnika, kar vodi do povečanja stroškov naprav, ki uporabljajo znano metodo za generiranje DTMF signali. Ta zaključek je podan pri analizi uporabe znane metode v tonskem klicalniku, ki temelji na mikrokrmilnikih proizvajalcev Atmel, Microchip tnc itd. Tako je znana metoda v osnovi neučinkovita, kar je posledica nizkih tehničnih in ekonomskih kazalnikov, izraženih v povečanih poraba materiala, poraba energije in nizki tehnološki kazalniki , saj ima omejitve pri uporabi metode, tudi kot del široko uporabljenih mikrokrmilnikov, kar se izraža v povečanih tehničnih lastnostih, ki se zahtevajo od mikrokrmilnikov, kar zmanjšuje njihovo vsestranskost.Najbližje v tehničnem bistvu in dosežen rezultat pri zahtevanem generatorju signalov DTMF je signal generatorja DTMF, predstavljen v US patentu št. 5034977 z dne 04/04/89, objav. 23.07.91, M. razred. 5 N 04 M 1/00 ​​Znani generator signala DTMF vključuje: prvi akumulativni seštevalnik, prvi zaskočni register, prvo pomnilniško napravo, drugi akumulativni seštevalnik, drugi zapahni register, drugo pomnilniško napravo, končni seštevalnik, digitalno-analogni pretvornik, pri čemer je izhod prvega akumulativnega seštevalnika povezan z vhodom prvega zaskočnega registra, izhod prvega zaskočnega registra pa je povezan z vhodom prve pomnilniške naprave, pa tudi z enim od vhodi prvega akumulativnega seštevalnika, izhod prve pomnilniške naprave je povezan z enim od vhodov končnega seštevalnika, izhod drugega akumulativnega seštevalnika je povezan z vhodom drugega zaskočnega registra, izhod drugega hranilni register je povezan z vhodom druge pomnilniške naprave, kot tudi z enim od vhodov drugega akumulacijskega seštevalnika, izhod druge pomnilniške naprave je povezan z drugim vhodom končnega seštevalnika, izhod končnega seštevalnika je priključen na vhod digitalno-analognega pretvornika, katerega izhod je izhod generatorja signala DTMF.Znani generator vsebuje tudi prvi pretvornik signalnih kod DTMF v ustrezne kode kotov vzorčenja, ki ustrezajo zgornjim frekvencam. signala DTMF, drugi pretvornik signalnih kod DTMF v ustrezne kode kotov vzorčenja, ki ustrezajo nižjim frekvencam signala DTMF, pri čemer je izhod prvega pretvornika signalnih kod DTMF povezan z drugim vhodom prvega kumulativnega seštevalnika, izhod drugega pretvornika signalne kode DTMF je povezan z drugim vhodom drugega akumulativnega seštevalnika, vhoda prvega in drugega pretvornika signalne kode DTMF sta vhoda generatorja signala DTMF, vhoda ure prvega in drugega zapahnjenega registri so med seboj povezani in so vhod frekvence vzorčenja generatorja signala DTMF. Znani generator signala DTMF zagotavlja nizek tehnični rezultat zaradi prevelikega števila elementov vezja, povezanih z različnimi, kot tudi prevelike bitne kapacitete enako funkcionalnih elementov. Poleg tega je implementacija znane tehnične rešitve dejansko možna v obliki ločenega integriranega vezja, vendar to zahteva organizacijo specializirane proizvodnje, vendar glede na to, da so generatorji DTMF signalov del večnamenskih naprav (telefonski aparati z naprednimi zmogljivostmi, naprave za prenos telemetričnih informacij po telefonskih linijah itd.) itd.), ki se trenutno izvajajo na osnovi univerzalnih mikrokrmilnikov, je proizvodnja posameznih signalnih mikrovezij DTMF ekonomsko neučinkovita. Osnova predlagane tehnične rešitve je naloga ustvarjanja metode za generiranje signalov DTMF z uporabo generatorja signalov DTMF, pri katerem se s spreminjanjem pogojev in zaporedja operacij izvaja metoda z visokimi tehničnimi in ekonomskimi kazalci, zaradi zmanjšanja bitne zmogljivosti podobnih operacij, visokimi tehnološkimi kazalniki, ko implementacija metode, tako pri načrtovanju vezja s preprosto strojno opremo, kot del večfunkcijskega mikrokrmilnika, povezana s ponovljivostjo, pri implementaciji enakih funkcionalnih elementov.Osnovna tehnična rešitev je bila postavljena naloga izdelati generator signala DTMF, v katerem, z uvajanjem novih elementov in novimi povezavami se poveča tehnični rezultat, povezan z zmanjšanjem števila redundantnih elementov vezja, in s tem poveča ekonomska učinkovitost, povezana z možnostjo izvedbe predlagane tehnične rešitve s široko dostopnimi sredstvi. rešen s tem, da je pri znani metodi generiranja signalov DTMF, vključno z izbiro prve in druge kode kotov vzorčenja, ki ustrezata prvi in ​​drugi frekvenci komponent signala DTMF, kumulativna vsota prve in druge kode koti vzorčenja ločeno, periodično določeni, s periodo, ki ustreza frekvenci ure vzorčenja, prvi in ​​drugi rezultat kumulativnega seštevanja, pridobivanje prve in druge diskretne vrednosti komponent signala DTMF, shranjenih v naslovnih celicah ustrezne tabele diskretnih vrednosti komponent signala DTMF, z branjem iz ustreznih tabel na naslovih, ki ustrezajo rezultatom kumulativnega seštevanja kod kotov vzorčenja, seštevanjem prve in druge diskretne vrednosti komponent signala DTMF v pridobi tretjo diskretno vrednost, ki ustreza vrednosti signala DTMF, novo pa je, da pridobitev prve in druge diskretne vrednosti komponent signala DTMF, shranjenih v naslovljivih celicah ustreznih tabel diskretnih vrednosti DTMF komponente signala se izvede z branjem iz ustreznih tabel na naslove, ki ustrezajo rezultatom kumulativnega seštevanja prvega oziroma drugega zaporedja celih števil, katerih povprečna vrednost ustreza kodam kotov vzorčenja, ki ustrezajo komponentam signal DTMF. Poleg tega je lahko povprečna vrednost zaporedja celih števil, ki tvorijo rezultat kumulativnega seštevanja, aritmetična sredina teh števil.Poleg tega je lahko periodično beleženje prvega in drugega rezultata kumulativnega seštevanja s periodo, ki ustreza taktna frekvenca vzorčenja, ki je različna za različne signale DTMF. Postavljeno težavo rešuje tudi dejstvo, da je v znanem generatorju signalov DTMF, vključno s prvim akumulativnim seštevalnikom, prvim zaskočnim registrom, prvo pomnilniško napravo, drugim akumulativnim seštevalnikom , drugi zaskočni register, druga pomnilniška naprava, končni seštevalnik, digitalno-analogni pretvornik in izhod prvega akumulativnega seštevalnika je povezan z vhodom prvega zapahnega registra, izhod prvega zapahnega registra je povezan na vhod prve pomnilniške naprave, kot tudi na enega od vhodov prvega akumulativnega seštevalnika, je izhod prve pomnilniške naprave povezan z enim od vhodov končnega seštevalnika, izhod drugega akumulativnega seštevalnika je povezan z vhodom drugega zaskočnega registra, je izhod drugega zaskočnega registra povezan z vhodom druge pomnilniške naprave, kot tudi z enim od vhodov drugega akumulativnega seštevalnika, izhod druge pomnilniške naprave je povezan z drugim vhodom končnega seštevalnika, izhod končnega seštevalnika je povezan z vhodom digitalno-analognega pretvornika, katerega izhod je izhod generatorja signala DTMF, novo, po Izum je, da Generator signala DTMF dodatno vsebuje pretvornik kod signala DTMF v zaporedje celih števil, delilnik referenčne frekvence generatorja signala DTMF z nastavljivim koeficientom delitve, pretvornik kod signala DTMF v kodo koeficienta delitve in prvi izhod pretvornika signalnih kod DTMF v zaporedje celih števil je povezan z drugim vhodom prvega kumulativnega seštevalnika, drugi izhod pretvornika signalnih kod DTMF v zaporedje celih števil pa je povezan z drugim vhodom drugega kumulativnega seštevalnika, izhod glavnega frekvenčnega delilnika generatorja signala DTMF z nastavljivim koeficientom delitve je povezan s taktnim vhodom pretvornika signalne kode DTMF v zaporedju celih števil, kot tudi s taktnim vhodom prvega zapahnega registra in takta vhod drugega zaskočnega registra, izhod pretvornika signalne kode DTMF v kodo delitvenega koeficienta je povezan z vhodom nastavitve delitvenega koeficienta glavnega frekvenčnega delilnika generatorja signala DTMF, vhod glavnega frekvenčnega delilnika Generator DTMF signala z nastavljivim delitvenim koeficientom je vhod referenčne frekvence generatorja DTMF signala, vhod pretvornika signalnih kod DTMF v kodo delitvenega koeficienta je povezan z vhodom pretvornika signalnih kod DTMF v zaporedje cela števila in je vhod generatorja signala DTMF. Poleg tega je lahko pretvornik signalnih kod DTMF v zaporedje celih števil izdelan v obliki krmiljene programabilne pomnilniške naprave, katere pomnilnik je sestavljen iz, ki ustreza številu signalov DTMF, pomnilniških območij, sestavljenih iz pomnilniških celic, ki ustrezajo dolžina zaporedja celih števil, pomnilniške celice zasnovane tako, da ena polovica pomnilniške celice hrani število, ki je povezano s prvim zaporedjem celih števil, druga polovica pomnilniške celice pa hrani število, ki je povezano z drugim zaporedjem celih števil, ki so izrazi ustreznih akumulativnih seštevalnikov, krmiljenje programabilne pomnilniške naprave pa je konfigurirano za krmiljenje izbire ločeno pomnilniškega področja in ločene pomnilniške celice.Nove funkcije metode za generiranje signalov DTMF in generatorja signalov DTMF, skupaj z znanimi lastnosti teh objektov, zagotavljajo nove tehnične lastnosti objektov, kot posledica teh lastnosti pa je zagotovljen nov potreben tehnični rezultat Vzročno-posledična zveza med nizom lastnosti Predlagana metoda in doseženi tehnični rezultat so Za razkritje bistva predlagane tehnične rešitve bodo primerni naslednji izračuni: y(P)=sin(n) (1.2), kjer je y(P) diskretna vrednost sinusne funkcije;=wT =27F/Fr (1.3) - kot vzorčenja, merjen v radianih; n - serijska številka vzorca - vzorca; F t = F OSC / kd - frekvenca vzorčenja, kjer je F OSC - frekvenca nastavitve naprave; kd - nastavljivo koeficient deljenja. Potem je = 2FC D / F O S C . (1.4) Kot je dobro znano, je sinusna funkcija periodična s periodo 2. Za pretvorbo kota vzorčenja iz radianov v relativne enote in pridobitev kode kota vzorčenja razdelimo celotno periodo na m delov, kjer je m binarno celo število. Tako dobimo najmanjši diskretni del periode: = 2/m. (1.5) Koda kota vzorčenja je relativna vrednost kota vzorčenja v skladu z enim delom obdobja, in sicer K=/=2F/F t: 2P/m=Fm/F t. (1.6) Na primer, za generirane frekvence 1477 Hz in 697 Hz (ustreza kodi signala DTMF "3"), z m = 64 in frekvenco ure F t = 32768 Hz K 697 = 1,36; K l477 = 2,88. Očitno je za binarno prikaz kode kota vzorčenja K 697 =1,36 V, 136 potrebuje 8 bitov (1281+640+320+160+81+40+20+10) in K 1477 =2,88 V, 288 potrebuje 9 bitov ( 2561+1280+640+321+ 160+80+40+ 20+10) Hkrati je za kumulativno seštevanje v binarni predstavitvi potrebnih 12 bitov, kar določa zgoraj opisane pomanjkljivosti znanih rešitev. Predlagana tehnična rešitev definira na primer število 1,36 kot povprečno vrednost zaporedja celih števil 1 in 2, in sicer 1,36=(1x+2y)/(x+y), kjer sta x in y število števil 1. in 2, ki se periodično ponavljata s piko (x+y).Vrednost kode vzorčnega kota je sestavljena iz celega dela C in delnega dela, tj. na primer 1,36=1+0,36. Relativna natančnost takšne zamenjave v skladu z izrazom (1.7) = K/C (1.7) narašča s povečanjem celega dela vrednosti kode vzorčnega kota. Na primer, za generirano frekvenco 697 Hz, m = 64 in frekvenco ure F t = 32768 Hz, je napaka pri zamenjavi K 697 = 1,36 z vrednostmi številk 1 in 2 36 oziroma 32% Hkrati, če povečate vrednost m = 256, se napaka zamenjave K 697 = 5,45 z vrednostmi številk 5 in 6 zmanjša za 9 oziroma 10%. napaka generirane frekvence, na primer pri zamenjavi K 697 = 5,45 z vrednostmi številk 5 in 6 med obdobjem ponavljanja, enakim 16, 5,45=(5x+6y)/(x+y), kjer ( x + y) = 16. Pri reševanju enačbe dobimo x = 9, y = 7, tj. od šestnajstih kumulativnih operacij seštevanja se člen 5 sešteje devetkrat, člen 6 pa sedemkrat, medtem ko dejansko K 697 = 5,4375, nadomestimo to vrednost v izraz (1.6) za m = 256, F t = 32768 Hz, določimo dejanska izračunana vrednost generirane frekvence F = 696 Hz, napaka pa je ostala 0,1%.Tako kumulativno seštevanje zaporedja celih števil, katerih povprečna vrednost ustreza pripadajočim kotom vzorčenja, omogoča doseganje visokih tehničnih in ekonomskih kazalnikov z zmanjšanjem bitne zmogljivosti operacij kumulativnega seštevanja, zaradi zmožnosti spreminjanja komponent zgornjih izrazov in s tem zmanjšanja bitne zmogljivosti naprav, ki izvajajo predlagano metodo, kar vodi do zmanjšanja stroškov strojne opreme in energije pri izvajanju metode , ter zagotoviti visoko tehnološko učinkovitost predlagane metode pri uporabi v večnamenskih napravah zaradi zmanjšanih tehničnih zahtev Vzročno-posledična povezava med naborom Značilnosti predlagane tehnične rešitve in doseženim tehničnim rezultatom je pojasnjena v nadaljevanju. visok tehnični rezultat generatorja signalov DTMF je zagotovljen z uvedbo novih elementov pretvornika signalne kode DTMF v zaporedje celih števil, referenčnega frekvenčnega delilnika generatorja DTMF signala z nastavljivim koeficientom delitve, pretvornika kode signala DTMF v koeficient delitve kodo, ki zagotavlja izvajanje metode z elementi vezja z enako bitno globino, ki ne presega 8 bitov, pri čemer ni redundance elementov, potrebnih za reševanje več problemov, na primer tako za zapis rezultata kumulativnega seštevanja kot za naslovi ustrezno pomnilniško napravo, uporablja se enako število bitov, ki niso implementirani več kot 8-bitni register, ki je lahko implementiran z javno dostopnimi sredstvi v obliki enega mikrovezja ali v mikroprocesorski različici enega samega spominsko celico. Poleg tega je izvedba akumulativnih seštevalnikov možna v obliki enakih naprav, z enako bitno globino, v obliki javno dostopnih mikrovezij seštevalnikov, ki delujejo s 4-bitnimi seštevalniki. Seveda se razume, da so števila in V skladu s tem so lahko naprave, ki tvorijo zgoraj opisana zaporedja celih števil, katerih celota določa ustrezne kode kota vzorčenja, z različno bitno globino, vendar najbolj optimalno z vidika izpolnjevanja ciljev, ki jih postavlja predlagana rešitev, so 4-bitna števila.Poleg tega je visok tehnični rezultat zagotovljen tudi pri implementaciji predlagane tehnične rešitve v sklopu mikrokrmilnikov, kjer ukazi sistemskega mikrokrmilnika nujno vključujejo ukaze, ki operirajo s 4-bitnimi števili - nibbli. Predlagana tehnična rešitev generatorja signalov DTMF omogoča visoke tehnične rezultate, povezane z zmanjšanjem števila elementov vezja, poleg tega pa zagotavlja vsestranskost pri implementaciji generatorja signalov DTMF kot javno dostopne strojne opreme in kot del večnamenskih mikrokontrolerjev, ki določajo visoka gospodarnost tehnične rešitve Izum je prikazan na risbi, kjer je na sliki 1 funkcionalno prikazan generator DTMF signalov, ki izvaja metodo za generiranje DTMF signalov Generator DTMF signalov vključuje pretvornik 1 signalnih kod DTMF v zaporedje celih števil. , delilnik 2 referenčne frekvence generatorja signala DTMF z nastavljivim delilnim koeficientom, pretvornik 3 signalnih kod DTMF v kodo delitvenega koeficienta, prvi akumulacijski seštevalnik 4, prvi zaskočni register 5, prva pomnilniška naprava 6, druga pomnilniška naprava 7, drugi zaskočni register 8, drugi akumulativni seštevalnik, končni seštevalnik 10, digitalno-analogni pretvornik 11. Delovanje generatorja signalov DTMF je ponazorjeno na primeru izvedbe metode za generiranje signalov DTMF. na izrazih (1.4, 1.6) in tehničnih podatkih, zlasti o nastavitvi frekvence naprave, kjer se bo izvajala predlagana metoda, se izračunajo zaporedja celih števil, ki določajo ustrezne kode kotov vzorčenja in kode delilnih koeficientov za delilnik 2. referenčne frekvence generatorja signalov DTMF z nastavljivim koeficientom deljenja, ki so zapisane v ustreznih celicah pomnilniških območij pretvornika 1 signalnih kod DTMF v zaporedju celih števil in pretvornika 3 signalnih kod DTMF v deljenje. kode koeficientov so vnaprej izračunane tudi diskretne vrednosti ustreznih sinusnih funkcij, katerih število je določeno s številom diskretov m, in zapisane v ustrezna pomnilnika 6 in 7 pri generiranju signala DTMF pri vhoda pretvornika 1 in pretvornika 3, ki sta vhoda generatorja, za nekaj časa delovanje signala DTMF se nastavi koda generiranega signala DTMF, na izhodu pretvornika 3 se nastavi koda, ki določa koeficient delitve za delilnik 2, medtem ko bo na izhodu delilnika 2 frekvenca vzorčenja nastavljena periodično, s periodo, ki ustreza frekvenci vzorčenja, bodo iz prvega izhoda pretvornika 1 binarna števila vključena v prvo zaporedje celih števil. bo dobavljen na vhod prvega akumulativnega seštevalnika 4, iz drugega izhoda pretvornika 1 pa bodo binarna števila, vključena v drugo zaporedje celih števil, ki ustrezajo komponentam signala DTMF, dobavljena na vhod drugega akumulativnega Seštevalnik 9 se rezultati akumulativnega seštevanja dovajajo iz izhodov akumulativnih seštevalnikov na vhode ustreznih zaskočnih registrov 5 in 8, iz izhodov zaskočnih registrov 5 in 8 pa se rezultati akumulativnega seštevanja dovajajo z a obdobje, ki ustreza taktni frekvenci vzorčenja, se pošljejo na druge vhode ustreznih akumulativnih seštevalnikov 4 in 9, kot tudi na vhode ustreznih pomnilniških naprav 6 in 7, ki določajo naslove diskretnih vrednosti sinusov ustrezne komponente signala DTMF, iz izhodov naprav za shranjevanje 6 in 7, se diskretne vrednosti ustreznih komponent signala DTMF dovajajo na ustrezne vhode končnega seštevalnika 10, na izhodu katerega je diskreten se oblikuje binarni signal DTMF, ki se dovaja na vhod digitalno-analognega pretvornika 11, katerega izhod generira stopničast sinusni signal DTMF, ki ustreza vhodni kodi signala DTMF. Pretvornik 1 signalnih kod DTMF v zaporedje celih števil (slika 1) je lahko izdelan v obliki, prikazani na sliki 2, kjer pretvornik signalnih kod DTMF v zaporedje celih števil vključuje krmilno napravo 12, programabilni pomnilnik. naprava 13. Delovanje generatorja signala DTMF je ilustrirano Spodaj je konkreten primer implementacije predlagane metode v telefonskem govorno-frekvenčnem klicalniku.Prej na podlagi izrazov (1.4, 1.6) in tehničnih podatkov so zaporedja celih števil izračunane, ki določajo ustrezne kode kota vzorčenja in kode delilnega koeficienta za delilnik 2 referenčne frekvence generatorja signala DTMF z nastavljivim razmerjem delitve. Glede na to, da izvedba metode vključuje enak tip izračunov, je za ponazoritev dela na konkretnem primeru prikazana izvedba metode za generiranje DTMF signala, ki ustreza pritisku na tipko “7” kot del tonsko-impulznega klicalnika. Kot referenčna frekvenca generatorja je nastavljena kvarčna frekvenca, ki je najpogostejša v telefonski tehniki, in sicer F OSC =3579545 Hz. Pritisk na tipko “7” ustreza signalu DTMF z zgornjo (stolpci) frekvenco 1209 Hz in spodnjo (vrstice) frekvenco 852 Hz. Ker signal DTMF hkrati oddaja dve frekvenci, se delitveni koeficienti izračunajo za večjo - zgornjo frekvenco, tako da je ustrezna koda kota vzorčenja v skladu z izrazom (1.6) blizu največje vrednosti - 16, ki se izvaja v največ 4-bitni podatki. Tako je pri F OSC = 3579545 Hz, število diskretnih vrednosti sinusov m = 128, izračunane vrednosti koeficienta delitve za delilnik 2 referenčne frekvence generatorja signala DTMF z nastavljivim koeficientom delitve K D = 240 = 460, medtem ko so ustrezne kode kotov vzorčenja za zgornjo frekvenco K 1209 /852 =10,376, za spodnjo frekvenco K 852/1209 =7,312 Po izumu zamenjamo kode kotov vzorčenja z zaporedji celih števil oz. 10/11 in 7/8.10.375 = (10x+11y)/(x+y), medtem ko je dejansko K 1209 / 852 = 10.3757.312 = (7x+8y)/(x+y), medtem ko je dejansko K 952/1209 = 7,313, pri čemer je (x+y) = 16. Tako se 10,375 nadomesti s periodično ponavljajočim se zaporedjem celih števil 10 x 10-krat in 11 x 6-krat, 7,312 pa se nadomesti kot 7 x 11-krat in 8 x 5 Območje pomnilnika za signalno kodo DTMF "7" v binarni predstavitvi je naslednje:
Na ta način se izračuna šestnajst tabel, ki ustrezajo signalnim kodam DTMF, in sicer 0, 1, 2...9, *, #, A, B, C, D in se predhodno zapišejo v pomnilnik programabilne pomnilniške naprave. 13 (pretvornik znakovne kode DTMF v zaporedja celih števil) Ko na vhodu generatorja med trajanjem signala DTMF pritisnete tipko, na primer "7", se binarna koda signala DTMF "7" (0111) set, pretvornik 3 kode signala DTMF v koeficient delitve pretvori kodo signala DTMF v kodo koeficienta, ki deli kd za delilnik 2 referenčne frekvence generatorja z nastavljivim koeficientom delitve, frekvenca vzorčne ure F t =F OSC /K D bo nastavljen na izhodu delilnika 2. Signalna koda DTMF prispe tudi na naslovne vhode najpomembnejših bitov programabilne pomnilniške naprave 13 (pretvornik signalnih kod DTMF v zaporedja celih števil) in je tam prisotna med trajanjem signala DTMF. Krmilna naprava 12, izdelana na primer v obliki števca (pretvornik signalnih kod DTMF v zaporedje celih števil), pod vplivom taktnih signalov s frekvenco t ciklično spreminja svojo vrednost na vzporednih izhodih zaporedno od 0000 na 1111, ustrezno spreminjanje vrednosti naslovnih vhodov bitov nižjega reda programabilne pomnilniške naprave 13 (pretvornik signalnih kod DTMF v zaporedje celih števil), na izhodu se pojavijo 8-bitne (bajtne) številke programabilno pomnilniško napravo 13 s taktno frekvenco vzorčenja in v skladu s tabelo 1 najpomembnejši štirje bitovi (najpomembnejši grizen) tvorijo zaporedje celih števil, katerih celota, namreč aritmetična sredina, določa kodo kota vzorčenja ki ustreza zgornji (stolpci) frekvenci, in najmanj pomembni štirje biti (nizki grize) tvorijo zaporedje celih števil, katerih celota, namreč aritmetična sredina, določa kodo kota vzorčenja, ki ustreza spodnji (vrstični) frekvenci, štiri- bitni podatki, v skladu s tabelo 1, iz izhoda programabilne pomnilniške naprave 13 (pretvornik signalnih kod DTMF v zaporedje celih števil) se ločeno dovajajo na vhode ustreznih akumulativnih seštevalnikov 4 in 9, na izhodih ustrezna seštevalnika 4 in 9 spreminjata podatke s frekvenco vzorčenja od 0 do m (v tem primeru m=128), pri čemer s pomočjo hranilnih registrov 5 in 8 določata in fiksirata naslove za pomnilniške naprave 6 in 7, v katere se vnašajo binarni diskretni vrednosti ustreznih sinusnih komponent signala DTMF so zapisane, iz izhodnih pomnilniških naprav 6 in 7 se binarne diskretne vrednosti ustreznih sinusnih komponent signala DTMF dovajajo na ustrezne vhode končnega seštevalnika 10. , na izhodu katerega se oblikujejo binarne diskretne vrednosti signala DTMF, ki se nato dovajajo na vhod digitalno-analognega pretvornika 11, na izhodu katerega se ustvari stopničasti sinusoidni signal DTMF. Generator signala DTMF je mogoče izvesti na osnovi znanih tehničnih sredstev, opisanih npr. v: Uporaba integriranih vezij v elektronsko-računalniški tehnologiji. Priročnik / ur. B.N. Fayzulaeva, B.V. Tarabrina. - M .: Radio in komunikacije, 1986. V tem primeru je pretvornik 3 signalnih kod DTMF v kode koeficienta deljenja lahko izdelan na primer v obliki pomnilniškega čipa samo za branje 155PE 3 (str. 343), izvedba registrov je opisana na str. 108, izvedba akumulativnih seštevalnikov je opisana na str. 114. Inventivni način in generator signala DTMF sta prav tako implementirana na osnovi strojne opreme podjetja Microchip Inc. (8-bitni mikrokontrolerji z enim čipom tipa pic16f628), kot del pulzno-tonskega telefonskega klicalnika „Kadran - NKT - 01“, ki ga proizvaja podjetje „Kadran“ (Ukrajina, Zaporožje). Ukazni sistem in notranja struktura vozlišč mikrokrmilnika sta opisana v: Prokopenko B.Y. Mikrokontrolerji z enim čipom. Dodeka, 2000, ISBN8-87835-056-4 Opis parametrov signala DTMF je podan na primer v: Integrirana vezja: Čipi za telefonijo. številka 1. - M.: Dodeka, 1994, 256 str. - ISBN-5-87835-003-3., str. 12, 13.

ZAHTEVEK

1. Metoda za generiranje dvotonskih frekvenčnih signalov (DTMF), vključno z izbiro prve in druge kode kota vzorčenja, ki ustrezata prvi in ​​drugi frekvenci komponent signala DTMF, s kumulativnim seštevanjem ločeno prve in druge kode kota vzorčenja z oz. fiksna obdobja, ki ustrezajo taktni frekvenci vzorčenja, prvi in ​​drugi rezultat kumulativnega seštevanja, pridobivanje prve in druge diskretne vrednosti komponent signala DTMF, shranjenih v celicah, ki se nahajajo na naslovu, ustreznih tabel diskretnih vrednosti Komponente signala DTMF z branjem iz ustreznih tabel na naslovih, ki ustrezajo rezultatom kumulativnega seštevanja kod kota vzorčenja, seštevanjem prve in druge diskretne vrednosti komponent signala DTMF, da dobimo tretjo diskretno vrednost, ki ustreza vrednosti signala DTMF, označen s tem, da sta prva in druga diskretna vrednost komponent signala DTMF, shranjeni v naslovljivih celicah ustreznih tabel diskretnih vrednosti komponent signala DTMF, pridobljeni z branjem iz ustreznih tabel na naslovi , ki ustrezajo rezultatom kumulativnega seštevanja prvega oziroma drugega zaporedja celih števil, katerih povprečna vrednost ustreza kodam kotov vzorčenja, ustreznim komponentam signala DTMF.2. 3. Postopek po zahtevku 1, označen s tem, da je povprečna vrednost zaporedja celih števil, ki tvorijo rezultat kumulativnega seštevanja, aritmetična sredina teh števil. 4. Postopek po zahtevku 1, označen s tem, da se prvi in ​​drugi rezultat kumulativnega seštevanja periodično beležita s periodo, ki ustreza taktni frekvenci vzorčenja, ki je različna za različne signale DTMF. Generator signala DTMF, vključno s prvim akumulativnim seštevalnikom, prvim zaskočnim registrom, prvo pomnilniško napravo, drugim akumulativnim seštevalnikom, drugim zaskočnim registrom, drugo pomnilniško napravo, končnim seštevalnikom, digitalno-analognim pretvornikom, pri čemer izhod prvega akumulativnega seštevalnika je povezan z vhodom prvega zaskočnega registra, izhod prvega zaskočnega registra je povezan z vhodom prve pomnilniške naprave, pa tudi z enim od vhodov prvega akumulativnega seštevalnika, izhod prve pomnilniške naprave je povezan z enim od vhodov končnega seštevalnika, izhod drugega akumulativnega seštevalnika je povezan z vhodom drugega zaskočnega registra, izhod drugega zaskočnega registra je povezan z vhodom druge pomnilniške naprave, kot tudi z enim od vhodov drugega akumulativnega seštevalnika, je izhod druge pomnilniške naprave povezan z drugim vhodom končnega seštevalnika, izhod končnega seštevalnika je povezan z vhodom digitalnega analogno-analogni pretvornik, katerega izhod je izhod generatorja signalov DTMF, označen s tem, da generator signalov DTMF dodatno vsebuje pretvornik kod signalov DTMF v zaporedju celih števil, delilnik referenčne frekvence generatorja signalov DTMF. z nastavljivim delitvenim koeficientom, pretvornik signalnih kod DTMF v kodo delitvenega koeficienta, pri čemer je prvi izhod pretvornika signalnih kod DTMF v nizu celih števil povezan z drugim vhodom prvega zbiralnega seštevalnika, drugi izhod pretvornik kod signalov DTMF v zaporedju celih števil je povezan z drugim vhodom drugega akumulacijskega seštevalnika, izhod nastavljenega frekvenčnega delilnika generatorja signalov DTMF z nastavljivim koeficientom delitve pa je povezan z taktnim vhodom pretvornika kod DTMF signale v zaporedju celih števil, kot tudi na taktni vhod prvega zaskočnega registra in taktni vhod drugega zadrževalnega registra, je izhod pretvornika signalne kode DTMF v kodo deljenja koeficienta povezan z vhodom nastavitev koeficient delitve referenčnega frekvenčnega delilnika generatorja signala DTMF, vhod delilnika referenčne frekvence generatorja signala DTMF z nastavljivim koeficientom delitve je vhod referenčne frekvence generatorja signala DTMF, vhod pretvornika kod signala DTMF v koda deljenja koeficienta je povezana z vhodom pretvornika kod signala DTMF v zaporedje celih števil in je vhod generatorja signala DTMF. 5. Generator signalov DTMF po zahtevku 4, označen s tem, da je kodni pretvornik signalov DTMF v zaporedje celih števil izdelan v obliki krmiljene programabilne pomnilniške naprave, katere pomnilnik je sestavljen iz ustreznega števila signalov DTMF. , pomnilniška področja, sestavljena iz celic, ki ustrezajo dolžini zaporedja celih števil pomnilnika, oblikovana tako, da je v eni polovici pomnilniške celice shranjeno število, ki se nanaša na prvo zaporedje celih števil, v drugi polovici pomnilniške celice pa število je shranjeno v skladu z drugim zaporedjem celih števil, ki so izrazi ustreznih akumulativnih seštevalnikov, krmiljenje programabilne pomnilniške naprave pa se izvaja z možnostjo ločenega nadzora izbire pomnilniškega področja in ločene pomnilniške celice.

Tonsko izbiranje (Dual-tone multi-frequency signaling, DTMF) so razvili v Bell Labs v 50. letih prejšnjega stoletja za takrat revolucionarni telefon na tipko. Za predstavitev in prenos digitalnih podatkov v tonskem načinu se uporablja par frekvenc (tonov) frekvenčnega območja govora. Sistem definira dve skupini štirih frekvenc, informacije pa se kodirajo s sočasnim oddajanjem dveh frekvenc, po eno iz vsake skupine. To daje skupno šestnajst kombinacij, ki predstavljajo šestnajst različnih številk, simbolov in črk. Kodiranje DTMF se zdaj uporablja v številnih komunikacijskih in nadzornih aplikacijah, kot na primer dokazuje priporočilo Mednarodne zveze za telekomunikacije (ITU) Q.23.

Ta članek opisuje vezje generatorja tonov DTMF, ki reproducira vseh osem frekvenc in ustvari nastali dvotonski izhodni signal. Zadevni sistem je bil zgrajen okoli čipa Silego GreenPAK™ SLG46620V in operacijskih ojačevalnikov Silego SLG88104V. Nastali proizvedeni signal je vsota dveh frekvenc, določenih z vrstico in stolpcem telefonske tipkovnice.

Predlagano vezje uporablja štiri vhode za izbiro kombinacije frekvenc, ki naj se ustvari. Vezje ima tudi vhod za omogočanje, ki sproži generiranje in določi dolžino časa prenosa signala. Izhodna frekvenca generatorja je v skladu s standardom ITU za DTMF.

toni DTMF

Standard DTMF določa kodiranje številk 0-9, črk A, B, C in D ter znakov * in # kot kombinacijo dveh frekvenc. Te frekvence so razdeljene v dve skupini: visokofrekvenčno skupino in nizkofrekvenčno skupino. Tabela 1 prikazuje frekvence, skupine in ustrezne predstavitve simbolov.

Tabela 1. DTMF tonsko kodiranje

Skupina visokih tonov

Nizka skupina

Frekvence so bile izbrane, da bi se izognili več harmonikom. Poleg tega njihova vsota ali razlika ne povzroči različne frekvence DTMF. Na ta način se izognemo harmoničnemu ali modulacijskemu popačenju.

Standard Q.23 določa, da mora biti napaka vsake oddane frekvence znotraj ±1,8 % nazivne vrednosti, skupno popačenje (zaradi harmonikov ali modulacije) pa mora biti 20 dB pod osnovnimi frekvencami.

Nastali signal, opisan zgoraj, je mogoče opisati kot:

s(t) = Acos(2πfhight)+ Acos(2πflowt),

kjer sta fhigh in flow ustrezni frekvenci iz skupin visokih in nizkih frekvenc.

Slika 1 prikazuje nastali signal za števko "1". Slika 2 prikazuje frekvenčni spekter, ki ustreza temu signalu.

riž. 1. Ton DTMF

riž. 2. Tonski spekter DTMF

Trajanje tonov DTMF se lahko razlikuje glede na določeno aplikacijo, ki uporablja kodiranje tonov. Za najpogostejše aplikacije so vrednosti trajanja običajno med ročnim in samodejnim izbiranjem. Tabela 2 prikazuje povzetek tipičnega časa za obe vrsti zaposlovanja.

Tabela 2. Trajanje signalov tonskega izbiranja

Vrsta številčnice

Skupina visokih tonov

Skupina visokih tonov

Ročno izbiranje

Samodejno klicanje

Za večjo prilagodljivost je generator DTMF, ki je na voljo v tem priročniku, opremljen z vhodom za omogočanje, ki se uporablja za začetek generiranja signala in določanje njegovega trajanja. V tem primeru je trajanje signala enako trajanju impulza na omogočitvenem vhodu.

Analogni del vezja generatorja DTMF

Priporočilo ITU Q.23 opredeljuje signale DTMF kot analogne signale, ki jih ustvarjata dva sinusna vala. V predlaganem generatorskem vezju DTMF IC Silego GreenPAK SLG46620V generira pravokotne signale z želenimi frekvencami DTMF. Za pridobitev sinusnih signalov zahtevane frekvence in oblikovanje nastalega signala (vsota dveh sinusnih valov) so potrebni analogni filtri in seštevalnik. Zato smo se v tem projektu odločili za uporabo filtrov in kombinatorja na osnovi operacijskih ojačevalnikov SLG88104V.

Slika 3 prikazuje strukturo predlaganega analognega dela naprave.

riž. 3. Analogno procesno vezje za sprejem signala DTMF

Analogni filtri se uporabljajo za pridobivanje sinusnih signalov iz pravokotnih impulzov. Po opravljenem filtriranju se oba signala seštejeta in generira se želeni izhodni dvotonski signal DTMF.

Slika 4 prikazuje rezultat Fourierove transformacije, uporabljene za pridobitev spektra pravokotnega signala.

riž. 4. Spekter pravokotnega signala

Kot lahko vidite, kvadratni val vsebuje samo lihe harmonike. Če takšen signal z amplitudo A predstavimo v obliki Fourierove vrste, bo imel naslednjo obliko:

Analiza tega izraza nam omogoča, da sklepamo, da če imajo analogni filtri zadostno dušenje za harmonike, potem je povsem mogoče pridobiti sinusne signale s frekvenco, ki je enaka frekvenci prvotnega pravokotnega signala.

Ob upoštevanju tolerance ravni motenj, opredeljene v standardu Q.23, je treba zagotoviti, da so vsi harmoniki oslabljeni za 20 dB ali več. Poleg tega je treba katero koli frekvenco iz nizkoprepustne skupine kombinirati s katero koli frekvenco iz visokoprepustne skupine. Ob upoštevanju teh zahtev sta bila razvita dva filtra, po en za vsako skupino.

Oba filtra sta bila nizkopasovna Butterworthova filtra. Slabljenje Butterworthovega filtra reda n se lahko izračuna kot:

A(f)[dB] = 10 log(A(f) 2) = 10log(1+(f/fc) 2n),

kjer je fc mejna frekvenca filtra, n je vrstni red filtra.

Razlika v dušenju med najnižjo in najvišjo frekvenco vsake skupine ne sme biti večja od 3 dB, torej:

A(fVIŠJE)[dB] - A(fNIŽJE)[dB] > 3 dB.

Podane absolutne vrednosti:

A(fVIŠJE) 2 / A(fNIŽJE) 2 > 2.

Poleg tega, kot smo že povedali, mora biti harmonično dušenje 20 dB ali več. V tem primeru bo najslabši primer najnižja frekvenca v skupini, ker je njen 3. harmonik najnižja frekvenca in je najbližje mejni frekvenci filtra. Glede na to, da je 3. harmonik 3-krat manjši od osnovnega, mora filter izpolnjevati pogoj (absolutne vrednosti):

A(3fLOWER) 2 / A(fLOWER) 2 > 10/3.

Če se te enačbe uporabijo za obe skupini, morajo biti uporabljeni filtri drugega reda. To pomeni, da bodo imeli vsak po dva upora in dva kondenzatorja, če bodo izvedeni z operacijskimi ojačevalci. Če bi uporabili filtre tretjega reda, bi bila občutljivost na tolerance komponent manjša. Izbrane mejne frekvence filtra so 977 Hz za nizkoprepustno skupino in 1695 Hz za visokoprepustno skupino. Pri teh vrednostih so razlike v nivojih signala v frekvenčnih skupinah skladne z zgornjimi zahtevami, občutljivost na spremembe mejne frekvence zaradi toleranc komponent pa je minimalna.

Shematski diagrami filtrov, implementiranih z uporabo SLG88104V, so predstavljeni na sliki 5. Ocene prvega para R-C so izbrane tako, da omejujejo izhodni tok čipa SLG46620V. Druga povezava filtra določa dobiček, ki je 0,2. Amplituda pravokotnih signalov nastavi delovno točko operacijskega ojačevalnika na 2,5 V. Neželene napetosti blokirajo kondenzatorji izhodnega filtra.

riž. 5. Shematski diagrami izhodnih filtrov

Na izhodu se signali filtra seštejejo, nastali signal pa je vsota harmonikov, izbranih iz skupine nizkih in visokih frekvenc. Za kompenzacijo slabljenja filtra je mogoče amplitudo izhodnega signala prilagoditi z uporabo dveh uporov R9 in R10. Slika 6 prikazuje vezje seštevalnika. Slika 7 prikazuje celoten analogni del vezja.

riž. 6. Shematski diagram seštevalnika

riž. 7. Analogni del vezja

Digitalni del vezja generatorja tonov DTMF

Digitalni del vezja generatorja tonov DTMF vključuje cel niz generatorjev kvadratnih valov - enega za vsako frekvenco DTMF. Ker je za izdelavo teh generatorjev potrebnih osem števcev, je bil za njihovo izvedbo izbran čip GreenPAK SLG46620V. Na izhodih digitalnega vezja se generirata dva pravokotna signala, po en za vsako frekvenčno skupino.

Signali kvadratnega valovanja se generirajo z uporabo števcev in D flip-flopov in imajo delovni cikel 50 %. Zaradi tega je preklopna frekvenca števca dvakrat večja od zahtevane frekvence DTMF, flip-flop DFF pa razdeli izhodni signal na dva dela.

Vir takta za števce je vgrajen 2 MHz RC oscilator, katerega frekvenca je nadalje deljena s 4 ali 12. Delilnik je izbran ob upoštevanju bitne zmogljivosti in največje vrednosti posameznega števca, potrebne za pridobitev specifičnega pogostost.

Za generiranje visokih frekvenc je potrebnih manj vzorcev, zato se za njihovo generiranje uporabljajo 8-bitni števci, ki jih meri notranji oscilator RC, katerega signal je deljen s 4. Iz istega razloga se nižje frekvence izvajajo s 14-bitnimi števci.

SLG46620V ima samo tri standardne 14-bitne števce, zato je bila ena od nižjih frekvenc implementirana z 8-bitnim števcem CNT8. Da bi bilo število vzorcev v območju od 0 do 255, je bilo za taktiranje tega CNT8 potrebno uporabiti signal RC oscilatorja, deljen z 12. Za to vezje je frekvenca z največjim številom vzorcev, ki je izbrana najnižja frekvenca. To nam je omogočilo zmanjšanje napake.

Tabela 3 prikazuje parametre vsakega kvadratnega vala.

Tabela 3. Parametri generatorjev kvadratnih impulzov

Ura

Frekvenčna napaka [%]

Nizka skupina

Skupina visokih tonov

Kot je razvidno iz tabele, imajo vse frekvence napako manjšo od 1,8 %, torej ustrezajo standardu DTMF. Te izračunane karakteristike, ki temeljijo na idealni frekvenci RC oscilatorja, je mogoče prilagoditi z merjenjem izhodne frekvence RC oscilatorja.

Čeprav v predlaganem vezju vsi generatorji delujejo vzporedno, bo signal samo enega generatorja iz vsake skupine poslan na izhod mikrovezja. Izbiro določenih signalov določi uporabnik. To se izvede z uporabo štirih vhodov GPIO (dva bita za vsako skupino) s tabelo resnic, prikazano v tabeli 4.

Tabela 4. Tabela za izbiro frekvenc iz skupine nizkih frekvenc

Nizka skupina

Tabela 5. Tabela za izbiro frekvence iz visokofrekvenčne skupine

Skupina visokih tonov

Slika 8 prikazuje logično vezje generatorja pravokotnih valov 852 Hz. Ta vzorec se ponovi za vsako frekvenco z ustreznimi nastavitvami števca in konfiguracijo LUT.

riž. 8. Generator pravokotnih impulzov

Števec ustvari izhodno frekvenco, določeno z njegovimi nastavitvami. Ta frekvenca je enaka dvakratni frekvenci ustreznega tona DTMF. Konfiguracijski parametri merilnika so prikazani na sliki 9.

riž. 9. Primer nastavitve pravokotnega števca generatorja impulzov

Izhodni signal števca je priključen na taktni vhod flip-flopa D-Flip Flop. Ker je izhod DFF konfiguriran kot invertiran, se D-flip-flop pretvori v T-flip-flop, če povežete DFF-izhod z njegovim vhodom. Konfiguracijske parametre DFF lahko vidite na sliki 10.

riž. 10. Primer nastavitve sprožilca generatorja pravokotnih impulzov

Signal iz izhoda DFF se napaja na vhod tabele resnic LUT. LUT se uporabljajo za izbiro enega signala za vsako specifično kombinacijo R1-R0. Primer konfiguracije LUT je prikazan na sliki 11. V tem primeru, če R1 prejme 1 in R0 prejme 0, se vhodni signal pošlje na izhod. V drugih primerih izhod vsebuje "0".

riž. 11. Primer postavitve resničnostne tabele generatorja kvadratnih impulzov

Kot je omenjeno zgoraj, ima predlagano vezje vhod za omogočanje Omogoči. Če je na vhodu dovoljenja za omogočanje logična enota "1", se generirani pravokotni signali dovajajo na par izhodov mikrovezja. Trajanje prenosa je enako trajanju impulza na omogočitvenem vhodu. Za izvedbo te funkcije je bilo potrebnih več LUT.

Visokopasovna skupina uporablja en 4-bitni LUT in en 2-bitni LUT, kot je prikazano na sliki 12.

riž. 12. Izhodno vezje skupine visokih tonov

4-bitni LUT1 je konfiguriran kot vrata ALI, tako da odda logično 1, če je 1 prisotna na katerem koli od njegovih vhodov. Resnične tabele C1/C0 omogočajo izbiro samo enega od oscilatorjev, tako da 4-bitni LUT1 določa, kateri signal je izhod. Izhod tega LUT je povezan z 2-bitnim LUT4, ki oddaja signal le, če je vhod za omogočanje logična "1". Sliki 13 in 14 prikazujeta konfiguraciji 4-bitnega LUT1 in 2-bitnega LUT4.

riž. 13. 4-bitna konfiguracija LUT1

riž. 14. 2-bitna konfiguracija LUT4

Ker ni bilo več LUT 4-bitnih tabel resnic, sta bila za nizkoprepustno skupino uporabljena dva 3-bitna LUT.

riž. 15. Nizkoprepustno skupinsko izhodno vezje

Celotno notranje vezje GreenPAK SLG46620V je prikazano na sliki 16. Slika 17 prikazuje končni diagram vezja generatorja DTMF.

riž. 16. Blokovna shema generatorja tonov DTMF

riž. 17. Shematski diagram generatorja tonov DTMF

Testiranje vezja generatorja DTMF

Na prvi stopnji testiranja predlaganega generatorja DTMF je bilo odločeno, da se frekvence vseh generiranih pravokotnih signalov preverijo z osciloskopom. Sliki 18 in 19 kot primer prikazujeta izhodne kvadratne valove za 852 Hz in 1477 Hz.

riž. 18. Kvadratni val 852 Hz

riž. 19. Kvadratni val 1477 Hz

Ko so bile preverjene frekvence vseh pravokotnih signalov, se je začelo testiranje analognega dela vezja. Pregledani so bili izhodni signali za vse kombinacije nizkih in visokih frekvenc. Kot primer slika 20 prikazuje vsoto signalov 770 Hz in 1209 Hz, slika 21 pa vsoto signalov 941 Hz in 1633 Hz.

riž. 20. DTMF ton 770 Hz in 1209 Hz

riž. 21. DTMF ton 941 Hz in 1633 Hz

Zaključek

V tem članku je bilo predlagano vezje za generator tonov DTMF, ki temelji na čipu Silego GreenPAK SLG46620V in operacijskih ojačevalnikih Silego SLG88104V. Generator omogoča uporabniku, da prek štirih vhodov izbere kombinacije želenih frekvenc in krmili vhod za omogočanje, ki določa trajanje izhodnih signalov.

Značilnosti čipa SLG46620V:

  • Vrsta: programabilni mešani signal IC;
  • Analogni bloki: 8-bitni ADC, dva DAC, šest primerjalnikov, dva filtra, ION, štirje integrirani oscilatorji;
  • Digitalni bloki: do 18 V/I vrat, povezovalna matrika in kombinatorična logika, programabilna zakasnitvena vezja, programabilni funkcijski generator, šest 8-bitnih števcev, trije 14-bitni števci, trije PWM oscilatorji/komparatorji;
  • Komunikacijski vmesnik: SPI;
  • Območje napajalne napetosti: 1,8…5 V;
  • Območje delovne temperature: -40…85 °C;
  • Različica paketa: 2 x 3 x 0,55 mm 20-polni STQFN.

Značilne lastnosti

  • Ustvarjanje sinusnih valov z modulacijo širine impulza (PWM)
  • Združevanje različnih sinusnih signalov v en DTMF signal
  • Izvorne kode v jezikih asembler in C
  • Zasnovan za delo s STK500
  • Velikost programske kode 260 bajtov / konstantna velikost tabele 128 bajtov
  • Uporaba metode pretvorbe tabele

Uvod

Ta dokument opisuje tehniko za ustvarjanje signalov DTMF (dvotonski večfrekvenčni signali) z uporabo katerega koli mikrokrmilnika AVR, ki vsebuje enoto za modulacijo širine impulza (PWM) in statični RAM. Ti signali se pogosto uporabljajo v telefoniji, kjer se reproducirajo, ko pritisnete klicne tipke na telefonskem aparatu. Za pravilno generiranje signala DTMF morata biti skupaj postavljeni dve frekvenci: nizka frekvenca (fb) in visoka frekvenca (fa). Tabela 1 prikazuje, kako se različne frekvence mešajo za ustvarjanje tonov DTMF, ko pritisnete različne tipke.


Slika 1. Vezje generatorja signala DTMF

Tabela 1. Matrika za ustvarjanje tonov

fb/fa 1209 Hz 1336 Hz 1477 Hz 1633 Hz
697 Hz 1 2 3 A
770 Hz 4 5 6 B
852 Hz 7 8 9 C
941 Hz * 0 # D

Vrstice tabele 1 prikazujejo vrednosti nizke frekvence, stolpci pa vrednosti visoke frekvence. Na primer, matrika kaže, da ko pritisnete gumb "5", se frekvenci fb = 770 Hz in fa = 1336 Hz mešata. Kot rezultat seštevanja dveh sinusnih signalov različnih frekvenc nastane signal DTMF

kjer mora razmerje amplitud K=A b /A a izvirnih signalov izpolnjevati pogoj

Princip delovanja

Poleg splošnih informacij o uporabi modulacije širine impulza bo spodaj prikazano, kako modulacija širine impulza omogoča ustvarjanje sinusnih signalov. Naslednji odstavek opisuje, kako uporabiti osnovno preklopno frekvenco za pridobitev različnih frekvenc. Po pregledu teoretičnih osnov bo podan opis samega generatorja signala DTMF. Generiranje sinusnih valov

Odvisno od razmerja trajanja visokih napetostnih nivojev VH in nizkih VL se spreminja povprečna vrednost na izhodu PWM. Če je razmerje med trajanjem obeh nivojev konstantno, bo posledično ustvarjen konstanten nivo napetosti VAV. Slika 2 prikazuje impulzno širinsko moduliran signal.


Slika 2. Generacija ravni enosmerne napetosti

Raven napetosti je določena z izrazom:

(3)

Sinusoidni signal je mogoče ustvariti pod pogojem, da se povprečna vrednost napetosti, ki jo ustvari modulacija širine impulza, spremeni vsak cikel PWM. Razmerje med visokimi in nizkimi nivoji mora biti nastavljeno v skladu z nivojem napetosti sinusnega vala v ustreznem času. Slika 3 prikazuje ta proces. Izvorni podatki za PWM se izračunajo za vsako od njegovih obdobij in zabeležijo v pretvorbeni tabeli (TC).

Slika 3 ponazarja tudi razmerje med frekvenco osnovnega sinusnega vala in številom vzorcev. Večje kot je število vzorcev (Nc), večja je natančnost modeliranja dobljenega signala:

(4)

Frekvenca PWM je odvisna od ločljivosti PWM. Pri 8-bitni ločljivosti je končna vrednost (zgornji del števila) časovnika 0xFF (255). Ker Časovnik šteje naprej in nazaj, potem je treba to vrednost podvojiti. Zato lahko frekvenco PWM izračunamo tako, da frekvenco ure časovnika f CK delimo s 510. Tako bo pri frekvenci ure časovnika 8 MHz končna frekvenca PWM 15,6 kHz.


Slika 3. Ustvarjanje sinusnega vala s pomočjo PWM

Spreminjanje frekvence sinusnega vala

Predpostavimo, da se sinusni vzorci berejo iz iskalne tabele ne zaporedno, ampak enega za drugim. V tem primeru bo pri enaki frekvenci vzorčenja ustvarjen signal z dvojno frekvenco (glej sliko 4).


Slika 4. Podvojitev nastale frekvence (XSW = 2)

Po analogiji, če ne berete vsake druge vrednosti, ampak vsako tretjo, četrto, peto (oziroma širina koraka je 3, 4, 5 ...) itd. mogoče je ustvariti Nc frekvence v območju . Upoštevajte, da pri visokih frekvencah nastala valovna oblika ne bo sinusna. Širino koraka po pretvorbeni tabeli označimo z X SW, kjer

(5)

Izračun trenutnega položaja v TP za naslednjo periodo PWM (ko se časovnik prekorači) izvedemo z izrazom (6). Nova vrednost v položaju X LUT je odvisna od njenega prejšnjega stanja v položaju X" LUT z dodatkom širine koraka X SW

(6)

Dodajanje različnih frekvenc za pridobitev signala DTMF

Signal DTMF lahko ustvarite z uporabo izrazov (1) in (2). Zaradi enostavnosti aritmetičnih operacij je vrednost koeficienta K enaka 0,75, da se aritmetična operacija nadomesti z logičnimi premiki. Ob upoštevanju izraza (6) lahko trenutno vrednost za krmiljenje PWM izračunamo z izrazom:

in ob upoštevanju, da je X LUTa =X" LUTa + X SWa,X LUTb =X" LUTb + X SWb, končno zapišemo

Izvedba generatorja DTMF

Ta dodatek preučuje zgradbo generatorja tonov DTMF, ki uporablja 8-bitni izhod PWM (OC1A) in tabelo s 128 vzorci sinusne funkcije (Nc), od katerih je vsak določen s 7 biti (n). Naslednji izrazi prikazujejo to odvisnost in prikazujejo tudi, kako izračunati vnose v iskalni tabeli:

(9)

Prednost uporabe 7 bitov je, da je vsota vrednosti signala visoke in nizke frekvence velika en bajt. Za podporo celotnega niza tonov DTMF je treba izračunati 8 vrednosti za vsako frekvenco DTMF iz tabele 1 in jih vnesti v iskalno tabelo.

Za večjo natančnost je bila implementirana naslednja rešitev: vrednosti, izračunane z izrazom 5, zahtevajo samo 5 bajtov. Za uporabo vseh 8 bajtov, kar bo zmanjšalo napake pri zaokroževanju, se ta vrednost pomnoži z 8. Kazalec na iskalno tabelo je zapisan na enak način. Toda v tem primeru sta potrebna dva bajta za shranjevanje 8-kratne vrednosti. To pomeni, da je treba izvesti 3 desne premike in operacijo radiksa Nc modula (logično množenje z Nc-1), preden te bajte uporabimo kot kazalec na vrednosti sinusnega vala v


Slika 5. Diagram modula za povezavo s STK500

Signal PWM se ustvari na nožici OC1A (PD5). Dodaten izhodni filter bo pomagal narediti signal bolj združljiv s sinusno valovno obliko. Pri zniževanju frekvence PWM bo morda treba uporabiti filter s strmejšim frekvenčnim odzivom, da dobite dober rezultat.

Povezava tipkovnice je prikazana na sliki 1. Delovanje tipkovnice mora biti organizirano tako, da je možno določiti pritisnjeno tipko. To je mogoče storiti z naslednjim algoritmom:

  1. Določanje niza pritisnjene tipke
    • konfigurirajte prenosni računalnik nižjega reda vrat B kot izhod in nastavite dnevnik. "0"
    • konfigurirajte visoko tetrado vrat B kot vhod s povezavo vlečnih uporov
    • vrstica s pritisnjenim gumbom je definirana kot cifra najvišje tetrade z logom. "0"
  2. Definiranje stolpca pritisnjene tipke
    • konfigurirajte visoki prenosni računalnik vrat B kot izhod in nastavite dnevnik. "0"
    • konfigurirajte tetrad nizkega reda vrat B kot vhod s povezovanjem povlečnih uporov
    • stolpec s pritisnjenim gumbom je definiran kot števka nizke tetrade z logom. "0"

Opomba: V STK200 so upori zaporedno povezani med zatiči konektorja PORTB in zatiči mikrokrmilnika BP5, PB6 in PB7 (glejte diagram STK200). To bo povzročilo težave, če je tipkovnica priključena na priključek PORTB.

Slika 6 prikazuje delovanje podprograma za ugotavljanje pritisnjene tipke. Odvisno od pritisnjene tipke se določi trajanje intervala. Prekinitvena rutina uporablja to vrednost za izračun nastavitev PWM za dva tonska sinusna vala DTM. Postopek obravnavanja prekinitve je prikazan na slikah 7 in 8.

Ta rutina izračuna vrednost za primerjavo z izhodom časovnika za naslednje obdobje PWM. Prekinitvena rutina najprej izračuna položaj naslednje vzorčne vrednosti v iskalni tabeli in prebere tam shranjeno vrednost.

Položaj vzorca v iskalni tabeli je določen s širino impulza, dejansko širino impulza pa generirana frekvenca.

Končna vrednost, ki se zapiše v primerjalni register časovnika, se določi s formulo (7), ki upošteva vzorčne vrednosti obeh frekvenc DTMF.


Slika 6. Blokovni diagram glavnega programa


Slika 7. Blokovni diagram postopka obdelave prekinitve prekoračitve časovnika


Slika 8. Diagram poteka postopka branja vzorca "GetSample".

Objava: www.cxem.net

Oglejte si druge članke razdelek.