Metoda generování signálů dtmf a generátor signálů dtmf. Generování a rozpoznávání DTMF signálů Čip generátoru DTMF tónových signálů

první díl tento příklad Aplikace popisuje generování DTMF signálů pomocí mikrokontroléru MSP430. Jsou zde vysvětleny nejdůležitější specifikace použité v tomto případě a je uvedeno teoretické a matematické zdůvodnění pro generování sinusových vln pomocí obdélníkových vln pomocí vhodných analogových filtrů. Příklad také obsahuje testované demo programy pro generování obdélníkových signálů na základě různých konfigurací časovače mikrokontrolérů MSP430. Závěrečná část poskytuje Kruhový diagram, který umožňuje generovat signály DTMF z obdélníkových signálů.

2 Specifikace signálu DTMF

Zkratka DTMF znamená „Dual Tone Multi Frequency“ a je to metoda reprezentace číslic na různých frekvencích za účelem jejich přenosu přes analogové komunikační linky, např. telefonní linka. Při vývoji standardu byla vzata v úvahu podmínka - všechny frekvence musí být v „hlasovém“ rozsahu, což umožnilo snížit požadavky na přenosový kanál. Telefonní sítě používají signály DTMF pro vytáčení a další informace. Navzdory tomu, že je stále hojně využívána metoda pulzní volby, která je standardem např. v Německu, výrazně se prodlužuje doba vytáčení, což vede k neproduktivnímu zatížení komunikačních linek. Navíc mnoho Doplňkové služby Komunikace je možná pouze pomocí tónové volby. Při kódování metodou DTMF čísla 0-9 a písmena A-D, */E a #/F představují kombinace dvou frekvencí:

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

V tomto systému sloupec představuje frekvenci z „horní“ frekvenční skupiny (Hi-Group: 1209-1633 Hz) a řádek představuje frekvenci z „nižší“ frekvenční skupiny (Lo-Group: 697-941 Hz) . Tónové frekvence jsou zvoleny tak, aby se eliminoval vliv harmonických. Frekvence nejsou navzájem násobky a žádnou frekvenci DTMF nelze získat přičtením nebo odečtením jiných frekvencí. Pro vygenerování dialeru v síti Deutsche Telekom jsou vyžadovány následující specifikace (převzaté z Zulassungsvorschrift des Bundesamtes für Post und Telekommunikation, BAPT 223 ZV 5 (oficiální specifikace Spolkového ministerstva pošt a telekomunikací):

3 Generujte signály DTMF

Jak je popsáno výše, signály DTMF jsou analogové a sestávají ze dvou nezávislých sinusových vln. Není tedy možné generovat takové signály pouze digitálně. Digitální signály musí být převedeny pomocí ADC a/nebo analogových filtrů do požadovaného sinusového tvaru.

3.1 Generování pomocí obdélníkových vln

Pokud se pro generování signálů DTMF používají obdélníkové signály, software a Hardware minimální. Jakýkoli spojitý signál s periodou T může být reprezentován Fourierovou řadou skládající se z nekonečného součtu sinusových a kosinových vln následovně:

Kde a0/2 je konstantní složka signálu. Součtový prvek s nejnižší úhlovou frekvencí (w0) se nazývá hlavní (základní) harmonická, zbytek jsou podtóny nebo vyšší harmonické.

Nejjednodušší spojitý signál realizovaný pomocí mikrokontroléru je obdélníková vlna, pro kterou má Fourierova řada tvar:

Podíl každé frekvenční složky na celkovém signálu nejlépe demonstruje amplitudové spektrum (viz obr. 2):


Rýže. 2: Amplitudové spektrum obdélníkového signálu

Při použití analogového filtru je efektivně potlačena stejnosměrná složka a vyšší harmonické, zatímco na výstupu máme sinusový signál s frekvencí rovnou frekvenci původní obdélníkové vlny.

3.2 Software vytvořit meandr

Program generování meandrů musí splňovat následující požadavky:

  • Umět syntetizovat dva nezávislé obdélníkové signály.
  • Aby bylo možné oddělit signály, jsou zapotřebí dva výstupní kolíky pro generování signálů z „horní“ (Hi-Group) a „dolní“ (Lo-Group) frekvenční rozsahy respektive.
  • Software by měl umět nastavit požadovanou délku signálu v rozsahu cca 65 ms - 100 ms.

Mikrokontroléry řady MSP430 mají různé vestavěné časovače schopné generovat obdélníkové signály. Řada '31x/'32x používá 8bitový časovač a port časovače pro generování obou obdélníkových signálů. Tento program testováno na frekvenci MCLK rovné 1,048 MHz. Timer_A v rodině ‘33x může nezávisle generovat oba požadované signály. Druhý program používá tento časovač ke generování obdélníkových vln a pracuje s libovolnými frekvencemi MCLK. Oba programy budou podrobně popsány níže.

3.2.1 Generování čtvercových vln pomocí 8bitového časovače a portu časovače

Na Obr. 3 je vývojový diagram inicializační procedury pro generování DTMF signálů. K syntéze těchto dvou frekvencí se používá port časovače a 8bitové čítače časovače. Každý z nich je programovatelný čítačový registr nezbytný pro přesnou syntézu požadovaných frekvencí. Pokud jsou čítače portů časovače kaskádovány do jednoho 16bitového časovače a taktovány na systémovou frekvenci MCLK, pak lze frekvence vysokého rozsahu generovat s vysokou přesností. Když dojde k přerušení, přepne se příslušný výstup a oba 8bitové registry čítačů se vynulují. Načtené hodnoty jsou uloženy ve dvou proměnných v paměti RAM pro uložení interních registrů pro další úlohy.

Nízké frekvence jsou generovány 8bitovým časovačem. Protože registr čítače tohoto časovače je široký 8 bitů, pouze každé třetí přerušení způsobí změnu úrovně na požadovaném výstupním pinu, což umožňuje generování stejného frekvenčního čítače.

Dva výstupy časovače - porty slouží k vytvoření dvou meandrů různých frekvencí.

Rýže. 3 Vývojový diagram inicializační procedury pro generování DTMF signálů

Postup inicializace se provádí pouze jednou. Po jejím dokončení se z globální proměnné v RAM načte hexadecimální hodnota přenášeného znaku. Jakmile jsou ze dvou tabulek vygenerovány dvě frekvence, které tvoří vysoké a nízké tóny DTMF, stačí pouze inicializovat a spustit oba časovače. Délka odesílání je řízena počítáním půlcyklů „nižší“ frekvence a je čtena z dodatkové tabulky. Po dokončení tohoto postupu se vrátíte k funkci dotazování. Odpovídající rutiny zpracování přerušení přepínají piny portu. Tento proces je znázorněn na Obr. 4 a 5.

Úkoly timer-portu zahrnují pouze záznam logu. úroveň na výstupu portu a opětovné načtení čítače z RAM, zatímco činnost 8bitového časovače má o něco složitější strukturu: každý vstup do přerušení je počítán registrem čítače. Výstup může změnit stav pouze po třech přerušeních. Kromě toho se také počítá každý půlcyklus. Generování se zastaví po dosažení určitého počtu půlcyklů.


Rýže. 4 blok – přerušení obvodu z 8bitového časovače (Lo-Group)


Rýže. 5 bloků – obvod přerušení portu časovače (Hi-Group)

; Vlastní definice FLLMPY equ 32 ; Frekvenční násobič FLL na 1,048 MHz TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f quartz DL equ 85 ; Doba trvání DTMF signál (65..100 ms) LO_OUT equ 02h ; Výstup „nižší“ frekvence HI_OUT equ 04h ; Vysokofrekvenční výstup RCOUNT equ r14 ; Čítač délky DTMF RTEMP equ r15 ; registr služeb.globální DTMF_NR ; globální proměnná v RAM; pro číslo DTMF (0..F) ; Definice RAM.even .bss DTMF_TL ; Sudá adresa alignment.bss DTMF_TH .bss DTMF_NR ; globální proměnná v RAM; pro DTMF číslo (0..F).sudé ; Definice pro 8bitový časovač TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Definice pro univerzální port časovače TPCTL equ 04bh ; Timer-port control TPCNT1 equ 04ch ; Čítač portu časovače 1 TPCNT2 equ 04dh ; Čítač portu časovače 2 TPD equ 04eh ; Data na časovém portu TPE equ 04fh ; Timer-port-resolution.text ; Frekvenční tabulky DTMF: tabulka obsahuje; počet cyklů MCLK pro jeden půlcyklus. ; Tabulka pro „horní“ frekvenci; Doplněna opravná změna; zohlednit čas vstupu do přerušení DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Vysoká frekvence pro 0 .slovo 0ffffh-(TCLK/(1207*2))+28 ; Vysoká frekvence pro 1 .slovo 0ffffh-(TCLK/(1336*2))+25 ; Vysoká frekvence pro 2 .slovo 0ffffh-(TCLK/(1477*2))+24 ; Vysoká frekvence pro 3 slova 0ffffh-(TCLK/(1207*2))+28 ; Vysoká frekvence pro 4 .slovo 0ffffh-(TCLK/(1336*2))+25 ; Vysoká frekvence pro 5 .slovo 0ffffh-(TCLK/(1477*2))+24 ; Vysoká frekvence pro 6 .slovo 0ffffh-(TCLK/(1207*2))+28 ; Vysoká frekvence pro 7 .slovo 0ffffh-(TCLK/(1336*2))+25 ; Vysoká frekvence pro 8 .slovo 0ffffh-(TCLK/(1477*2))+24 ; Vysoká frekvence pro 9 .slovo 0ffffh-(TCLK/(1633*2))+22 ; Vysoká frekvence pro A .slovo 0ffffh-(TCLK/(1633*2))+22 ; Vysoká frekvence pro B .slovo 0ffffh-(TCLK/(1633*2))+22 ; Vysoká frekvence pro C .slovo 0ffffh-(TCLK/(1633*2))+22 ; Vysoká frekvence pro D .slovo 0ffffh-(TCLK/(1207*2))+28 ; Vysoká frekvence pro * .slovo 0ffffh-(TCLK/(1477*2))+24 ; Vysoká frekvence pro # ; Tabulka pro „nižší“ frekvenci DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; Nízká frekvence pro 0 .byte 0ffh-(TCLK/(697*2*3)) ; Nízká frekvence pro 1 .byte 0ffh-(TCLK/(697*2*3)) ; Nízká frekvence pro 2 .byte 0ffh-(TCLK/(697*2*3)) ; Nízká frekvence pro 3 .byte 0ffh-(TCLK/(770*2*3)) ; Nízká frekvence pro 4 .byte 0ffh-(TCLK/(770*2*3)) ; Nízká frekvence pro 5 .byte 0ffh-(TCLK/(770*2*3)) ; Nízká frekvence pro 6 .byte 0ffh-(TCLK/(853*2*3)) ; Nízká frekvence pro 7 .byte 0ffh-(TCLK/(853*2*3)) ; Nízká frekvence pro 8 .byte 0ffh-(TCLK/(853*2*3)) ; Nízká frekvence pro 9 .byte 0ffh-(TCLK/(697*2*3)) ; Nízká frekvence pro A .byte 0ffh-(TCLK/(770*2*3)) ; Nízká frekvence pro B .byte 0ffh-(TCLK/(853*2*3)) ; Nízká frekvence pro C .byte 0ffh-(TCLK/(941*2*3)) ; Nízká frekvence pro D .byte 0ffh-(TCLK/(941*2*3)) ; Nízká frekvence pro *.byte 0ffh-(TCLK/(941*2*3)) ; Nízká frekvence pro # ; Tabulka trvání signálu DTMF_L .byte 2*941*DL/1000 ; Poloviční cykly pro 0 .byte 2*697*DL/1000 ; Poloviční cykly pro 1 .byte 2*697*DL/1000 ; Poloviční cykly pro 2 .byte 2*697*DL/1000 ; Poloviční cykly pro 3 .byte 2*770*DL/1000 ; Poloviční cykly pro 4 .byte 2*770*DL/1000 ; Poloviční cykly pro 5 .byte 2*770*DL/1000 ; Poloviční cykly pro 6 .byte 2*852*DL/1000 ; Poloviční cykly pro 7 .byte 2*852*DL/1000 ; Poloviční cykly pro 8 .byte 2*852*DL/1000 ; Poloviční cykly pro 9 .byte 2*697*DL/1000 ; Poloviční cykly pro A .byte 2*770*DL/1000 ; Poloviční cykly pro B .byte 2*852*DL/1000 ; Poloviční cykly pro C .byte 2*941*DL/1000 ; Poloviční cykly pro D .byte 2*941*DL/1000 ; Půlcykly pro *.byte 2*941*DL/1000 ; Půlcykly pro # ;************************************************** ********** **************************************** ; DTMF-TX Podprogram DTMF ;****************************************************** ********************************* DTMF_TX mov.b DTMF_NR,RTEMP ; Uložte číslo do dočasného registru mov.b DTMF_L(RTEMP),RCOUNT ; Uložte čítač trvání, připravte 8bitový časovač pro frekvenci DTMF-Lo mov.b #0a8h,&TCCTL ; Hodiny z MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Příprava registru; preload mov.b #000,&TCDAT ; Načítání počítadla z registru; preload bis.b #008h,&IE1 ; Povolit přerušení; z 8bitového časovače; příprava portu časovače pro DTMF-Hi frekvenci rla r15; * 2 pro 16bitovou tabulku mov DTMF_HI(RTEMP),&DTMF_TL ; uložit slovo pro vysokofrekvenční mov #003,RTEMP ; čítač pro 8bitový časovač bis.b #008h,IE2 ; Povolit přerušení; z portu časovače mov.b &DTMF_TH,&TPCNT2 ; Načtení vysokého bajtu do TC2 mov.b &DTMF_TL,&TPCNT1 ; Načítání nízkého bajtu do TC1 bis.b #080h,&TPD ; Povolit 16bitový časovač bis.b #HI_OUT+LO_OUT,&TPE ; Povolit DTMF-Hi/Lo výstupy mov.b #090h,&TPCTL ; Povolit časovač ret ;**************************************************** ******** **************************************** ; Přerušení portu časovače;************************************************** *** *********************************** TP_INT xor.b #HI_OUT,&TPD ; Invertovat DTMF-Hi výstup mov.b &DTMF_TH,&TPCNT2 ; Načítání horního bajtu do TC2 mov.b &DTMF_TL,&TPCNT1 ; Načítání nízkého bajtu do TC1 bic.b #007h,&TPCTL ; Vymazání příznaků reti ;******************************************************* **********************

3.2.2 1 Generování obdélníkových vln pomocí Timer_A

Tato rutina pro generování signálu DTMF používá pouze Timer_A pro obdélníkovou vlnu obou požadovaných frekvencí. Proces sestavení vypočítá vhodné hodnoty pro časovač, aby mohl program používat bez ohledu na hodnotu frekvence MCLK. Doba trvání výstupního signálu je určena konstantou DL v milisekundách.

; Hardwarové definice; FLLMPY .equ 32 ; Frekvenční násobič FLL na 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f křemen DL .equ 82 ; délka signálu DTMF v ms; (65..100 ms) STACK .equ 600h ; Inicializační adresa zásobníku; Definice RAM; STDTMF = 202 h; Hi a Lo stav frekvence TIM32B .equ 204 ; Rozšíření registru časovače LENGTH .equ 206h ; Čítač doby trvání DTMF; .text 0F000h ; Počáteční adresa programu; ; Inicializace časovače_A: MCLK, nepřetržitý režim, povolená přerušení; Příprava výstupních modulů časovače Timer_A MCLK = 1,048 MHz (automaticky) ; INIT MOV #STACK,SP ;Inicializace ukazatele zásobníku CALL #INITSR ;Inicializace násobiče; FLL frekvence a RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Inicializace časovače MOV.B #TA2+TA1,&P3SEL ; Výstupy TA2 a TA1 na portech P3.5/4 CLR TIM32B; Vymazat registr rozšířeného časovače BIS #MCONT,&TACTL ; Start timer Timer_A EINT ; Obecné povolení přerušení MAINLOOP ... ; Hlavní smyčka; ;Keypress: SDTMF obsahuje offset tabulky; pro 2 frekvence (0..6,0..6) ve vysokém a nízkém bajtu; MOV&TAR,R5 ; Pro okamžité spuštění: ADD FDTMFLO,R5 ; Offset pro kratší čas MOV R5,&CCR1 ; První změna stavu po 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms MOV #OMT+CCIE,&CCTL1 ; Inverze výstupu, bitové přerušení. MOV #OMT+CCIE,&CCTL2 ; Invertovat výstup, bit přerušení MOV.B STDTMF,R5 ; 82 ms čítač RRA R5 ; počet změn stavu nižší frekvence MOV.B DTMFL(R5),LENGTH ; pro trvání signálu... ; pokračování programu; ; Obsluha přerušení z CCR0 (zde se nepoužívá); TIMMOD0 ... RETI ; ; Obslužná rutina přerušení z registrů porovnávání zachycení 1..4; TIM_HND PŘIDAT &TAIV,PC ; Zpracování požadavku s nejvyšší; priorita RETI; žádný požadavek na přerušení: RETI JMP HCCR1 ; požadavek z CCR1 (DTMF nízkofrekvenční) JMP HCCR2 ; požadavek od CCR2 (DTMF vysokofrekvenční) JMP HCCR3 ; požadavek od CCR3 JMP HCCR4 ; požadavek od CCR4; TIMOVH INC TIM32B ; Rozšíření Timer_A na 32 bitů RETI ; ; Nízká frekvence DTMF: TA1 invertuje výstup výstupní jednotky 1; Každá změna stavu se počítá, aby se řídila doba trvání signálu; HCCR1 PUSH R5; Uložení použitých registrů MOV.B STDTMF,R5 ; Nízkofrekvenční stav DTMF ADD FDTMFLO(R5),&CCR1 ; Přidejte trvání poloviny cyklu DEC.B LENGTH ; Je doba trvání signálu DL dokončena? JNZ TARET ; Ne; ; Ano, zastavit signál DTMF: zakázat přerušení; BIC #OMRS+OUT+CCIE,&CCTL1 ; Resetovat TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Reset TA2 TARET POP R5 ; Obnovit R5 RETI; Návrat z přerušení; ; Vysokofrekvenční DTMF: TA2 invertuje výstup výstupní jednotky 2; HCCR2 PUSH R5; Ukládání použitých registrů MOV. B STDTMF+1,R5; Stav vysoké frekvence DTMF ADD FDTMFHI(R5),&CCR2 ; Přidejte dobu trvání poloviny cyklu POP R5 ; Obnovit R5 RETI; Návrat z přerušení; HCCR3 ... ;Úloha řízená registrem CCR3 RETI HCCR4 ... ;Úloha řízená registrem CCR4 RETI ; ; Tabulka frekvencí DTMF: Tabulka obsahuje; počet cyklů MCLK za půl cyklu. Hodnoty upravené pro; efektivní frekvence MCLK během procesu montáže; a zaokrouhleno na minimum možná chyba frekvence; FDTMFLO .slovo ((TCLK/697)+1)/2 ; Nízkofrekvenční DTMF 697Hz .slovo ((TCLK/770)+1)/2 ; 770Hz .slovo ((TCLK/852)+1)/2 ; 852Hz .slovo ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .slovo ((TCLK/1209)+1)/2 ; Vysokofrekvenční DTMF1209Hz .slovo ((TCLK/1336)+1)/2 ; 1336Hz .slovo ((TCLK/1477)+1)/2 ; 1477Hz .slovo ((TCLK/1633)+1)/2 ; 1633 Hz; ; Tabulka obsahuje počet půlcyklů po dobu trvání signálu DL (ms). ; Pro počítání se používá nižší frekvence DTMF; DTMFL .byte 2*697*DL/1000 ; Počet půlcyklů.byte 2*770*DL/1000 ; pro DL ​​v ms.byte 2*852*DL/1000; .byte 2*941*DL/1000 ; ; .sekce "TIMVEC",0FFF0h ; vektory přerušení časovače Timer_A .word TIM_HND ; Vektor modulů 1..4 časovače.slovo TIMMOD0 ; Modul časovače 0 vector.sect "INITVEC",0FFFEh ; Vektor Resetovat.slovo INIT

Níže je o něco rychlejší řešení. Vyžaduje však více paměti RAM, protože... Data získaná z tabulek nejsou pokaždé přepočítávána, ale jsou ve zkratce uložena v RAM DTMFLO a DTMFHI. Čtení se provádí z rutiny přerušení časovače Timer_A. Použité tabulky jsou totožné s tabulkami v předchozím příkladu.

FLLMPY .equ 32 ; Frekvenční násobič FLL na 1,048 MHz TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f křemen DL .equ 82 ; trvání signálu DTMF; v ms (65..100 ms) STDTMF = 202 h; Hi a Lo stav frekvence TIM32B .equ 204 ; Rozšíření registru časovače LENGTH .equ 206h ; Čítač doby trvání DTMF DTMFLO .equ 208h ; Půlcyklus nižší frekvence DTMFHI .equ 20Ah; Horní frekvence půlcyklu STACK .equ 600h ; Adresa inicializace zásobníku.text 0F000h ; Počáteční adresa programu; Inicializace časovače_A: MCLK, nepřetržitý režim, povolená přerušení; Příprava výstupních modulů časovače Timer_A MCLK = 1,048 MHz (automaticky) ; INIT MOV #STACK,SP ; Inicializace ukazatele zásobníku CALL #INITSR ; Inicializace násobiče; FLL frekvence a RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Spustit časovač MOV.B #TA2+TA1,&P3SEL ; Výstupy TA2 a TA1 na portech P3.5/4 CLR TIM32B; Vymazání registru rozšířeného časovače BIS #MCONT,&TACTL ;Spuštění časovače Timer_A EINT ; Obecné povolení přerušení MAINLOOP ... ; Hlavní smyčka;Stisknutí klávesy: SDTMF obsahuje offset tabulky; pro 2 frekvence (0..6,0..6) ve vysokém a nízkém bajtu; MOV&TAR,R5 ; Chcete-li začít okamžitě ADD FDTMFLO,R5 ; Offset pro kratší čas MOV R5,&CCR1 ; První změna stavu po 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Načtěte dva počty cyklů pro frekvence DTMF; MOV.B STDTMF+1,R5 ; Vysokofrekvenční DTMF MOV FDTMFHI(R5),DTMFHI ; Trvání půlcyklu MOV.B STDTMF,R5 ; Nízkofrekvenční DTMF MOV DTMFLO(R5),DTMFLO ; Trvání půlcyklu; ; Čítač doby trvání RRA R5 ; Připravit bajtový index MOV.B DTMFL(R5),DÉLKA ; počet změn stavu nižší frekvence MOV #OMT+CCIE,&CCTL1 ; Inverze výstupu, bitové přerušení. MOV #OMT+CCIE,&CCTL2 ; Inverze výstupu, bitové přerušení. ... ; Návrat do hlavní smyčky; ; Obsluha přerušení z CCR0 (zde se nepoužívá); TIMMOD0 ... RETI ; ; Obslužná rutina přerušení z registrů porovnávání zachycení 1..4; TIM_HND PŘIDAT &TAIV,PC ; Zpracování požadavku s nejvyšší; priorita RETI; žádný požadavek na přerušení: RETI JMP HCCR1 ; požadavek z CCR1 (DTMF nízkofrekvenční) JMP HCCR2 ; požadavek od CCR2 (DTMF vysokofrekvenční) JMP HCCR3 ; požadavek od CCR3 JMP HCCR4 ; požadavek od CCR4; TIMOVH INC TIM32B ; Rozšíření Timer_A na 32 bitů RETI ; ; Nízká frekvence DTMF: TA1 invertuje výstup výstupní jednotky 1; HCCR1 ADD DTMFLO,&CCR1; Přidejte trvání poloviny cyklu DEC.B LENGTH ; Je doba trvání signálu DL dokončena? JNZ TARET ; Ne; ; Ano, zastavit signál DTMF: zakázat přerušení; BIC #OMRS+OUT+CCIE,&CCTL1 ; Resetovat TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Reset TA2 TARET RETI ; Návrat z přerušení; Vysokofrekvenční DTMF: TA2 invertuje výstup výstupní jednotky 2; HCCR2 ADD DTMFHI,&CCR2; Přidejte trvání poloviny cyklu RETI ; Návrat z přerušení; HCCR3. .. ;Úloha řízená registrem CCR3 RETI HCCR4 ... ;Úloha řízená registrem CCR4 RETI ; ; Tabulky a vektory přerušení jsou stejné jako v předchozím příkladu.

3.3 Hardware pro generování DTMF signálů

Jak je uvedeno výše, v kmitočtovém rozsahu 200 Hz.. 4600 Hz musí být úroveň signálu vysílacího kmitočtu minimálně 20 dB nad úrovní vnějších signálů (šumů). Navíc na základě specifikace musí mít signály z „horní“ a „dolní“ skupiny různé úrovně, takže každý signál vyžaduje svůj vlastní filtr. Amplitudy sinusového kmitočtu lze získat z Fourierovy řady.

Chcete-li vybrat mezní frekvence při navrhování analogového filtru, musíte dodržet následující požadavky na základě:

  • Protože je nutné zajistit možnost libovolných kombinací frekvencí „dolní“ skupiny s frekvencemi „horní“ skupiny, rozdíl úrovní mezi nejnižšími a nejvyššími frekvencemi ve skupině by neměl přesáhnout 3 dB.
  • Pro nejnižší frekvenci ve skupině (f1) by harmonické potlačení (3f1) nemělo být horší než 20 dB. Splnění této podmínky je nejkritičtější pro nižší frekvenci ve skupině, protože je co nejdále od mezní frekvence filtru.

Vzorec popisuje druhou mocninu absolutní hodnoty na výstupu z horní propusti Butterworthova filtru řádu n:

Tento vzorec představuje závislost zesílení Butterworthovy horní propusti na frekvenci. Parametry fg a n určují mezní frekvenci a pořadí filtru.

Nejprve je nutné vypočítat požadované pořadí filtrů s ohledem na splnění výše uvedených požadavků.

Aby byla splněna první podmínka, poměr druhých mocnin absolutních hodnot nejnižších a nejvyšších frekvencí ve skupině nesmí být větší než 3 dB nebo:

Druhá podmínka bude splněna automaticky, pokud je poměr druhých mocnin absolutních hodnot frekvencí f1 a 3f1 větší než 10/3, v tomto případě je třetí harmonická v obdélníkovém signálu o 1/3 menší (viz Fourier série a obr. 2):

Výsledkem výpočtů pro frekvence obou skupin máme požadovaný řád filtru n=1,15. Požadavky tedy uspokojí filtr 2. řádu, na kterém lze stavět operační zesilovač. Pokud používáte filtr 3. řádu, potřebujete pouze dva další prvky. Tím se však sníží požadavky na rozptyl parametrů komponent. Oba výše uvedené požadavky budou splněny, pokud je mezní frekvence v následujících mezích:

Spodní skupina fg>880 Hz fg<1418 Гц
Horní skupina fg>1527 Hz fg<2460 Гц

Pokud je mezní frekvence na minimu, dojde k maximální redukci harmonických. V tomto případě však bude rozdíl mezi nejnižší a nejvyšší frekvencí ve skupině 3 dB. Při nejvyšší možné mezní frekvenci je rozdíl úrovní minimální, ale harmonické složky jsou potlačeny pouze o 20 dB.

Při výpočtu filtru byla věnována zvýšená pozornost harmonickému potlačení, rozdíl úrovní v rámci skupiny byl zafixován na 2 dB. V důsledku toho jsou mezní frekvence 977 Hz a 1695 Hz. Výsledné harmonické potlačení výrazně převyšuje požadavky. Rozdíl frekvenčních úrovní ve skupině je v rámci požadavků i v případě odchylky mezní frekvence spojené s rozptylem v parametrech použitých komponent. Při výpočtu hodnot filtračních prvků byly rezistory vybrány na základě jejich maximální blízkosti ke standardním hodnotám řady E12.

Na výstupech filtru jsou výsledkem dva sinusové signály s výrazně potlačenými harmonickými. Pro spojení těchto signálů je zavedena další sčítačka.

S použitím pouze 3 operačních zesilovačů a několika pasivních prvků jsme tedy schopni generovat signály DTMF pomocí mikrokontroléru bez použití významných výpočetních zdrojů.

Pomocí simulátorových programů byly zkontrolovány přibližné hodnoty. Odezva filtrů se velmi těsně shoduje s vypočítanou frekvenční odezvou.


Rýže. 6: Amplitudové spektrum obdélníkového signálu o frekvenci 697 Hz na výstupu filtru 3. řádu

Na Obr. Obrázek 6 ukazuje amplitudové spektrum obdélníkového signálu s frekvencí 697 Hz, procházejícího filtrem 3. řádu. Jak je vidět z obrázku, třetí a pátá harmonická (2091 Hz a 3485 Hz) jsou výrazně utlumeny (-25,6 dB).


Rýže. 7: Amplitudové spektrum obdélníkového signálu o frekvenci 941 Hz na výstupu filtru 3. řádu

Na Obr. Obrázek 7 ukazuje spektrum obdélníkového signálu s frekvencí 941 Hz. Ve frekvenční oblasti, která nás zajímá, do 4600 Hz, je pouze jedna harmonická. Po průchodu filtrem je tato harmonická 2823 Hz výrazně utlumena (-27,9 dB). Rozdíl úrovní mezi nejnižší a nejvyšší frekvencí ve skupině nepřesahuje 1,9 dB.

Aby bylo možné použít levné komponenty s velkou variabilitou parametrů, bylo provedeno dodatečné modelování. Výsledky simulace ukázaly, že přípustný rozptyl v hodnotách rezistorů a kondenzátorů je 10 %.


Obrázek 8: Histogram – rozložení úrovní signálu ve skupině


Obrázek 9: Histogram – harmonická suprese

Na Obr. 8 a 9 ukazují histogramy získané pomocí analýzy Monte Carlo. V tomto případě se hodnoty složek náhodně měnily v rozmezí 10 %. Po 100 iteracích jsou výsledky pro všechny simulované filtry vyneseny do histogramů. Na histogramu na Obr. Obrázek 8 ukazuje rozdíl úrovní mezi frekvencemi v rámci skupiny. V žádném případě nebylo dosaženo maximálního přípustného rozdílu 3 dB mezi minimální a maximální frekvencí. Průměrná hodnota je 1,6 dB, což je o něco lepší než vypočtená hodnota 2 dB.

Na Obr. Obrázek 9 ukazuje útlum harmonických pro „nižší“ frekvenční skupinu. Požadované hodnoty 20 dB je dosaženo ve všech případech, průměrná hodnota je přibližně 27 dB. V nejhorším případě je harmonická potlačena o 24,2 dB.

Hodnoty vypočtené pro filtr „dolní“ frekvenční skupiny jsou také provedeny pro filtr „horní“ frekvenční skupiny.

Oba filtry mají shodný obvod. Jediný rozdíl je v mezních frekvencích filtrů pro horní a dolní frekvenční skupiny. R1 a C1 tvoří horní propust 1. řádu. Protože vstupní odpor obvodu závisí také na R1, hodnota tohoto prvku by neměla být příliš malá; jinak budou výstupy mikrokontroléru přetíženy a obdélníkový průběh bude zkreslený. V tomto případě se k signálu přidají další frekvence vyplývající z intermodulačního zkreslení, což negativně ovlivní odstup signálu od šumu.

Přenosovou funkci filtrů vyššího řádu nelze získat pouze pomocí pasivních součástek.

Filtr 2. řádu tedy musí obsahovat operační zesilovač. Aktivní zisk filtru je nastaven na 0,2 pomocí rezistorů R1-1 a R1-2. Jak vidíte, signál je poněkud oslabený. To je nezbytné, aby nedošlo k přetížení operačního zesilovače, protože špičková amplituda základní sinusové harmonické signálu obdélníkové vlny přesahuje amplitudu samotného signálu obdélníkové vlny (viz Fourierova řada a obr. 2). Další sčítačka upravuje požadovanou výstupní úroveň. Vzhledem ke konstantní složce obdélníkového signálu je pracovní bod operačního zesilovače nastaven na úroveň Vcc/2 (viz také Fourierova řada a obr. 2). V tomto případě nelze konstantní složku eliminovat vstupním děličem R1-1/R1-2. Pro oddělení obvodu OS stejnosměrným napětím se používá kondenzátor C3.

Na každém z výstupů analogového filtru je generován signál horní a dolní frekvenční skupiny. V další sčítačce jsou tyto signály přidány. V tomto prvku obvodu můžete pomocí rezistorů R4 a R5 nastavit vztah mezi „dolní“ a „horní“ frekvencí v celkovém signálu a úrovní výstupního signálu. Výstupní amplitudu lze tedy snadno upravit tak, aby vyhovovala různým požadavkům v různých zemích.

Při výpočtu hodnot součástek byly hodnoty kondenzátorů jako obvykle pevné a podle nich byly vypočteny hodnoty rezistorů. V tomto zapojení byly použity kondenzátory a odpory standardní řady E12 s rozptylem 10 %.

Na Obr. Obrázek 10 ukazuje schematický diagram analogových filtrů a sčítačky:


Rýže. 10: Schéma analogových filtrů s přídavnou sčítačkou

Kondenzátory C1-1 a C1-2 kombinují dva signály dohromady v pracovním bodě Vcc/2. Pro tyto prvky byste neměli vybírat příliš velké hodnoty, protože jsou to nízkofrekvenční filtrační prvky pro eliminaci nízkofrekvenčních subharmonik. Filtrační kondenzátor C5 eliminuje šum referenčního napětí. Přídavný kondenzátor C6 zapojený paralelně se zpětnovazebním rezistorem R6 tvoří horní propust prvního řádu. Pokud je zvolena nejnižší mezní frekvence filtru, dodatečné filtrování vysokofrekvenčního intermodulačního rušení zlepšuje kvalitu výstupního signálu, ale dojde k určitému útlumu nejvyšších frekvencí „horní“ skupiny. V některých případech není generování nejvyšší frekvence DTMF 1633 Hz nutné, protože používá se pouze k vytvoření servisních symbolů A-D a poměr signálu k šumu lze zlepšit snížením mezní frekvence filtru. Zvýšení mezní frekvence tedy vede ke zvýšení úrovně vysokofrekvenčního rušení, ale zároveň se sníží negativní dopad na nejvyšší frekvenční složky signálu DTMF.

4 Výsledky studií signálů vysílačů DTMF

Níže uvedené spektrogramy (obr. 11 a 12) ukazují výstupní signály vysílače DTMF na různých frekvencích. Na Obr. Obrázek 11 ukazuje amplitudové spektrum symbolu „1“. Kmitočty potřebné pro jeho vysílání - 697 a 1207 Hz - jsou na úrovni -10,5 dB, respektive -8,5 dB. Harmonické na 2091 a 3621 Hz jsou potlačeny o téměř 30 dB. Pro vysílání symbolu „D“ jsou generovány dvě nejvyšší frekvence - 941 a 1633 Hz. Jak je vidět z Obr. 12, úroveň nízké frekvence je -12 dB, úroveň vysoké frekvence je -11 dB. Odpovídající harmonické jsou utlumeny o více než 30 dB. Naměřené hodnoty tedy odpovídají výsledkům simulace a požadavkům specifikace.


Rýže. 11: Amplitudové spektrum symbolu „1“: 697 a 1207 Hz


Rýže. 12: Amplitudové spektrum symbolu „D“: 941 a 1633 Hz

Při použití dvou různých časovačů nelze dosáhnout absolutní frekvenční přesnosti generovaných obdélníkových signálů, výsledek bude záviset na kombinaci dvou frekvencí a typu použitých časovačů. Důvodem je konflikt přerušení časovače. Požadovaná přesnost ±1,8 % je však splněna s velkou rezervou.

Pokud se použije 8bitový časovač a časovač portu Timer na systémové frekvenci MCLK 1,048 MHz, pak jsou frekvence „nižší“ skupiny generovány s přesností ne horší než 0,3 %. Pro frekvence „horní“ skupiny byla v praxi získána odchylka ne větší než 0,5 %.

Jedinou výjimkou je DTMF znak „D“, pro který jsou generovány nejvyšší frekvence. Výsledkem je, že v této kombinaci má frekvence „horní“ skupiny 1633 Hz odchylku -0,97 %.

Bez této výjimky je i nejvyšší frekvence 1633 Hz generována s přesností lepší než 0,5 %. Maximální odchylky pro různé frekvence jsou uvedeny v tabulce:

Pokud se pro generování frekvencí použije Timer_A, bude chyba záviset na použité frekvenci MCLK:

MCLK, MHz 1,048 2,096 3,144 3,800
Multiplikátor 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 Závěr

Software pro tento příklad je velmi jednoduchý a zabírá přibližně 300 bajtů a vyžaduje malé množství paměti RAM a ROM. Díky vestavěnému modulu časovače jsou požadované frekvence generovány s vysokou přesností bez plýtvání zátěží CPU. V konfiguraci, kde se pro generování používá 8bitový časovač a časovač/port, zabírají rutiny přerušení přibližně 12 % prostředků CPU. V případě, že jsou frekvence generovány časovačem Timer_A, je zatížení CPU pro zpracování rutin přerušení sníženo na 6 %. V důsledku toho mohou během přenosu signálů DTMF běžet jiné úlohy nebo může být CPU uvedeno do režimu nízké spotřeby, aby se snížila spotřeba proudu.

Dobrá funkčnost popsaného modulu pro generování DTMF signálů pomocí obdélníkových signálů je demonstrována na hardwarovém návrhu obvodu. Protože V obvodu je možné použít součástky s širokým rozsahem parametrů, cena takového řešení je velmi nízká. Všechny požadavky specifikace jsou do značné míry splněny, takže u přístrojů využívajících MSP430 jako řídicího regulátoru není vyžadován samostatný modul generátoru signálu DTMF.

Pokud je v konkrétním případě nutné zvýšit odstup signálu od šumu, pomocí dalšího operačního zesilovače lze zkonstruovat filtr pro další potlačení intermodulačního zkreslení. Takový přídavný operační zesilovač je již přítomen ve čtyřnásobném operačním zesilovači v pouzdře DIL14.

6 Odkazy

Bundesamt fur Post und Telekommunikation (Federální úřad pro poštu a telekomunikace): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse exlusse) des telefonní linky připojené k telefonní síti pro koncová zařízení požadavky na zabezpečení a volání) / ISDN Deutschen Bundespost Telekom; Bundesministerium fur Post und Telekommunikation, Draft, Bonn, duben 1994 Papula: Mathematik fur Ingenieure 2 (Matematika pro inženýry); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10. vydání; Springer Verlag, Berlín 1993 Lutz Bierl / Texas Instruments: rodina MSP430, zpráva o aplikaci měření, Texas Instruments, vydání 2.1, leden 1997, SLAAE10B Texas Instruments: rodina MSP430, uživatelská příručka architektury a knihovna modulů, Texas Instruments, 1996, SLAUE Instruments:10B MSP430 Family, Software User's Guide, Texas Instruments, 1996 Texas Instruments: MSP430 Family, Assembly Language Tools User's Guide, Texas Instruments, 1996 Siwy, Robert: Systementwicklung einer Telekom-Applikation zum Senden and Empfangen von DTMF-Signalen with dem Microcontroller MSP4 telekomunikační systém pro příjem a přenos digitálních signálů založený na mikrokontroléru MSP430); Diplomarbeit, Fachhochschule Landshut, květen 1997

Charakteristické rysy:

  • Generování sinusových vln pomocí modulace šířky pulzu (PWM)
  • Kombinace různých sinusových signálů do jednoho DTMF signálu
  • Zdrojové kódy v jazycích assembler a C
  • Navrženo pro práci s STK500
  • Velikost kódu programu 260 bajtů / konstantní velikost tabulky 128 bajtů
  • Použití metody konverze tabulky

Úvod

Tento dokument popisuje techniku ​​generování signálů DTMF (dvoutónové vícefrekvenční signály) pomocí libovolného mikrokontroléru AVR obsahujícího jednotku pulsně šířkové modulace (PWM) a statickou RAM. Tyto signály jsou široce používány v telefonii, kde jsou reprodukovány při stisknutí tlačítek vytáčení telefonního přístroje. Pro správné generování signálu DTMF musí být dvě frekvence superponovány: nízká frekvence (fb) a vysoká frekvence (fa). Tabulka 1 ukazuje, jak jsou různé frekvence smíchány, aby se vytvořily tóny DTMF, když jsou stisknuty různé klávesy.

Obrázek 1 – Obvod generátoru signálu DTMF

Tabulka 1 – Matice generování tónového signálu

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

Řádky tabulky 1 ukazují hodnoty nízké frekvence a sloupce hodnoty vysoké frekvence. Například matice ukazuje, že když stisknete tlačítko „5“, frekvence fb = 770 Hz a fa = 1336 Hz by měly být smíchány. V důsledku sčítání dvou sinusových signálů různých frekvencí se vytvoří signál DTMF

kde je poměr amplitud K=Ab/Aa zdrojové signály musí splňovat podmínku

Princip fungování

Kromě obecných informací o použití pulsně šířkové modulace bude níže ukázáno, jak pulsně šířková modulace umožňuje generovat sinusové signály. Následující odstavec popisuje, jak použít základní spínací frekvenci k získání různých frekvencí. Po prostudování teoretických základů bude uveden popis samotného generátoru DTMF signálu. Generování sinusových vln

V závislosti na poměru trvání vysokých napěťových úrovní VH a nízkých VL se mění průměrná hodnota na výstupu PWM. Pokud je poměr mezi trváními obou úrovní udržován konstantní, bude jako výsledek generována konstantní úroveň napětí VAV. Obrázek 2 ukazuje signál modulovaný šířkou pulzu.


Obrázek 2 – Generování úrovně stejnosměrného napětí

Úroveň napětí je určena výrazem:

(3)

Sinusový signál může být generován za předpokladu, že se průměrná hodnota napětí generovaného pulzní šířkovou modulací mění v každém cyklu PWM. Vztah mezi vysokou a nízkou úrovní musí být nastaven v souladu s napěťovou úrovní sinusové vlny v odpovídajícím čase. Obrázek 3 ilustruje tento proces. Zdrojová data pro PWM se vypočítají pro každé jeho období a zaznamenají se do převodní tabulky (TC).

Obrázek 3 také ukazuje vztah mezi frekvencí základní sinusovky a počtem vzorků. Čím vyšší je počet vzorků (Nc), tím vyšší je přesnost modelování výsledného signálu:

(4)

Frekvence PWM závisí na rozlišení PWM. Při 8bitovém rozlišení je konečná hodnota (horní část počtu) časovače 0xFF (255). Protože Časovač počítá dopředu a dozadu, pak je třeba tuto hodnotu zdvojnásobit. Proto lze frekvenci PWM vypočítat vydělením frekvence hodin časovače f CK číslem 510. Při frekvenci hodin časovače 8 MHz bude tedy výsledná frekvence PWM 15,6 kHz.


Obrázek 3 – Generování sinusového signálu pomocí PWM

Změna frekvence sinusovky

Předpokládejme, že sinusové vzorky nejsou čteny z vyhledávací tabulky postupně, ale jeden po druhém. V tomto případě bude při stejné vzorkovací frekvenci generován signál s dvojnásobnou frekvencí (viz obrázek 4).


Obrázek 4 – Zdvojnásobení výsledné frekvence (XSW = 2)

Analogicky, pokud nečtete každou druhou hodnotu, ale každou třetí, čtvrtou, pátou (respektive šířka kroku je 3, 4, 5...) atd. je možné generovat Nc frekvence v rozsahu . Všimněte si, že pro vysoké frekvence nebude výsledný tvar vlny sinusový. Šířku kroku označíme podle převodní tabulky jako XSW, Kde

(5)

Výpočet aktuální polohy v TP pro další periodu PWM (při přetečení časovače) se provádí pomocí výrazu (6). Nová hodnota v pozici X LUT závisí na jeho předchozím stavu v poloze X" LUT s rostoucí šířkou kroku XSW

(6)

Přidání různých frekvencí pro získání signálu DTMF

DTMF signál lze generovat pomocí výrazů (1) a (2). Pro zjednodušení aritmetických operací se bere hodnota koeficientu K rovna 0,75, aby se aritmetická operace nahradila logickými posuny. S přihlédnutím k výrazu (6) lze aktuální hodnotu pro řízení PWM vypočítat pomocí výrazu:

a s přihlédnutím k tomu X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, pojďme to konečně napsat

Implementace DTMF generátoru

Tento dodatek zkoumá konstrukci tónového generátoru DTMF pomocí 8bitového výstupu PWM (OC1A) a tabulky se 128 vzorky funkce sinus (Nc), z nichž každý je specifikován 7 bity (n). Následující výrazy ukazují tuto závislost a také ukazují, jak vypočítat položky vyhledávací tabulky:

(9)

Výhodou použití 7 bitů je, že součet hodnot vysokofrekvenčního a nízkofrekvenčního signálu má velikost jednoho bajtu. Pro podporu celé sady tónů DTMF je třeba vypočítat 8 hodnot pro každou frekvenci DTMF z tabulky 1 a zadat je do vyhledávací tabulky.

Pro dosažení vyšší přesnosti bylo implementováno následující řešení: hodnoty vypočítané pomocí výrazu 5 vyžadují pouze 5 bajtů. Chcete-li použít všech 8 bajtů, což sníží chyby zaokrouhlování, tato hodnota se vynásobí 8. Ukazatel na vyhledávací tabulku se zapíše stejným způsobem. Ale v tomto případě trvá uložení 8násobku hodnoty dva bajty. To znamená, že před použitím těchto bajtů jako ukazatele na hodnoty sinusové vlny v


Obrázek 5 – Schéma modulu pro připojení k STK500

PWM signál je generován na pinu OC1A (PD5). Dodatečný výstupní filtr pomůže zajistit větší kompatibilitu signálu se sinusovým průběhem. Při snižování frekvence PWM může být pro dosažení dobrého výsledku nutné použít filtr se strmější frekvenční odezvou.

Zapojení klávesnice je znázorněno na obrázku 1. Obsluha klávesnice musí být organizována tak, aby bylo možné určit stisknutou klávesu. To lze provést pomocí následujícího algoritmu:

  1. Určení řetězce stisknuté klávesy
    • nakonfigurujte notebook nízkého řádu portu B jako výstup a nastavte protokol. "0"
    • nakonfigurujte vysokou tetradu portu B jako vstup s připojením pull-up rezistorů
    • řádek se stisknutým tlačítkem je definován jako číslice nejvyšší tetrády s log. "0"
  2. Definování sloupce stisknuté klávesy
    • nakonfigurujte vysoký notebook portu B jako výstup a nastavte log. "0"
    • nakonfigurujte tetrádu nízkého řádu portu B jako vstup připojením pull-up rezistorů
    • sloupec se stisknutým tlačítkem je definován jako číslice tetrády nízkého řádu s log. "0"

Poznámka: U STK200 jsou rezistory zapojeny do série mezi kolíky konektoru PORTB a kolíky mikrokontroléru BP5, PB6 a PB7 (viz schéma STK200). To způsobí problémy, pokud je klávesnice připojena ke konektoru PORTB.

Obrázek 6 znázorňuje činnost podprogramu pro určení stisknuté klávesy. V závislosti na stisknutém tlačítku se určí délka intervalu. Rutina přerušení používá tuto hodnotu k výpočtu nastavení PWM pro dvě sinusové vlny tónu DTM. Postup zpracování přerušení je znázorněn na obrázcích 7 a 8.

Tato rutina vypočítá hodnotu pro porovnání s výstupem časovače pro další periodu PWM. Rutina přerušení nejprve vypočítá pozici další hodnoty vzorku ve vyhledávací tabulce a přečte hodnotu tam uloženou.

Poloha vzorku ve vyhledávací tabulce je určena šířkou pulzu a skutečná šířka pulzu je určena generovanou frekvencí.

Konečná hodnota, která je zapsána do porovnávacího registru časovače, je určena pomocí vzorce (7), který bere v úvahu vzorové hodnoty obou DTMF frekvencí.


Obrázek 6 – Blokové schéma hlavního programu

Vynález se týká oblasti digitálního generování signálů s duální frekvencí (DTMF) určených pro přenos dat, například v oblasti telefonie. Dosaženým technickým výsledkem je snížení počtu redundantních obvodových prvků, zvýšení ekonomické efektivity. Generátor signálu DTMF, který implementuje metodu pro generování signálů DTMF, obsahuje dvě akumulační sčítačky, dva uchovávací registry, dvě paměťová zařízení, koncovou sčítačku, digitálně-analogový převodník, převodník kódů signálů DTMF na posloupnost celých čísel. , dělič referenční frekvence generátoru signálu DTMF s nastavitelným koeficientem dělení, převodník kódů signálu DTMF na kód dělicího faktoru. 2 s a 3 plat f-ly, 2 nemocní.

Vynález se týká způsobů generování DTMF (dual-tone frequency) signálů digitálními metodami, určených pro přenos dat např. v oblasti telefonie při tónově-frekvenční volbě.Technickou podstatou a dosaženým výsledkem nejbližší nárokovanému metoda je metoda pro generování DTMF signálů, uvedená v US patentu č. 5034977 ze dne 4. 4. 89, publ. 23.07.91, M. tř. 5 N 04 M 1/00 ​​Známý způsob generování signálů DTMF zahrnuje výběr prvních a druhých kódů vzorkovacích úhlů odpovídajících první a druhé frekvenci složek signálu DTMF, kumulativně odděleně sčítat kódy prvního a druhého vzorkovacího úhlu s příslušnými periodickými pevné, s periodou odpovídající vzorkovací frekvenci hodin, první a druhý výsledek kumulativního součtu, získání první a druhé diskrétní hodnoty složek signálu DTMF uložených v adresově umístěných buňkách odpovídajících diskrétních tabulek hodnoty složek signálu DTMF, čtením z odpovídajících tabulek na adresách odpovídajících výsledkům kumulativního součtu kódů vzorkovacích úhlů, sečtením první a druhé diskrétní hodnoty složek signálu DTMF do získat třetí diskrétní hodnotu odpovídající hodnotě signálu DTMF Známý způsob pro generování signálů DTMF je následující: v závislosti na kódu signálu DTMF se nejprve převedením kódů signálů DTMF vybere první kód, který určuje vzorkovací úhel signálu s frekvencí , odpovídající skupině vysokých frekvencí - sloupce, a pomocí druhé konverze kódů signálu DTMF je vybrán druhý kód, který určuje vzorkovací úhel signálu s frekvencí odpovídající skupina nízkých frekvencí - řádky, periodicky, s periodou odpovídající vzorkovací frekvenci, první kód vzorkovacího úhlu se sečte v odpovídající akumulační sčítačce a zaznamená se do odpovídajícího registru, jehož výstupem je výsledek, jehož hodnota odpovídá adrese buňky tabulky uložené v odpovídající paměti pouze pro čtení a ve které jsou umístěny odpovídající diskrétní hodnoty sinů, které určují horní frekvenci signálu DTMF stejným způsobem, periodicky, s periodu odpovídající frekvenci vzorkovacích hodin, kód druhého vzorkovacího úhlu se sečte v odpovídající akumulační sčítačce a zaznamená do odpovídajícího registru, jehož výstupem je výsledek, jehož hodnota odpovídá adrese uložené buňky tabulky. v odpovídajícím paměťovém zařízení pouze pro čtení a ve kterém jsou sečteny odpovídající diskrétní hodnoty sinů, které určují spodní frekvenci signálu DTMF, diskrétní hodnoty sinů, které určují horní a dolní frekvence signálu DTMF v konečné sčítačce, určující diskrétní hodnotu signálu DTMF a prostřednictvím digitálně-analogového převodu, přiváděného na výstup, vytvářející DTMF signál s krokovým sinusem odpovídající vstupnímu kódu signálu DTMF. Známá metoda je neefektivní, což je způsobeno jejími nízkými technicko-ekonomickými ukazateli a technologickými ukazateli.Technické a ekonomické ukazatele jsou určovány nutnými náklady při implementaci metody pro dosažení potřebných parametrů požadovaných pro DTMF signály. Ve známém způsobu závisí přesnost generování frekvence na bitové hloubce kódu odpovídající vzorkovacímu úhlu, což vyžaduje velkou bitovou šířku akumulační sčítačky, což ztěžuje implementaci způsobu s jednoduchým hardwarem. Konkrétně, kód vzorkovacího úhlu ve známé metodě je určen výrazem K = (F/F t)32..., (1.1) kde K je kód odpovídající vzorkovacímu úhlu; F je generovaná frekvence; F t je vzorkovací frekvence. Jak je vidět, přesnost generované frekvence jasně závisí na poměru generované frekvence a vzorkovací frekvence. Aby bylo dosaženo požadované přesnosti generované frekvence, a to ne horší než 1,5 %, samozřejmě při jsou vyžadovány alespoň dvě platné číslice za desetinnou čárkou, což vyžaduje prezentaci dat s bitovou hloubkou pro nižší frekvence alespoň 8 bitů a pro vysoké frekvence alespoň 9 bitů a pro kumulativní sčítání alespoň 12 bitů což vede ke zvýšení počtu komponentních prvků zařízení, která implementují známý způsob. Známá zařízení pro implementaci známého způsobu, jmenovitě sčítačky, registry a permanentní paměťová zařízení, mají vstupy/výstupy o šířce 4 a 8 bitů. Při vyšší bitové kapacitě jsou proto nutné další technické a ekonomické náklady při implementaci stejně funkčních zařízení. Navíc u známé metody vede snížení počtu desetinných míst k frekvenční chybě překračující přípustnou.Technologické ukazatele jsou dány všestranností a sjednoceností při implementaci metody, např. moderní úroveň technologie, která zahrnuje snížení spotřeby materiálů, komponentů a zvýšení univerzálnosti zařízení, vyžaduje použití mikrokontrolérů. Rozšířené mikrokontroléry používané v telefonických a telemetrických měřeních používají 8bitová data a 8bitovou aritmeticko-logickou jednotku, což vyžaduje při implementaci známé metody další výpočetní operace spojené se sčítáním dat o šířce větší než 8 bitů a analýzou přenosový signál, který zvyšuje počet příkazů a tím i hodinovou frekvenci mikrokontroléru, stejně jako množství paměti RAM mikrokontroléru, což vede ke zvýšení nákladů na zařízení, která používají známou metodu generování DTMF signály. Tento závěr je dán při analýze použití známé metody v tónovém komunikátoru založeném na mikrokontrolérech výrobců Atmel, Microchip tnc aj. Známá metoda je tedy zásadně neefektivní, což je způsobeno nízkými technickými a ekonomickými ukazateli, vyjádřenými zvýšenými spotřeba materiálu, spotřeba energie a nízké technologické ukazatele, protože má při použití metody, a to i jako součást široce používaných mikrokontrolérů, omezení, což se projevuje zvýšenými technickými vlastnostmi požadovanými od mikrokontrolérů, což snižuje jejich univerzálnost. Technickou podstatou nejbližší dosaženým výsledkem nárokovaného generátoru signálu DTMF jsou signály generátoru DTMF, prezentované v US patentu č. 5034977 ze dne 04.04.89, publ. 23.07.91, M. tř. 5 N 04 M 1/00 ​​Známý generátor signálů DTMF zahrnuje: první akumulační sčítačku, první záchytný registr, první paměťové zařízení, druhou akumulační sčítačku, druhý záchytný registr, druhé paměťové zařízení, koncovou sčítačku, digitálně-analogový převodník, kde výstup první akumulační sčítačky je spojen se vstupem prvního registru západky, výstup prvního registru západky je připojen ke vstupu prvního paměťového zařízení, jakož i k jednomu z vstupy první akumulační sčítačky, výstup prvního paměťového zařízení je připojen k jednomu ze vstupů koncové sčítačky, výstup druhé akumulační sčítačky je připojen ke vstupu druhého západkového registru, výstup druhého přídržný registr je připojen ke vstupu druhého paměťového zařízení, stejně jako k jednomu ze vstupů druhé akumulační sčítačky, výstup druhého paměťového zařízení je připojen k dalšímu vstupu koncové sčítačky, výstup koncové sčítačky je připojen na vstup digitálně-analogového převodníku, jehož výstup je výstupem generátoru signálu DTMF Známý generátor obsahuje také první převodník kódů signálu DTMF na odpovídající kódy vzorkovacích úhlů odpovídající horním kmitočtům signálu DTMF druhý převodník kódů signálu DTMF na odpovídající kódy vzorkovacích úhlů odpovídajících nižším frekvencím signálu DTMF a výstup prvního převodníku kódů signálu DTMF je připojen k dalšímu vstupu první kumulativní sčítačky, výstup druhého převodníku signálového kódu DTMF je připojen k jinému vstupu druhé akumulační sčítačky, vstupy prvního a druhého převodníku signálového kódu DTMF jsou vstupy generátoru signálu DTMF a hodinové vstupy prvního a druhého blokování registry jsou propojeny a jsou vstupem vzorkovací frekvence generátoru signálu DTMF. Známý generátor signálu DTMF poskytuje nízký technický výsledek v důsledku nadměrného počtu prvků obvodu spojených s různými, jakož i nadměrné bitové kapacity stejně funkčních prvků. Implementace známého technického řešení je navíc efektivně možná ve formě samostatného integrovaného obvodu, to však vyžaduje organizaci specializované výroby, ale vzhledem k tomu, že generátory DTMF signálů jsou součástí multifunkčních zařízení (telefonních přístrojů s pokročilými možnostmi, zařízení pro přenos telemetrických informací po telefonních linkách apod.) atd.), v současnosti realizované na bázi univerzálních mikrokontrolérů je výroba jednotlivých signálových mikroobvodů DTMF ekonomicky neefektivní Základem navrženého technického řešení je úkol vytvořit metodu pro generování signálů DTMF pomocí generátoru signálů DTMF, ve kterém se změnou podmínek a sledu operací implementuje metoda s vysokými technickými a ekonomickými ukazateli, v důsledku poklesu bitové kapacity podobných operací, vysokých technologických ukazatelů, kdy implementace metody jak v návrhu obvodů s jednoduchým hardwarem, tak jako součást multifunkčního mikrokontroléru, spojeného s opakovatelností, při implementaci identických funkčních prvků Základním technickým řešením byl úkol vytvořit generátor DTMF signálu, ve kterém, zavedením nových prvků a provedením nových zapojení se zvýší technický výsledek spojený se snížením počtu redundantních obvodových prvků a tím se zvýší ekonomická efektivita spojená s možností realizace navrženého technického řešení široce dostupnými prostředky. vyřešeno tím, že ve známém způsobu generování signálů DTMF, včetně výběru prvního a druhého kódu vzorkovacích úhlů odpovídajících první a druhé frekvenci složek signálu DTMF, se kumulativní součet prvního a druhého kódu vzorkovací úhly odděleně, v tomto pořadí, periodicky fixované, s periodou odpovídající frekvenci vzorkovacích hodin, první a druhý výsledek kumulativního sčítání, čímž se získají první a druhé diskrétní hodnoty složek signálu DTMF uložených v adresově umístěných buňkách odpovídající tabulky diskrétních hodnot složek signálu DTMF, čtením z odpovídajících tabulek na adresách odpovídajících výsledkům kumulativního součtu kódů vzorkovacích úhlů, sečtením první a druhé diskrétní hodnoty složek signálu DTMF do získat třetí diskrétní hodnotu odpovídající hodnotě signálu DTMF, novinkou je získání první a druhé diskrétní hodnoty složek signálu DTMF uložených v adresovatelných buňkách odpovídajících tabulek diskrétních hodnot DTMF složky signálu se provádí čtením z odpovídajících tabulek na adresy odpovídající výsledkům kumulativního součtu první a druhé sekvence celých čísel, jejichž průměrná hodnota odpovídá kódům vzorkovacích úhlů odpovídajících složkám signál DTMF. Průměrná hodnota posloupnosti celých čísel tvořících výsledek kumulativního součtu může být navíc aritmetickým průměrem těchto čísel. Navíc periodické zaznamenávání prvního a druhého výsledku kumulativního součtu může být s periodou odpovídající vzorkovací hodinová frekvence, která je různá pro různé signály DTMF. Uvedený problém je také vyřešen tím, že u známého generátoru signálů DTMF, který obsahuje první akumulační sčítačku, první záchytný registr, první paměťové zařízení, druhou akumulační sčítačku , druhý záchytný registr, druhé paměťové zařízení, koncová sčítačka, digitálně-analogový převodník a výstup první akumulační sčítačky je připojen ke vstupu prvního záchytného registru, výstup prvního záchytného registru je připojen na vstup prvního paměťového zařízení, stejně jako na jeden ze vstupů první akumulační sčítačky, je výstup prvního paměťového zařízení připojen k jednomu ze vstupů koncové sčítačky, výstup druhé akumulační sčítačky připojený ke vstupu druhého záchytného registru je výstup druhého záchytného registru připojen ke vstupu druhého paměťového zařízení, stejně jako k jednomu ze vstupů druhé akumulační sčítačky, výstup druhého paměťového zařízení je připojen k jinému vstupu koncové sčítačky, výstup koncové sčítačky je připojen ke vstupu digitálně-analogového převodníku, jehož výstupem je výstup generátoru signálu DTMF, nový, podle Vynález je takový, že generátor signálu DTMF dále obsahuje převodník kódů signálu DTMF na posloupnost celých čísel, dělič referenční frekvence generátoru signálu DTMF s nastavitelným koeficientem dělení, převodník kódů signálu DTMF na kód koeficientu dělení a první výstup převodníku DTMF signálových kódů v posloupnosti celých čísel je připojen na další vstup první akumulační sčítačky, druhý výstup převodníku DTMF signálových kódů v posloupnosti celých čísel je připojen k dalšímu vstupu druhé akumulační sčítačky, výstup hlavního děliče kmitočtu generátoru signálu DTMF s nastavitelným koeficientem dělení je spojen s hodinovým vstupem převodníku kódu signálu DTMF v sekvenci celých čísel a také s hodinovým vstupem prvního záchytného registru a hodin vstup druhého záchytného registru, výstup převodníku kódu signálu DTMF na kód koeficientu dělení je připojen na vstup nastavení koeficientu dělení hlavního děliče kmitočtu generátoru signálu DTMF, vstup hlavního děliče kmitočtu Generátor signálu DTMF s nastavitelným koeficientem dělení je vstupem referenční frekvence generátoru signálu DTMF, vstup převodníku kódů signálu DTMF na kód koeficientu dělení je spojen se vstupem převodníku kódů signálu DTMF do sekvence celá čísla a je vstupem generátoru signálu DTMF. Kromě toho lze převodník kódů DTMF signálů na sekvence celých čísel provést ve formě řízeného programovatelného paměťového zařízení, jehož paměť tvoří, odpovídající počtu DTMF signálů, paměťové oblasti sestávající z paměťových buněk odpovídajících délka posloupnosti celých čísel, paměťové buňky navržené tak, že jedna polovina paměťové buňky ukládá číslo související s první posloupností celých čísel a druhá polovina paměťové buňky ukládá číslo související s jinou posloupností celých čísel, která jsou termíny odpovídajících akumulačních sčítaček a řízení programovatelného paměťového zařízení je konfigurováno tak, aby řídilo samostatně výběrovou oblast paměti a samostatnou paměťovou buňku Nové vlastnosti způsobu generování signálů DTMF a generátoru signálů DTMF, spolu se známými vlastnosti těchto objektů, poskytují nové technické vlastnosti objektů a v důsledku těchto vlastností je zajištěn nový potřebný technický výsledek Vztah příčiny a následku mezi souborem znaků Navržený způsob a dosažený technický výsledek jsou vysvětleno následovně: K odhalení podstaty navrhovaného technického řešení budou vhodné následující výpočty: y(P)=sin(n) (1.2), kde y(P) je diskrétní hodnota funkce sinus;=wT =27F/Fr (1.3) - úhel vzorkování, měřeno v radiánech; n - pořadové číslo vzorku - vzorek; F t = F OSC / kd - frekvence vzorkovacích hodin, kde F OSC - frekvence nastavení zařízení; kd - nastavitelné koeficient dělení.Poté = 2FC D / F O S C . (1.4) Jak známo, funkce sinus je periodická s periodou 2. Abychom převedli vzorkovací úhel z radiánů na relativní jednotky a získali kód vzorkovacího úhlu, rozdělíme celou periodu na m částí, kde m je binární celé číslo. Získáme tak jednu minimální diskrétní část periody: = 2/m. (1.5) Kód vzorkovacího úhlu je relativní hodnota úhlu vzorkování v souladu s jednou částí periody, konkrétně K=/=2F/F t: 2P/m=Fm/F t. (1.6) Například, pro generované frekvence 1477 Hz a 697 Hz (odpovídá kódu signálu DTMF „3“) s m = 64 a hodinovou frekvencí Ft = 32768 Hz K 697 = 1,36; K l477 = 2,88. Je zřejmé, že pro binární zobrazení kódu vzorkovacího úhlu K 697 =1,36 V, v tomto pořadí, 136 vyžaduje 8 bitů (1281+640+320+160+81+40+20+10) a K 1477 =2,88 V, v tomto pořadí, 288 vyžaduje 9 bitů ( 2561+1280+640+321+ 160+80+40+ 20+10).Zároveň je pro kumulativní sčítání, respektive v binární reprezentaci potřeba 12 bitů, což určilo výše popsané nevýhody známých řešení. Navrhované technické řešení definuje např. číslo 1,36 jako průměrnou hodnotu posloupnosti celých čísel 1 a 2, a to 1,36=(1x+2y)/(x+y), kde x a y je počet čísel 1 a 2, periodicky se opakující s tečkou (x+y) Hodnota kódu vzorkovacího úhlu se skládá z celočíselné části C a zlomkové části, tzn. například 1,36=1+0,36. Relativní přesnost takové náhrady podle výrazu (1.7) = K/C (1.7) se zvyšuje s nárůstem celočíselné části hodnoty kódu vzorkovacího úhlu. Například pro generovanou frekvenci 697 Hz, m = 64 a hodinovou frekvenci Ft = 32768 Hz je chyba při nahrazení K 697 = 1,36 hodnotami čísel 1 a 2 36 a 32 %, v tomto pořadí. Současně, pokud zvýšíte hodnotu m = 256, pak se chyba nahrazení K 697 = 5,45 hodnotami čísel 5 a 6 sníží o 9 a 10 %. chyba generované frekvence, např. při nahrazení K 697 = 5,45 hodnotami čísel 5 a 6 během periody opakování, rovna 16, 5,45=(5x+6y)/(x+y), kde ( x+y)=16. Řešením rovnice dostaneme x=9, y=7, tzn. ze šestnácti kumulativních sčítacích operací se člen 5 sečte devětkrát a člen 6 sedmkrát, přičemž ve skutečnosti K 697 = 5,4375, dosazením této hodnoty do výrazu (1,6) za m = 256, F t = 32768 Hz určíme skutečná vypočtená hodnota generovaného kmitočtu F = 696 Hz, přičemž chyba zůstala 0,1 %.Takže kumulativní sčítání posloupnosti celých čísel, jejichž průměrná hodnota odpovídá odpovídajícím vzorkovacím úhlům, umožňuje dosáhnout vysokých technických a ekonomických ukazatelů snížením bitové kapacity operací kumulativního součtu, díky možnosti měnit komponenty výše uvedených výrazů, a odpovídajícím způsobem snížením bitové kapacity zařízení implementujících navrhovanou metodu, což vede ke snížení nákladů na hardware a energii při implementaci způsob, a zajistit vysokou technologickou výkonnost navrhované metody při použití v multifunkčních zařízeních z důvodu snížených technických nároků Vztah příčiny a následku mezi sestavou Charakteristiky navrženého technického řešení a dosaženého technického výsledku jsou vysvětleny následovně. Vysoký technický výsledek generátoru signálu DTMF je zajištěn zavedením nových prvků převodníku kódů signálu DTMF na posloupnost celých čísel, dělič referenční frekvence generátoru signálu DTMF s nastavitelným koeficientem dělení, převodník kódu signálu DTMF na dělitel koeficientového kódu, které zajišťují implementaci metody obvodovými prvky se stejnou bitovou hloubkou nepřesahující 8 bitů, přičemž odpadá redundance prvků nutná pro řešení několika problémů, např. jak pro záznam výsledku kumulativního součtu, tak i pro adresování odpovídajícího paměťového zařízení se používá stejný počet bitů, které nejsou implementovány více než 8bitový registr, který lze realizovat veřejně dostupnými prostředky v podobě jednoho mikroobvodu nebo v mikroprocesorové verzi např. jediná paměťová buňka. Kromě toho lze implementaci akumulačních sčítaček provést ve formě identických zařízení se stejnou bitovou hloubkou ve formě veřejně dostupných sčítacích mikroobvodů, které pracují se 4bitovými sčítačkami.Samozřejmě se rozumí, že čísla a v souladu s tím zařízení, která tvoří výše popsané sekvence celých čísel, jejichž souhrn určuje odpovídající kódy vzorkovacího úhlu, mohou být s jinou bitovou hloubkou, ale nejoptimálnější z hlediska plnění cílů stanovených navrhovaným řešením, jsou 4bitová čísla, vysoký technický výsledek je navíc zajištěn i při implementaci navrženého technického řešení v rámci mikrokontrolérů, kdy příkazy systémového mikrokontroléru nutně obsahují příkazy, které pracují se 4bitovými čísly - nibbles. navržené technické řešení generátoru signálu DTMF umožňuje vysoké technické výsledky spojené se snížením počtu obvodových prvků a zároveň poskytuje univerzálnost při implementaci generátoru signálu DTMF jako veřejně dostupného hardwaru a jako součást multifunkčních mikrokontrolérů, které určují vysoká ekonomická účinnost technického řešení Vynález je znázorněn na výkrese, kde obr. 1 funkčně znázorňuje generátor DTMF signálů, který implementuje způsob generování DTMF signálů Generátor DTMF signálů obsahuje převodník 1 kódů DTMF signálů v sekvenci celých čísel. , dělič 2 referenční frekvence generátoru signálu DTMF s nastavitelným dělicím koeficientem, převodník 3 kódů signálu DTMF na kód dělicího koeficientu, první akumulační sčítačka 4, první záchytný registr 5, první paměťové zařízení 6, druhé paměťové zařízení 7, druhý záchytný registr 8, druhá akumulační sčítačka, koncová sčítačka 10, digitálně-analogový převodník 11. Činnost generátoru signálu DTMF je ilustrována na příkladu implementace způsobu generování signálů DTMF. o výrazech (1.4, 1.6) a technických údajích, zejména frekvenci nastavení zařízení, kde bude navrhovaná metoda implementována, vypočítávají se posloupnosti celých čísel definující odpovídající kódy vzorkovacích úhlů a kódy dělicích koeficientů pro dělič 2 referenční frekvence generátoru signálů DTMF s nastavitelným koeficientem dělení, které se zapisují do odpovídajících buněk paměťových oblastí převodníku 1 kódů signálů DTMF v posloupnosti celých čísel a převodníku 3 kódů signálů DTMF do dílku kódy koeficientů, jsou také předem vypočítány diskrétní hodnoty odpovídajících sinusových funkcí, jejichž počet je určen počtem diskrétních m, a zapsány do odpovídajících pamětí 6 a 7 při generování signálu DTMF na vstupy převodníku 1 a převodníku 3, které jsou vstupy generátoru, na chvíli působení signálu DTMF se nastaví kód generovaného signálu DTMF, na výstupu převodníku 3 se nastaví kód, který určuje koeficient dělení pro dělič 2, zatímco na výstupu děliče 2 bude periodicky nastavován vzorkovací hodinový kmitočet s periodou odpovídající vzorkovacímu taktovacímu kmitočtu, z prvního výstupu převodníku 1 budou binární čísla obsažená v první sekvenci celých čísel. budou přivedeny na vstup první akumulační sčítačky 4 a z druhého výstupu převodníku 1 budou binární čísla obsažená ve druhé sekvenci celých čísel odpovídající složkám DTMF signálu přivedena na vstup druhé akumulační sčítačku 9 jsou výsledky kumulativního součtu přiváděny z výstupů kumulativních sčítaček na vstupy odpovídajících záchytných registrů 5 a 8, z výstupů záchytných registrů 5 a 8 jsou výsledky kumulativního součtu dodávány s a periody odpovídající frekvenci vzorkovacích hodin, jsou odesílány na další vstupy odpovídajících akumulačních sčítaček 4 a 9 a také na vstupy odpovídajících paměťových zařízení 6 a 7, čímž se nastavují adresy diskrétních hodnot sinů odpovídající složky signálu DTMF, z výstupů paměťových zařízení 6 a 7, jsou diskrétní hodnoty odpovídajících složek signálu DTMF přiváděny na odpovídající vstupy koncové sčítačky 10, na jejímž výstupu je diskrétní je vytvořen binární DTMF signál, který je přiveden na vstup digitálně-analogového převodníku 11, jehož výstup generuje stupňovitý sinusový DTMF signál odpovídající vstupnímu kódu DTMF signálu. Převodník 1 DTMF signálových kódů na posloupnost celých čísel (obr. 1) lze vyrobit ve tvaru znázorněném na obr. 2, kde převodník DTMF signálových kódů na posloupnost celých čísel obsahuje řídicí zařízení 12, programovatelnou paměť zařízení 13. Činnost generátoru DTMF signálů je znázorněna Níže je uveden konkrétní příklad implementace navrhované metody v telefonním hlasově-frekvenčním komunikátoru.Dříve byly na základě výrazů (1.4, 1.6) a technických dat sekvence celých čísel vypočítané, které určují odpovídající kódy vzorkovacího úhlu a kódy dělicího koeficientu pro dělič 2 referenční frekvence generátoru signálu DTMF s nastavitelným dělicím poměrem. Vzhledem k tomu, že implementace metody zahrnuje stejný typ výpočtů, pro ilustraci práce ukazuje konkrétní příklad implementaci metody pro generování DTMF signálu odpovídajícího stisku klávesy „7“ jako součásti tónově-pulzní volby. Jako referenční frekvence generátoru je nastavena křemenná frekvence nejběžnější v telefonní technice, a to F OSC =3579545 Hz. Stisk klávesy „7“ odpovídá DTMF signálu s horní frekvencí (sloupce) 1209 Hz a dolní frekvencí (řádky) 852 Hz. Vzhledem k tomu, že signál DTMF současně přenáší dvě frekvence, jsou koeficienty dělení vypočteny pro větší - horní frekvenci tak, aby se odpovídající kód vzorkovacího úhlu v souladu s výrazem (1.6) blížil maximální hodnotě - 16, která je implementována maximálně 4 bitová data. Tedy při F OSC = 3579545 Hz, počtu diskrétních hodnot sinů m = 128, vypočtené hodnoty dělicího koeficientu pro dělič 2 referenční frekvence generátoru signálu DTMF s nastavitelným dělicím koeficientem K D = 240 = 460, přičemž odpovídající kódy vzorkovacích úhlů pro horní frekvenci jsou K 1209 /852 =10,376, pro dolní frekvenci K 852/1209 =7,312 Kódy vzorkovacích úhlů nahradíme podle vynálezu sekvencemi celých, resp. 10/11 a 7/8.10.375 = (10x+11y)/(x+y), zatímco ve skutečnosti K 1209 / 852 = 10,3757,312 = (7x+8y)/(x+y), zatímco ve skutečnosti K 952/1209 = 7,313, přičemž (x+y) = 16. 10,375 je tedy nahrazeno periodicky se opakující sekvencí celých čísel 10 x 10krát a 11 x 6krát a 7 312 je nahrazeno jako 7 x 11krát a 8 x 5 Oblast paměti pro kód signálu DTMF „7“ v binárním vyjádření je následující:
Tímto způsobem se vypočítá šestnáct tabulek odpovídajících signálovým kódům DTMF, jmenovitě 0, 1, 2...9, *, #, A, B, C, D, a jsou předem zapsány do paměti programovatelného paměťového zařízení. 13 (převodník znakového kódu DTMF na sekvence celých čísel). Když stisknete klávesu, například „7“ na vstupu generátoru po dobu trvání signálu DTMF, bude binární kód signálu DTMF „7“ (0111) nastaven, převodník 3 kódu signálu DTMF na koeficient dělení převede kód signálu DTMF na kód koeficientu dělení kd pro dělič 2 referenční frekvence generátoru s nastavitelným koeficientem dělení, frekvence vzorkovacích hodin F t =F OSC /K D bude nastaven na výstupu děliče 2. Kód signálu DTMF také přichází na adresové vstupy nejvýznamnějších bitů programovatelného paměťového zařízení 13 (převodník kódů signálu DTMF na sekvence celých čísel) a je zde přítomen po dobu trvání signálu DTMF. Řízené zařízení 12, vyrobené např. ve formě čítače (převodník signálových kódů DTMF na sekvenci celých čísel), vlivem hodinových signálů s frekvencí t cyklicky mění svou hodnotu na paralelních výstupech postupně od 0000 na 1111, odpovídajícím způsobem změní hodnoty adresových vstupů bitů nižšího řádu programovatelného paměťového zařízení 13 (převodník signálových kódů DTMF na sekvenci celých čísel), na výstupu se objeví 8bitová (bajtová) čísla programovatelné paměťové zařízení 13 se vzorkovacím hodinovým kmitočtem a podle tabulky 1 tvoří čtyři nejvýznamnější bity (nejvýznamnější nibble) posloupnost celých čísel, jejichž souhrn, jmenovitě aritmetický průměr, určuje kód vzorkovacího úhlu odpovídající horní (sloupcové) frekvenci a nejméně významné čtyři bity (nízké nibble) tvoří posloupnost celých čísel, jejichž souhrn, jmenovitě aritmetický průměr, určuje kód vzorkovacího úhlu odpovídající spodní (řádkové) frekvenci, čtyř- bitová data podle tabulky 1 z výstupu programovatelného paměťového zařízení 13 (převodník signálových kódů DTMF na sekvenci celých čísel) jsou samostatně přiváděna na vstupy odpovídajících akumulačních sčítaček 4 a 9, na výstupech odpovídající sčítačky 4 a 9 se data mění s frekvencí vzorkovacích hodin od 0 do m (v tomto případě m=128), určují a fixují pomocí přídržných registrů 5 a 8 adresy pro paměťová zařízení 6 a 7, do kterých jsou binární diskrétní hodnoty odpovídajících sinusových složek signálu DTMF jsou příslušně zapsány, z výstupních paměťových zařízení 6 a 7 jsou na odpovídající vstupy koncové sčítačky 10 přivedeny binární diskrétní hodnoty odpovídajících sinusových složek signálu DTMF , na jehož výstupu se tvoří binární diskrétní hodnoty signálu DTMF, které jsou následně přivedeny na vstup digitálně-analogového převodníku 11, na jehož výstupu je generován stupňovitý sinusový signál DTMF. Generátor DTMF signálu lze realizovat na základě známých technických prostředků, popsaných např. v: Aplikace integrovaných obvodů v elektronické výpočetní technice. Příručka / Ed. B.N. Fayzulaeva, B.V. Tarabrina. - M.: Radio and Communications, 1986. V tomto případě může být převodník 3 signálových kódů DTMF na kódy dělicích koeficientů proveden např. ve formě paměťového čipu pouze pro čtení 155PE 3 (str. 343), implementace registrů je popsána na str. 108, implementace akumulačních sčítaček je popsána na str. 108. 114. Způsob podle vynálezu a generátor signálu DTMF jsou také implementovány na základě hardwaru od Microchip Inc. (8bitové jednočipové mikrokontroléry typu pic16f628), jako součást pulzně tónového telefonního komunikátoru „Kadran - NKT - 01“ vyráběného společností „Kadran“ (Ukrajina, Záporoží). Příkazový systém a vnitřní struktura uzlů mikrokontroléru jsou popsány v: Prokopenko B.Ya. Jednočipové mikrokontroléry. Dodeka, 2000, ISBN 8-87835-056-4 Popis parametrů signálu DTMF je uveden např. v: Integrované obvody: Čipy pro telefonii. Vydání 1 - M.: Dodeka, 1994, 256 s. - ISBN-5-87835-003-3., str. 12, 13.

NÁROK

1. Způsob generování signálů s dvoutónovou frekvencí (DTMF), zahrnující výběr prvních a druhých kódů vzorkovacího úhlu odpovídající první a druhé frekvenci složek signálu DTMF, kumulativně odděleně sčítat kódy prvního a druhého vzorkovacího úhlu s příslušně periodicky pevné periody odpovídající frekvenci vzorkovacích hodin, první a druhý výsledek kumulativního sčítání, získání první a druhé diskrétní hodnoty složek signálu DTMF uložených v adresově umístěných buňkách odpovídajících tabulek diskrétních hodnot Složky signálu DTMF načtením z odpovídajících tabulek na adresách odpovídajících výsledkům kumulativního součtu kódů vzorkovacích úhlů, sečtením první a druhé diskrétní hodnoty složek signálu DTMF pro získání třetí diskrétní hodnoty odpovídající hodnotě signálu DTMF, vyznačující se tím, že první a druhé diskrétní hodnoty složek signálu DTMF uložené v adresovatelných buňkách odpovídajících tabulek diskrétních hodnot složek signálu DTMF jsou získány čtením z odpovídajících tabulek na adresy , odpovídající výsledkům kumulativního součtu první a druhé posloupnosti celých čísel, jejichž průměrná hodnota odpovídá kódům vzorkovacích úhlů, odpovídajícím složkám signálu DTMF.2. 2. Způsob podle nároku 1, vyznačující se tím, že průměrná hodnota posloupnosti celých čísel tvořících výsledek kumulativního součtu je aritmetickým průměrem těchto čísel.3. 2. Způsob podle nároku 1, vyznačující se tím, že první a druhý výsledek kumulativního sčítání jsou periodicky zaznamenávány s periodou odpovídající vzorkovacímu taktu, který je odlišný pro různé signály DTMF.4. Generátor signálu DTMF, včetně první akumulační sčítačky, prvního záchytného registru, prvního paměťového zařízení, druhé akumulační sčítačky, druhého záchytného registru, druhého paměťového zařízení, koncové sčítačky, digitálně-analogového převodníku, přičemž výstup první akumulační sčítačky je připojen ke vstupu prvního registru zámků, výstup prvního registru zámků je připojen ke vstupu prvního paměťového zařízení a také k jednomu ze vstupů první akumulační sčítačky, výstup prvního paměťového zařízení je připojen k jednomu ze vstupů koncové sčítačky, výstup druhé akumulační sčítačky je připojen ke vstupu druhého registru západek, výstup druhého registru západek je připojen ke vstupu druhého paměťového zařízení, stejně jako s jedním ze vstupů druhé akumulační sčítačky, výstup druhého paměťového zařízení je propojen s dalším vstupem koncové sčítačky, výstup koncové sčítačky je spojen se vstupem digitální sčítačky. na analogový převodník, jehož výstupem je výstup generátoru DTMF signálu, vyznačující se tím, že generátor DTMF signálů navíc obsahuje převodník kódů DTMF signálů v sekvenci celých čísel, dělič referenční frekvence generátoru DTMF signálů s nastavitelným koeficientem dělení převodník kódů DTMF signálů na kód koeficientu dělení, přičemž první výstup převodníku kódů signálu DTMF v posloupnosti celých čísel je připojen k dalšímu vstupu první akumulační sčítačky, druhý výstup převodník kódů DTMF signálů v posloupnosti celých čísel je připojen na další vstup druhé akumulační sčítačky, výstup nastaveného děliče kmitočtu generátoru signálu DTMF s nastavitelným dělicím koeficientem je připojen na hodinový vstup převodníku kódů Signály DTMF v posloupnosti celých čísel, stejně jako na hodinový vstup prvního záchytného registru a hodinový vstup druhého přídržného registru, je výstup převodníku kódu signálu DTMF na kód dělicího koeficientu připojen ke vstupu nastavení. dělicí koeficient děliče referenční frekvence generátoru signálu DTMF, vstup děliče referenční frekvence generátoru signálu DTMF s nastavitelným koeficientem dělení je vstupem referenční frekvence generátoru signálu DTMF, vstup převodníku kódu signálu DTMF do kód dělicího koeficientu je připojen ke vstupu převodníku kódu signálu DTMF na sekvenci celých čísel a je vstupem generátoru signálu DTMF. 5. Generátor DTMF signálů podle nároku 4, vyznačující se tím, že kódový převodník DTMF signálů na posloupnost celých čísel je proveden ve formě řízeného programovatelného paměťového zařízení, jehož paměť se skládá z odpovídající počtu DTMF signálů. , paměťové oblasti sestávající z buněk odpovídající délce posloupnosti celočíselných čísel paměti, navržené tak, že v jedné polovině paměťové buňky je uloženo číslo vztahující se k první posloupnosti celých čísel a ve druhé polovině paměťové buňky číslo je uloženo odpovídající další sekvenci celých čísel, které jsou členy odpovídajících akumulačních sčítaček, a řízení programovatelného paměťového zařízení se provádí se schopností samostatně řídit výběr paměťové oblasti a samostatné paměťové buňky.

Tónová volba (Dual-tone multi-frequency signaling, DTMF) byla vyvinuta Bell Labs v 50. letech minulého století pro tehdy revoluční tlačítkový telefon. Pro reprezentaci a přenos digitálních dat v tónovém režimu se používá dvojice frekvencí (tónů) frekvenčního rozsahu řeči. Systém definuje dvě skupiny po čtyřech frekvencích a informace jsou kódovány vysíláním dvou frekvencí současně, jedna z každé skupiny. To dává celkem šestnáct kombinací reprezentujících šestnáct různých čísel, symbolů a písmen. Kódování DTMF se nyní používá v celé řadě komunikačních a řídicích aplikací, jak dokazuje například doporučení Mezinárodní telekomunikační unie (ITU) Q.23.

Tento článek popisuje obvod generátoru tónů DTMF, který reprodukuje všech osm frekvencí a generuje výsledný dvoutónový výstupní signál. Dotyčný systém byl postaven na čipu Silego GreenPAK™ SLG46620V a operačních zesilovačích Silego SLG88104V. Výsledný signál je součtem dvou frekvencí určených řádkem a sloupcem telefonní klávesnice.

Navrhovaný obvod používá čtyři vstupy pro výběr kombinace frekvencí, která má být generována. Obvod má také povolovací vstup, který spouští generování a určuje dobu přenosu signálu. Výstupní frekvence generátoru odpovídá standardu ITU pro DTMF.

DTMF tóny

Standard DTMF definuje kódování čísel 0-9, písmen A, B, C a D a znaků * a # jako kombinaci dvou frekvencí. Tyto frekvence jsou rozděleny do dvou skupin: vysokofrekvenční skupina a nízkofrekvenční skupina. Tabulka 1 ukazuje frekvence, skupiny a odpovídající reprezentace symbolů.

Stůl 1. DTMF tónové kódování

Skupina výšek

Nízkoprůchodová skupina

Frekvence byly zvoleny tak, aby se zabránilo více harmonickým. Navíc jejich součet nebo rozdíl nevede k jiné frekvenci DTMF. Tímto způsobem se zabrání harmonickým nebo modulačním zkreslením.

Norma Q.23 specifikuje, že chyba každé přenášené frekvence musí být v rozmezí ±1,8 % jmenovité hodnoty a celkové zkreslení (v důsledku harmonických nebo modulace) musí být 20 dB pod základními frekvencemi.

Výsledný signál popsaný výše lze popsat jako:

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

kde fhigh a flow jsou odpovídající frekvence z vysokofrekvenčních a nízkofrekvenčních skupin.

Obrázek 1 ukazuje výsledný signál pro číslici "1". Obrázek 2 ukazuje frekvenční spektrum odpovídající tomuto signálu.

Rýže. 1. Tón DTMF

Rýže. 2. Tónové spektrum DTMF

Délka tónů DTMF se může lišit v závislosti na konkrétní aplikaci, která používá kódování tónů. U nejběžnějších aplikací se hodnoty trvání obvykle pohybují mezi manuálním a automatickým vytáčením. Tabulka 2 ukazuje souhrn typické délky doby pro dva typy náboru.

Tabulka 2 Doba trvání signálů tónové volby

Typ číselníku

Skupina výšek

Skupina výšek

Manuální vytáčení

Automatické vytáčení

Pro větší flexibilitu je generátor DTMF nabízený v tomto návodu vybaven povolovacím vstupem, který se používá ke spuštění generování signálu a určení jeho trvání. V tomto případě je doba trvání signálu rovna trvání impulsu na vstupu povolení.

Analogová část obvodu generátoru DTMF

Doporučení ITU Q.23 definuje signály DTMF jako analogové signály vytvořené dvěma sinusovými vlnami. V navrženém obvodu generátoru DTMF generuje IC Silego GreenPAK SLG46620V obdélníkové signály s požadovanými frekvencemi DTMF. Pro získání sinusových signálů požadované frekvence a vytvoření výsledného signálu (součet dvou sinusových vln) jsou zapotřebí analogové filtry a sčítačka. Z tohoto důvodu bylo v tomto projektu rozhodnuto o použití filtrů a slučovače na bázi operačních zesilovačů SLG88104V.

Obrázek 3 ukazuje strukturu navrhované analogové části zařízení.

Rýže. 3. Analogový procesní obvod pro příjem DTMF signálu

Analogové filtry se používají k získání sinusových signálů z pravoúhlých pulzů. Po provedení filtrace se oba signály sečtou a vygeneruje se požadovaný výstupní dvoutónový DTMF signál.

Obrázek 4 ukazuje výsledek Fourierovy transformace použité k získání spektra obdélníkového signálu.

Rýže. 4. Spektrum obdélníkového signálu

Jak vidíte, čtvercová vlna obsahuje pouze liché harmonické. Pokud takový signál znázorníme s amplitudou A ve formě Fourierovy řady, bude mít následující tvar:

Analýza tohoto výrazu nám umožňuje dojít k závěru, že pokud mají analogové filtry dostatečný útlum pro harmonické, pak je docela možné získat sinusové signály s frekvencí rovnou frekvenci původního obdélníkového signálu.

Vezmeme-li v úvahu toleranci úrovně rušení definovanou v normě Q.23, je nutné zajistit, aby všechny harmonické byly utlumeny o 20 dB nebo více. Kromě toho musí být jakákoli frekvence ze skupiny dolní propusti kombinována s jakoukoli frekvencí ze skupiny horní propusti. S ohledem na tyto požadavky byly vyvinuty dva filtry, jeden pro každou skupinu.

Oba filtry byly dolnopropustné Butterworthovy filtry. Útlum Butterworthova filtru řádu n lze vypočítat jako:

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

kde fc je mezní frekvence filtru, n je řád filtru.

Rozdíl v útlumu mezi nejnižší frekvencí a nejvyšší frekvencí každé skupiny nemůže být větší než 3 dB, takže:

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

Dané absolutní hodnoty:

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

Také, jak jsme řekli dříve, harmonický útlum by měl být 20 dB nebo více. V tomto případě bude nejhorším případem nejnižší frekvence ve skupině, protože její 3. harmonická je nejnižší frekvence a je nejblíže mezní frekvenci filtru. Vzhledem k tomu, že 3. harmonická je 3x menší než základní, musí filtr splňovat podmínku (absolutní hodnoty):

A(3květ) 2 / A(květ) 2 > 10/3.

Pokud jsou tyto rovnice aplikovány na obě skupiny, pak použité filtry musí být filtry druhého řádu. To znamená, že budou mít dva odpory a dva kondenzátory, pokud budou implementovány pomocí operačních zesilovačů. Pokud by byly použity filtry třetího řádu, byla by citlivost na tolerance součástí nižší. Zvolené mezní frekvence filtru jsou 977 Hz pro skupinu dolních propustí a 1695 Hz pro skupinu horních propustí. Při těchto hodnotách jsou rozdíly v úrovních signálu ve frekvenčních skupinách v souladu s výše uvedenými požadavky a citlivost na změny mezní frekvence v důsledku tolerancí komponent je minimální.

Schématická schémata filtrů implementovaných pomocí SLG88104V jsou uvedena na obrázku 5. Jmenovité hodnoty prvního páru R-C jsou zvoleny tak, aby omezovaly výstupní proud čipu SLG46620V. Druhý článek filtru určuje zisk, který je 0,2. Amplituda obdélníkových signálů nastavuje pracovní bod operačního zesilovače na 2,5 V. Nežádoucí napětí jsou blokována výstupními filtračními kondenzátory.

Rýže. 5. Schémata výstupních filtrů

Na výstupu jsou signály filtru sečteny a výsledný signál je součtem harmonických vybraných ze skupiny nízkých a vysokých frekvencí. Pro kompenzaci útlumu filtru lze nastavit amplitudu výstupního signálu pomocí dvou rezistorů R9 a R10. Obrázek 6 ukazuje obvod sčítačky. Obrázek 7 ukazuje celou analogovou část obvodu.

Rýže. 6. Schematické schéma sčítačky

Rýže. 7. Analogová část obvodu

Digitální část obvodu DTMF tónového generátoru

Digitální část obvodu generátoru tónů DTMF obsahuje celou sadu generátorů obdélníkových vln - jeden pro každou frekvenci DTMF. Protože k vytvoření těchto generátorů je potřeba osm čítačů, byl pro jejich implementaci zvolen čip GreenPAK SLG46620V. Na výstupech digitálního obvodu jsou generovány dva obdélníkové signály, jeden pro každou frekvenční skupinu.

Obdélníkové signály jsou generovány pomocí čítačů a D klopných obvodů a mají pracovní cyklus 50 %. Z tohoto důvodu je frekvence spínání čítače dvojnásobkem požadované frekvence DTMF a klopný obvod DFF rozděluje výstupní signál na dva.

Zdrojem hodin pro čítače je vestavěný 2 MHz RC oscilátor, jehož frekvence je dále dělena 4 nebo 12. Dělič se volí s ohledem na bitovou kapacitu a maximální hodnotu každého čítače potřebnou pro získání konkrétního frekvence.

Pro generování vysokých frekvencí je potřeba méně vzorků, proto se k jejich generování používají 8bitové čítače, taktované z interního RC oscilátoru, jehož signál je dělený 4. Ze stejného důvodu jsou nižší frekvence implementovány pomocí 14bitových čítačů.

SLG46620V má pouze tři standardní 14bitové čítače, takže jedna z nižších frekvencí byla implementována pomocí 8bitového čítače CNT8. Aby se počet vzorků dostal do rozsahu 0...255, k taktování tohoto CNT8 bylo nutné použít signál RC oscilátoru dělený 12. Pro tento obvod platí kmitočet s největším počtem vzorků, který je, byla vybrána nejnižší frekvence. To nám umožnilo minimalizovat chyby.

Tabulka 3 ukazuje parametry každé čtvercové vlny.

Tabulka 3. Parametry generátorů čtvercových impulsů

Hodiny

Chyba frekvence [%]

Nízkoprůchodová skupina

Skupina výšek

Jak je z tabulky patrné, všechny frekvence mají chybu menší než 1,8 %, vyhovují tedy standardu DTMF. Tyto vypočtené charakteristiky, založené na ideální frekvenci RC oscilátoru, lze upravit měřením výstupní frekvence RC oscilátoru.

Přestože v navrženém obvodu pracují všechny generátory paralelně, na výstup mikroobvodu bude poslán signál pouze jednoho generátoru z každé skupiny. Volbu konkrétních signálů určuje uživatel. To se provádí pomocí čtyř vstupů GPIO (dva bity pro každou skupinu) s pravdivostní tabulkou uvedenou v tabulce 4.

Tabulka 4. Tabulka pro výběr frekvencí z nízkofrekvenční skupiny

Nízkoprůchodová skupina

Tabulka 5. Tabulka výběru frekvence z vysokofrekvenční skupiny

Skupina výšek

Obrázek 8 ukazuje logický obvod generátoru obdélníkových vln o frekvenci 852 Hz. Tento vzor se opakuje pro každou frekvenci s příslušným nastavením čítače a konfigurací LUT.

Rýže. 8. Generátor obdélníkových impulsů

Čítač generuje výstupní frekvenci určenou jeho nastavením. Tato frekvence je rovna dvojnásobku frekvence odpovídajícího tónu DTMF. Konfigurační parametry měřiče jsou zobrazeny na obrázku 9.

Rýže. 9. Příklad nastavení čítače obdélníkového generátoru impulsů

Výstupní signál čítače je připojen k hodinovému vstupu klopného obvodu D-Flip Flop. Protože je výstup DFF nakonfigurován jako invertovaný, připojíte-li výstup DFF k jeho vstupu, klopný obvod D se převede na klopný obvod T. Konfigurační parametry DFF jsou vidět na obrázku 10.

Rýže. 10. Příklad nastavení spouště obdélníkového generátoru pulsů

Signál z výstupu DFF je přiváděn na vstup pravdivostní tabulky LUT. LUT se používají k výběru jednoho signálu pro každou specifickou kombinaci R1-R0. Příklad konfigurace LUT je znázorněn na obrázku 11. V tomto příkladu, pokud R1 přijme 1 a R0 přijme 0, je vstupní signál odeslán na výstup. V ostatních případech výstup obsahuje „0“.

Rýže. 11. Příklad nastavení pravdivostní tabulky generátoru čtvercových impulsů

Jak bylo uvedeno výše, navrhovaný obvod má vstup Enable enable. Pokud je na vstupu povolení povolení logická jednotka „1“, pak jsou generované obdélníkové signály přiváděny do dvojice výstupů mikroobvodu. Doba přenosu se rovná trvání impulsu na vstupu povolení. K implementaci této funkce bylo zapotřebí několik dalších LUT.

Skupina horní propusti používá jednu 4bitovou LUT a jednu 2bitovou LUT, jak je znázorněno na obrázku 12.

Rýže. 12. Výstupní obvod skupiny výšek

4bitový LUT1 je nakonfigurován jako hradlo OR, takže pokud je na některém z jeho vstupů přítomna jednička, vydává logickou 1. Pravdivostní tabulky C1/C0 umožňují vybrat pouze jeden z oscilátorů, takže 4bitový LUT1 určuje, který signál bude na výstupu. Výstup tohoto LUT je připojen k 2bitovému LUT4, který vysílá signál pouze v případě, že vstup povolení je logická "1". Obrázky 13 a 14 ukazují konfigurace 4bitové LUT1 a 2bitové LUT4.

Rýže. 13. Konfigurace 4bitové LUT1

Rýže. 14. 2bitová konfigurace LUT4

Protože již neexistovaly 4bitové pravdivostní tabulky LUT, byly pro skupinu dolní propusti použity dvě 3bitové LUT.

Rýže. 15. Skupinový výstupní obvod dolní propusti

Kompletní vnitřní obvody GreenPAK SLG46620V jsou zobrazeny na obrázku 16. Obrázek 17 ukazuje konečné schéma zapojení generátoru DTMF.

Rýže. 16. Blokové schéma generátoru tónů DTMF

Rýže. 17. Schéma generátoru tónů DTMF

Testování obvodu generátoru DTMF

V první fázi testování navrženého DTMF generátoru bylo rozhodnuto zkontrolovat frekvence všech generovaných obdélníkových signálů pomocí osciloskopu. Jako příklad jsou na obrázcích 18 a 19 znázorněny výstupy obdélníkových vln pro 852 Hz a 1477 Hz.

Rýže. 18. Obdélníková vlna 852 Hz

Rýže. 19. Obdélníková vlna 1477 Hz

Jakmile byly zkontrolovány frekvence všech obdélníkových signálů, začalo testování analogové části obvodu. Byly zkoumány výstupní signály pro všechny kombinace nízkých a vysokých frekvencí. Jako příklad obrázek 20 ukazuje součet signálů 770 Hz a 1209 Hz a obrázek 21 ukazuje součet signálů 941 Hz a 1633 Hz.

Rýže. 20. DTMF tón 770 Hz a 1209 Hz

Rýže. 21. DTMF tón 941 Hz a 1633 Hz

Závěr

V tomto článku byl navržen obvod pro generátor tónů DTMF založený na čipu Silego GreenPAK SLG46620V a operačních zesilovačích Silego SLG88104V. Generátor umožňuje uživateli vybrat kombinace požadovaných frekvencí pomocí čtyř vstupů a ovládat vstup povolení, který určuje dobu trvání výstupních signálů.

Vlastnosti čipu SLG46620V:

  • Typ: Programovatelný integrovaný obvod se smíšeným signálem;
  • Analogové bloky: 8bitový ADC, dva DAC, šest komparátorů, dva filtry, ION, čtyři integrované oscilátory;
  • Digitální bloky: Až 18 I/O portů, propojovací matice a kombinatorická logika, programovatelné zpožďovací obvody, programovatelný generátor funkcí, šest 8bitových čítačů, tři 14bitové čítače, tři PWM oscilátory/komparátory;
  • Komunikační rozhraní: SPI;
  • Rozsah napájecího napětí: 1,8…5 V;
  • Rozsah provozních teplot: -40…85 °C;
  • Verze balení: 2 x 3 x 0,55 mm 20-pin STQFN.

Charakteristické rysy

  • Generování sinusových vln pomocí modulace šířky pulzu (PWM)
  • Kombinace různých sinusových signálů do jednoho DTMF signálu
  • Zdrojové kódy v jazycích assembler a C
  • Navrženo pro práci s STK500
  • Velikost kódu programu 260 bajtů / konstantní velikost tabulky 128 bajtů
  • Použití metody konverze tabulky

Úvod

Tento dokument popisuje techniku ​​generování signálů DTMF (dvoutónové vícefrekvenční signály) pomocí libovolného mikrokontroléru AVR obsahujícího jednotku pulsně šířkové modulace (PWM) a statickou RAM. Tyto signály jsou široce používány v telefonii, kde jsou reprodukovány při stisknutí tlačítek vytáčení telefonního přístroje. Pro správné generování signálu DTMF musí být dvě frekvence superponovány: nízká frekvence (fb) a vysoká frekvence (fa). Tabulka 1 ukazuje, jak jsou různé frekvence smíchány, aby se vytvořily tóny DTMF, když jsou stisknuty různé klávesy.


Obrázek 1. Obvod generátoru signálu DTMF

Tabulka 1. Matice generování tónů

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

Řádky tabulky 1 ukazují hodnoty nízké frekvence a sloupce hodnoty vysoké frekvence. Například matice ukazuje, že když stisknete tlačítko „5“, frekvence fb = 770 Hz a fa = 1336 Hz by měly být smíchány. V důsledku sčítání dvou sinusových signálů různých frekvencí se vytvoří signál DTMF

kde amplitudový poměr K=A b /A a původních signálů musí splňovat podmínku

Princip fungování

Kromě obecných informací o použití pulsně šířkové modulace bude níže ukázáno, jak pulsně šířková modulace umožňuje generovat sinusové signály. Následující odstavec popisuje, jak použít základní spínací frekvenci k získání různých frekvencí. Po prostudování teoretických základů bude uveden popis samotného generátoru DTMF signálu. Generování sinusových vln

V závislosti na poměru trvání vysokých napěťových úrovní VH a nízkých VL se mění průměrná hodnota na výstupu PWM. Pokud je poměr mezi trváními obou úrovní udržován konstantní, bude jako výsledek generována konstantní úroveň napětí VAV. Obrázek 2 ukazuje signál modulovaný šířkou pulzu.


Obrázek 2. Generování úrovně stejnosměrného napětí

Úroveň napětí je určena výrazem:

(3)

Sinusový signál může být generován za předpokladu, že se průměrná hodnota napětí generovaného pulzní šířkovou modulací mění v každém cyklu PWM. Vztah mezi vysokou a nízkou úrovní musí být nastaven v souladu s napěťovou úrovní sinusové vlny v odpovídajícím čase. Obrázek 3 ilustruje tento proces. Zdrojová data pro PWM se vypočítají pro každé jeho období a zaznamenají se do převodní tabulky (TC).

Obrázek 3 také ukazuje vztah mezi frekvencí základní sinusovky a počtem vzorků. Čím vyšší je počet vzorků (Nc), tím vyšší je přesnost modelování výsledného signálu:

(4)

Frekvence PWM závisí na rozlišení PWM. Při 8bitovém rozlišení je konečná hodnota (horní část počtu) časovače 0xFF (255). Protože Časovač počítá dopředu a dozadu, pak je třeba tuto hodnotu zdvojnásobit. Proto lze frekvenci PWM vypočítat vydělením frekvence hodin časovače f CK číslem 510. Při frekvenci hodin časovače 8 MHz bude tedy výsledná frekvence PWM 15,6 kHz.


Obrázek 3. Generování sinusovky pomocí PWM

Změna frekvence sinusovky

Předpokládejme, že sinusové vzorky nejsou čteny z vyhledávací tabulky postupně, ale jeden po druhém. V tomto případě bude při stejné vzorkovací frekvenci generován signál s dvojnásobnou frekvencí (viz obrázek 4).


Obrázek 4. Zdvojnásobení výsledné frekvence (XSW = 2)

Analogicky, pokud nečtete každou druhou hodnotu, ale každou třetí, čtvrtou, pátou (respektive šířka kroku je 3, 4, 5...) atd. je možné generovat Nc frekvence v rozsahu . Všimněte si, že pro vysoké frekvence nebude výsledný tvar vlny sinusový. Šířku kroku označíme podle převodní tabulky jako X SW, kde

(5)

Výpočet aktuální polohy v TP pro další periodu PWM (při přetečení časovače) se provádí pomocí výrazu (6). Nová hodnota v pozici X LUT závisí na jejím předchozím stavu v pozici X" LUT s přidáním šířky kroku X SW

(6)

Přidání různých frekvencí pro získání signálu DTMF

DTMF signál lze generovat pomocí výrazů (1) a (2). Pro zjednodušení aritmetických operací se bere hodnota koeficientu K rovna 0,75, aby se aritmetická operace nahradila logickými posuny. S přihlédnutím k výrazu (6) lze aktuální hodnotu pro řízení PWM vypočítat pomocí výrazu:

a s přihlédnutím k tomu, že X LUTa =X" LUTa + X SWa,X LUTb =X" LUTb + X SWb nakonec napíšeme

Implementace DTMF generátoru

Tento dodatek zkoumá konstrukci tónového generátoru DTMF pomocí 8bitového výstupu PWM (OC1A) a tabulky se 128 vzorky funkce sinus (Nc), z nichž každý je specifikován 7 bity (n). Následující výrazy ukazují tuto závislost a také ukazují, jak vypočítat položky vyhledávací tabulky:

(9)

Výhodou použití 7 bitů je, že součet hodnot vysokofrekvenčního a nízkofrekvenčního signálu má velikost jednoho bajtu. Pro podporu celé sady tónů DTMF je třeba vypočítat 8 hodnot pro každou frekvenci DTMF z tabulky 1 a zadat je do vyhledávací tabulky.

Pro dosažení vyšší přesnosti bylo implementováno následující řešení: hodnoty vypočítané pomocí výrazu 5 vyžadují pouze 5 bajtů. Chcete-li použít všech 8 bajtů, což sníží chyby zaokrouhlování, tato hodnota se vynásobí 8. Ukazatel na vyhledávací tabulku se zapíše stejným způsobem. Ale v tomto případě trvá uložení 8násobku hodnoty dva bajty. To znamená, že před použitím těchto bajtů jako ukazatele na hodnoty sinusové vlny v


Obrázek 5. Schéma modulu pro připojení k STK500

PWM signál je generován na pinu OC1A (PD5). Dodatečný výstupní filtr pomůže zajistit větší kompatibilitu signálu se sinusovým průběhem. Při snižování frekvence PWM může být pro dosažení dobrého výsledku nutné použít filtr se strmější frekvenční odezvou.

Zapojení klávesnice je znázorněno na obrázku 1. Obsluha klávesnice musí být organizována tak, aby bylo možné určit stisknutou klávesu. To lze provést pomocí následujícího algoritmu:

  1. Určení řetězce stisknuté klávesy
    • nakonfigurujte notebook nízkého řádu portu B jako výstup a nastavte protokol. "0"
    • nakonfigurujte vysokou tetradu portu B jako vstup s připojením pull-up rezistorů
    • řádek se stisknutým tlačítkem je definován jako číslice nejvyšší tetrády s log. "0"
  2. Definování sloupce stisknuté klávesy
    • nakonfigurujte vysoký notebook portu B jako výstup a nastavte log. "0"
    • nakonfigurujte tetrádu nízkého řádu portu B jako vstup připojením pull-up rezistorů
    • sloupec se stisknutým tlačítkem je definován jako číslice tetrády nízkého řádu s log. "0"

Poznámka: U STK200 jsou rezistory zapojeny do série mezi kolíky konektoru PORTB a kolíky mikrokontroléru BP5, PB6 a PB7 (viz schéma STK200). To způsobí problémy, pokud je klávesnice připojena ke konektoru PORTB.

Obrázek 6 znázorňuje činnost podprogramu pro určení stisknuté klávesy. V závislosti na stisknutém tlačítku se určí délka intervalu. Rutina přerušení používá tuto hodnotu k výpočtu nastavení PWM pro dvě sinusové vlny tónu DTM. Postup zpracování přerušení je znázorněn na obrázcích 7 a 8.

Tato rutina vypočítá hodnotu pro porovnání s výstupem časovače pro další periodu PWM. Rutina přerušení nejprve vypočítá pozici další hodnoty vzorku ve vyhledávací tabulce a přečte hodnotu tam uloženou.

Poloha vzorku ve vyhledávací tabulce je určena šířkou pulzu a skutečná šířka pulzu je určena generovanou frekvencí.

Konečná hodnota, která je zapsána do porovnávacího registru časovače, je určena pomocí vzorce (7), který bere v úvahu vzorové hodnoty obou DTMF frekvencí.


Obrázek 6. Blokové schéma hlavního programu


Obrázek 7. Blokové schéma procedury zpracování přerušení přetečení časovače


Obrázek 8. Vývojový diagram postupu odečítání vzorku "GetSample".

Publikace: www.cxem.net

Viz další články sekce.