Dtmf signālu ģenerēšanas metode un dtmf signālu ģenerators. DTMF signālu ģenerēšana un atpazīšana DTMF toņu signālu ģeneratora mikroshēma

Pirmā daļa šis piemērs Lietojumprogramma apraksta DTMF signālu ģenerēšanu, izmantojot MSP430 mikrokontrolleri. Ir sniegts svarīgāko šajā gadījumā izmantoto specifikāciju skaidrojums, kā arī teorētiskais un matemātiskais pamatojums sinusoidālo viļņu ģenerēšanai, izmantojot kvadrātveida viļņus, izmantojot atbilstošus analogos filtrus. Piemērā ir iekļautas arī pārbaudītas demonstrācijas programmas kvadrātviļņu signālu ģenerēšanai, pamatojoties uz dažādām MSP430 mikrokontrolleru taimera konfigurācijām. Pēdējā daļa paredz ķēdes shēma, kas ļauj ģenerēt DTMF signālus no kvadrātviļņu signāliem.

2 DTMF signāla specifikācija

Saīsinājums DTMF apzīmē “Dual Tone Multi Frequency” un ir metode ciparu attēlošanai dažādās frekvencēs, lai tos pārraidītu pa analogajām sakaru līnijām, piem. telefona līnija. Izstrādājot standartu, tika ņemts vērā nosacījums - visām frekvencēm jābūt “balss” diapazonā, kas ļāva samazināt prasības pārraides kanālam. Tālruņu tīkli izmanto DTMF signālus numura sastādīšanai un citai informācijai. Neskatoties uz to, ka joprojām plaši tiek izmantota impulsa numura sastādīšanas metode, kas ir standarts, piemēram, Vācijā, zvanīšanas laiks ievērojami palielinās, izraisot neproduktīvu sakaru līniju slodzi. Turklāt daudzi Papildu pakalpojumi Sakari ir iespējami, tikai izmantojot tonālo numuru sastādīšanu. Kodējot, izmantojot DTMF metodi, skaitļi 0-9 un burti A-D, */E un #/F apzīmē divu frekvenču kombinācijas:

Biežums 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

Šajā sistēmā kolonna attēlo frekvenci no “augšējās” frekvenču grupas (Hi-Group: 1209-1633 Hz), un rinda attēlo frekvenci no “zemākās” frekvenču grupas (Lo-Group: 697-941 Hz). . Tonālās frekvences tiek izvēlētas, lai novērstu harmoniku ietekmi. Frekvences nav viena otras reizes, un DTMF frekvenci nevar iegūt, saskaitot vai atņemot citas frekvences. Lai ģenerētu zvanītājprogrammu Deutsche Telekom tīklā, ir nepieciešamas šādas specifikācijas (ņemtas no Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Federālās pasta un telekomunikāciju ministrijas oficiālā specifikācija):

3. Ģenerējiet DTMF signālus

Kā aprakstīts iepriekš, DTMF signāli ir analogi un sastāv no diviem neatkarīgiem sinusoidālajiem viļņiem. Tādējādi šādus signālus nav iespējams ģenerēt tikai digitāli. Digitālie signāli ir jāpārveido, izmantojot ADC un/vai analogos filtrus vajadzīgajā sinusoidālā viļņa formā.

3.1 Ģenerēšana, izmantojot kvadrātveida viļņus

Ja DTMF signālu ģenerēšanai tiek izmantoti kvadrātviļņu signāli, programmatūra un aparatūra minimāls. Jebkuru nepārtrauktu signālu ar periodu T var attēlot ar Furjē sēriju, kas sastāv no bezgalīgas sinusa un kosinusa viļņu summas šādi:

Kur a0/2 ir signāla nemainīgā sastāvdaļa. Summas elements ar zemāko leņķisko frekvenci (w0) tiek saukts par galveno (fundamentālo) harmoniku, pārējie ir virstoņi vai augstākās harmonikas.

Vienkāršākais nepārtrauktais signāls, kas tiek realizēts, izmantojot mikrokontrolleri, ir kvadrātveida vilnis, kura Furjē sērijai ir šāda forma:

Katras frekvences komponentes devumu kopējā signālā vislabāk parāda amplitūdas spektrs (skat. 2. att.):


Rīsi. 2: kvadrātviļņu signāla amplitūdas spektrs

Izmantojot analogo filtru, līdzstrāvas komponents un augstākās harmonikas tiek efektīvi nomāktas, savukārt izejā mums ir sinusoidāls signāls ar frekvenci, kas vienāda ar sākotnējā kvadrātveida viļņa frekvenci.

3.2 Programmatūra lai radītu līkumu

Meklēšanas programmai jāatbilst šādām prasībām:

  • Spēt sintezēt divus neatkarīgus taisnstūra signālus.
  • Lai atdalītu signālus, ir nepieciešami divi izejas kontakti, lai ģenerētu signālus no “augšējā” (Hi-Group) un “apakšējā” (Lo-Group) frekvenču diapazoni attiecīgi.
  • Programmatūrai vajadzētu būt iespējai iestatīt nepieciešamo signāla ilgumu diapazonā no aptuveni 65 ms līdz 100 ms.

MSP430 sērijas mikrokontrolleriem ir dažādi iebūvēti taimeri, kas spēj ģenerēt kvadrātviļņu signālus. '31x/'32x saime izmanto 8 bitu taimeri un taimera portu, lai ģenerētu abus kvadrātviļņu signālus. Šī programma pārbaudīts ar MCLK frekvenci, kas vienāda ar 1,048 MHz. Timer_A ‘33x saimē var neatkarīgi ģenerēt abus nepieciešamos signālus. Otrā programma izmanto šo taimeri, lai ģenerētu kvadrātveida viļņus un darbojas ar jebkurām MCLK frekvencēm. Abas programmas tiks detalizēti aplūkotas turpmāk.

3.2.1. Kvadrātveida viļņu ģenerēšana, izmantojot 8 bitu taimeri un taimera portu

Attēlā 3 ir DTMF signālu ģenerēšanas inicializācijas procedūras blokshēma. Lai sintezētu divas frekvences, tiek izmantots taimera ports un 8 bitu taimera skaitītāji. Katrs no tiem ir programmējams skaitītāju reģistrs, kas nepieciešams nepieciešamo frekvenču precīzai sintēzei. Ja taimera porta skaitītāji tiek kaskādēti vienā 16 bitu taimeri un tiek iestatīti sistēmas frekvencē MCLK, tad augsta diapazona frekvences var ģenerēt ar augstu precizitāti. Kad notiek pārtraukums, tiek pārslēgta atbilstošā izeja un tiek atiestatīti abi 8 bitu skaitītāja reģistri. Ielādētās vērtības tiek saglabātas divos mainīgajos RAM, lai saglabātu iekšējos reģistrus citiem uzdevumiem.

Zemās frekvences ģenerē 8 bitu taimeris. Tā kā šī taimera skaitītāja reģistrs ir 8 biti plats, tikai katrs trešais pārtraukums izraisa līmeņa izmaiņas vajadzīgajā izvades tapā, ļaujot ģenerēt tādu pašu frekvences skaitītāju.

Divas taimera izejas - pieslēgvietas tiek izmantotas divu dažādu frekvenču meanderu veidošanai.

Rīsi. 3 Inicializācijas procedūras blokshēma DTMF signālu ģenerēšanai

Inicializācijas procedūra tiek veikta tikai vienu reizi. Pēc tās pabeigšanas pārraidītās rakstzīmes heksadecimālā vērtība tiek nolasīta no globālā mainīgā RAM. Kad no abām tabulām ir ģenerētas divas frekvences, kas veido augsto un zemo DTMF signālu, viss, kas nepieciešams, ir inicializēt un palaist abus taimerus. Sūtīšanas ilgums tiek kontrolēts, skaitot “zemākās” frekvences pusciklus un tiek nolasīts no papildu tabulas. Pēc šīs procedūras pabeigšanas jūs atgriežaties pie aptaujas funkcijas. Atbilstošās pārtraukumu apstrādes rutīnas pārslēdz porta tapas. Šis process ir parādīts attēlā. 4 un 5.

Taimera porta uzdevumi ietver tikai žurnāla ierakstīšanu. līmenī pie porta izejas un skaitītāja pārlādēšanu no RAM, savukārt 8 bitu taimera darbībai ir nedaudz sarežģītāka struktūra: katru pārtraukuma ievadi uzskaita skaitītāja reģistrs. Izvades stāvokli var mainīt tikai pēc trim pārtraukumiem. Turklāt tiek skaitīts arī katrs puscikls. Rašanās apstājas, kad ir sasniegts noteikts pusciklu skaits.


Rīsi. 4 Block — pārtraukuma ķēde no 8 bitu taimera (Lo-Group)


Rīsi. 5 bloks — taimera-porta pārtraukuma ķēde (Hi-Group)

; Pielāgotas definīcijas FLLMPY equ 32 ; Frekvences reizinātājs FLL pie 1,048 MHz TCLK ekv FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL equ 85 ; Ilgums DTMF signāls (65..100 ms) LO_OUT equ 02h ; “Zemākas” frekvences izeja HI_OUT equ 04h ; Augstas frekvences izeja RCOUNT equ r14 ; Garuma skaitītājs DTMF RTEMP equ r15 ; pakalpojumu reģistrs.global DTMF_NR ; globālais mainīgais RAM; DTMF numuram (0..F) ; Definīcijas RAM.even .bss DTMF_TL ; Pat adreses saskaņošana.bss DTMF_TH .bss DTMF_NR ; globālais mainīgais RAM; DTMF numuram (0..F).pat ; 8 bitu taimera TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H definīcijas ; Universālā taimera porta TPCTL equ 04bh definīcijas; Taimera porta vadība TPCNT1 equ 04ch ; Taimera porta skaitītājs 1 TPCNT2 equ 04dh ; Taimera porta skaitītājs 2 TPD equ 04eh ; Taimera porta dati TPE equ 04fh ; Timer-port-resolution.text ; DTMF frekvenču tabulas: tabula satur; MCLK ciklu skaits vienam pusciklam. ; “Augšējās” frekvences tabula; Pievienots labojošs grozījums; ņemt vērā ieiešanas laiku pārtraukumā DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Augsta frekvence 0 .word 0ffffh-(TCLK/(1207*2))+28 ; Augsta frekvence 1 vārdam 0ffffh-(TCLK/(1336*2))+25 ; Augsta frekvence 2 vārdam 0ffffh-(TCLK/(1477*2))+24 ; Augsta frekvence 3 vārdiem 0ffffh-(TCLK/(1207*2))+28 ; Augsta frekvence 4 .word 0ffffh-(TCLK/(1336*2))+25 ; Augsta frekvence 5 .word 0ffffh-(TCLK/(1477*2))+24 ; Augsta frekvence 6 .word 0ffffh-(TCLK/(1207*2))+28 ; Augsta frekvence 7 .word 0ffffh-(TCLK/(1336*2))+25 ; Augsta frekvence 8 .word 0ffffh-(TCLK/(1477*2))+24 ; Augsta frekvence 9 .word 0ffffh-(TCLK/(1633*2))+22 ; Augsta frekvence A .word 0ffffh-(TCLK/(1633*2))+22 ; Augsta frekvence B .word 0ffffh-(TCLK/(1633*2))+22 ; Augsta frekvence C .word 0ffffh-(TCLK/(1633*2))+22 ; Augsta frekvence D .word 0ffffh-(TCLK/(1207*2))+28 ; Augsta frekvence * .word 0ffffh-(TCLK/(1477*2))+24 ; Augsta frekvence # ; Tabula “zemākai” frekvencei DTMF_LO .baits 0ffh-(TCLK/(941*2*3)) ; Zema frekvence 0 .baitam 0ffh-(TCLK/(697*2*3)) ; Zema frekvence 1 baitam 0ffh-(TCLK/(697*2*3)) ; Zema frekvence 2 baitu 0ffh-(TCLK/(697*2*3)) ; Zema frekvence 3 baitu 0ffh-(TCLK/(770*2*3)) ; Zema frekvence 4 baitu 0ffh-(TCLK/(770*2*3)) ; Zema frekvence 5 baitu 0ffh-(TCLK/(770*2*3)) ; Zema frekvence 6 .baitu 0ffh-(TCLK/(853*2*3)) ; Zema frekvence 7 .baitam 0ffh-(TCLK/(853*2*3)) ; Zema frekvence 8 .baitu 0ffh-(TCLK/(853*2*3)) ; Zema frekvence 9 .baitu 0ffh-(TCLK/(697*2*3)) ; Zema frekvence A .baitam 0ffh-(TCLK/(770*2*3)) ; Zema frekvence B .baitam 0ffh-(TCLK/(853*2*3)) ; Zema frekvence C .byte 0ffh-(TCLK/(941*2*3)) ; Zema frekvence D .baitam 0ffh-(TCLK/(941*2*3)) ; Zema frekvence *.byte 0ffh-(TCLK/(941*2*3)) ; Zema frekvence # ; Signāla ilguma tabula DTMF_L .baits 2*941*DL/1000 ; Puscikli 0 .baitam 2*697*DL/1000 ; Puscikli 1 .baitam 2*697*DL/1000 ; Puscikli 2 .baitiem 2*697*DL/1000 ; Puscikli 3 .baitiem 2*770*DL/1000 ; Puscikli 4 .baitiem 2*770*DL/1000 ; Puscikli 5 .baitiem 2*770*DL/1000 ; Puscikli 6 .baitiem 2*852*DL/1000 ; Puscikli 7 .baitiem 2*852*DL/1000 ; Puscikli 8 .baitiem 2*852*DL/1000 ; Puscikli 9 .baitiem 2*697*DL/1000 ; Puscikli A .baitam 2*770*DL/1000 ; Puscikli B .baitam 2*852*DL/1000 ; Puscikli C .baitam 2*941*DL/1000 ; Puscikli D .baitam 2*941*DL/1000 ; Puscikli *.baitam 2*941*DL/1000 ; Puscikli # ;************************************************ ********** ********************************** ; DTMF-TX DTMF apakšprogramma ;************************************************ ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; Saglabājiet numuru pagaidu reģistrā mov.b DTMF_L(RTEMP),RCOUNT ; Saglabāt ilguma skaitītāju; sagatavot 8 bitu taimeri DTMF-Lo frekvencei mov.b #0a8h,&TCCTL ; Pulkstenis no MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Reģistra sagatavošana; priekšielādēt mov.b #000,&TCDAT ; Skaitītāja ielāde no reģistra; preload bis.b #008h,&IE1 ; Iespējot pārtraukumus; no 8 bitu taimera; taimera porta sagatavošana DTMF-Hi frekvencei rla r15; * 2 16 bitu tabulai mov DTMF_HI(RTEMP),&DTMF_TL ; saglabāt vārdu augstfrekvences mov #003,RTEMP ; skaitītājs 8 bitu taimeram bis.b #008h,IE2 ; Iespējot pārtraukumus; no taimera porta mov.b &DTMF_TH,&TPCNT2 ; Augstā baita ielāde TC2 mov.b &DTMF_TL,&TPCNT1 ; Notiek zema baita ielāde TC1 bis.b #080h,&TPD ; Iespējot 16 bitu taimeri bis.b #HI_OUT+LO_OUT,&TPE ; Iespējot DTMF-Hi/Lo izejas mov.b #090h,&TPCTL ; Iespējot taimera retināšanu ;************************************************** ******* *********************************** ; Taimera porta pārtraukums;************************************************ *** ********************************** TP_INT xor.b #HI_OUT,&TPD ; Invertēt DTMF-Hi izvadi mov.b &DTMF_TH,&TPCNT2 ; Augstā baita ielāde TC2 mov.b &DTMF_TL,&TPCNT1 ; Notiek zema baita ielāde TC1 bic.b #007h,&TPCTL ; Reti karogu notīrīšana ;************************************************** ******** *************

3.2.2 1 Kvadrātveida viļņu ģenerēšana, izmantojot Timer_A

Šī DTMF signāla ģenerēšanas rutīna izmanto tikai Timer_A, lai kvadrātveida vilnis abās vēlamajās frekvencēs. Montāžas procesā tiek aprēķinātas atbilstošās vērtības, lai taimeris varētu izmantot programmu neatkarīgi no MCLK frekvences vērtības. Izejas signāla ilgumu nosaka DL konstante milisekundēs.

; Aparatūras definīcijas; FLLMPY .equ 32; Frekvences reizinātājs FLL pie 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL .equ 82 ; DTMF signāla ilgums ms; (65..100 ms) STACK .equ 600h ; Stack inicializācijas adrese; RAM definīcijas; STDTMF .equ 202h; Augstas un zemās frekvences statuss TIM32B .equ 204; Taimera reģistra paplašinājums LENGTH .equ 206h ; DTMF ilguma skaitītājs; .text 0F000h ; Programmas sākuma adrese; ; Timer_A inicializācija: MCLK, nepārtraukts režīms, pārtraukumi ir iespējoti; Taimera izejas moduļu sagatavošana Timer_A MCLK = 1,048 MHz (automātiski) ; INIT MOV #STACK,SP ;Steka rādītāja inicializācija CALL #INITSR ;Reizinātāja inicializēšana; FLL frekvences un RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Taimera inicializācija MOV.B #TA2+TA1,&P3SEL ; Izejas TA2 un TA1 portos P3.5/4 CLR TIM32B; Notīrīt paplašināto taimera reģistru BIS #MCONT,&TACTL ; Start timer Timer_A EINT ; Vispārēja pārtraukuma iespējošana MAINLOOP ... ; Galvenā cilpa; ;Taustiņu nospiešana: SDTMF satur tabulas nobīdi; 2 frekvencēm (0..6,0..6) augstajā un zemajā baitā; MOV&TAR,R5 ; Lai sāktu nekavējoties: ADD FDTMFLO,R5 ; Nobīde uz īsāku laiku MOV R5,&CCR1 ; Pirmā stāvokļa maiņa pēc 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms MOV #OMT+CCIE,&CCTL1 ; Izvades inversija, bitu pārtraukums. MOV #OMT+CCIE,&CCTL2 ; Apgrieztā izeja, pārtraukuma bits MOV.B STDTMF,R5 ; 82 ms skaitītājs RRA R5 ; zemākas frekvences stāvokļa izmaiņu skaits MOV.B DTMFL(R5),LENGTH ; signāla ilgumam... ; programmas turpināšana; ; Pārtraukumu apstrādātājs no CCR0 (šeit netiek izmantots); TIMMOD0 ... RETI ; ; Pārtraukumu apstrādātājs no uztveršanas-salīdzināšanas reģistriem 1..4; TIM_HND PIEVIENOT &TAIV,PC ; Pieprasījuma apstrāde ar augstāko; RETI prioritāte; bez pārtraukuma pieprasījuma: RETI JMP HCCR1 ; pieprasījums no CCR1 (DTMF zemas frekvences) JMP HCCR2 ; pieprasījums no CCR2 (augstfrekvences DTMF) JMP HCCR3 ; pieprasījums no CCR3 JMP HCCR4 ; pieprasījums no CCR4; TIMOVH INC TIM32B ; Taimera_A pagarināšana līdz 32 bitiem RETI ; ; DTMF zemā frekvence: TA1 invertē 1. izvades bloka izvadi; Katra stāvokļa maiņa tiek skaitīta, lai kontrolētu signāla ilgumu; HCCR1 PUSH R5 ; Lietoto reģistru saglabāšana MOV.B STDTMF,R5 ; Zemas frekvences statuss DTMF ADD FDTMFLO(R5),&CCR1 ; Pievienot puscikla ilgumu DEC.B LENGTH ; Vai DL signāla ilgums ir pabeigts? JNZ TARET ; Nē; ; Jā, apturēt DTMF signālu: atspējot pārtraukumus; BIC #OMRS+OUT+CCIE,&CCTL1 ; Atiestatīt TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Atiestatīt TA2 TARET POP R5 ; Atjaunot R5 RETI; Atgriezties no pārtraukuma; ; Augstas frekvences DTMF: TA2 invertē 2. izejas bloka izvadi; HCCR2 PUSH R5 ; Lietoto MOV reģistru saglabāšana. B STDTMF+1,R5 ; Augstas frekvences statuss DTMF ADD FDTMFHI(R5),&CCR2 ; Pievienot puscikla ilgumu POP R5 ; Atjaunot R5 RETI; Atgriezties no pārtraukuma; HCCR3 ... ;Uzdevums, ko kontrolē reģistrs CCR3 RETI HCCR4 ... ;Uzdevums, ko kontrolē reģistrs CCR4 RETI ; ; DTMF frekvences tabula: Tabula satur; MCLK ciklu skaits pusciklā. Vērtības pielāgotas; efektīvā frekvence MCLK montāžas procesā; un noapaļots līdz minimumam iespējama kļūda frekvences; FDTMFLO .vārds ((TCLK/697)+1)/2 ; Zemfrekvences DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Hz .vārds ((TCLK/852)+1)/2 ; 852Hz .vārds ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .word ((TCLK/1209)+1)/2 ; Augstas frekvences DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .vārds ((TCLK/1477)+1)/2 ; 1477Hz .vārds ((TCLK/1633)+1)/2 ; 1633 Hz; ; Tabulā ir norādīts pusciklu skaits DL signāla darbības laikā (ms). ; Skaitīšanai tiek izmantota zemākā DTMF frekvence; DTMFL .baits 2*697*DL/1000 ; Pusciklu skaits.baits 2*770*DL/1000 ; DL m.baitos 2*852*DL/1000; .baits 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; Taimera pārtraukumu vektori Timer_A .word TIM_HND ; Moduļu vektors 1..4 taimeri.vārds TIMMOD0 ; Taimera modulis 0 vector.sect "INITVEC",0FFFEh ; Vektors Atiestatīt.word INIT

Zemāk ir nedaudz ātrāks risinājums. Tomēr tas prasa vairāk RAM, jo... No tabulām iegūtie dati netiek katru reizi pārrēķināti, bet īsumā tiek saglabāti RAM DTMFLO un DTMFHI. Lasīšana tiek veikta no Timer_A taimera pārtraukumu rutīnām. Izmantotās tabulas ir identiskas tām, kas parādītas iepriekšējā piemērā.

FLLMPY .equ 32; Frekvences reizinātājs FLL pie 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL .equ 82 ; DTMF signāla ilgums; ms (65..100 ms) STDTMF .equ 202h ; Augstas un zemās frekvences statuss TIM32B .equ 204; Taimera reģistra paplašinājums LENGTH .equ 206h ; DTMF ilguma skaitītājs DTMFLO .equ 208h ; Zemākās frekvences puscikls DTMFHI .equ 20Ah; Augšējās frekvences puscikls STACK .equ 600h ; Steka inicializācijas adrese.teksts 0F000h ; Programmas sākuma adrese; Timer_A inicializācija: MCLK, nepārtraukts režīms, pārtraukumi ir iespējoti; Taimera izejas moduļu sagatavošana Timer_A MCLK = 1,048 MHz (automātiski) ; INIT MOV #STACK,SP ; Notiek steka rādītāja inicializācija CALL #INITSR ; Reizinātāja inicializācija; FLL frekvences un RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Iedarbināt taimeri MOV.B #TA2+TA1,&P3SEL ; Izejas TA2 un TA1 portos P3.5/4 CLR TIM32B; Paplašinātā taimera reģistra dzēšana BIS #MCONT,&TACTL ;Taimera palaišana Timer_A EINT ; Vispārēja pārtraukuma iespējošana MAINLOOP ... ; Galvenā cilpa; Taustiņu nospiešana: SDTMF satur tabulas nobīdi; 2 frekvencēm (0..6,0..6) augstajā un zemajā baitā; MOV&TAR,R5 ; Lai sāktu nekavējoties ADD FDTMFLO,R5 ; Nobīde uz īsāku laiku MOV R5,&CCR1 ; Pirmā stāvokļa maiņa pēc 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Iegūstiet divu ciklu skaitu DTMF frekvencēm; MOV.B STDTMF+1,R5 ; Augstas frekvences DTMF MOV FDTMFHI(R5),DTMFHI; Puscikla ilgums MOV.B STDTMF,R5 ; Zemas frekvences DTMF MOV DTMFLO(R5),DTMFLO ; Puscikla ilgums; ; Ilguma skaitītājs RRA R5 ; Sagatavot baitu indeksu MOV.B DTMFL(R5),LENGTH ; zemākas frekvences stāvokļa izmaiņu skaits MOV #OMT+CCIE,&CCTL1 ; Izvades inversija, bitu pārtraukums. MOV #OMT+CCIE,&CCTL2 ; Izvades inversija, bitu pārtraukums. ... ; Atgriezties uz galveno cilpu; ; Pārtraukumu apstrādātājs no CCR0 (šeit netiek izmantots); TIMMOD0 ... RETI ; ; Pārtraukumu apstrādātājs no uztveršanas-salīdzināšanas reģistriem 1..4; TIM_HND PIEVIENOT &TAIV,PC ; Pieprasījuma apstrāde ar augstāko; RETI prioritāte; bez pārtraukuma pieprasījuma: RETI JMP HCCR1 ; pieprasījums no CCR1 (DTMF zemas frekvences) JMP HCCR2 ; pieprasījums no CCR2 (augstfrekvences DTMF) JMP HCCR3 ; pieprasījums no CCR3 JMP HCCR4 ; pieprasījums no CCR4; TIMOVH INC TIM32B ; Taimera_A pagarināšana līdz 32 bitiem RETI ; ; DTMF zemā frekvence: TA1 invertē 1. izvades bloka izvadi; HCCR1 ADD DTMFLO,&CCR1 ; Pievienot puscikla ilgumu DEC.B LENGTH ; Vai DL signāla ilgums ir pabeigts? JNZ TARET ; Nē; ; Jā, apturēt DTMF signālu: atspējot pārtraukumus; BIC #OMRS+OUT+CCIE,&CCTL1 ; Atiestatīt TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Atiestatīt TA2 TARET RETI ; Atgriezties no pārtraukuma; Augstas frekvences DTMF: TA2 invertē 2. izejas bloka izvadi; HCCR2 ADD DTMFHI,&CCR2 ; Pievienot puscikla ilgumu RETI ; Atgriezties no pārtraukuma; HCCR3. .. ;Uzdevums, ko kontrolē reģistrs CCR3 RETI HCCR4 ... ;Uzdevums, ko kontrolē reģistrs CCR4 RETI ; ; Pārtraukumu tabulas un vektori ir identiski tiem, kas parādīti iepriekšējā piemērā.

3.3. Aparatūra DTMF signālu ģenerēšanai

Kā minēts iepriekš, frekvenču diapazonā 200 Hz... 4600 Hz pārraides frekvences signāla līmenim jābūt vismaz 20 dB virs svešu signālu (trokšņu) līmeņa. Turklāt, pamatojoties uz specifikāciju, signāliem no “augšējās” un “apakšējās” grupas ir jābūt dažādiem līmeņiem, tāpēc katram signālam ir nepieciešams savs filtrs. Sinusoidālās frekvences amplitūdas var iegūt no Furjē sērijas.

Lai izvēlētos robežfrekvences, izstrādājot analogo filtru, jums jāievēro šādas prasības, pamatojoties uz:

  • Jo ir jānodrošina iespēja jebkādām “zemākās” grupas frekvenču kombinācijām ar “augšējās” grupas frekvencēm; līmeņu atšķirība starp zemāko un augstāko grupas frekvenci nedrīkst pārsniegt 3 dB.
  • Grupas zemākajai frekvencei (f1) harmonikas slāpēšanai (3f1) jābūt ne mazākai par 20 dB. Šī nosacījuma izpilde ir viskritiskākā zemākai frekvencei grupā, jo tas atrodas pēc iespējas tālāk no filtra izslēgšanas frekvences.

Formula apraksta absolūtās vērtības kvadrātu n kārtas augstfrekvences Batervorta filtra izvadē:

Šī formula atspoguļo Batervorta augstfrekvences filtra pastiprinājuma atkarību no frekvences. Parametri fg un n nosaka attiecīgi filtra izslēgšanas frekvenci un secību.

Pirmkārt, ir nepieciešams aprēķināt nepieciešamo filtru secību, ņemot vērā atbilstību iepriekš minētajām prasībām.

Lai izpildītu pirmo nosacījumu, grupas zemāko un augstāko frekvenču absolūto vērtību kvadrātu attiecība nedrīkst būt lielāka par 3 dB vai:

Otrais nosacījums tiks izpildīts automātiski, ja frekvenču f1 un 3f1 absolūto vērtību kvadrātu attiecība ir lielāka par 10/3, šajā gadījumā trešā harmonika taisnstūra signālā ir par 1/3 mazāka (skat. Furjē sērija un 2. att.):

Aprēķinu rezultātā abu grupu frekvencēm iegūstam nepieciešamo filtru secību n=1,15. Tādējādi prasības apmierinās 2. kārtas filtrs, uz kura var būvēt operacionālais pastiprinātājs. Ja izmantojat 3. kārtas filtru, jums ir nepieciešami tikai divi papildu elementi. Tomēr tas samazinās prasības komponentu parametru izkliedēšanai. Abas iepriekš minētās prasības tiks izpildītas, ja izslēgšanas frekvence ir šādās robežās:

Apakšējā grupa fg>880 Hz fg<1418 Гц
Augšējā grupa fg>1527 Hz fg<2460 Гц

Ja izslēgšanas frekvence ir minimāla, notiks maksimālais harmonikas samazinājums. Tomēr šajā gadījumā atšķirība starp zemāko un augstāko frekvenci grupā būs 3 dB. Pie augstākās iespējamās nogriešanas frekvences līmeņa atšķirība ir minimāla, bet harmoniskās sastāvdaļas tiek nomāktas tikai par 20 dB.

Aprēķinot filtru, pastiprināta uzmanība tika pievērsta harmonikas slāpēšanai, līmeņa starpība grupā tika fiksēta 2 dB. Rezultātā robežfrekvences ir 977 Hz un 1695 Hz. Iegūtā harmoniskā slāpēšana ievērojami pārsniedz prasības. Frekvenču līmeņu atšķirība grupā ir prasību robežās pat robežfrekvences novirzes gadījumā, kas saistīta ar izmantoto komponentu parametru izkliedi. Aprēķinot filtra elementu vērtības, rezistori tika izvēlēti, pamatojoties uz to maksimālo tuvumu E12 sērijas standarta vērtībām.

Filtra izejās rezultāts ir divi sinusoidāli signāli ar ievērojami slāpētām harmonikām. Lai apvienotu šos signālus, tiek ieviests papildu papildinātājs.

Tādējādi, izmantojot tikai 3 darbības pastiprinātājus un dažus pasīvos elementus, mēs varam ģenerēt DTMF signālus, izmantojot mikrokontrolleri, neizmantojot ievērojamus skaitļošanas resursus.

Izmantojot simulatora programmas, tika pārbaudītas aptuvenās vērtības. Filtru reakcija ļoti precīzi atbilst aprēķinātajai frekvences reakcijai.


Rīsi. 6: Taisnstūra signāla amplitūdas spektrs ar frekvenci 697 Hz pie trešās kārtas filtra izejas

Attēlā 6. attēlā parādīts taisnstūra signāla amplitūdas spektrs ar frekvenci 697 Hz, kas izlaists caur 3. kārtas filtru. Kā redzams attēlā, trešā un piektā harmonika (2091 Hz un 3485 Hz) ir ievērojami vājinātas (-25,6 dB).


Rīsi. 7: Taisnstūra signāla amplitūdas spektrs ar frekvenci 941 Hz pie trešās kārtas filtra izejas

Attēlā 7. attēlā parādīts kvadrātviļņu signāla spektrs ar frekvenci 941 Hz. Mūs interesējošajā frekvences reģionā līdz 4600 Hz ir tikai viena harmonika. Pēc filtra izlaišanas šī 2823 Hz harmonika ir ievērojami vājināta (-27,9 dB). Līmeņu starpība starp zemāko un augstāko frekvenci grupā nepārsniedz 1,9 dB.

Lai izmantotu zemu izmaksu komponentus ar lielu parametru variāciju, tika veikta papildu modelēšana. Simulācijas rezultāti parādīja, ka pieļaujamā rezistoru un kondensatoru vērtību izkliede ir 10%.


8. attēls: Histogramma – signāla līmeņu sadalījums grupā


9. attēls. Histogramma – harmoniskā slāpēšana

Attēlā 8 un 9 parāda histogrammas, kas iegūtas, izmantojot Montekarlo analīzi. Šajā gadījumā komponentu vērtības nejauši mainījās 10% robežās. Pēc 100 iterācijām visu simulēto filtru rezultāti tiek attēloti histogrammās. Attēlā redzamajā histogrammā. 8. attēlā parādīta līmeņa atšķirība starp frekvencēm grupā. Maksimālā pieļaujamā 3 dB atšķirība starp minimālo un maksimālo frekvenci netika sasniegta nevienā gadījumā. Vidējā vērtība ir 1,6 dB, kas ir nedaudz labāka par aprēķināto vērtību 2 dB.

Attēlā 9. attēlā parādīts harmoniku vājināšanās “zemākās” frekvenču grupas. Nepieciešamā vērtība 20 dB tiek sasniegta visos gadījumos, vidējā vērtība ir aptuveni 27 dB. Sliktākajā gadījumā harmonika tiek nomākta par 24,2 dB.

“Apakšējās” frekvenču grupas filtram aprēķinātās vērtības tiek veiktas arī “augšējās” frekvenču grupas filtram.

Abiem filtriem ir identiska shēma. Vienīgā atšķirība ir augšējo un apakšējo frekvenču grupu filtru robežfrekvencēs. R1 un C1 veido 1. kārtas augstas caurlaidības filtru. Jo ķēdes ieejas pretestība ir atkarīga arī no R1, šī elementa vērtība nedrīkst būt pārāk maza; pretējā gadījumā mikrokontrollera izejas tiks pārslogotas un kvadrātveida viļņu forma tiks izkropļota. Šajā gadījumā signālam tiks pievienotas papildu frekvences, kas rodas intermodulācijas kropļojumu rezultātā, kas negatīvi ietekmēs signāla un trokšņa attiecību.

Augstākas kārtas filtru pārsūtīšanas funkciju nevar iegūt, izmantojot tikai pasīvos komponentus.

Tādējādi otrās kārtas filtram ir jābūt darbības pastiprinātājam. Aktīvā filtra pastiprinājums ir iestatīts uz 0,2, izmantojot rezistorus R1-1 un R1-2. Kā redzat, signāls ir nedaudz vājināts. Tas ir nepieciešams, lai nepārslogotu op-amp, jo kvadrātviļņu signāla sinusoidālās fundamentālās harmonikas maksimālā amplitūda pārsniedz paša kvadrātviļņa signāla amplitūdu (skat. Furjē sēriju un 2. att.). Papildu papildinātājs pielāgo nepieciešamo izvades līmeni. Taisnstūra signāla nemainīgās sastāvdaļas dēļ operētājsistēmas pastiprinātāja darbības punkts ir iestatīts Vcc/2 līmenī (sk. arī Furjē sēriju un 2. att.). Šajā gadījumā konstanto komponentu nevar novērst ar ievades dalītāju R1-1/R1-2. Lai atsaistītu OS ķēdi ar līdzstrāvas spriegumu, tiek izmantots kondensators C3.

Katrā no analogā filtra izejām tiek ģenerēts attiecīgi augšējās un apakšējās frekvenču grupas signāls. Papildu sumatorā šie signāli tiek pievienoti. Šajā ķēdes elementā, izmantojot rezistorus R4 un R5, varat iestatīt attiecības starp “zemāko” un “augšējo” frekvenci kopējā signālā un izejas signāla līmeni. Tādējādi izejas amplitūdu var viegli pielāgot, lai tā atbilstu dažādām prasībām dažādās valstīs.

Aprēķinot komponentu vērtības, kondensatoru vērtības, kā parasti, tika fiksētas, un rezistoru vērtības tika aprēķinātas saskaņā ar tām. Šajā shēmā tika izmantoti standarta E12 sērijas kondensatori un rezistori ar izkliedi 10%.

Attēlā 10. attēlā parādīta analogo filtru un summatora shematiska diagramma:


Rīsi. 10: Analogo filtru shematiskā diagramma ar papildu papildinātāju

Kondensatori C1-1 un C1-2 apvieno abus signālus kopā Vcc/2 darbības punktā. Nevajadzētu šiem elementiem izvēlēties pārāk lielas vērtības, jo tie ir zemfrekvences filtru elementi, lai novērstu zemfrekvences subharmonikas. Filtra kondensators C5 novērš atsauces sprieguma troksni. Papildu kondensators C6, kas savienots paralēli atgriezeniskās saites rezistoram R6, veido pirmās kārtas augstfrekvences filtru. Ja ir izvēlēta zemākā filtra nogriešanas frekvence, augstfrekvences intermodulācijas traucējumu papildu filtrēšana uzlabo izejas signāla kvalitāti, bet “augšējās” grupas augstākajās frekvencēs būs zināma vājināšanās. Dažos gadījumos augstākās DTMF frekvences 1633 Hz ģenerēšana nav nepieciešama, jo to izmanto tikai pakalpojumu simbolu A-D veidošanai, un signāla un trokšņa attiecību var uzlabot, pazeminot filtra izslēgšanas frekvenci. Tādējādi nogriešanas frekvences palielināšana noved pie augstfrekvences traucējumu līmeņa paaugstināšanās, bet tajā pašā laikā tiek samazināta negatīvā ietekme uz DTMF signāla augstākās frekvences komponentiem.

4 DTMF raidītāja signālu pētījumu rezultāti

Zemāk redzamās spektrogrammas (11. un 12. att.) parāda DTMF raidītāja izejas signālus dažādās frekvencēs. Attēlā 11. attēlā parādīts simbola “1” amplitūdas spektrs. Tās pārraidīšanai nepieciešamās frekvences - 697 un 1207 Hz - ir attiecīgi -10,5 dB un -8,5 dB līmenī. Harmonikas pie 2091 un 3621 Hz tiek nomāktas gandrīz par 30 dB. Lai pārraidītu simbolu “D”, tiek ģenerētas divas augstākās frekvences - 941 un 1633 Hz. Kā redzams no att. 12, zemās frekvences līmenis ir -12 dB, augstfrekvences līmenis ir -11 dB. Atbilstošās harmonikas tiek vājinātas par vairāk nekā 30 dB. Tādējādi izmērītās vērtības atbilst simulācijas rezultātiem un specifikācijas prasībām.


Rīsi. 11: simbola “1” amplitūdas spektrs: 697 un 1207 Hz


Rīsi. 12: simbola “D” amplitūdas spektrs: 941 un 1633 Hz

Ģenerēto kvadrātviļņu signālu absolūto frekvenču precizitāti nevar sasniegt, izmantojot divus dažādus taimerus; rezultāts būs atkarīgs no abu frekvenču kombinācijas un izmantoto taimeru veida. Iemesls tam ir taimera pārtraukuma konflikts. Tomēr nepieciešamā precizitāte ±1,8% tiek sasniegta ar lielu rezervi.

Ja tiek izmantots 8 bitu taimeris un taimera porta taimeris ar sistēmas frekvenci MCLK 1,048 MHz, tad “zemākās” grupas frekvences tiek ģenerētas ar precizitāti, kas nav sliktāka par 0,3%. “Augšējās” grupas frekvencēm praksē tika iegūta novirze ne vairāk kā 0,5%.

Vienīgais izņēmums ir DTMF rakstzīme “D”, kurai tiek ģenerētas augstākās frekvences. Rezultātā šajā kombinācijā “augšējās” grupas 1633 Hz frekvences novirze ir -0,97%.

Bez šī izņēmuma pat augstākā frekvence 1633 Hz tiek ģenerēta ar precizitāti, kas ir labāka par 0,5%. Maksimālās novirzes dažādām frekvencēm ir norādītas tabulā:

Ja frekvenču ģenerēšanai tiek izmantots Timer_A, kļūda būs atkarīga no izmantotās MCLK frekvences:

MCLK, MHz 1,048 2,096 3,144 3,800
Reizinātājs 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 Secinājums

Šī piemēra programmatūra ir ļoti vienkārša, un, aizņemot aptuveni 300 baitus, ir nepieciešams neliels RAM un ROM apjoms. Pateicoties iebūvētajam taimera modulim, nepieciešamās frekvences tiek ģenerētas ar augstu precizitāti, netērējot CPU slodzi. Konfigurācijā, kurā ģenerēšanai tiek izmantots 8 bitu taimeris un taimeris/ports, pārtraukumu rutīnas aizņem aptuveni 12% no CPU resursiem. Gadījumā, ja frekvences ģenerē taimeris Timer_A, CPU slodze pārtraukumu rutīnu apstrādei tiek samazināta līdz 6%. Tā rezultātā, kamēr tiek pārraidīti DTMF signāli, var tikt veikti citi uzdevumi, vai arī centrālais procesors var tikt pārslēgts mazjaudas režīmā, lai samazinātu strāvas patēriņu.

Aprakstītā moduļa labo funkcionalitāti DTMF signālu ģenerēšanai, izmantojot kvadrātviļņu signālus, parāda aparatūras shēmas konstrukcija. Jo Ķēdē ir iespējams izmantot komponentus ar plašu parametru diapazonu, šāda risinājuma cena ir ļoti zema. Visas specifikācijas prasības lielā mērā ir izpildītas, tāpēc instrumentos, kas izmanto MSP430 kā vadības kontrolieri, nav nepieciešams atsevišķs DTMF signāla ģeneratora modulis.

Ja konkrētā gadījumā ir nepieciešams palielināt signāla-trokšņa attiecību, izmantojot papildu darbības pastiprinātāju, var izveidot filtru, lai vēl vairāk slāpētu intermodulācijas kropļojumus. Šāds papildu darbības pastiprinātājs jau ir iekļauts četru op-amp DIL14 pakotnē.

6 Saites

Bundesamt fur Post und Telekommunikation (Federālais pasta un telekomunikāciju birojs): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) des analoģisku līniju, kas savienotas ar telefontīkliem, kas paredzēti specifiskiem telefona tīkliem drošības un zvanu prasības) / Deutschen Bundespost Telekom ISDN; Bundesministerium fur Post und Telekommunikation, projekts, Bonna, 1994. gada aprīlis Papula: Mathematik fur Ingenieure 2 (matemātika inženieriem); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10. izdevums; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: MSP430 ģimene, mērīšanas lietojuma ziņojums, Texas Instruments, 2.1. izdevums, 1997. gada janvāris, SLAAE10B Texas Instruments: MSP430 ģimene, Arhitektūras lietotāja rokasgrāmata un moduļu bibliotēka, Texas Instruments, SLAUE196B, Texas Instruments: 1996B MSP430 saime, programmatūras lietotāja rokasgrāmata, Texas Instruments, 1996. gads Texas Instruments: MSP430 saime, montāžas valodas rīku lietotāja rokasgrāmata, Texas Instruments, 1996. Sivija, Roberts: Systementwicklung einer Telekom-Applikation zum Senden und Empfangen von DTMF-Signalen (Mikrokontroles MSP43 demontāžas signāls telekomunikāciju sistēma ciparu signālu saņemšanai un pārraidīšanai, pamatojoties uz MSP430 mikrokontrolleri); Diplomarbeit, Fachhochschule Landshut, 1997. gada maijs

Specifiskas īpatnības:

  • Sinusoidālo viļņu ģenerēšana, izmantojot impulsa platuma modulāciju (PWM)
  • Dažādu sinusoidālo viļņu signālu apvienošana vienā DTMF signālā
  • Avota kodi montāžas un C valodās
  • Paredzēts darbam ar STK500
  • Programmas koda lielums 260 baiti / nemainīgs tabulas izmērs 128 baiti
  • Izmantojot tabulas konvertēšanas metodi

Ievads

Šajā dokumentā ir aprakstīta metode DTMF signālu (divtoņu daudzfrekvenču signālu) ģenerēšanai, izmantojot jebkuru AVR mikrokontrolleri, kas satur impulsa platuma modulācijas (PWM) bloku un statisko RAM. Šos signālus plaši izmanto telefonijā, kur tie tiek atskaņoti, nospiežot tālruņa aparāta numura sastādīšanas pogas. Lai pareizi ģenerētu DTMF signālu, divas frekvences ir jāuzliek kopā: zemā frekvence (fb) un augsta frekvence (fa). 1. tabulā parādīts, kā tiek sajauktas dažādas frekvences, lai radītu DTMF signālus, nospiežot dažādus taustiņus.

1. attēls – DTMF signālu ģeneratora shēma

1. tabula – Toņu signālu ģenerēšanas matrica

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

1. tabulas rindās ir redzamas zemas frekvences vērtības, bet kolonnās - augstas frekvences vērtības. Piemēram, matrica parāda, ka, nospiežot pogu “5”, frekvences fb = 770 Hz un fa = 1336 Hz jāsajauc. Divu dažādu frekvenču sinusoidālu signālu pievienošanas rezultātā veidojas DTMF signāls

kur ir amplitūdas attiecība K=A b /A a avota signāliem jāatbilst nosacījumam

Darbības princips

Papildus vispārīgai informācijai par impulsa platuma modulācijas izmantošanu, tālāk tiks parādīts, kā impulsa platuma modulācija ļauj ģenerēt sinusoidālus signālus. Nākamajā rindkopā ir aprakstīts, kā izmantot bāzes pārslēgšanas frekvenci, lai iegūtu dažādas frekvences. Pēc teorētisko pamatu izskatīšanas tiks sniegts paša DTMF signālu ģeneratora apraksts. Sinusoidālo viļņu ģenerēšana

Atkarībā no augsta VH un zema VL sprieguma līmeņu ilguma attiecības mainās vidējā vērtība pie PWM izejas. Ja attiecība starp abu līmeņu ilgumiem tiek uzturēta nemainīga, rezultātā tiks ģenerēts nemainīgs VAV sprieguma līmenis. 2. attēlā parādīts impulsa platuma modulēts signāls.


2. attēls – līdzstrāvas sprieguma līmeņa ģenerēšana

Sprieguma līmeni nosaka pēc izteiksmes:

(3)

Sinusoidālu signālu var ģenerēt, ja impulsa platuma modulācijas radītā sprieguma vidējā vērtība mainās katrā PWM ciklā. Attiecības starp augsto un zemo līmeni ir jāiestata atbilstoši sinusoidālā viļņa sprieguma līmenim attiecīgajā laikā. 3. attēls ilustrē šo procesu. PWM avota dati tiek aprēķināti katram tā periodam un ierakstīti konversijas tabulā (TC).

3. attēlā parādīta arī sakarība starp fundamentālā sinusoidālā viļņa frekvenci un paraugu skaitu. Jo lielāks paraugu skaits (Nc), jo augstāka ir iegūtā signāla modelēšanas precizitāte:

(4)

PWM frekvence ir atkarīga no PWM izšķirtspējas. 8 bitu izšķirtspējā taimera galīgā vērtība (skaita augšdaļa) ir 0xFF (255). Jo Taimeris skaita uz priekšu un atpakaļ, tad šī vērtība ir dubultojama. Tāpēc PWM frekvenci var aprēķināt, dalot taimera pulksteņa frekvenci f CK ar 510. Tādējādi ar taimera pulksteņa frekvenci 8 MHz iegūtā PWM frekvence būs 15,6 kHz.


3. attēls – sinusoidāla signāla ģenerēšana, izmantojot PWM

Sinusa viļņa frekvences maiņa

Pieņemsim, ka sinusoidālie paraugi tiek nolasīti no uzmeklēšanas tabulas nevis secīgi, bet pa vienam. Šajā gadījumā ar tādu pašu iztveršanas ātrumu tiks ģenerēts signāls ar dubultu frekvenci (sk. 4. attēlu).


4. attēls — iegūtās frekvences dubultošana (XSW = 2)

Pēc analoģijas, ja lasāt nevis katru otro vērtību, bet katru trešo, ceturto, piekto (attiecīgi soļa platums ir 3, 4, 5...) utt. diapazonā ir iespējams ģenerēt Nc frekvences. Ņemiet vērā, ka augstām frekvencēm iegūtā viļņu forma nebūs sinusoidāla. Mēs apzīmējam pakāpiena platumu saskaņā ar konversijas tabulu kā XSW, Kur

(5)

Pašreizējās pozīcijas aprēķins TP nākamajam PWM periodam (kad taimeris pārplūst) tiek veikts, izmantojot izteiksmi (6). Jauna vērtība pozīcijā X LUT ir atkarīgs no tā iepriekšējā stāvokļa pozīcijā X" LUT palielinot pakāpiena platumu XSW

(6)

Dažādu frekvenču pievienošana, lai iegūtu DTMF signālu

DTMF signālu var ģenerēt, izmantojot izteiksmes (1) un (2). Aritmētisko darbību vienkāršības labad koeficienta K vērtību ņem vienādu ar 0,75, lai aizstātu aritmētisko darbību ar loģiskām nobīdēm. Ņemot vērā izteiksmi (6), pašreizējo vērtību PWM kontrolei var aprēķināt ar izteiksmi:

un ņemot vērā to X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, beidzot pierakstīsim

DTMF ģeneratora ieviešana

Šajā pielikumā ir apskatīta DTMF toņu ģeneratora uzbūve, izmantojot 8 bitu PWM izvadi (OC1A) un tabulu ar 128 sinusa funkcijas (Nc) paraugiem, katrs norādīts ar 7 bitiem (n). Šīs izteiksmes parāda šo atkarību, kā arī parāda, kā aprēķināt uzmeklēšanas tabulas ierakstus:

(9)

7 bitu izmantošanas priekšrocība ir tāda, ka augstfrekvences un zemas frekvences signālu vērtību summa ir viena baita lielumā. Lai atbalstītu pilnu DTMF signālu komplektu, ir jāaprēķina 8 vērtības katrai DTMF frekvencei no 1. tabulas un jāievada uzmeklēšanas tabulā.

Lai panāktu lielāku precizitāti, tika ieviests šāds risinājums: vērtībām, kas aprēķinātas, izmantojot izteiksmi 5, ir nepieciešami tikai 5 baiti. Lai izmantotu visus 8 baitus, kas samazinās noapaļošanas kļūdas, šī vērtība tiek reizināta ar 8. Rādītājs uz uzmeklēšanas tabulu tiek rakstīts tādā pašā veidā. Bet šajā gadījumā ir nepieciešami divi baiti, lai saglabātu 8 reizes lielāku vērtību. Tas nozīmē, ka pirms šo baitu izmantošanas kā rādītāja uz sinusoidālā viļņa vērtībām ir jāveic 3 pa labi nobīdes un radiksa Nc moduļa darbība (loģiskā reizināšana ar Nc-1).


5. attēls – moduļa shēma savienojumam ar STK500

PWM signāls tiek ģenerēts pie tapas OC1A (PD5). Papildu izejas filtrs palīdzēs padarīt signālu saderīgāku ar sinusoidālo viļņu formu. Samazinot PWM frekvenci, var būt nepieciešams izmantot filtru ar stāvāku frekvences reakciju, lai iegūtu labu rezultātu.

Tastatūras savienojums parādīts 1. attēlā. Tastatūras darbība ir jāorganizē tā, lai būtu iespējams noteikt nospiesto taustiņu. To var izdarīt, izmantojot šādu algoritmu:

  1. Nospiestā taustiņa virknes noteikšana
    • konfigurējiet B porta zemās kārtas piezīmjdatoru kā izvadi un iestatiet žurnālu. "0"
    • konfigurējiet porta B augsto tetradu kā ieeju ar pievilkšanas rezistoru savienojumu
    • līnija ar nospiesto pogu tiek definēta kā augstākās tetradas cipars ar žurnālu. "0"
  2. Nospiestās taustiņu kolonnas definēšana
    • konfigurējiet porta B augsto piezīmjdatoru kā izvadi un iestatiet žurnālu. "0"
    • konfigurējiet porta B zemās kārtas tetradu kā ieeju, pievienojot uzvilkšanas rezistorus
    • kolonna ar nospiestu pogu ir definēta kā zemas kārtas tetrada cipars ar žurnālu. "0"

Piezīme: STK200 rezistori ir virknē savienoti starp PORTB savienotāja tapām un mikrokontrollera tapām BP5, PB6 un PB7 (skatiet STK200 diagrammu). Tas radīs problēmas, ja tastatūra ir pievienota PORTB savienotājam.

6. attēlā ir parādīta nospiestā taustiņa noteikšanas apakšprogrammas darbība. Atkarībā no nospiestā taustiņa tiek noteikts intervāla ilgums. Pārtraukšanas rutīna izmanto šo vērtību, lai aprēķinātu PWM iestatījumus diviem DTM toņa sinusoidāliem viļņiem. Pārtraukumu apstrādes procedūra ir parādīta 7. un 8. attēlā.

Šī rutīna aprēķina vērtību, ko salīdzināt ar taimera izvadi nākamajam PWM periodam. Pārtraukšanas rutīna vispirms aprēķina nākamās parauga vērtības pozīciju uzmeklēšanas tabulā un nolasa tur saglabāto vērtību.

Parauga atrašanās vietu uzmeklēšanas tabulā nosaka impulsa platums, un faktisko impulsa platumu nosaka ģenerētā frekvence.

Galīgo vērtību, kas tiek ierakstīta taimera salīdzināšanas reģistrā, nosaka, izmantojot formulu (7), kurā ņemtas vērā abu DTMF frekvenču izlases vērtības.


6. attēls – Galvenās programmas blokshēma

Izgudrojums attiecas uz datu pārraidei paredzētu divu toņu frekvences (DTMF) signālu ciparu ģenerēšanas jomu, piemēram, telefonijas jomā. Sasniegtais tehniskais rezultāts ir lieko ķēdes elementu skaita samazināšana, palielinot ekonomisko efektivitāti. DTMF signālu ģenerators, kas realizē DTMF signālu ģenerēšanas metodi, satur divus akumulācijas summētājus, divus turēšanas reģistrus, divas atmiņas ierīces, galīgo summētāju, digitālo-analogo pārveidotāju, DTMF signālu kodu pārveidotāju veselu skaitļu secībā. , DTMF signālu ģeneratora atsauces frekvences dalītājs ar regulējamu dalījuma koeficientu, pārveidotājs DTMF signālu kodē dalīšanas koeficienta kodā. 2 s. un 3 algas f-ly, 2 slim.

Izgudrojums attiecas uz metodēm DTMF (divtoņu frekvences) signālu ģenerēšanai ar digitālām metodēm, kas paredzētas datu pārraidei, piemēram, telefonijas jomā tonfrekvences numura sastādīšanas laikā.Pēc tehniskās būtības un sasniegtā rezultāta ir vistuvāk pieprasītajam. metode ir metode DTMF signālu ģenerēšanai, kas iesniegta ASV patentā Nr. 5034977, datēts ar 04/04/89, publ. 07.23.91, M. klase. 5 N 04 M 1/00 ​​Zināma metode DTMF signālu ģenerēšanai ietver pirmā un otrā diskretizācijas leņķa koda atlasi, kas atbilst DTMF signāla komponentu pirmajai un otrajai frekvencei, kumulatīvi atsevišķi summējot pirmo un otro izlases leņķa kodu ar attiecīgi periodiski. fiksētie, ar periodu, kas atbilst pulksteņa iztveršanas frekvencei, kumulatīvās summēšanas pirmais un otrais rezultāts, iegūstot DTMF signāla komponentu pirmo un otro diskrēto vērtību, kas saglabāta atbilstošo diskrētu tabulu adreses šūnās. DTMF signāla komponentu vērtības, nolasot no attiecīgajām tabulām adresēs, kas atbilst izlases leņķa kodu kumulatīvās summēšanas rezultātiem, summējot DTMF signāla komponentu pirmo un otro diskrēto vērtību. iegūt trešo diskrēto vērtību, kas atbilst DTMF signāla vērtībai Zināma metode DTMF signālu ģenerēšanai ir šāda: atkarībā no DTMF signāla koda, vispirms pārveidojot DTMF signālu kodus, tiek izvēlēts pirmais kods, kas nosaka signāla paraugu ņemšanas leņķi ar frekvenci , kas atbilst augsto frekvenču grupai - kolonnām, un ar otro DTMF signālu kodu pārveidošanu tiek izvēlēts otrs kods, kas nosaka signāla diskretizācijas leņķi ar frekvenci, kas atbilst zemo frekvenču grupa - rindas, periodiski ar periodu, kas atbilst diskretizācijas pulksteņa frekvencei, pirmais diskretizācijas leņķa kods tiek summēts attiecīgajā akumulatīvajā summatorā un tiek ierakstīts attiecīgajā reģistrā, kura izvade ir rezultāts, kuras vērtība atbilst tabulas šūnas adresei, kas saglabāta attiecīgajā lasāmatmiņā un kurā atrodas atbilstošās diskrētās sinusu vērtības, kas vienādi, periodiski, nosaka DTMF signāla augšējo frekvenci ar periods, kas atbilst izlases pulksteņa frekvencei, otrais diskretizācijas leņķa kods tiek summēts attiecīgajā akumulatīvajā summatorā un ierakstīts attiecīgajā reģistrā, kura izvade ir rezultāts, kura vērtība atbilst saglabātās tabulas šūnas adresei. attiecīgajā lasāmatmiņas ierīcē un kurā tiek summētas atbilstošās diskrētās sinusu vērtības, kas nosaka DTMF signāla apakšējo frekvenci, diskrētās sinusu vērtības, kas nosaka DTMF signāla augšējo un apakšējo frekvenci. uz augšu gala summatorā, nosakot DTMF signāla diskrēto vērtību un, izmantojot digitālo-analogo pārveidošanu, tiek piegādāts izejai, veidojot soli-sinusa DTMF signālu, kas atbilst DTMF signāla ievades kodam. Zināmā metode ir neefektīva, kas ir saistīts ar tās zemajiem tehniskajiem un ekonomiskajiem rādītājiem un tehnoloģiskajiem rādītājiem Tehniskos un ekonomiskos rādītājus nosaka nepieciešamās izmaksas, realizējot metodi, lai sasniegtu nepieciešamos DTMF signāliem nepieciešamos parametrus. Zināmā metodē frekvenču ģenerēšanas precizitāte ir atkarīga no koda bitu dziļuma, kas atbilst diskretizācijas leņķim, kam nepieciešams liels akumulatīvā summatora bitu platums, kas apgrūtina metodes ieviešanu ar vienkāršu aparatūru. Proti, paraugu ņemšanas leņķa kodu zināmajā metodē nosaka izteiksme K = (F/F t)32..., (1.1) kur K ir izlases leņķim atbilstošais kods; F ir ģenerētā frekvence; F t ir iztveršanas frekvence Kā redzams, ģenerētās frekvences precizitāte nepārprotami ir atkarīga no ģenerētās frekvences un iztveršanas frekvences attiecības.Lai sasniegtu nepieciešamo ģenerētās frekvences precizitāti, proti, ne sliktāku par 1,5%, acīmredzot, plkst. ir nepieciešami vismaz divi zīmīgi cipari aiz komata, kam nepieciešams uzrādīt datus ar bitu dziļumu zemākām frekvencēm vismaz 8 biti, bet augstām frekvencēm vismaz 9 biti un kumulatīvā summēšanai attiecīgi vismaz 12 biti , kas noved pie to ierīču komponentu elementu skaita palielināšanās, kuras īsteno zināmo metodi. Pazīstamām ierīcēm zināmās metodes ieviešanai, proti, summētājiem, reģistriem un pastāvīgās atmiņas ierīcēm ir ieejas/izejas ar 4 un 8 bitu platumu. Tāpēc ar lielāku bitu ietilpību, ieviešot vienlīdz funkcionālas ierīces, ir nepieciešamas papildu tehniskās un ekonomiskās izmaksas. Turklāt zināmajā metodē, samazinot decimālzīmju skaitu, rodas frekvences kļūda, kas pārsniedz pieļaujamo.Tehnoloģiskos rādītājus nosaka daudzpusība un unifikācija metodes realizācijā, piemēram, mūsdienu tehnoloģiju līmenis, kas ietver lai samazinātu materiālu, komponentu patēriņu un palielinātu ierīču daudzpusību, ir jāizmanto mikrokontrolleri. Plaši izplatītie mikrokontrolleri, ko izmanto telefonijas un telemetrijas mērījumos, izmanto 8 bitu datus un 8 bitu aritmētiski loģisko vienību, kas, ieviešot zināmo metodi, prasa papildu skaitļošanas operācijas, kas saistītas ar datu summēšanu, kuru platums ir lielāks par 8 bitiem, un analīzi. pārsūtīšanas signāls, kas palielina komandu skaitu un attiecīgi mikrokontrollera takts frekvenci, kā arī mikrokontrollera operatīvās atmiņas apjomu, kā rezultātā palielinās to ierīču izmaksas, kas izmanto zināmo DTMF ģenerēšanas metodi. signāliem. Šāds secinājums ir izdarīts, analizējot zināmās metodes izmantošanu toņu sastādītājā, kuras pamatā ir Atmel, Microchip tnc uc ražotie mikrokontrolleri. Tādējādi zināmā metode ir principiāli neefektīva, kas ir saistīts ar zemajiem tehniskajiem un ekonomiskajiem rādītājiem, kas izteikti palielinātos materiālu patēriņš, enerģijas patēriņš un zemi tehnoloģiskie rādītāji, jo tai ir ierobežojumi, izmantojot metodi, tajā skaitā kā daļu no plaši lietotiem mikrokontrolleriem, kas izpaužas kā paaugstināti mikrokontrolleriem nepieciešamie tehniskie parametri, kas samazina to daudzpusību. Tehniskajā būtībā tuvākais un sasniegtais rezultāts pieprasītajam DTMF signālu ģeneratoram ir DTMF ģeneratora signāli, kas iesniegti ASV patentā Nr. 5034977, datēts ar 04/04/89, publ. 07.23.91, M. klase. 5 N 04 M 1/00 ​​Zināmais DTMF signālu ģenerators ietver: pirmo uzkrājošo summatoru, pirmo fiksācijas reģistru, pirmo atmiņas ierīci, otro akumulācijas summētāju, otro fiksatora reģistru, otro atmiņas ierīci, galīgo summatoru, digitālais-analogais pārveidotājs, kurā pirmā akumulatīvā summatora izeja ir savienota ar pirmā fiksatora reģistra ieeju, pirmā fiksatora reģistra izeja ir savienota ar pirmās atmiņas ierīces ieeju, kā arī ar vienu no pirmā akumulējošā summatora ieejas, pirmās atmiņas ierīces izeja ir savienota ar vienu no gala summatora ieejām, otrā akumulatīvā summatora izeja ir savienota ar otrā fiksatora reģistra ieeju, otrā fiksatora izeja turēšanas reģistrs ir savienots ar otrās atmiņas ierīces ieeju, kā arī ar vienu no otrā akumulatīvā summatora ieejām, otrās atmiņas ierīces izeja ir savienota ar citu gala summatora ieeju, gala summatora izeju. ir savienots ar ciparu-analogā pārveidotāja ieeju, kura izeja ir DTMF signāla ģeneratora izeja. Zināms, ka ģenerators satur arī pirmo DTMF signālu kodu pārveidotāju atbilstošos iztveršanas leņķu kodos, kas atbilst augšējām frekvencēm DTMF signāla otrs DTMF signāla kodu pārveidotājs atbilstošos paraugu ņemšanas leņķu kodos, kas atbilst DTMF signāla zemākajām frekvencēm, un pirmā DTMF signālu kodu pārveidotāja izeja ir savienota ar citu pirmā kumulatīvā summatora ieeju, otrā DTMF signāla koda pārveidotāja izeja ir savienota ar citu otrā akumulatīvā summatora ieeju, pirmā un otrā DTMF signāla koda pārveidotāja ieejas ir DTMF signāla ģeneratora ieejas, bet pirmā un otrā fiksatora pulksteņa ieejas. reģistri ir savstarpēji savienoti un ir DTMF signāla ģeneratora iztveršanas pulksteņa frekvences ievade. Pazīstamais DTMF signāla ģenerators nodrošina zemu tehnisko rezultātu, ko izraisa pārmērīgs ķēdes elementu skaits, kas saistīts ar dažādiem, kā arī vienlīdz funkcionālu elementu pārmērīga bitu ietilpība. Turklāt zināmā tehniskā risinājuma realizācija ir efektīvi iespējama atsevišķas integrālās shēmas veidā, tomēr tam nepieciešama specializētas ražošanas organizēšana, bet ņemot vērā, ka DTMF signālu ģeneratori ir daļa no daudzfunkcionālām ierīcēm (telefona aparāti ar uzlabotām iespējām, ierīces telemetriskās informācijas pārraidīšanai pa telefona līnijām u.c.) u.c.), šobrīd tiek realizētas uz universālo mikrokontrolleru bāzes, atsevišķu DTMF signāla mikroshēmu izgatavošana ir ekonomiski neefektīva.Piedāvātā tehniskā risinājuma pamatā ir metodes izveides uzdevums. DTMF signālu ģenerēšanai, izmantojot DTMF signālu ģeneratoru, kurā, mainot nosacījumus un darbību secību, tiek ieviesta metode ar augstiem tehniski ekonomiskiem rādītājiem, līdzīgu darbību bitu kapacitātes samazināšanās dēļ, augsti tehnoloģiskie rādītāji, kad realizējot metodi gan ķēžu projektēšanā ar vienkāršu aparatūru, gan kā daļu no daudzfunkcionāla mikrokontrollera, kas saistīts ar atkārtojamību, realizējot identiskus funkcionālos elementus.Pamattehniskais risinājums, tika izvirzīts uzdevums izveidot DTMF signālu ģeneratoru, kurā ieviešot jaunus elementus un veicot jaunus pieslēgumus, tiek palielināts tehniskais rezultāts, kas saistīts ar lieko ķēdes elementu skaita samazināšanu, un attiecīgi palielināta ekonomiskā efektivitāte, kas saistīta ar iespēju realizēt piedāvāto tehnisko risinājumu ar plaši pieejamiem līdzekļiem. atrisināta ar to, ka zināmajā DTMF signālu ģenerēšanas metodē, ieskaitot pirmā un otrā paraugu ņemšanas leņķa koda izvēli, kas atbilst DTMF signāla komponentu pirmajai un otrajai frekvencei, tiek veikta pirmā un otrā koda kumulatīvā summēšana. paraugu ņemšanas leņķi atsevišķi, attiecīgi, periodiski fiksēti, ar periodu, kas atbilst diskretizācijas pulksteņa frekvencei, pirmais un otrais kumulatīvās summēšanas rezultāts, iegūstot DTMF signāla komponentu pirmo un otro diskrēto vērtību, kas saglabāta adreses šūnās. atbilstošās DTMF signāla komponentu diskrēto vērtību tabulas, nolasot no attiecīgajām tabulām adresēs, kas atbilst izlases leņķa kodu kumulatīvās summēšanas rezultātiem, summējot DTMF signāla komponentu pirmo un otro diskrēto vērtību. iegūt trešo diskrēto vērtību, kas atbilst DTMF signāla vērtībai, kas jauns ir tas, ka iegūstot pirmo un otro diskrēto DTMF signāla komponentu vērtību, kas saglabāta attiecīgo DTMF diskrēto vērtību tabulu adresējamajās šūnās. signāla komponentus veic, nolasot no attiecīgajām tabulām uz adresēm, kas atbilst attiecīgi pirmās un otrās veselu skaitļu secības kumulatīvās summēšanas rezultātiem, kuru vidējā vērtība atbilst izlases leņķu kodiem, kas atbilst komponentiem DTMF signālu. Turklāt kumulatīvās summēšanas rezultātu veidojošo veselo skaitļu secības vidējā vērtība var būt šo skaitļu vidējais aritmētiskais. Turklāt kumulatīvās summēšanas pirmā un otrā rezultāta periodiska reģistrēšana var būt ar periodu, kas atbilst paraugu ņemšanas takts frekvence, kas dažādiem DTMF signāliem ir atšķirīga.. Radīto problēmu atrisina arī tas, ka zināmajā DTMF signālu ģeneratorā, kas ietver pirmo akumulatīvo summētāju, pirmo fiksācijas reģistru, pirmo atmiņas ierīci, otro akumulācijas summētāju , otrais fiksatora reģistrs, otrā atmiņas ierīce, gala summētājs, digitālā-analogā pārveidotājs un pirmā akumulējošā summatora izeja ir savienota ar ieeju pirmais fiksatora reģistrs, ir pievienota pirmā fiksatora reģistra izeja. uz pirmās atmiņas ierīces ieeju, kā arī uz vienu no pirmā akumulatīvā summatora ieejām pirmās atmiņas ierīces izeja ir savienota ar vienu no gala summatora ieejām, otrā akumulatīvā summatora izeja ir pieslēgts pie otrā fiksatora reģistra ieejas, otrā fiksatora reģistra izeja ir savienota ar otrās atmiņas ierīces ieeju, kā arī ar vienu no otrā akumulatīvā summatora ieejām, otrās atmiņas ierīces izeja ir savienots ar citu gala summatora ieeju, gala summatora izeja ir savienota ar ciparu-analogā pārveidotāja ieeju, kura izeja ir DTMF signāla ģeneratora izeja, jauna, saskaņā ar Izgudrojums ir tāds, ka DTMF signālu ģenerators papildus satur DTMF signālu kodu pārveidotāju veselu skaitļu secībā, DTMF signālu ģeneratora atsauces frekvences dalītāju ar regulējamu dalījuma koeficientu, DTMF signālu kodu pārveidotāju dalīšanas koeficienta kodā un pirmo. DTMF signāla kodu pārveidotāja izeja veselu skaitļu skaitļu secībā ir savienota ar citu pirmā akumulējošā summatora ieeju, DTMF signāla kodu pārveidotāja otrā izeja veselu skaitļu secībā ir savienota ar otru otrā akumulējošā summatora ieeju, DTMF signāla ģeneratora galvenā frekvences dalītāja izeja ar regulējamu dalījuma koeficientu ir savienota ar DTMF signāla koda pārveidotāja pulksteņa ieeju veselu skaitļu secībā , kā arī ar pirmā fiksatora reģistra pulksteņa ieeju un pulksteni otrā fiksatora reģistra ieeja, DTMF signāla koda pārveidotāja izeja dalīšanas koeficienta kodā ir savienota ar DTMF signāla ģeneratora galvenā frekvences dalītāja dalījuma koeficienta iestatīšanas ieeju, DTMF signāla ģeneratora galvenā frekvences dalītāja ieeju. DTMF signālu ģenerators ar regulējamu dalījuma koeficientu ir DTMF signālu ģeneratora atsauces frekvences ievade, DTMF signālu kodu pārveidotāja ieeja dalīšanas koeficienta kodā ir savienota ar DTMF signālu kodu pārveidotāja ieeju secībā veseli skaitļi un ir DTMF signāla ģeneratora ievade. Turklāt DTMF signālu kodu pārveidotāju veselu skaitļu secībās var izveidot vadāmas programmējamas atmiņas ierīces veidā, kuras atmiņu veido atbilstoši DTMF signālu skaitam atmiņas apgabali, kas sastāv no atmiņas šūnām, kas atbilst veselu skaitļu secības garums, atmiņas šūnas, kas veidotas tā, lai viena atmiņas šūnas puse saglabātu skaitli, kas ir saistīts ar pirmo veselo skaitļu secību, bet otrā atmiņas šūnas puse glabā skaitli, kas attiecīgi saistīts ar citu veselu skaitļu secību, ir atbilstošo akumulatīvo papildinātāju termini, un programmējamās atmiņas ierīces vadība ir konfigurēta, lai kontrolētu atsevišķi atmiņas apgabalu un atsevišķu atmiņas šūnu Jaunas DTMF signālu ģenerēšanas metodes un DTMF signālu ģeneratora iespējas kopā ar zināmo šo objektu pazīmes, nodrošina jaunas objektu tehniskās īpašības, un šo īpašību rezultātā tiek nodrošināts jauns nepieciešamais tehniskais rezultāts Cēloņ-seku sakarība starp pazīmju kopumu Piedāvātā metode un sasniegtais tehniskais rezultāts ir paskaidrots šādi.Lai atklātu piedāvātā tehniskā risinājuma būtību, ērti būs šādi aprēķini: y(P)=sin(n) (1.2), kur y(P) ir sinusa funkcijas diskrētā vērtība;=wT =27F/Fr (1.3) - paraugu ņemšanas leņķis, mērīts radiānos; n - parauga sērijas numurs - paraugs; F t = F OSC / kd - iztveršanas pulksteņa frekvence, kur F OSC - ierīces iestatīšanas frekvence; kd - regulējams dalīšanas koeficients. Tad = 2FC D / F O S C . (1.4) Kā zināms, sinusa funkcija ir periodiska ar periodu 2. Lai pārveidotu paraugu ņemšanas leņķi no radiāniem uz relatīvām vienībām un iegūtu izlases leņķa kodu, mēs sadalām visu periodu m daļās, kur m ir binārs. vesels skaitlis. Tādējādi mēs iegūstam vienu minimālo diskrētu perioda daļu: = 2/m. (1.5) Izlases leņķa kods ir paraugu ņemšanas leņķa relatīvā vērtība saskaņā ar vienu perioda daļu, proti, K=/=2F/F t: 2P/m=Fm/F t. (1.6) Piemēram, ģenerētajām frekvencēm 1477 Hz un 697 Hz (atbilst DTMF signāla kodam “3”) ar m = 64 un pulksteņa frekvenci F t = 32768 Hz K 697 = 1,36; K l477 = 2,88. Acīmredzot binārajam paraugu ņemšanas leņķa koda displejs attiecīgi K 697 =1,36 V, 136 nepieciešami 8 biti (1281+640+320+160+81+40+20+10) un attiecīgi K 1477 =2,88 V, 288 nepieciešami 9 biti ( 2561+1280+640+321+ 160+80+40+ 20+10).Tajā pašā laikā kumulatīvai summēšanai, attiecīgi, binārajā attēlojumā nepieciešami 12 biti, kas noteica iepriekš aprakstītos zināmo trūkumus. risinājums. Piedāvātais tehniskais risinājums definē, piemēram, skaitli 1,36 kā veselu skaitļu 1 un 2 virknes vidējo vērtību, proti, 1,36=(1x+2y)/(x+y), kur x un y ir skaitļu 1 skaits. un attiecīgi 2 , periodiski atkārtojot ar punktu (x+y).Iztveršanas leņķa koda vērtība sastāv no veselas skaitļa daļas C un daļskaitļa, t.i. piemēram, 1,36=1+0,36. Šādas aizstāšanas relatīvā precizitāte saskaņā ar izteiksmi (1.7) = K/C (1.7) palielinās, palielinoties izlases leņķa koda vērtības veselajai daļai. Piemēram, ģenerētajai frekvencei 697 Hz, m = 64 un pulksteņa frekvencei F t = 32768 Hz, kļūda, aizstājot K 697 = 1,36 ar skaitļu 1 un 2 vērtībām, ir attiecīgi 36 un 32%. . Tajā pašā laikā, ja palielināsit vērtību m = 256, kļūda, aizstājot K 697 = 5,45 ar skaitļu 5 un 6 vērtībām, samazinās attiecīgi par 9 un 10%. Tajā pašā laikā ģenerētās frekvences kļūda, piemēram, aizvietojot K 697 = 5,45 ar skaitļu 5 un 6 vērtībām atkārtošanās periodā, kas vienāda ar 16, 5,45=(5x+6y)/(x+y), kur ( x+y)=16.Atrisinot vienādojumu, iegūstam x=9, y=7, t.i. no sešpadsmit kumulatīvām summēšanas operācijām 5. termins tiek summēts deviņas reizes un 6. termins tiek summēts septiņas reizes, savukārt faktiski K 697 = 5,4375, aizstājot šo vērtību izteiksmē (1,6) ar m = 256, F t = 32768 Hz, mēs nosakām ģenerētās frekvences faktiskā aprēķinātā vērtība F = 696 Hz, savukārt kļūda saglabājās 0,1% Līdz ar to veselu skaitļu virknes kumulatīvā summēšana, kuras vidējā vērtība atbilst attiecīgajiem izlases leņķiem, ļauj sasniegt augstus tehniskos un ekonomiskos rādītājus. indikatorus, samazinot kumulatīvās summēšanas operāciju bitu ietilpību, pateicoties iespējai variēt iepriekšminēto izteiksmju komponentus, un attiecīgi samazinot piedāvāto metodi ieviešošo ierīču bitu ietilpību, kas noved pie aparatūras un enerģijas izmaksu samazināšanās metodes ieviešanā. , un nodrošināt piedāvātās metodes augstu tehnoloģisko veiktspēju, ja to izmanto daudzfunkcionālās ierīcēs samazinātu tehnisko prasību dēļ Cēloņ-seku sakarība starp komplektu Piedāvātā tehniskā risinājuma un sasniegtā tehniskā rezultāta raksturojums tiek skaidrots šādi. DTMF signāla ģeneratora augsto tehnisko rezultātu nodrošina jaunu DTMF signāla koda pārveidotāja elementu ieviešana veselu skaitļu secībā, DTMF signālu ģeneratora atsauces frekvences dalītāju ar regulējamu dalījuma koeficientu, DTMF signāla koda pārveidotāju dalītāja koeficientā. kods, kas nodrošina metodes ieviešanu ar ķēdes elementiem ar vienādu bitu dziļumu, nepārsniedzot 8 bitus, vienlaikus nepastāvot elementu redundancei, kas nepieciešama vairāku problēmu risināšanai, piemēram, gan kumulatīvās summēšanas rezultāta fiksēšanai, gan adresē atbilstošo atmiņas ierīci, tiek izmantots vienāds bitu skaits, kas nav realizēts vairāk par 8 bitu reģistru, ko var realizēt ar publiski pieejamiem līdzekļiem vienas mikroshēmas vai mikroprocesora versijā vienas mikroshēmas veidā. atmiņas šūna. Turklāt akumulatīvo summētāju realizāciju var veikt identisku ierīču veidā, ar vienādu bitu dziļumu, publiski pieejamu summatoru mikroshēmu veidā, kas darbojas ar 4 bitu addendiem.Protams, ka ir saprotams, ka skaitļi un , attiecīgi ierīces, kas veido iepriekš aprakstītās veselo skaitļu virknes, kuru kopums nosaka atbilstošos paraugu ņemšanas leņķu kodus, var būt ar atšķirīgu bitu dziļumu, bet visoptimālākās, no izvirzīto mērķu izpildes viedokļa. piedāvātais risinājums, ir 4 bitu skaitļi.Turklāt augsts tehniskais rezultāts tiek nodrošināts arī realizējot piedāvāto tehnisko risinājumu mikrokontrolleru sastāvā, kur sistēmas mikrokontrollera komandās obligāti ir iekļautas komandas, kas darbojas ar 4 bitu skaitļiem – nibbles. piedāvātais DTMF signālu ģeneratora tehniskais risinājums ļauj sasniegt augstus tehniskos rezultātus, kas saistīti ar ķēdes elementu skaita samazināšanu, kā arī nodrošina daudzpusību, ieviešot DTMF signālu ģeneratoru kā publiski pieejamu aparatūru un kā daļu no daudzfunkcionālajiem mikrokontrolleriem, kas nosaka tehniskā risinājuma augsta ekonomiskā efektivitāte.Izgudrojums ir ilustrēts zīmējumā, kur 1.att. funkcionāli parādīts DTMF signālu ģenerators, kas realizē DTMF signālu ģenerēšanas metodi.DTMF signālu ģenerators ietver DTMF signālu kodu pārveidotāju 1 veselos skaitļos. , DTMF signāla ģeneratora ar regulējamu dalījuma koeficientu atsauces frekvences dalītājs 2, DTMF signāla kodu pārveidotājs 3 dalīšanas koeficienta kodā, pirmais akumulatīvais summētājs 4, pirmais fiksatora reģistrs 5, pirmā atmiņas ierīce 6, otrā atmiņas ierīce 7, otrais fiksatora reģistrs 8, otrais akumulatīvais summators, gala summators 10, digitālais-analogais pārveidotājs 11. DTMF signālu ģeneratora darbību ilustrē DTMF signālu ģenerēšanas metodes ieviešanas piemērs. par izteiksmēm (1.4, 1.6) un tehniskajiem datiem, jo ​​īpaši par ierīces iestatīšanas frekvenci, kurā tiks ieviesta piedāvātā metode, tiek aprēķinātas veselu skaitļu secības, nosakot atbilstošos izlases leņķu kodus un dalījuma koeficientu kodus dalītājam 2 DTMF signālu ģeneratora atsauces frekvences ar regulējamu dalījuma koeficientu, kas ierakstītas DTMF signālu kodu pārveidotāja 1. atmiņas apgabalu attiecīgajās šūnās veselu skaitļu secībā un DTMF signālu kodu pārveidotāja 3. koeficientu kodiem, tiek iepriekš aprēķinātas arī atbilstošo sinusa funkciju diskrētās vērtības, kuru skaitu nosaka diskrētu m skaits, un tiek ierakstītas atbilstošajās atmiņās 6 un 7, ģenerējot DTMF signālu, pie pārveidotāja 1 un pārveidotāja 3 ieejas, kas ir ģeneratora ieejas, kādu laiku darbojas DTMF signāls, tiks iestatīts ģenerētā DTMF signāla kods, pārveidotāja 3 izejā tiks iestatīts kods, kas nosaka dalījuma koeficientu. dalītājam 2, savukārt pie dalītāja 2 izejas diskretizācijas pulksteņa frekvence tiks iestatīta periodiski, ar periodu, kas atbilst iztveršanas pulksteņa frekvencei, no pārveidotāja 1 pirmās izejas būs binārie skaitļi, kas iekļauti pirmajā veselo skaitļu secībā tiks piegādāts uz pirmā akumulatīvā summatora 4 ieeju, un no pārveidotāja 1 otrās izejas binārie skaitļi, kas iekļauti otrajā veselo skaitļu secībā, kas atbilst DTMF signāla komponentiem, tiks piegādāti otrā akumulatīvā ieejai. summators 9, akumulatīvās summēšanas rezultāti tiek piegādāti no akumulatīvo summatoru izejām uz atbilstošo fiksācijas reģistru 5 un 8 ieejām, no fiksatora reģistra 5 un 8 izvadiem, akumulatīvās summēšanas rezultāti, ar a. periods, kas atbilst iztveršanas pulksteņa frekvencei, tiek nosūtīti uz citām atbilstošo akumulācijas summatoru 4 un 9 ieejām, kā arī uz atbilstošo atmiņas ierīču 6 un 7 ieejām, iestatot diskrēto sinusu vērtību adreses. atbilstošās DTMF signāla komponentes no atmiņas ierīču 6 un 7 izejām, atbilstošo DTMF signāla komponentu diskrētās vērtības tiek piegādātas gala summatora 10 atbilstošajām ieejām, kuru izejā veidojas binārais DTMF signāls, kas tiek padots uz ciparu-analogā pārveidotāja 11 ieeju, kura izeja ģenerē pakāpju sinusoidālu DTMF signālu, kas atbilst DTMF signāla ieejas kodam. DTMF signāla kodu pārveidotāju 1 veselu skaitļu secībā (1. att.) var izveidot 2. attēlā parādītajā formā, kur DTMF signāla kodu pārveidotājs veselu skaitļu secībā ietver vadības ierīci 12, programmējamu atmiņu. ierīce 13. DTMF signālu ģeneratora darbība ir ilustrēta Zemāk ir konkrēts piemērs piedāvātās metodes realizācijai telefona balss frekvenču sastādītājā.Iepriekš, pamatojoties uz izteiksmēm (1.4, 1.6) un tehniskajiem datiem, veselu skaitļu secības ir aprēķina, kas nosaka atbilstošos paraugu ņemšanas leņķu kodus un dalījuma koeficienta kodus DTMF signālu ģeneratora ar regulējamu dalījuma attiecību atsauces frekvences dalītājam 2. Ņemot vērā, ka metodes realizācija ietver tāda paša veida aprēķinus, lai ilustrētu darbu, konkrēts piemērs parāda DTMF signāla ģenerēšanas metodes ieviešanu, kas atbilst taustiņa “7” nospiešanai kā daļa no toņa impulsa numura sastādītāja. Kā ģeneratora atsauces frekvence ir iestatīta telefontehnoloģijās visizplatītākā kvarca frekvence, proti, F OSC =3579545 Hz. Taustiņa “7” nospiešana atbilst DTMF signālam ar augšējo (kolonnu) frekvenci 1209 Hz un zemāko (rindu) frekvenci 852 Hz. Tā kā DTMF signāls vienlaikus pārraida divas frekvences, dalījuma koeficienti tiek aprēķināti lielākajai - augšējai frekvencei tā, lai atbilstošais diskretizācijas leņķa kods saskaņā ar izteiksmi (1.6) būtu tuvu maksimālajai vērtībai - 16, kas tiek realizēta ne vairāk kā 4 bitu dati. Tādējādi ar F OSC = 3579545 Hz, sinusu diskrēto vērtību skaits m = 128, aprēķinātās dalījuma koeficienta vērtības DTMF signālu ģeneratora atsauces frekvences dalītājam 2 ar regulējamu dalījuma koeficientu K D = 240 = 460, savukārt augšējai frekvencei atbilstošie diskretizācijas leņķu kodi ir K 1209 /852 =10,376, zemākajai frekvencei K 852/1209 =7,312.Saskaņā ar izgudrojumu paraugu ņemšanas leņķu kodus attiecīgi aizstājam ar veselu skaitļu sekvencēm. 10/11 un 7/8.10.375 = (10x+11y)/(x+y), bet faktiski K 1209/852 = 10.3757.312 = (7x+8y)/(x+y), bet patiesībā K 952/1209 = 7,313, ar (x+y) = 16. Tādējādi 10,375 tiek aizstāts ar periodiski atkārtotu veselu skaitļu secību 10 x 10 reizes un 11 x 6 reizes, un 7,312 tiek aizstāts ar 7 x 11 reizēm un 8 x 5 reizes. Atmiņas apgabals DTMF signāla kodam “7” binārajā attēlojumā ir šāds:
Tādā veidā tiek aprēķinātas sešpadsmit tabulas, kas atbilst DTMF signālu kodiem, proti, 0, 1, 2...9, *, #, A, B, C, D, un iepriekš tiek ierakstītas programmējamās atmiņas ierīces atmiņā. 13 (DTMF rakstzīmju koda pārveidotājs veselu skaitļu sekvencēs). Nospiežot taustiņu, piemēram, “7” pie ģeneratora ievades uz DTMF signāla laiku, tiek parādīts DTMF signāla binārais kods “7” (0111). komplektā, DTMF signāla koda pārveidotājs 3 dalīšanas koeficientā pārveido DTMF signāla kodu koeficienta kodā dalot kd ģeneratora atsauces frekvences dalītājam 2 ar regulējamu dalījuma koeficientu, iztveršanas pulksteņa frekvenci F t =F OSC /K D tiks iestatīts pie dalītāja 2 izejas. DTMF signāla kods nonāk arī programmējamās atmiņas ierīces 13 (DTMF signāla kodu pārveidotājs veselu skaitļu sekvencēs) nozīmīgāko bitu adreses ieejās un atrodas tur DTMF signāla darbības laikā. Vadāmā ierīce 12, kas izgatavota, piemēram, skaitītāja formā (DTMF signāla kodu pārveidotājs veselu skaitļu secībā), pulksteņa signālu ar frekvenci t ietekmē cikliski maina savu vērtību uz paralēlajām izejām secīgi no 0000 uz 1111, attiecīgi mainot programmējamās atmiņas ierīces 13 (DTMF signāla kodu pārveidotājs veselu skaitļu virknē) zemas kārtas bitu adrešu ieejas vērtības, izejā parādās 8 bitu (baitu) cipari. programmējamā atmiņas ierīce 13 ar diskretizācijas takts frekvenci, un saskaņā ar 1. tabulu nozīmīgākie četri biti (visnozīmīgākais nibble) veido veselu skaitļu secību, kuru kopums, proti, vidējais aritmētiskais, nosaka izlases leņķa kodu. kas atbilst augšējai (kolonnu) frekvencei, un vismazāk nozīmīgie četri biti (low nibble) veido veselu skaitļu secību, kuru kopums, proti, vidējais aritmētiskais, nosaka izlases leņķa kodu, kas atbilst zemākajai (rindas) frekvencei, četri- bitu dati, saskaņā ar 1. tabulu, no programmējamās atmiņas ierīces 13 (DTMF signāla kodu pārveidotāja veselu skaitļu secībā) izejas tiek atsevišķi piegādāti atbilstošo akumulatīvo summatoru 4 un 9 ieejām pie atmiņas ierīces izejām. atbilstošiem summētājiem 4 un 9 dati mainās ar iztveršanas takts frekvenci no 0 līdz m (šajā gadījumā m=128), nosakot un fiksējot ar turēšanas reģistriem 5 un 8 adreses glabāšanas ierīcēm 6 un 7, kurās bināri diskrēti. attiecīgi tiek ierakstītas atbilstošo DTMF signāla sinusoidālo komponentu vērtības, no izejas glabāšanas ierīcēm 6 un 7 DTMF signāla atbilstošo sinusoidālo komponentu binārās diskrētās vērtības tiek piegādātas gala summatora 10 atbilstošajām ieejām. , kuras izejā tiek veidotas bināras diskrētas DTMF signāla vērtības, kuras pēc tam tiek piegādātas ciparu-analogā pārveidotāja 11 ieejā, kura izejā tiek ģenerēts pakāpju sinusoidāls DTMF signāls. DTMF signālu ģeneratoru var realizēt, pamatojoties uz labi zināmiem tehniskajiem līdzekļiem, kas aprakstīti, piemēram,: Integrālo shēmu pielietojums elektroniskajā datortehnoloģijā. Rokasgrāmata / Red. B.N. Fayzulaeva, B.V. Tarabrina. - M.: Radio and Communications, 1986. Šajā gadījumā DTMF signālu kodu pārveidotāju 3 dalīšanas koeficientu kodos var izgatavot, piemēram, lasāmatmiņas mikroshēmas 155PE 3 formā (343. lpp.), reģistru ieviešana ir aprakstīta lpp. 108, akumulatīvo summatoru ieviešana ir aprakstīta lpp. 114. Izgudrojuma metode un DTMF signālu ģenerators ir ieviesti arī uz Microchip Inc. aparatūras bāzes. (8 bitu vienas mikroshēmas pic16f628 tipa mikrokontrolleri), kas ir daļa no pulsa toņu tālruņa zvanītāja “Kadran - NKT - 01”, ko ražo uzņēmums “Kadran” (Ukraina, Zaporožje). Komandu sistēma un mikrokontrollera mezglu iekšējā struktūra ir aprakstīta: Prokopenko B.Ya. Viena mikroshēmas mikrokontrolleri. Dodeka, 2000, ISBN8-87835-056-4.DTMF signāla parametru apraksts ir dots, piemēram: Integrētās shēmas: Mikroshēmas telefonijai. 1. izdevums. - M.: Dodeka, 1994, 256 lpp. - ISBN-5-87835-003-3., lpp. 12, 13.

PRETENZIJA

1. Metode divu toņu frekvences (DTMF) signālu ģenerēšanai, kas ietver pirmā un otrā diskretizācijas leņķa koda atlasi, kas atbilst DTMF signāla komponentu pirmajai un otrajai frekvencei, kumulatīvi atsevišķi summējot pirmo un otro diskretizācijas leņķa kodu ar attiecīgi periodiski. fiksēti periodi, kas atbilst iztveršanas pulksteņa frekvencei, pirmais un otrais kumulatīvās summēšanas rezultāts, iegūstot DTMF signāla komponentu pirmo un otro diskrēto vērtību, kas saglabāta atbilstošo diskrēto vērtību tabulu šūnās, kas atrodas adreses. DTMF signāla komponentus, nolasot no attiecīgajām tabulām adresēs, kas atbilst izlases leņķa kodu kumulatīvās summēšanas rezultātiem, summējot DTMF signāla komponentu pirmo un otro diskrēto vērtību, lai iegūtu trešo diskrēto vērtību, kas atbilst vērtībai DTMF signāla, kas raksturīgs ar to, ka DTMF signāla komponentu pirmās un otrās diskrētās vērtības, kas saglabātas attiecīgo DTMF signāla komponentu diskrēto vērtību tabulu adresējamajās šūnās, tiek iegūtas, nolasot no attiecīgajām tabulām adreses , kas atbilst attiecīgi pirmās un otrās veselu skaitļu virknes kumulatīvās summēšanas rezultātiem, kuru vidējā vērtība atbilst paraugu ņemšanas leņķu kodiem, atbilstošām DTMF signāla sastāvdaļām.2. 2. Metode saskaņā ar 1. pretenziju, kas raksturīga ar to, ka kumulatīvās summēšanas rezultātu veidojošo veselo skaitļu secības vidējā vērtība ir šo skaitļu vidējais aritmētiskais.3. 2. Metode saskaņā ar 1. pretenziju, kas raksturīga ar to, ka pirmais un otrais kumulatīvās summēšanas rezultāts tiek periodiski ierakstīts ar periodu, kas atbilst diskretizācijas pulksteņa frekvencei, kas dažādiem DTMF signāliem ir atšķirīga.4. DTMF signāla ģenerators, kas ietver pirmo akumulatīvo summatoru, pirmo fiksatora reģistru, pirmo atmiņas ierīci, otro akumulatīvo summatoru, otro fiksatora reģistru, otro atmiņas ierīci, galīgo summētāju, digitālo-analogo pārveidotāju, kur pirmā akumulatīvā summatora izeja ir savienota ar pirmā fiksatora reģistra ieeju, pirmā fiksatora reģistra izeja ir savienota ar pirmās atmiņas ierīces ieeju, kā arī ar vienu no pirmā akumulatīvā summatora ieejām, pirmās atmiņas ierīces izeja ir savienota ar vienu no gala summatora ieejām, otrā akumulatīvā summatora izeja ir savienota ar otrā fiksatora reģistra ieeju, otrā fiksatora reģistra izeja ir pievienota otro atmiņas ierīci, kā arī ar vienu no otrā akumulējošā summatora ieejām otrās atmiņas ierīces izeja ir savienota ar citu gala summatora ieeju, gala summatora izeja ir savienota ar ciparu- analogais pārveidotājs, kura izeja ir DTMF signālu ģeneratora izeja, kas raksturīgs ar to, ka DTMF signālu ģenerators papildus satur DTMF signālu pārveidotāja kodus veselu skaitļu secībā, DTMF signālu ģeneratora atsauces frekvences dalītāju. ar regulējamu dalījuma koeficientu, DTMF signālu kodu pārveidotājs dalīšanas koeficienta kodā, kur DTMF signālu kodu pārveidotāja pirmā izeja veselu skaitļu secībā ir savienota ar citu pirmā akumulējošā summatora ieeju, otrā DTMF signālu pārveidotāja kodi veselu skaitļu secībā ir savienoti ar citu otrā akumulējošā summatora ieeju, DTMF signālu ģeneratora iestatītā frekvences dalītāja izeja ar regulējamu dalījuma koeficientu ir savienota ar kodu pārveidotāja pulksteņa ieeju. DTMF signāliem veselu skaitļu secībā, kā arī pirmā fiksatora reģistra pulksteņa ieejai un otrā turēšanas reģistra pulksteņa ieejai, DTMF signāla koda pārveidotāja izeja dalīšanas koeficienta kodā ir savienota ar iestatīšanas ieeju. DTMF signālu ģeneratora atsauces frekvences dalītāja dalīšanas koeficients, DTMF signālu ģeneratora atsauces frekvences dalītāja ieeja ar regulējamu dalījuma koeficientu ir DTMF signālu ģeneratora atsauces frekvences ievade, DTMF signāla koda pārveidotāja ieeja dalīšanas koeficienta kods ir savienots ar DTMF signāla koda pārveidotāja ieeju veselu skaitļu secībā un ir DTMF signāla ģeneratora ieeja. 5. DTMF signālu ģenerators saskaņā ar 4. punktu, kas raksturīgs ar to, ka DTMF signālu koda pārveidotājs veselu skaitļu secībā ir izveidots vadāmas programmējamas atmiņas ierīces veidā, kuras atmiņa sastāv no atbilstoši DTMF signālu skaitam. , atmiņas apgabali, kas sastāv no šūnām, kas atbilst veselu skaitļu atmiņas garumam, kas veidotas tā, lai vienā atmiņas šūnas pusē tiktu saglabāts skaitlis, kas saistīts ar pirmo veselo skaitļu secību, un atmiņas šūnas otrā pusē numurs tiek saglabāts atbilstoši citai veselu skaitļu secībai, kas ir atbilstošo akumulatīvo summatoru termini, un tiek veikta programmējamās atmiņas ierīces vadība ar iespēju atsevišķi kontrolēt atmiņas apgabala un atsevišķas atmiņas šūnas izvēli.

Tonālo numuru sastādīšanu (Dual-tone multi-frekvenču signalizācija, DTMF) izstrādāja Bell Labs pagājušā gadsimta 50. gados toreiz revolucionārajam spiedpogu tālrunim. Lai attēlotu un pārraidītu digitālos datus toņu režīmā, tiek izmantots runas frekvenču diapazona frekvenču (toņu) pāris. Sistēma definē divas četru frekvenču grupas, un informācija tiek kodēta, vienlaikus pārraidot divas frekvences, pa vienai no katras grupas. Tādējādi tiek iegūtas sešpadsmit kombinācijas, kas attēlo sešpadsmit dažādus ciparus, simbolus un burtus. DTMF kodējums tagad tiek izmantots plašā sakaru un vadības lietojumu klāstā, par ko liecina, piemēram, Starptautiskās Telekomunikāciju savienības (ITU) ieteikums Q.23.

Šajā rakstā ir aprakstīta DTMF toņu ģeneratora shēma, kas atveido visas astoņas frekvences un ģenerē iegūto divu toņu izejas signālu. Attiecīgā sistēma tika veidota, izmantojot Silego GreenPAK™ SLG46620V mikroshēmu un Silego SLG88104V darbības pastiprinātājus. Iegūtais signāls ir divu frekvenču summa, ko nosaka tālruņa tastatūras rinda un kolonna.

Piedāvātā shēma izmanto četras ieejas, lai izvēlētos ģenerējamo frekvenču kombināciju. Ķēdei ir arī iespējošanas ieeja, kas aktivizē ģenerēšanu un nosaka signāla pārraidīšanas laiku. Ģeneratora izejas frekvence atbilst ITU standartam DTMF.

DTMF toņi

DTMF standarts definē ciparu 0-9, burtu A, B, C un D, ​​kā arī rakstzīmju * un # kodējumu kā divu frekvenču kombināciju. Šīs frekvences ir sadalītas divās grupās: augstfrekvences grupa un zemas frekvences grupa. 1. tabulā parādītas frekvences, grupas un atbilstošie simbolu attēlojumi.

1. tabula. DTMF toņu kodēšana

Treble grupa

Zemās caurlaides grupa

Frekvences tika izvēlētas, lai izvairītos no vairākām harmonikām. Turklāt to summa vai atšķirība neizraisa atšķirīgu DTMF frekvenci. Tādā veidā tiek novērsti harmonikas vai modulācijas traucējumi.

Q.23 standarts nosaka, ka katras pārraidītās frekvences kļūdai jābūt ±1,8% robežās no nominālās vērtības, un kopējam kropļojumam (harmonikas vai modulācijas dēļ) jābūt par 20 dB zem pamatfrekvences.

Iepriekš aprakstīto iegūto signālu var raksturot šādi:

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

kur fhigh un flow ir atbilstošās frekvences no augsto un zemo frekvenču grupām.

1. attēlā parādīts iegūtais signāls ciparam "1". 2. attēlā parādīts šim signālam atbilstošais frekvenču spektrs.

Rīsi. 1. DTMF tonis

Rīsi. 2. DTMF toņu spektrs

DTMF signālu ilgums var atšķirties atkarībā no konkrētās lietojumprogrammas, kas izmanto toņu kodēšanu. Visbiežāk lietotajām lietojumprogrammām ilguma vērtības parasti ir starp manuālo un automātisko numuru sastādīšanu. 2. tabulā parādīts kopsavilkums par tipisko laika ilgumu diviem darbā pieņemšanas veidiem.

2. tabula. Tonālo zvanu signālu ilgums

Numura veids

Treble grupa

Treble grupa

Manuālā numura sastādīšana

Automātiskā numura sastādīšana

Lai nodrošinātu lielāku elastību, šajā rokasgrāmatā piedāvātais DTMF ģenerators ir aprīkots ar iespējošanas ieeju, ko izmanto signāla ģenerēšanas sākšanai un tā ilguma noteikšanai. Šajā gadījumā signāla ilgums ir vienāds ar impulsa ilgumu iespējošanas ieejā.

DTMF ģeneratora ķēdes analogā daļa

ITU ieteikums Q.23 definē DTMF signālus kā analogus signālus, ko rada divi sinusoidālie viļņi. Ierosinātajā DTMF ģeneratora shēmā Silego GreenPAK SLG46620V IC ģenerē kvadrātviļņu signālus ar vēlamajām DTMF frekvencēm. Lai iegūtu vajadzīgās frekvences sinusoidālos signālus un izveidotu iegūto signālu (divu sinusoidālo viļņu summu), ir nepieciešami analogie filtri un summators. Šī iemesla dēļ šajā projektā tika nolemts izmantot filtrus un kombinatoru, pamatojoties uz SLG88104V darbības pastiprinātājiem.

3. attēlā parādīta ierīces piedāvātās analogās daļas struktūra.

Rīsi. 3. Analogās apstrādes shēma DTMF signāla uztveršanai

Analogos filtrus izmanto, lai iegūtu sinusoidālus signālus no taisnstūrveida impulsiem. Pēc filtrēšanas abi signāli tiek summēti un tiek ģenerēts vēlamais izejas divu toņu DTMF signāls.

4. attēlā parādīts Furjē transformācijas rezultāts, ko izmanto kvadrātviļņu signāla spektra iegūšanai.

Rīsi. 4. Kvadrātviļņu signāla spektrs

Kā redzat, kvadrātveida vilnis satur tikai nepāra harmonikas. Ja mēs attēlojam šādu signālu ar amplitūdu A Furjē sērijas formā, tad tam būs šāda forma:

Šīs izteiksmes analīze ļauj secināt, ka, ja analogajiem filtriem ir pietiekams harmonikas vājinājums, tad ir pilnīgi iespējams iegūt sinusoidālus signālus ar frekvenci, kas vienāda ar sākotnējā kvadrātveida viļņa signāla frekvenci.

Ņemot vērā Q.23 standartā noteikto traucējumu līmeņa pielaidi, ir jānodrošina, lai visas harmonikas tiktu vājinātas par 20 dB vai vairāk. Turklāt jebkura frekvence no zemas caurlaidības grupas ir jāapvieno ar jebkuru frekvenci no augstfrekvences grupas. Ņemot vērā šīs prasības, tika izstrādāti divi filtri, pa vienam katrai grupai.

Abi filtri bija zemas caurlaidības Butterworth filtri. Pasūtījuma n Batervorta filtra vājinājumu var aprēķināt šādi:

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

kur fc ir filtra izslēgšanas frekvence, n ir filtra secība.

Vājināšanās starpība starp katras grupas zemāko un augstāko frekvenci nedrīkst būt lielāka par 3 dB, tāpēc:

A(fHIGHER)[dB] - A(ZIEDS)[dB] > 3 dB.

Dotās absolūtās vērtības:

A(fHIGHER) 2 / A(FLOWER) 2 > 2.

Tāpat, kā jau teicām iepriekš, harmoniskajam vājinājumam jābūt 20 dB vai vairāk. Šajā gadījumā sliktākajā gadījumā būs zemākā frekvence grupā, jo tās 3. harmonika ir zemākā frekvence un ir vistuvāk filtra nogriešanas frekvencei. Ņemot vērā, ka 3. harmonika ir 3 reizes mazāka par pamata harmoniku, filtram jāatbilst nosacījumam (absolūtās vērtības):

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

Ja šie vienādojumi tiek piemēroti abām grupām, tad izmantotajiem filtriem ir jābūt otrās kārtas filtriem. Tas nozīmē, ka tiem būs divi rezistori un divi kondensatori, ja tie tiks ieviesti, izmantojot darbības pastiprinātājus. Ja tiktu izmantoti trešās kārtas filtri, jutība pret komponentu pielaidēm būtu mazāka. Atlasītās filtra robežfrekvences ir 977 Hz zemo caurlaidību grupai un 1695 Hz augstfrekvences grupai. Pie šīm vērtībām signāla līmeņu atšķirības frekvenču grupās atbilst iepriekš minētajām prasībām, un jutīgums pret izslēgšanas frekvences izmaiņām komponentu pielaides dēļ ir minimāls.

Izmantojot SLG88104V realizēto filtru shematiskās diagrammas ir parādītas 5. attēlā. Pirmā R-C pāra reitingi ir izvēlēti tā, lai ierobežotu SLG46620V mikroshēmas izejas strāvu. Otrā filtra saite nosaka pastiprinājumu, kas ir 0,2. Kvadrātviļņu signālu amplitūda nosaka darbības pastiprinātāja darbības punktu uz 2,5 V. Nevēlamo spriegumu bloķē izejas filtra kondensatori.

Rīsi. 5. Izejas filtru shematiskās diagrammas

Izejā filtra signāli tiek summēti, un iegūtais signāls ir harmoniku summa, kas atlasīta no zemo un augsto frekvenču grupas. Lai kompensētu filtra vājināšanos, izejas signāla amplitūdu var regulēt, izmantojot divus rezistorus R9 un R10. 6. attēlā parādīta summatora ķēde. 7. attēlā parādīta visa shēmas analogā daļa.

Rīsi. 6. Summētāja shematiskā diagramma

Rīsi. 7. Ķēdes analogā daļa

DTMF toņu ģeneratora ķēdes digitālā daļa

DTMF toņu ģeneratora shēmas digitālajā daļā ietilpst vesels kvadrātviļņu ģeneratoru komplekts - viens katrai DTMF frekvencei. Tā kā šo ģeneratoru izveidošanai ir nepieciešami astoņi skaitītāji, to ieviešanai tika izvēlēta GreenPAK SLG46620V mikroshēma. Digitālās shēmas izejās tiek ģenerēti divi taisnstūrveida signāli, pa vienam katrai frekvenču grupai.

Kvadrātviļņu signāli tiek ģenerēti, izmantojot skaitītājus un D flip-flops, un to darbības cikls ir 50%. Šī iemesla dēļ skaitītāja pārslēgšanas frekvence ir divreiz lielāka par nepieciešamo DTMF frekvenci, un DFF flip-flop sadala izejas signālu divās daļās.

Skaitītāju pulksteņa avots ir iebūvēts 2 MHz RC oscilators, kura frekvence vēl tiek dalīta ar 4 vai 12. Dalītājs tiek izvēlēts, ņemot vērā bitu ietilpību un katra skaitītāja maksimālo vērtību, kas nepieciešama, lai iegūtu konkrētu biežums.

Lai ģenerētu augstas frekvences, ir nepieciešams mazāk paraugu, tāpēc to ģenerēšanai tiek izmantoti 8 bitu skaitītāji, kas tiek iestatīti no iekšējā RC oscilatora, kura signāls ir dalīts ar 4. Tā paša iemesla dēļ tiek ieviestas zemākas frekvences, izmantojot 14 bitu skaitītājus.

SLG46620V ir tikai trīs standarta 14 bitu skaitītāji, tāpēc viena no zemākajām frekvencēm tika ieviesta, izmantojot 8 bitu CNT8 skaitītāju. Lai paraugu skaits iekļautos diapazonā no 0...255, šī CNT8 pulksteņa noteikšanai bija nepieciešams izmantot RC oscilatora signālu, kas dalīts ar 12. Šai shēmai frekvence ar lielāko paraugu skaitu, kas ir izvēlēta zemākā frekvence. Tas ļāva mums samazināt kļūdu.

3. tabulā parādīti katra kvadrātviļņa parametri.

3. tabula. Kvadrātveida impulsu ģeneratoru parametri

Pulksteņošana

Biežuma kļūda [%]

Zemās caurlaides grupa

Treble grupa

Kā redzams tabulā, visām frekvencēm kļūda ir mazāka par 1,8%, tāpēc tās atbilst DTMF standartam. Šos aprēķinātos raksturlielumus, pamatojoties uz ideālo RC oscilatora frekvenci, var pielāgot, izmērot RC oscilatora izejas frekvenci.

Lai gan piedāvātajā shēmā visi ģeneratori darbojas paralēli, tikai viena ģeneratora signāls no katras grupas tiks nosūtīts uz mikroshēmas izeju. Konkrētu signālu izvēli nosaka lietotājs. Tas tiek darīts, izmantojot četras GPIO ievades (divi biti katrai grupai) ar patiesības tabulu, kas parādīta 4. tabulā.

4. tabula. Tabula frekvenču atlasei no zemo frekvenču grupas

Zemās caurlaides grupa

5. tabula. Frekvenču atlases tabula no augstfrekvences grupas

Treble grupa

8. attēlā parādīta 852 Hz kvadrātviļņu ģeneratora loģiskā shēma. Šis modelis tiek atkārtots katrai frekvencei ar atbilstošiem skaitītāja iestatījumiem un LUT konfigurāciju.

Rīsi. 8. Taisnstūra impulsu ģenerators

Skaitītājs ģenerē izejas frekvenci, ko nosaka tā iestatījumi. Šī frekvence ir divreiz lielāka par atbilstošā DTMF signāla frekvenci. Skaitītāja konfigurācijas parametri ir parādīti 9. attēlā.

Rīsi. 9. Taisnstūra impulsu ģeneratora skaitītāja iestatīšanas piemērs

Skaitītāja izejas signāls ir savienots ar D-Flip Flop flip-flop pulksteņa ieeju. Tā kā DFF izeja ir konfigurēta kā apgriezta, ja pievienojat DFF izvadi tās ieejai, D flip-flop tiek pārveidots par T flip-flop. DFF konfigurācijas parametrus var redzēt 10. attēlā.

Rīsi. 10. Taisnstūra impulsu ģeneratora sprūda iestatīšanas piemērs

Signāls no DFF izejas tiek padots uz LUT patiesības tabulas ieeju. LUT tiek izmantoti, lai izvēlētos vienu signālu katrai konkrētai R1-R0 kombinācijai. LUT konfigurācijas piemērs ir parādīts 11. attēlā. Šajā piemērā, ja R1 saņem 1 un R0 saņem 0, ieejas signāls tiek nosūtīts uz izeju. Citos gadījumos izvade satur “0”.

Rīsi. 11. Kvadrātveida impulsu ģeneratora patiesības tabulas iestatīšanas piemērs

Kā minēts iepriekš, piedāvātajai shēmai ir ieeja Iespējot iespējo. Ja ieejā Iespējot atļauju ir loģiskā vienība “1”, ģenerētie taisnstūrveida signāli tiek piegādāti uz mikroshēmas izeju pāri. Pārraides ilgums ir vienāds ar impulsa ilgumu iespējošanas ieejā. Lai ieviestu šo funkciju, bija nepieciešami vēl vairāki LUT.

Augstas caurlaidības grupa izmanto vienu 4 bitu LUT un vienu 2 bitu LUT, kā parādīts 12. attēlā.

Rīsi. 12. Augsto frekvenču grupas izejas ķēde

4 bitu LUT1 ir konfigurēts kā VAI vārti, tāpēc tas izvada loģisko 1, ja kādā no tā ieejām ir 1. C1/C0 patiesības tabulas ļauj izvēlēties tikai vienu no oscilatoriem, tāpēc 4 bitu LUT1 nosaka, kurš signāls tiek izvadīts. Šī LUT izeja ir savienota ar 2 bitu LUT4, kas pārraida signālu tikai tad, ja iespējošanas ieeja ir loģiskā "1". 13. un 14. attēlā parādītas 4 bitu LUT1 un 2 bitu LUT4 konfigurācijas.

Rīsi. 13. 4 bitu LUT1 konfigurācija

Rīsi. 14. 2 bitu LUT4 konfigurācija

Tā kā vairs nebija 4 bitu patiesības tabulu LUT, zemas caurlaidības grupai tika izmantoti divi 3 bitu LUT.

Rīsi. 15. Zemas caurlaidības grupas izejas ķēde

Pilna GreenPAK SLG46620V iekšējā shēma ir parādīta 16. attēlā. 17. attēlā parādīta DTMF ģeneratora galīgā shēma.

Rīsi. 16. DTMF toņu ģeneratora blokshēma

Rīsi. 17. DTMF toņu ģeneratora shematiskā diagramma

DTMF ģeneratora ķēdes pārbaude

Piedāvātā DTMF ģeneratora testēšanas pirmajā posmā tika nolemts pārbaudīt visu ģenerēto taisnstūrveida signālu frekvences, izmantojot osciloskopu. Piemēram, 18. un 19. attēlā parādītas kvadrātviļņu izejas 852 Hz un 1477 Hz.

Rīsi. 18. Kvadrātvilnis 852 Hz

Rīsi. 19. Kvadrātvilnis 1477 Hz

Kad tika pārbaudītas visu kvadrātviļņu signālu frekvences, sākās ķēdes analogās daļas testēšana. Tika pārbaudīti izejas signāli visām zemo un augsto frekvenču kombinācijām. Piemēram, 20. attēlā parādīta 770 Hz un 1209 Hz signālu summa, bet 21. attēlā parādīta 941 Hz un 1633 Hz signālu summa.

Rīsi. 20. DTMF tonis 770 Hz un 1209 Hz

Rīsi. 21. DTMF tonis 941 Hz un 1633 Hz

Secinājums

Šajā rakstā tika piedāvāta shēma DTMF toņu ģeneratoram, kura pamatā ir Silego GreenPAK SLG46620V mikroshēma un Silego SLG88104V darbības pastiprinātāji. Ģenerators ļauj lietotājam izvēlēties vēlamo frekvenču kombinācijas, izmantojot četras ieejas, un kontrolēt iespējošanas ieeju, kas nosaka izejas signālu ilgumu.

SLG46620V mikroshēmas īpašības:

  • Tips: Programmējama jaukta signāla IC;
  • Analogie bloki: 8 bitu ADC, divi DAC, seši komparatori, divi filtri, ION, četri integrēti oscilatori;
  • Digitālie bloki: līdz 18 I/O portiem, starpsavienojumu matrica un kombinatoriskā loģika, programmējamas aizkaves shēmas, programmējams funkciju ģenerators, seši 8 bitu skaitītāji, trīs 14 bitu skaitītāji, trīs PWM oscilatori/komparatori;
  • Komunikācijas interfeiss: SPI;
  • Barošanas sprieguma diapazons: 1,8…5 V;
  • Darba temperatūras diapazons: -40…85 °C;
  • Iepakojuma versija: 2 x 3 x 0,55 mm 20-pin STQFN.

Specifiskas īpatnības

  • Sinusoidālo viļņu ģenerēšana, izmantojot impulsa platuma modulāciju (PWM)
  • Dažādu sinusoidālo viļņu signālu apvienošana vienā DTMF signālā
  • Avota kodi montāžas un C valodās
  • Paredzēts darbam ar STK500
  • Programmas koda lielums 260 baiti / nemainīgs tabulas izmērs 128 baiti
  • Izmantojot tabulas konvertēšanas metodi

Ievads

Šajā dokumentā ir aprakstīta metode DTMF signālu (divtoņu daudzfrekvenču signālu) ģenerēšanai, izmantojot jebkuru AVR mikrokontrolleri, kas satur impulsa platuma modulācijas (PWM) bloku un statisko RAM. Šos signālus plaši izmanto telefonijā, kur tie tiek atskaņoti, nospiežot tālruņa aparāta numura sastādīšanas pogas. Lai pareizi ģenerētu DTMF signālu, divas frekvences ir jāuzliek kopā: zemā frekvence (fb) un augsta frekvence (fa). 1. tabulā parādīts, kā tiek sajauktas dažādas frekvences, lai radītu DTMF signālus, nospiežot dažādus taustiņus.


1. attēls. DTMF signālu ģeneratora ķēde

1. tabula. Toņu ģenerēšanas matrica

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

1. tabulas rindās ir redzamas zemas frekvences vērtības, bet kolonnās - augstas frekvences vērtības. Piemēram, matrica parāda, ka, nospiežot pogu “5”, frekvences fb = 770 Hz un fa = 1336 Hz jāsajauc. Divu dažādu frekvenču sinusoidālu signālu pievienošanas rezultātā veidojas DTMF signāls

kur sākotnējo signālu amplitūdas attiecībai K=A b /A a jāatbilst nosacījumam

Darbības princips

Papildus vispārīgai informācijai par impulsa platuma modulācijas izmantošanu, tālāk tiks parādīts, kā impulsa platuma modulācija ļauj ģenerēt sinusoidālus signālus. Nākamajā rindkopā ir aprakstīts, kā izmantot bāzes pārslēgšanas frekvenci, lai iegūtu dažādas frekvences. Pēc teorētisko pamatu izskatīšanas tiks sniegts paša DTMF signālu ģeneratora apraksts. Sinusoidālo viļņu ģenerēšana

Atkarībā no augsta VH un zema VL sprieguma līmeņu ilguma attiecības mainās vidējā vērtība pie PWM izejas. Ja attiecība starp abu līmeņu ilgumiem tiek uzturēta nemainīga, rezultātā tiks ģenerēts nemainīgs VAV sprieguma līmenis. 2. attēlā parādīts impulsa platuma modulēts signāls.


2. attēls. Līdzstrāvas sprieguma līmeņa ģenerēšana

Sprieguma līmeni nosaka pēc izteiksmes:

(3)

Sinusoidālu signālu var ģenerēt, ja impulsa platuma modulācijas radītā sprieguma vidējā vērtība mainās katrā PWM ciklā. Attiecības starp augsto un zemo līmeni ir jāiestata atbilstoši sinusoidālā viļņa sprieguma līmenim attiecīgajā laikā. 3. attēls ilustrē šo procesu. PWM avota dati tiek aprēķināti katram tā periodam un ierakstīti konversijas tabulā (TC).

3. attēlā parādīta arī sakarība starp fundamentālā sinusoidālā viļņa frekvenci un paraugu skaitu. Jo lielāks paraugu skaits (Nc), jo augstāka ir iegūtā signāla modelēšanas precizitāte:

(4)

PWM frekvence ir atkarīga no PWM izšķirtspējas. 8 bitu izšķirtspējā taimera galīgā vērtība (skaita augšdaļa) ir 0xFF (255). Jo Taimeris skaita uz priekšu un atpakaļ, tad šī vērtība ir dubultojama. Tāpēc PWM frekvenci var aprēķināt, dalot taimera pulksteņa frekvenci f CK ar 510. Tādējādi ar taimera pulksteņa frekvenci 8 MHz iegūtā PWM frekvence būs 15,6 kHz.


3. attēls. Sinusoidālā viļņa ģenerēšana, izmantojot PWM

Sinusa viļņa frekvences maiņa

Pieņemsim, ka sinusoidālie paraugi tiek nolasīti no uzmeklēšanas tabulas nevis secīgi, bet pa vienam. Šajā gadījumā ar tādu pašu iztveršanas ātrumu tiks ģenerēts signāls ar dubultu frekvenci (sk. 4. attēlu).


4. attēls. Iegūtās frekvences dubultošana (XSW = 2)

Pēc analoģijas, ja lasāt nevis katru otro vērtību, bet katru trešo, ceturto, piekto (attiecīgi soļa platums ir 3, 4, 5...) utt. diapazonā ir iespējams ģenerēt Nc frekvences. Ņemiet vērā, ka augstām frekvencēm iegūtā viļņu forma nebūs sinusoidāla. Soļa platumu saskaņā ar konversijas tabulu apzīmējam kā X SW, kur

(5)

Pašreizējās pozīcijas aprēķins TP nākamajam PWM periodam (kad taimeris pārplūst) tiek veikts, izmantojot izteiksmi (6). Jaunā vērtība X LUT pozīcijā ir atkarīga no tās iepriekšējā stāvokļa X" LUT pozīcijā, pievienojot pakāpiena platumu X SW

(6)

Dažādu frekvenču pievienošana, lai iegūtu DTMF signālu

DTMF signālu var ģenerēt, izmantojot izteiksmes (1) un (2). Aritmētisko darbību vienkāršības labad koeficienta K vērtību ņem vienādu ar 0,75, lai aizstātu aritmētisko darbību ar loģiskām nobīdēm. Ņemot vērā izteiksmi (6), pašreizējo vērtību PWM kontrolei var aprēķināt ar izteiksmi:

un ņemot vērā, ka X LUTa =X" LUTa + X SWa,X LUTb =X" LUTb + X SWb, beidzot rakstām

DTMF ģeneratora ieviešana

Šajā pielikumā ir apskatīta DTMF toņu ģeneratora uzbūve, izmantojot 8 bitu PWM izvadi (OC1A) un tabulu ar 128 sinusa funkcijas (Nc) paraugiem, katrs norādīts ar 7 bitiem (n). Šīs izteiksmes parāda šo atkarību, kā arī parāda, kā aprēķināt uzmeklēšanas tabulas ierakstus:

(9)

7 bitu izmantošanas priekšrocība ir tāda, ka augstfrekvences un zemas frekvences signālu vērtību summa ir viena baita lielumā. Lai atbalstītu pilnu DTMF signālu komplektu, ir jāaprēķina 8 vērtības katrai DTMF frekvencei no 1. tabulas un jāievada uzmeklēšanas tabulā.

Lai panāktu lielāku precizitāti, tika ieviests šāds risinājums: vērtībām, kas aprēķinātas, izmantojot izteiksmi 5, ir nepieciešami tikai 5 baiti. Lai izmantotu visus 8 baitus, kas samazinās noapaļošanas kļūdas, šī vērtība tiek reizināta ar 8. Rādītājs uz uzmeklēšanas tabulu tiek rakstīts tādā pašā veidā. Bet šajā gadījumā ir nepieciešami divi baiti, lai saglabātu 8 reizes lielāku vērtību. Tas nozīmē, ka pirms šo baitu izmantošanas kā rādītāja uz sinusoidālā viļņa vērtībām ir jāveic 3 pa labi nobīdes un radiksa Nc moduļa darbība (loģiskā reizināšana ar Nc-1).


5. attēls. Moduļa shēma savienojumam ar STK500

PWM signāls tiek ģenerēts pie tapas OC1A (PD5). Papildu izejas filtrs palīdzēs padarīt signālu saderīgāku ar sinusoidālo viļņu formu. Samazinot PWM frekvenci, var būt nepieciešams izmantot filtru ar stāvāku frekvences reakciju, lai iegūtu labu rezultātu.

Tastatūras savienojums parādīts 1. attēlā. Tastatūras darbība ir jāorganizē tā, lai būtu iespējams noteikt nospiesto taustiņu. To var izdarīt, izmantojot šādu algoritmu:

  1. Nospiestā taustiņa virknes noteikšana
    • konfigurējiet B porta zemās kārtas piezīmjdatoru kā izvadi un iestatiet žurnālu. "0"
    • konfigurējiet porta B augsto tetradu kā ieeju ar pievilkšanas rezistoru savienojumu
    • līnija ar nospiesto pogu tiek definēta kā augstākās tetradas cipars ar žurnālu. "0"
  2. Nospiestās taustiņu kolonnas definēšana
    • konfigurējiet porta B augsto piezīmjdatoru kā izvadi un iestatiet žurnālu. "0"
    • konfigurējiet porta B zemās kārtas tetradu kā ieeju, pievienojot uzvilkšanas rezistorus
    • kolonna ar nospiestu pogu ir definēta kā zemas kārtas tetrada cipars ar žurnālu. "0"

Piezīme: STK200 rezistori ir virknē savienoti starp PORTB savienotāja tapām un mikrokontrollera tapām BP5, PB6 un PB7 (skatiet STK200 diagrammu). Tas radīs problēmas, ja tastatūra ir pievienota PORTB savienotājam.

6. attēlā ir parādīta nospiestā taustiņa noteikšanas apakšprogrammas darbība. Atkarībā no nospiestā taustiņa tiek noteikts intervāla ilgums. Pārtraukšanas rutīna izmanto šo vērtību, lai aprēķinātu PWM iestatījumus diviem DTM toņa sinusoidāliem viļņiem. Pārtraukumu apstrādes procedūra ir parādīta 7. un 8. attēlā.

Šī rutīna aprēķina vērtību, ko salīdzināt ar taimera izvadi nākamajam PWM periodam. Pārtraukšanas rutīna vispirms aprēķina nākamās parauga vērtības pozīciju uzmeklēšanas tabulā un nolasa tur saglabāto vērtību.

Parauga atrašanās vietu uzmeklēšanas tabulā nosaka impulsa platums, un faktisko impulsa platumu nosaka ģenerētā frekvence.

Galīgo vērtību, kas tiek ierakstīta taimera salīdzināšanas reģistrā, nosaka, izmantojot formulu (7), kurā ņemtas vērā abu DTMF frekvenču izlases vērtības.


6. attēls. Galvenās programmas blokshēma


7. attēls. Taimera pārplūdes pārtraukuma apstrādes procedūras blokshēma


8. attēls. "GetSample" parauga nolasīšanas procedūras blokshēma

Publikācija: www.cxem.net

Skatīt citus rakstus sadaļā.