Metode for å generere dtmf-signaler og dtmf-signalgenerator. Generering og gjenkjenning av DTMF-signaler DTMF-tonesignalgeneratorbrikke

Første del dette eksemplet Applikasjonen beskriver generering av DTMF-signaler ved hjelp av MSP430-mikrokontrolleren. Det gis en forklaring på de viktigste spesifikasjonene som brukes i dette tilfellet, og den teoretiske og matematiske begrunnelsen for å generere sinusbølger ved bruk av firkantbølger ved bruk av passende analoge filtre er gitt. Eksemplet inkluderer også testede demoprogrammer for å generere firkantbølgesignaler basert på ulike timerkonfigurasjoner av MSP430-mikrokontrollerne. Den siste delen gir kretsskjema, som lar deg generere DTMF-signaler fra firkantbølgesignaler.

2 DTMF-signalspesifikasjon

Forkortelsen DTMF står for "Dual Tone Multi Frequency" og er en metode for å representere sifre ved forskjellige frekvenser med det formål å sende dem over analoge kommunikasjonslinjer, f.eks. telefonlinje. Ved utviklingen av standarden ble tilstanden tatt i betraktning - alle frekvenser må være i "stemme" -området, noe som gjorde det mulig å redusere kravene til overføringskanalen. Telefonnettverk bruker DTMF-signaler for oppringing og annen informasjon. Til tross for at pulsoppringingsmetoden fortsatt er mye brukt, som er standarden, for eksempel i Tyskland, øker oppringingstiden betydelig, noe som fører til uproduktiv belastning på kommunikasjonslinjer. I tillegg mange Tilleggstjenester Kommunikasjon er kun mulig med toneoppringing. Ved koding med DTMF-metoden, tallene 0-9 og bokstavene A-D, */E og #/F representerer kombinasjoner av to frekvenser:

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

I dette systemet representerer kolonnen frekvensen fra den "øvre" frekvensgruppen (Hi-Group: 1209-1633 Hz), og raden representerer frekvensen fra den "nedre" frekvensgruppen (Lo-Group: 697-941 Hz) . Tonale frekvenser er valgt for å eliminere påvirkningen av harmoniske. Frekvensene er ikke multipler av hverandre, og ingen DTMF-frekvens kan oppnås ved å legge til eller trekke fra andre frekvenser. For å generere en oppringer på Deutsche Telekom-nettverket, kreves følgende spesifikasjoner (hentet fra Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikasjon, BAPT 223 ZV 5 (Offisiell spesifikasjon av det føderale departementet for post og telekommunikasjon):

3 Generer DTMF-signaler

Som beskrevet ovenfor er DTMF-signaler analoge og består av to uavhengige sinusbølger. Dermed er det ikke mulig å generere slike signaler kun digitalt. Digitale signaler må konverteres ved hjelp av ADC og/eller analoge filtre til den nødvendige sinusbølgeformen.

3.1 Generering ved hjelp av firkantbølger

Hvis firkantbølgesignaler brukes til å generere DTMF-signaler, vil programvaren og maskinvare minimal. Ethvert kontinuerlig signal med en periode T kan representeres av en Fourier-serie som består av en uendelig sum av sinus- og cosinusbølger som følger:

Hvor a0/2 er den konstante komponenten av signalet. Sumelementet med den laveste vinkelfrekvensen (w0) kalles hoved (fundamental) harmoniske, resten er overtoner eller høyere harmoniske.

Det enkleste kontinuerlige signalet implementert ved hjelp av en mikrokontroller er en firkantbølge, Fourier-serien som har formen:

Bidraget til hver frekvenskomponent til det totale signalet demonstreres best av amplitudespekteret (se fig. 2):


Ris. 2: Amplitudespekteret til et firkantbølgesignal

Ved bruk av analogt filter blir DC-komponenten og høyere harmoniske effektivt undertrykt, mens vi ved utgangen har et sinusformet signal med en frekvens lik frekvensen til den opprinnelige firkantbølgen.

3.2 Programvareå generere en meander

Meandergenerasjonsprogrammet må tilfredsstille følgende krav:

  • Kunne syntetisere to uavhengige rektangulære signaler.
  • For å skille signalene, kreves det to utgangspinner for å generere signaler fra den "øvre" (Hi-Group) og "nedre" (Lo-Group) frekvensområder hhv.
  • Programvaren skal kunne stille inn nødvendig signalvarighet i området ca. 65 ms - 100 ms.

MSP430-seriens mikrokontrollere har forskjellige innebygde timere som er i stand til å generere firkantbølgesignaler. '31x/'32x-familien bruker en 8-bits timer og en timerport for å generere begge firkantbølgesignalene. Dette programmet testet ved MCLK-frekvens lik 1,048 MHz. Timer_A i '33x-familien kan uavhengig generere begge nødvendige signaler. Det andre programmet bruker denne timeren til å generere firkantbølger og fungerer med alle MCLK-frekvenser. Begge programmene vil bli diskutert i detalj nedenfor.

3.2.1 Generering av firkantbølger ved hjelp av en 8-bits timer og timerport

I fig. 3 er et flytskjema over initialiseringsprosedyren for å generere DTMF-signaler. For å syntetisere de to frekvensene, brukes timerporten og 8-bits timertellere. Hver av dem er et programmerbart tellerregister som er nødvendig for nøyaktig syntese av de nødvendige frekvensene. Hvis timer-port-tellerne er kaskaded til en enkelt 16-bits timer og klokket til systemfrekvensen MCLK, så kan høyfrekvensfrekvensene genereres med høy nøyaktighet. Når et avbrudd oppstår, blir den tilsvarende utgangen svitsjet og begge 8-bits tellerregistrene tilbakestilles. Lastede verdier lagres i to variabler i RAM for å lagre interne registre for andre oppgaver.

Lavfrekvensfrekvensene genereres av en 8-bits timer. Siden tellerregisteret til denne timeren er 8 bits bredt, forårsaker bare hvert tredje avbrudd en nivåendring på den nødvendige utgangspinnen, slik at den samme frekvenstelleren kan genereres.

To timerutganger - porter brukes til å danne to meandere med forskjellige frekvenser.

Ris. 3 Flytskjema for initialiseringsprosedyre for generering av DTMF-signaler

Initialiseringsprosedyren utføres kun én gang. Etter fullføringen leses den heksadesimale verdien til det overførte tegnet fra den globale variabelen i RAM. Når de to frekvensene som danner de høye og lave DTMF-tonene er generert fra de to tabellene, er alt som kreves å initialisere og starte begge tidtakerne. Varigheten av sendingen kontrolleres ved å telle halvsyklusene til den "lavere" frekvensen og leses fra en ekstra tabell. Når denne prosedyren er fullført, går du tilbake til pollingfunksjonen. De tilsvarende rutinene for avbruddshåndtering bytter portpinnene. Denne prosessen er vist i fig. 4 og 5.

Oppgavene til timer-porten inkluderer kun registrering av loggen. nivå ved portutgangen og omlasting av telleren fra RAM, mens driften av en 8-bits timer har en litt mer kompleks struktur: hver inngang til avbruddet telles av et tellerregister. Utgangen kan endre tilstand bare etter tre avbrudd. I tillegg telles også hver halvsyklus. Genereringen stopper når et visst antall halvsykluser er nådd.


Ris. 4 blokk – avbruddskrets fra en 8-bits timer (Lo-Group)


Ris. 5 Block – timer-port avbruddskrets (Hi-Group)

; Egendefinerte definisjoner FLLMPY equ 32 ; Frekvensmultiplikator FLL ved 1,048 MHz TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f kvarts DL equ 85 ; Varighet DTMF-signal (65..100 ms) LO_OUT equ 02h ; Utgang av "lavere" frekvens HI_OUT equ 04h ; Høyfrekvent utgang RCOUNT equ r14 ; Lengdeteller DTMF RTEMP equ r15 ; tjeneste register.global DTMF_NR ; global variabel i RAM; for DTMF-nummer (0..F); Definisjoner RAM.even .bss DTMF_TL ; Even adresse alignment.bss DTMF_TH .bss DTMF_NR ; global variabel i RAM; for DTMF-nummer (0..F).even ; Definisjoner for 8-bits timer TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Definisjoner for den universelle timerporten TPCTL equ 04bh ; Timer-port kontroll TPCNT1 equ 04ch ; Timer-port teller 1 TPCNT2 equ 04dh ; Timer-port teller 2 TPD equ 04eh ; Timer-port data TPE equ 04fh ; Timer-port-resolution.text ; DTMF-frekvenstabeller: tabellen inneholder; antall MCLK-sykluser for en halvsyklus. ; Tabell for "øvre" frekvens; Korrigerende endring lagt til; å ta hensyn til tidspunktet for inntreden i avbruddet DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Høy frekvens for 0 .ord 0ffffh-(TCLK/(1207*2))+28 ; Høy frekvens for 1 .ord 0ffffh-(TCLK/(1336*2))+25 ; Høy frekvens for 2 .ord 0ffffh-(TCLK/(1477*2))+24 ; Høy frekvens for 3 ord 0ffffh-(TCLK/(1207*2))+28 ; Høy frekvens for 4 .ord 0ffffh-(TCLK/(1336*2))+25 ; Høy frekvens for 5 .ord 0ffffh-(TCLK/(1477*2))+24 ; Høy frekvens for 6 .ord 0ffffh-(TCLK/(1207*2))+28 ; Høy frekvens for 7 .ord 0ffffh-(TCLK/(1336*2))+25 ; Høy frekvens for 8 .ord 0ffffh-(TCLK/(1477*2))+24 ; Høy frekvens for 9 .ord 0ffffh-(TCLK/(1633*2))+22 ; Høy frekvens for A .ord 0ffffh-(TCLK/(1633*2))+22 ; Høy frekvens for B .ord 0ffffh-(TCLK/(1633*2))+22 ; Høy frekvens for C .ord 0ffffh-(TCLK/(1633*2))+22 ; Høy frekvens for D .ord 0ffffh-(TCLK/(1207*2))+28 ; Høy frekvens for * .ord 0ffffh-(TCLK/(1477*2))+24 ; Høy frekvens for # ; Tabell for "lavere" frekvens DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; Lav frekvens for 0 .byte 0ffh-(TCLK/(697*2*3)); Lav frekvens for 1 .byte 0ffh-(TCLK/(697*2*3)); Lav frekvens for 2 .byte 0ffh-(TCLK/(697*2*3)); Lav frekvens for 3 .byte 0ffh-(TCLK/(770*2*3)); Lav frekvens for 4 .byte 0ffh-(TCLK/(770*2*3)); Lav frekvens for 5 .byte 0ffh-(TCLK/(770*2*3)); Lav frekvens for 6 .byte 0ffh-(TCLK/(853*2*3)); Lav frekvens for 7 .byte 0ffh-(TCLK/(853*2*3)); Lav frekvens for 8 .byte 0ffh-(TCLK/(853*2*3)); Lav frekvens for 9 .byte 0ffh-(TCLK/(697*2*3)); Lav frekvens for A .byte 0ffh-(TCLK/(770*2*3)); Lav frekvens for B .byte 0ffh-(TCLK/(853*2*3)); Lav frekvens for C .byte 0ffh-(TCLK/(941*2*3)); Lav frekvens for D .byte 0ffh-(TCLK/(941*2*3)); Lav frekvens for *.byte 0ffh-(TCLK/(941*2*3)); Lav frekvens for # ; Signalvarighetstabell DTMF_L .byte 2*941*DL/1000 ; Halve sykluser for 0 .byte 2*697*DL/1000; Halve sykluser for 1 .byte 2*697*DL/1000; Halve sykluser for 2 byte 2*697*DL/1000; Halve sykluser for 3 byte 2*770*DL/1000; Halve sykluser for 4 byte 2*770*DL/1000; Halve sykluser for 5 .byte 2*770*DL/1000; Halve sykluser for 6 .byte 2*852*DL/1000 ; Halve sykluser for 7 .byte 2*852*DL/1000 ; Halve sykluser for 8 .byte 2*852*DL/1000 ; Halve sykluser for 9 .byte 2*697*DL/1000 ; Halve sykluser for A .byte 2*770*DL/1000 ; Halve sykluser for B.byte 2*852*DL/1000; Halve sykluser for C.byte 2*941*DL/1000; Halve sykluser for D .byte 2*941*DL/1000; Halve sykluser for *.byte 2*941*DL/1000 ; Halve sykluser for # ;********************************************* ********** *********************************** ; DTMF-TX DTMF subrutine ;********************************************* ********************************* DTMF_TX mov.b DTMF_NR,RTEMP ; Lagre nummeret i et midlertidig register mov.b DTMF_L(RTEMP),RCOUNT ; Lagre varighetsteller; klargjør 8-bits timer for DTMF-Lo frekvens mov.b #0a8h,&TCCTL ; Klokke fra MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Registrer forberedelse; forhåndslast mov.b #000,&TCDAT ; Laste en teller fra et register; forhåndslast bis.b #008h,&IE1 ; Aktiver avbrudd; fra en 8-bits timer; klargjøring av en timerport for DTMF-Hi-frekvensen rla r15; * 2 for 16-biters tabell mov DTMF_HI(RTEMP),&DTMF_TL ; lagre ord for høyfrekvent mov #003,RTEMP ; teller for 8-bits timer bis.b #008h,IE2 ; Aktiver avbrudd; fra timer-port mov.b &DTMF_TH,&TPCNT2 ; Laster den høye byten inn i TC2 mov.b &DTMF_TL,&TPCNT1 ; Laster lav byte inn i TC1 bis.b #080h,&TPD ; Aktiver 16-bits timer bis.b #HI_OUT+LO_OUT,&TPE ; Aktiver DTMF-Hi/Lo-utganger mov.b #090h,&TPCTL ; Aktiver timer ret ;************************************************** ********** *********************************** ; Timer-port avbrudd;********************************************* *** ******************************* TP_INT xor.b #HI_OUT,&TPD ; Inverter DTMF-Hi-utgang mov.b &DTMF_TH,&TPCNT2 ; Laster den høye byten inn i TC2 mov.b &DTMF_TL,&TPCNT1 ; Laster lav byte inn i TC1 bic.b #007h,&TPCTL ; Fjerning av reti-flagg ;************************************************** ********** *************

3.2.2 1 Generering av firkantbølger ved hjelp av Timer_A

Denne DTMF-signalgenereringsrutinen bruker bare Timer_A for å firkantbølge begge ønskede frekvenser. Monteringsprosessen beregner de riktige verdiene for timeren for å bruke programmet uavhengig av MCLK-frekvensverdien. Varigheten av utgangssignalet er spesifisert av DL-konstanten i millisekunder.

; Maskinvaredefinisjoner; FLLMPY .equ 32; Frekvensmultiplikator FLL ved 1,048 MHz TCLK .equ FLLMPY*32768; TCLK: FLLMPY x f kvarts DL .equ 82 ; DTMF-signalets varighet i ms; (65..100 ms) STAKKE .equ 600h ; Stabelinitialiseringsadresse; RAM definisjoner; STDTMF.equ 202h; Hi og Lo frekvensstatus TIM32B .equ 204 ; Forlengelse av timerregister LENGTH .equ 206h ; DTMF varighet teller; .tekst 0F000h ; Startadressen til programmet; ; Timer_A initialisering: MCLK, kontinuerlig modus, avbrudd aktivert; Klargjøring av timerutgangsmoduler Timer_A MCLK = 1,048 MHz (automatisk) ; INIT MOV #STACK,SP ;Initialisering av stabelpekeren CALL #INITSR ;Initialisering av multiplikatoren; FLL-frekvenser og RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Initialisere timeren MOV.B #TA2+TA1,&P3SEL ; Utganger TA2 og TA1 på portene P3.5/4 CLR TIM32B; Slett utvidet tidtakerregister BIS #MCONT,&TACTL ; Start timer Timer_A EINT ; Generell avbrudd aktiver MAINLOOP ... ; Hovedsløyfe; ;Tasttrykk: SDTMF inneholder tabellforskyvningen; for 2 frekvenser (0..6,0..6) i høy og lav byte; MOV&TAR,R5 ; For å starte umiddelbart: ADD FDTMFLO,R5 ; Offset for kortere tid MOV R5,&CCR1 ; Første tilstandsendring etter 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71ms MOV #OMT+CCIE,&CCTL1 ; Utgangsinversjon, bitavbrudd. MOV #OMT+CCIE,&CCTL2 ; Inverter utgang, avbruddsbit MOV.B STDTMF,R5 ; 82 ms teller RRA R5 ; antall tilstandsendringer med lavere frekvens MOV.B DTMFL(R5),LENGTH ; for signalets varighet... ; fortsettelse av programmet; ; Interrupt handler fra CCR0 (brukes ikke her); TIMMOD0 ... RETI ; ; Interrupt handler fra fangst-sammenligningsregistre 1..4; TIM_HND ADD &TAIV,PC ; Behandle forespørselen med den høyeste; RETI prioritet; ingen avbruddsforespørsel: RETI JMP HCCR1 ; forespørsel fra CCR1 (DTMF lavfrekvent) JMP HCCR2 ; forespørsel fra CCR2 (DTMF høy frekvens) JMP HCCR3 ; forespørsel fra CCR3 JMP HCCR4 ; forespørsel fra CCR4; TIMOVH INC TIM32B ; Utvide Timer_A til 32 bits RETI ; ; DTMF lav frekvens: TA1 inverterer utgangen fra utgangsenhet 1; Hver tilstandsendring telles for å kontrollere varigheten av signalet; HCCR1 PUSH R5 ; Lagring av brukte registre MOV.B STDTMF,R5 ; Lavfrekvensstatus DTMF ADD FDTMFLO(R5),&CCR1 ; Legg til halv syklus varighet DEC.B LENGTH ; Er DL-signalets varighet fullført? JNZ TARET ; Nei; ; Ja, stopp DTMF-signal: deaktiver avbrudd; BIC #OMRS+OUT+CCIE,&CCTL1 ; Tilbakestill TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Tilbakestill TA2 TARET POP R5 ; Gjenopprett R5 RETI; Retur fra avbrudd; ; Høyfrekvent DTMF: TA2 inverterer utgangen fra utgangsenhet 2; HCCR2 PUSH R5 ; Lagre brukte MOV-registre. B STDTMF+1,R5; Høyfrekvent status DTMF ADD FDTMFHI(R5),&CCR2 ; Legg til halvsyklus varighet POP R5 ; Gjenopprett R5 RETI; Retur fra avbrudd; HCCR3 ... ;Oppgave kontrollert av register CCR3 RETI HCCR4 ... ;Oppgave kontrollert av register CCR4 RETI ; ; DTMF Frekvenstabell: Tabellen inneholder; antall MCLK-sykluser per halv syklus. Verdier justert for; effektiv frekvens MCLK under monteringsprosessen; og avrundet til minimum mulig feil frekvenser; FDTMFLO .ord ((TCLK/697)+1)/2 ; Lavfrekvent DTMF 697Hz .ord ((TCLK/770)+1)/2 ; 770Hz.ord ((TCLK/852)+1)/2; 852Hz.ord ((TCLK/941)+1)/2; 941Hz FDTMFHI.ord ((TCLK/1209)+1)/2; Høyfrekvent DTMF1209Hz .ord ((TCLK/1336)+1)/2 ; 1336Hz.ord ((TCLK/1477)+1)/2; 1477Hz.ord ((TCLK/1633)+1)/2; 1633 Hz ; ; Tabellen inneholder antall halvsykluser for varigheten av DL-signalet (ms). ; Den nedre DTMF-frekvensen brukes for telling; DTMFL .byte 2*697*DL/1000 ; Antall halve sykluser.byte 2*770*DL/1000 ; for DL ​​i ms.byte 2*852*DL/1000 ; .byte 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; Timer avbrudd vektorer Timer_A .word TIM_HND ; Vektor av moduler 1..4 timers.word TIMMOD0 ; Timermodul 0 vektor.sect "INITVEC",0FFFEh ; Vektor Nullstille.word INIT

Nedenfor er en litt raskere løsning. Det krever imidlertid mer RAM fordi... Dataene hentet fra tabellene blir ikke beregnet på nytt hver gang, men lagres i et nøtteskall i RAM DTMFLO og DTMFHI. Lesing gjøres fra Timer_A timer avbruddsrutiner. Tabellene som brukes er identiske med de som er vist i forrige eksempel.

FLLMPY .equ 32; Frekvensmultiplikator FLL ved 1,048 MHz TCLK .equ FLLMPY*32768; TCLK: FLLMPY x f kvarts DL .equ 82 ; DTMF-signalets varighet; i ms (65..100 ms) STDTMF ekv 202h; Hi og Lo frekvensstatus TIM32B .equ 204 ; Forlengelse av timerregister LENGTH .equ 206h ; DTMF varighet teller DTMFLO .equ 208h ; Halvsyklus av den nedre frekvensen DTMFHI .equ 20Ah; Øvre frekvens halv syklus STAK .equ 600h ; Stack initialisering address.text 0F000h ; Startadressen til programmet; Timer_A initialisering: MCLK, kontinuerlig modus, avbrudd aktivert; Klargjøring av timerutgangsmoduler Timer_A MCLK = 1,048 MHz (automatisk) ; INIT MOV #STACK,SP ; Initialisere stabelpekeren CALL #INITSR ; Multiplikatorinitialisering; FLL-frekvenser og RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Start timer MOV.B #TA2+TA1,&P3SEL ; Utganger TA2 og TA1 på portene P3.5/4 CLR TIM32B; Sletting av det utvidede timerregisteret BIS #MCONT,&TACTL ;Starte timeren Timer_A EINT ; Generell avbrudd aktiver MAINLOOP ... ; Hovedsløyfe; Tastetrykk: SDTMF inneholder tabelloffset; for 2 frekvenser (0..6,0..6) i høy og lav byte; MOV&TAR,R5 ; For å starte umiddelbart ADD FDTMFLO,R5 ; Offset for kortere tid MOV R5,&CCR1 ; Første tilstandsendring etter 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71ms; ; Hent de to syklustellingene for DTMF-frekvensene; MOV.B STDTMF+1,R5; Høyfrekvent DTMF MOV FDTMFHI(R5),DTMFHI ; Halvsyklus varighet MOV.B STDTMF,R5 ; Lavfrekvent DTMF MOV DTMFLO(R5),DTMFLO ; Halv syklus varighet; ; Varighetsteller RRA R5 ; Forbered byteindeks MOV.B DTMFL(R5),LENGDE ; antall tilstandsendringer med lavere frekvens MOV #OMT+CCIE,&CCTL1 ; Utgangsinversjon, bitavbrudd. MOV #OMT+CCIE,&CCTL2 ; Utgangsinversjon, bitavbrudd. ... ; Gå tilbake til hovedsløyfen; ; Interrupt handler fra CCR0 (brukes ikke her); TIMMOD0 ... RETI ; ; Interrupt handler fra fangst-sammenligningsregistre 1..4; TIM_HND ADD &TAIV,PC ; Behandle forespørselen med den høyeste; RETI prioritet; ingen avbruddsforespørsel: RETI JMP HCCR1 ; forespørsel fra CCR1 (DTMF lavfrekvent) JMP HCCR2 ; forespørsel fra CCR2 (DTMF høyfrekvens) JMP HCCR3 ; forespørsel fra CCR3 JMP HCCR4 ; forespørsel fra CCR4; TIMOVH INC TIM32B ; Utvide Timer_A til 32 bits RETI ; ; DTMF lav frekvens: TA1 inverterer utgangen fra utgangsenhet 1; HCCR1 ADD DTMFLO,&CCR1 ; Legg til halv syklus varighet DEC.B LENGTH ; Er DL-signalets varighet fullført? JNZ TARET ; Nei; ; Ja, stopp DTMF-signal: deaktiver avbrudd; BIC #OMRS+OUT+CCIE,&CCTL1 ; Tilbakestill TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Tilbakestill TA2 TARET RETI ; Retur fra avbrudd; Høyfrekvent DTMF: TA2 inverterer utgangen fra utgangsenhet 2; HCCR2 ADD DTMFHI,&CCR2 ; Legg til halvsyklus varighet RETI ; Retur fra avbrudd; HCCR3. .. ;Oppgave kontrollert av register CCR3 RETI HCCR4 ... ;Oppgave kontrollert av register CCR4 RETI ; ; Avbruddstabellene og vektorene er identiske med de som er vist i forrige eksempel.

3.3 Maskinvare for generering av DTMF-signaler

Som nevnt ovenfor, i frekvensområdet 200 Hz.. 4600 Hz, må signalnivået til overføringsfrekvensen være minst 20 dB over nivået for fremmede signaler (støy). I tillegg, basert på spesifikasjonen, må signaler fra de "øvre" og "nedre" gruppene ha forskjellige nivåer, så hvert signal krever sitt eget filter. Sinusformede frekvensamplituder kan fås fra Fourier-serien.

For å velge grensefrekvenser når du designer et analogt filter, må du overholde følgende krav basert på:

  • Fordi det er nødvendig å sikre muligheten for kombinasjoner av frekvenser i den "nedre" gruppen med frekvenser i den "øvre" gruppen; forskjellen i nivåer mellom de laveste og høyeste frekvensene i gruppen bør ikke overstige 3 dB.
  • For den laveste frekvensen i gruppen (f1), bør harmonisk undertrykkelse (3f1) ikke være dårligere enn 20 dB. Oppfyllelsen av denne betingelsen er mest kritisk for den lavere frekvensen i gruppen, fordi den er så langt unna filterets grensefrekvens som mulig.

Formelen beskriver kvadratet av den absolutte verdien ved utgangen av et høypass Butterworth-filter av orden n:

Denne formelen representerer avhengigheten av Butterworth høypassfilterforsterkningen på frekvensen. Parametrene fg og n bestemmer henholdsvis cutoff-frekvensen og rekkefølgen til filteret.

Først av alt er det nødvendig å beregne den nødvendige filterrekkefølgen, under hensyntagen til overholdelse av kravene ovenfor.

For å tilfredsstille den første betingelsen, må forholdet mellom kvadratene av de absolutte verdiene for de laveste og høyeste frekvensene i gruppen ikke være mer enn 3 dB eller:

Den andre betingelsen vil bli oppfylt automatisk hvis forholdet mellom kvadratene av de absolutte verdiene til frekvensene f1 og 3f1 er mer enn 10/3, i dette tilfellet er den tredje harmoniske i det rektangulære signalet 1/3 mindre (se Fourier serie og fig. 2):

Som et resultat av beregninger for frekvensene til begge gruppene har vi den nødvendige filterrekkefølgen n=1,15. Dermed vil kravene tilfredsstilles av et 2. ordens filter, som kan bygges på operasjonsforsterker. Hvis du bruker et 3. ordens filter trenger du bare to ekstra elementer. Dette vil imidlertid redusere kravene til spredning av komponentparametere. Begge kravene ovenfor vil bli oppfylt hvis grensefrekvensen er innenfor følgende grenser:

Nederste gruppe fg>880 Hz fg<1418 Гц
Øvre gruppe fg>1527 Hz fg<2460 Гц

Hvis grensefrekvensen er på minimum, vil maksimal harmonisk reduksjon forekomme. Men i dette tilfellet vil forskjellen mellom de laveste og høyeste frekvensene i gruppen være 3 dB. Ved høyest mulig grensefrekvens er nivåforskjellen minimal, men harmoniske komponenter undertrykkes med kun 20 dB.

Ved beregning av filteret ble det gitt økt oppmerksomhet til harmonisk undertrykkelse; nivåforskjellen i gruppen ble fastsatt til 2 dB. Som et resultat er grensefrekvensene 977 Hz og 1695 Hz. Den resulterende harmoniske undertrykkelsen overstiger kravene betydelig. Forskjellen i frekvensnivåer i gruppen er innenfor kravene selv ved avvik i grensefrekvensen knyttet til spredningen i parameterne til komponentene som brukes. Ved beregning av verdiene til filterelementene ble motstander valgt basert på deres maksimale nærhet til standardverdiene til E12-serien.

Ved filterutgangene er resultatet to sinusformede signaler med betydelig undertrykte harmoniske. For å kombinere disse signalene introduseres en ekstra adderer.

Ved å bruke bare 3 op-ampere og noen få passive elementer, er vi i stand til å generere DTMF-signaler ved hjelp av en mikrokontroller uten å bruke betydelige dataressurser.

Ved hjelp av simulatorprogrammer ble omtrentlige verdier sjekket. Responsen til filtrene samsvarer veldig tett med den beregnede frekvensresponsen.


Ris. 6: Amplitudespekteret til et rektangulært signal med en frekvens på 697 Hz ved utgangen av et 3. ordens filter

I fig. Figur 6 viser amplitudespekteret til et rektangulært signal med en frekvens på 697 Hz, ført gjennom et 3. ordens filter. Som det fremgår av figuren, er tredje og femte harmoniske (2091 Hz og 3485 Hz) betydelig dempet (-25,6 dB).


Ris. 7: Amplitudespekteret til et rektangulært signal med en frekvens på 941 Hz ved utgangen av et 3. ordens filter

I fig. Figur 7 viser spekteret til et firkantbølgesignal med en frekvens på 941 Hz. I frekvensområdet av interesse for oss, opp til 4600 Hz, er det bare en harmonisk. Etter å ha passert filteret, er denne 2823 Hz harmoniske betydelig dempet (-27,9 dB). Nivåforskjellen mellom de laveste og høyeste frekvensene i gruppen overstiger ikke 1,9 dB.

For å bruke lavkostkomponenter med stor variasjon i parametere, ble det utført ytterligere modellering. Simuleringsresultatene viste at den tillatte spredningen i verdiene til motstander og kondensatorer er 10%.


Figur 8: Histogram – fordeling av signalnivåer i en gruppe


Figur 9: Histogram – Harmonisk undertrykkelse

I fig. 8 og 9 viser histogrammer oppnådd ved bruk av Monte Carlo-analyse. I dette tilfellet varierte komponentverdiene tilfeldig innenfor en spredning på 10 %. Etter 100 iterasjoner er resultatene for alle simulerte filtre plottet i histogrammer. I histogrammet i fig. Figur 8 viser nivåforskjellen mellom frekvenser innen gruppen. Den maksimalt tillatte forskjellen på 3 dB mellom minimums- og maksimumsfrekvensen ble ikke oppnådd i alle tilfeller. Gjennomsnittsverdien er 1,6 dB, som er litt bedre enn den beregnede verdien på 2 dB.

I fig. Figur 9 viser dempningen av harmoniske for den "lavere" frekvensgruppen. Den nødvendige verdien på 20 dB oppnås i alle tilfeller, gjennomsnittsverdien er omtrent 27 dB. I verste fall undertrykkes den harmoniske med 24,2 dB.

Verdiene beregnet for filteret til den "nedre" frekvensgruppen er også utført for filteret til den "øvre" frekvensgruppen.

Begge filtrene har identiske kretser. Den eneste forskjellen er i cutoff-frekvensene til filtrene for de øvre og nedre frekvensgruppene. R1 og C1 danner et 1. ordens høypassfilter. Fordi inngangsmotstanden til kretsen avhenger også av R1, verdien av dette elementet bør ikke være for liten; ellers vil mikrokontrollerutgangene bli overbelastet og firkantbølgeformen vil bli forvrengt. I dette tilfellet vil ytterligere frekvenser som følge av intermodulasjonsforvrengning legges til signalet, noe som vil påvirke signal-til-støy-forholdet negativt.

Overføringsfunksjonen til høyere ordens filtre kan ikke oppnås ved bruk av passive komponenter alene.

Dermed må 2. ordens filter inneholde en op-amp. Den aktive filterforsterkningen settes til 0,2 ved hjelp av motstandene R1-1 og R1-2. Som du ser er signalet noe svekket. Dette er nødvendig for å unngå overbelastning av op-ampen, fordi toppamplituden til den fundamentale sinusformede harmoniske til firkantbølgesignalet overstiger amplituden til selve firkantbølgesignalet (se Fourier-serien og fig. 2). En ekstra adderer justerer ønsket utgangsnivå. På grunn av den konstante komponenten til det rektangulære signalet settes driftspunktet til op-ampen på nivået Vcc/2 (se også Fourier-serien og fig. 2). I dette tilfellet kan den konstante komponenten ikke elimineres av inngangsdeleren R1-1/R1-2. For å koble fra OS-kretsen ved likespenning, brukes kondensator C3.

Ved hver av utgangene til det analoge filteret genereres et signal fra henholdsvis øvre og nedre frekvensgruppe. I en ekstra adderer legges disse signalene til. I dette kretselementet kan du stille inn forholdet mellom "nedre" og "øvre" frekvenser i det totale signalet og utgangssignalnivået ved hjelp av motstandene R4 og R5. Dermed kan utgangsamplituden enkelt justeres for å passe ulike krav i forskjellige land.

Ved beregning av komponentverdiene var kondensatorverdiene som vanlig faste, og motstandsverdiene ble beregnet i samsvar med dem. I denne kretsen ble det brukt kondensatorer og motstander i standard E12-serien med en spredning på 10%.

I fig. Figur 10 viser et skjematisk diagram av analoge filtre og en adderer:


Ris. 10: Skjematisk diagram av analoge filtre med en ekstra adderer

Kondensatorer C1-1 og C1-2 kombinerer de to signalene sammen ved Vcc/2-driftspunktet. Du bør ikke velge for store verdier for disse elementene, fordi de er lavpassfilterelementer for å eliminere lavfrekvente subharmoniske. Filterkondensator C5 eliminerer referansespenningsstøy. En ekstra kondensator C6 koblet parallelt med tilbakekoblingsmotstanden R6 danner et førsteordens høypassfilter. Hvis den laveste filtergrensefrekvensen er valgt, vil ytterligere filtrering av høyfrekvent intermodulasjonsinterferens forbedre kvaliteten på utgangssignalet, men det vil være en viss dempning av de høyeste frekvensene i den "øvre" gruppen. I noen tilfeller er det ikke nødvendig å generere den høyeste DTMF-frekvensen på 1633 Hz fordi den brukes kun til å danne tjenestesymboler A-D, og ​​signal-til-støy-forholdet kan forbedres ved å senke filterets grensefrekvens. Økning av cutoff-frekvensen fører således til en økning i nivået av høyfrekvent interferens, men samtidig reduseres den negative påvirkningen på de høyeste frekvenskomponentene til DTMF-signalet.

4 Resultater av studier av DTMF-sendersignaler

Spektrogrammene nedenfor (fig. 11 og 12) viser utgangssignalene til DTMF-senderen ved forskjellige frekvenser. I fig. Figur 11 viser amplitudespekteret til symbolet "1". Frekvensene som kreves for overføringen - 697 og 1207 Hz - er på nivået på henholdsvis -10,5 dB og -8,5 dB. Overtoner ved 2091 og 3621 Hz undertrykkes med nesten 30 dB. For å overføre "D"-symbolet genereres de to høyeste frekvensene - 941 og 1633 Hz. Som man kan se av fig. 12, er lavfrekvensnivået -12 dB, høyfrekvensnivået er -11 dB. De tilsvarende harmoniske dempes med mer enn 30 dB. Dermed samsvarer de målte verdiene med simuleringsresultatene og spesifikasjonskravene.


Ris. 11: Amplitudespektrum for symbol "1": 697 og 1207 Hz


Ris. 12: Amplitudespekter for symbol "D": 941 og 1633 Hz

Absolutt frekvensnøyaktighet for de genererte firkantbølgesignalene kan ikke oppnås ved bruk av to forskjellige tidtakere; resultatet vil avhenge av kombinasjonen av de to frekvensene og typen tidtakere som brukes. Årsaken til dette er en tidsavbruddskonflikt. Den nødvendige nøyaktigheten på ±1,8 % oppfylles imidlertid med stor margin.

Hvis en 8-bits timer og en Timer Port-timer brukes ved en systemfrekvens på MCLK 1,048 MHz, genereres frekvensene til den "nedre" gruppen med en nøyaktighet på ikke dårligere enn 0,3 %. For frekvensene til den "øvre" gruppen ble det i praksis oppnådd et avvik på ikke mer enn 0,5%.

Det eneste unntaket er DTMF-tegnet "D", som de høyeste frekvensene genereres for. Som et resultat, i denne kombinasjonen har frekvensen til den "øvre" gruppen 1633 Hz et avvik på -0,97%.

Uten dette unntaket genereres selv den høyeste frekvensen på 1633 Hz med en nøyaktighet på bedre enn 0,5 %. Maksimale avvik for ulike frekvenser er gitt i tabellen:

Hvis Timer_A brukes til å generere frekvenser, vil feilen avhenge av MCLK-frekvensen som brukes:

MCLK, MHz 1,048 2,096 3,144 3,800
Multiplikator 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. Konklusjon

Programvaren for dette eksemplet er veldig enkel og krever en liten mengde RAM og ROM, som opptar omtrent 300 byte. Takket være den innebygde timermodulen genereres de nødvendige frekvensene med høy nøyaktighet uten å sløse med CPU-belastning. I en konfigurasjon der en 8-bits timer og en timer/port brukes til generering, opptar avbruddsrutiner omtrent 12 % av CPU-ressursen. I tilfellet når frekvenser genereres av Timer_A-timeren, reduseres CPU-belastningen for behandling av avbruddsrutiner til 6 %. Som et resultat kan andre oppgaver kjøres mens DTMF-signaler overføres, eller CPU-en kan settes i lavstrømmodus for å redusere strømforbruket.

Den gode funksjonaliteten til den beskrevne modulen for å generere DTMF-signaler ved bruk av firkantbølgesignaler demonstreres av maskinvarekretsdesignet. Fordi Det er mulig å bruke komponenter med et bredt spekter av parametere i kretsen; prisen på en slik løsning er veldig lav. Alle spesifikasjonskrav oppfylles i stor grad, så det er ikke nødvendig med en separat DTMF-signalgeneratormodul i instrumenter som bruker MSP430 som kontrollkontroller.

Hvis det i et spesielt tilfelle er nødvendig å øke signal-til-støy-forholdet ved å bruke en ekstra op-amp, kan et filter konstrueres for ytterligere å undertrykke intermodulasjonsforvrengning. En slik ekstra operasjonsforsterker finnes allerede i quad op-ampen i DIL14-pakken.

6 lenker

Bundesamt fur Post und Telekommunikasjon (Federal Office for Post and Telecommunications): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) des Telefonnetzes (offisiell spesifikasjon for terminalenheter koblet til analoge telefonforbindelser) sikkerhets- og anropskrav) / ISDN fra Deutschen Bundespost Telekom; Bundesministerium fur Post und Telekommunikation, Utkast, Bonn april 1994 Papula: Mathematik fur Ingenieure 2 (Mathematics for Engineers); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, Semiconductor Circuit Engineering), 10. utgave; Springer Verlag, Berlin 1993 Lutz Bierl / Texas Instruments: MSP430 Family, Metering Application Report, Texas Instruments, Issue 2.1, Jan 1997, SLAAE10B Texas Instruments: MSP430 Family, Architecture User's Guide and Module Library, Texas Instruments, 1996, SLAUE10B Texas Instruments: MSP430 Family, Software User's Guide, Texas Instruments, 1996 Texas Instruments: MSP430 Family, Assembly Language Tools User's Guide, Texas Instruments, 1996 Siwy, Robert: Systementwicklung einer Telekom-Applikation zum Senden og Empfangen av DTMF-Signalen med dem Microcontroller MSP430 (Development MSP430) telekommunikasjonssystem for mottak og overføring av digitale signaler basert på MSP430 mikrokontroller); Diplomarbeit, Fachhochschule Landshut, mai 1997

Karakteristiske trekk:

  • Generering av sinusbølger ved hjelp av pulsbreddemodulasjon (PWM)
  • Kombinere forskjellige sinusbølgesignaler til ett DTMF-signal
  • Kildekoder på assembly- og C-språk
  • Designet for å fungere med STK500
  • Programkodestørrelse 260 byte / konstant tabellstørrelse 128 byte
  • Bruke tabellkonverteringsmetoden

Introduksjon

Dette dokumentet beskriver en teknikk for å generere DTMF-signaler (dual-tone multi-frequency signals) ved å bruke en hvilken som helst AVR-mikrokontroller som inneholder en pulsbreddemodulasjonsenhet (PWM) og statisk RAM. Disse signalene er mye brukt i telefoni, hvor de gjengis når du trykker på ringeknappene på et telefonapparat. For å generere et DTMF-signal på riktig måte, må to frekvenser legges over hverandre: en lav frekvens (fb) og en høy frekvens (fa). Tabell 1 viser hvordan ulike frekvenser blandes for å produsere DTMF-toner når forskjellige taster trykkes.

Figur 1 – DTMF-signalgeneratorkrets

Tabell 1 – Tonesignalgenereringsmatrise

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

Radene i Tabell 1 viser lavfrekvensverdier, og kolonnene viser høyfrekvensverdier. For eksempel viser matrisen at når du trykker på “5”-knappen, skal frekvensene fb = 770 Hz og fa = 1336 Hz blandes. Som et resultat av tillegg av to sinusformede signaler med forskjellige frekvenser, dannes et DTMF-signal

hvor er amplitudeforholdet K=A b/A a kildesignaler må oppfylle betingelsen

Driftsprinsipp

I tillegg til generell informasjon om bruk av pulsbreddemodulasjon, vil det nedenfor vises hvordan pulsbreddemodulasjon lar deg generere sinusformede signaler. Det neste avsnittet beskriver hvordan du bruker basesvitsjefrekvensen for å oppnå forskjellige frekvenser. Etter gjennomgang av det teoretiske grunnlaget vil det bli gitt en beskrivelse av selve DTMF-signalgeneratoren. Generering av sinusbølger

Avhengig av forholdet mellom varigheten av høye VH- og lave VL-spenningsnivåer, endres gjennomsnittsverdien ved PWM-utgangen. Hvis forholdet mellom varighetene til begge nivåene holdes konstant, vil et konstant VAV-spenningsnivå genereres som et resultat. Figur 2 viser et pulsbreddemodulert signal.


Figur 2 – Generering av likespenningsnivå

Spenningsnivået bestemmes av uttrykket:

(3)

Et sinusformet signal kan genereres forutsatt at gjennomsnittsverdien av spenningen generert av pulsbreddemodulasjonen endres hver PWM-syklus. Forholdet mellom høye og lave nivåer må settes i samsvar med spenningsnivået til sinusbølgen på tilsvarende tidspunkt. Figur 3 illustrerer denne prosessen. Kildedataene for PWM beregnes for hver av periodene og registreres i konverteringstabellen (TC).

Figur 3 illustrerer også forholdet mellom frekvensen til den grunnleggende sinusbølgen og antall sampler. Jo høyere antall prøver (Nc), desto høyere er nøyaktigheten av å modellere det resulterende signalet:

(4)

PWM-frekvensen avhenger av PWM-oppløsningen. Ved 8-bits oppløsning er den endelige verdien (toppen av tellingen) for timeren 0xFF (255). Fordi Timeren teller forover og bakover, så må denne verdien dobles. Derfor kan PWM-frekvensen beregnes ved å dele timerklokkefrekvensen f CK med 510. Med en timerklokkefrekvens på 8 MHz vil den resulterende PWM-frekvensen være 15,6 kHz.


Figur 3 – Generering av et sinusformet signal ved bruk av PWM

Endring av frekvensen til en sinusbølge

La oss anta at sinusformede prøver leses fra oppslagstabellen ikke sekvensielt, men én om gangen. I dette tilfellet, med samme samplingshastighet, vil et signal med dobbel frekvens genereres (se figur 4).


Figur 4 – Dobling av den resulterende frekvensen (XSW = 2)

I analogi, hvis du leser ikke annenhver verdi, men hver tredje, fjerde, femte (henholdsvis trinnbredden er 3, 4, 5 ...), etc. det er mulig å generere Nc-frekvenser i området. Merk at for høye frekvenser vil den resulterende bølgeformen ikke være sinusformet. Vi betegner trinnbredden i henhold til konverteringstabellen som XSW, Hvor

(5)

Beregning av gjeldende posisjon i TP for neste PWM-periode (når timeren renner over) utføres ved hjelp av uttrykk (6). Ny verdi i posisjon X LUT avhenger av dens tidligere tilstand i posisjon X" LUT med økende trinnbredde XSW

(6)

Legge til forskjellige frekvenser for å oppnå et DTMF-signal

DTMF-signalet kan genereres ved å bruke uttrykk (1) og (2). For enkelhet av aritmetiske operasjoner, er verdien av koeffisienten K tatt lik 0,75 for å erstatte den aritmetiske operasjonen med logiske skift. Med hensyn til uttrykk (6), kan gjeldende verdi for PWM-kontroll beregnes ved hjelp av uttrykket:

og tatt i betraktning det X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, la oss endelig skrive det ned

Implementering av en DTMF-generator

Dette vedlegget undersøker konstruksjonen av en DTMF-tonegenerator som bruker en 8-bits PWM-utgang (OC1A) og en tabell med 128 sinusfunksjon (Nc)-sampler, hver spesifisert med 7 bits (n). Følgende uttrykk viser denne avhengigheten og viser også hvordan du beregner oppslagstabelloppføringene:

(9)

Fordelen med å bruke 7 bits er at summen av høy- og lavfrekvente signalverdier er en byte stor. For å støtte hele settet med DTMF-toner, må 8 verdier for hver DTMF-frekvens fra Tabell 1 beregnes og legges inn i oppslagstabellen.

For å oppnå høyere nøyaktighet ble følgende løsning implementert: verdiene beregnet med uttrykk 5 krever kun 5 byte. For å bruke alle 8 byte, som vil redusere avrundingsfeil, multipliseres denne verdien med 8. Pekeren til oppslagstabellen skrives på samme måte. Men i dette tilfellet tar det to byte å lagre 8 ganger verdien. Dette betyr at 3 høyreforskyvninger og en radiks Nc-moduloperasjon (logisk multiplikasjon med Nc-1) må utføres før disse bytene brukes som en peker til sinusbølgeverdiene i


Figur 5 – Modulskjema for tilkobling til STK500

PWM-signalet genereres ved pin OC1A (PD5). Et ekstra utgangsfilter vil bidra til å gjøre signalet mer kompatibelt med den sinusformede bølgeformen. Ved reduksjon av PWM-frekvensen kan det være nødvendig å bruke et filter med brattere frekvensrespons for å få et godt resultat.

Tastaturtilkoblingen er vist i figur 1. Betjeningen av tastaturet må organiseres på en slik måte at det er mulig å bestemme hvilken tast som er trykket. Dette kan gjøres ved hjelp av følgende algoritme:

  1. Bestemme strengen til den trykket tasten
    • konfigurer lavordre-notebooken til port B som en utgang og still inn loggen. "0"
    • konfigurer den høye tetrad av port B som en inngang med tilkobling av pull-up motstander
    • linjen med den trykket knappen er definert som sifferet til den høyeste tetrad med logg. "0"
  2. Definerer den trykket tastekolonnen
    • konfigurer den høye notebooken til port B som en utgang og still inn loggen. "0"
    • konfigurer lavordens tetrad til port B som en inngang ved å koble til pull-up motstander
    • kolonnen med den trykket knappen er definert som sifferet til lavordens tetrad med logg. "0"

Merk: I STK200 er motstander koblet i serie mellom PORTB-kontaktpinnene og mikrokontrollerpinnene BP5, PB6 og PB7 (se STK200-diagram). Dette vil forårsake problemer hvis tastaturet er koblet til PORTB-kontakten.

Figur 6 illustrerer operasjonen av subrutinen for å bestemme den nedtrykte tasten. Avhengig av tasten som trykkes, bestemmes varigheten av intervallet. Avbruddsrutinen bruker denne verdien til å beregne PWM-innstillingene for de to DTM-tonesinusbølgene. Prosedyren for avbruddshåndtering er vist i figur 7 og 8.

Denne rutinen beregner en verdi som skal sammenlignes med timerutgangen for neste PWM-periode. Avbruddsrutinen beregner først posisjonen til neste prøveverdi i oppslagstabellen og leser verdien som er lagret der.

Plasseringen av prøven i oppslagstabellen bestemmes av pulsbredden, og den faktiske pulsbredden bestemmes av den genererte frekvensen.

Den endelige verdien som skrives til bestemmes ved hjelp av formel (7), som tar hensyn til prøveverdiene til begge DTMF-frekvensene.


Figur 6 – Blokkskjema over hovedprogrammet

Oppfinnelsen vedrører feltet digital generering av dual-tone frequency (DTMF) signaler beregnet for dataoverføring, for eksempel innen telefoni. Det oppnådde tekniske resultatet er en reduksjon i antall redundante kretselementer, noe som øker den økonomiske effektiviteten. DTMF-signalgeneratoren, som implementerer metoden for å generere DTMF-signaler, inneholder to akkumulerende addere, to holderegistre, to lagringsenheter, en sluttadderer, en digital-til-analog-omformer, en omformer av DTMF-signalkoder til en sekvens av heltall , en deler av referansefrekvensen til DTMF-signalgeneratoren med en justerbar delingskoeffisient, koder en omformer DTMF-signal til divisjonsfaktorkode. 2 s. og 3 lønn fly, 2 ill.

Oppfinnelsen vedrører fremgangsmåter for generering av DTMF-signaler (dual-tone frequency) ved digitale metoder, beregnet for dataoverføring, for eksempel innen telefoni under tonefrekvensoppringing.Nærmeste i teknisk essens og oppnådd resultat til det påkrevde metode er metoden for å generere DTMF-signaler, presentert i US patent nr. 5034977 datert 04/04/89, publ. 23.07.91, M. klasse. 5 N 04 M 1/00 ​​En kjent fremgangsmåte for å generere DTMF-signaler inkluderer å velge de første og andre samplingsvinkelkodene som tilsvarer den første og andre frekvensen til DTMF-signalkomponentene, kumulativt summere separat den første og andre samplingsvinkelkoden med henholdsvis periodisk faste, med en periode som tilsvarer klokkesamplingsfrekvensen, de første og andre resultatene av kumulativ summering, som oppnår den første og andre diskrete verdien av komponentene til DTMF-signalet lagret i adresselokaliserte celler i de tilsvarende diskrete tabellene verdier av komponentene i DTMF-signalet, ved å lese fra de tilsvarende tabellene på adressene som tilsvarer resultatene av den kumulative summeringen av samplingsvinkelkoder, summere de første og andre diskrete verdiene til komponentene i DTMF-signalet til oppnå den tredje diskrete verdien som tilsvarer verdien til DTMF-signalet. En kjent metode for å generere DTMF-signaler er som følger: avhengig av koden til DTMF-signalet, ved først å konvertere kodene til DTMF-signalene, velges en første kode som bestemmer samplingsvinkelen til signalet med frekvens , tilsvarende gruppen av høyfrekvenser - kolonner, og ved hjelp av den andre konverteringen av DTMF-signalkoder velges en andre kode som bestemmer samplingsvinkelen til signalet med en frekvens tilsvarende gruppen av lave frekvenser - rader, periodisk, med en periode som tilsvarer samplingsklokkefrekvensen, summeres den første samplingsvinkelkoden i den tilsvarende akkumulative addereren og registreres i det tilsvarende registeret, hvis utgang er resultatet, verdien som tilsvarer adressen til tabellcellen som er lagret i det tilsvarende skrivebeskyttede minnet og hvor de tilsvarende diskrete verdiene til sinusene er plassert som bestemmer den øvre frekvensen til DTMF-signalet på samme måte, med jevne mellomrom, med en periode som tilsvarer samplingsklokkefrekvensen, den andre samplingsvinkelkoden summeres i den tilsvarende akkumulative addereren og registreres i det tilsvarende registeret, hvis utgang er resultatet, hvis verdi tilsvarer adressen til tabellcellen som er lagret i den tilsvarende skrivebeskyttede minneenheten og der de tilsvarende diskrete verdiene til sinusene som bestemmer den nedre frekvensen til DTMF-signalet, summeres diskrete verdier av sinusene som bestemmer de øvre og nedre frekvensene til DTMF-signalet opp i den endelige addereren, bestemme den diskrete verdien av DTMF-signalet og, gjennom digital-til-analog konvertering, tilført til utgangen, og danner et trinn-sinus DTMF-signal som tilsvarer inngangskoden til DTMF-signalet. Den kjente metoden er ineffektiv, noe som skyldes dens lave tekniske og økonomiske indikatorer og teknologiske indikatorer Tekniske og økonomiske indikatorer bestemmes av nødvendige kostnader ved implementering av metoden for å oppnå de nødvendige parametere som kreves for DTMF-signaler. I den kjente fremgangsmåten avhenger nøyaktigheten av frekvensgenerering av bitdybden til koden som tilsvarer samplingsvinkelen, som krever en stor bitbredde av den akkumulative addereren, noe som gjør det vanskelig å implementere fremgangsmåten med enkel maskinvare. Samplingsvinkelkoden i den kjente metoden bestemmes nemlig av uttrykket K = (F/F t)32..., (1.1) hvor K er koden som tilsvarer samplingsvinkelen, F er den genererte frekvensen, F t er samplingsfrekvensen. Som man kan se, avhenger nøyaktigheten av den genererte frekvensen klart av forholdet mellom den genererte frekvensen og samplingsfrekvensen. For å oppnå den nødvendige nøyaktigheten til den genererte frekvensen, nemlig ikke dårligere enn 1,5 %, åpenbart ved det kreves minst to signifikante sifre etter desimaltegnet, noe som krever presentasjon av data med en bitdybde for lavere frekvenser på minst 8 biter, og for høye frekvenser minst 9 biter, og for kumulativ summering, henholdsvis minst 12 biter , noe som fører til en økning i antall komponentelementer til enheter som implementerer den kjente metoden. Kjente anordninger for å implementere den kjente fremgangsmåten, nemlig addere, registre og permanente lagringsanordninger har innganger/utganger med en bredde på 4 og 8 biter. Derfor, med en høyere bitkapasitet, kreves det ekstra tekniske og økonomiske kostnader ved implementering av like funksjonelle enheter. Videre, i den kjente metoden, fører reduksjon av antall desimaler til en frekvensfeil som overstiger den tillatte. Teknologiske indikatorer bestemmes av allsidigheten og foreningen i implementeringen av metoden, for eksempel det moderne teknologinivået, som innebærer å redusere forbruket av materialer, komponenter og øke allsidigheten til enheter, krever bruk av mikrokontrollere. Utbredte mikrokontrollere som brukes i telefoni- og telemetrimålinger bruker 8-bits data og en 8-bits aritmetisk-logisk enhet, som krever, ved implementering av den kjente metoden, ytterligere beregningsoperasjoner assosiert med å summere data med en bredde på mer enn 8 biter, og analysere overføringssignalet, som øker antall kommandoer og følgelig klokkefrekvensen til mikrokontrolleren, samt mengden RAM til mikrokontrolleren, noe som fører til en økning i kostnadene for enheter som bruker den kjente metoden for å generere DTMF signaler. Denne konklusjonen er gitt når man analyserer bruken av den kjente metoden i en toneoppringer basert på mikrokontrollere produsert av Atmel, Microchip tnc, etc. Dermed er den kjente metoden fundamentalt ineffektiv, noe som skyldes lave tekniske og økonomiske indikatorer, uttrykt i økte materialforbruk, energiforbruk og lave teknologiske indikatorer , siden den har begrensninger ved bruk av metoden, inkludert som en del av mye brukte mikrokontrollere, som kommer til uttrykk i økte tekniske egenskaper som kreves av mikrokontrollere, noe som reduserer deres allsidighet. Den nærmeste i teknisk essens og oppnådd resultat til den påståtte DTMF-signalgeneratoren er DTMF-generatorsignalene, presentert i US patent nr. 5034977 datert 04/04/89, publ. 07.23.91, M. klasse. 5 N 04 M 1/00. Den kjente DTMF-signalgeneratoren inkluderer: en første akkumulativ adderer, et første låseregister, en første minneenhet, en andre akkumulativ adderer, et andre låseregister, en andre minneenhet, en siste adderer, en digital-til-analog omformer, hvor utgangen til den første akkumulative addereren er koblet til inngangen til det første låseregisteret, utgangen til det første låseregisteret er koblet til inngangen til den første minneenheten, så vel som til en av inngangene til den første akkumulative addereren, utgangen til den første minneenheten er koblet til en av inngangene til den siste addereren, utgangen til den andre akkumulative adderen er koblet til inngangen til det andre låseregisteret, utgangen til den andre holderegisteret er koblet til inngangen til den andre lagringsenheten, så vel som til en av inngangene til den andre akkumulerende addereren, utgangen til den andre lagringsenheten er koblet til en annen inngang til den endelige addereren, utgangen til den endelige addereren er koblet til inngangen til digital-til-analog-omformeren, hvis utgang er utgangen til DTMF-signalgeneratoren. Kjent generatoren inneholder også en første omformer av DTMF-signalkoder til tilsvarende koder av samplingsvinkler som tilsvarer de øvre frekvensene av DTMF-signalet, en andre omformer av DTMF-signalkoder til tilsvarende koder for samplingsvinkler som tilsvarer de lavere frekvensene til DTMF-signalet, hvori utgangen til den første omformeren av DTMF-signalkoder er koblet til en annen inngang til den første kumulative addereren, utgangen til den andre DTMF-signalkodeomformeren er koblet til en annen inngang til den andre akkumulative addereren, inngangene til den første og andre DTMF-signalkodeomformeren er inngangene til DTMF-signalgeneratoren, og klokkeinngangene til den første og andre låsingen registre er sammenkoblet og er inngangen til samplingsklokkefrekvensen til DTMF-signalgeneratoren. Den kjente DTMF-signalgeneratoren gir et lavt teknisk resultat på grunn av det for store antallet kretselementer assosiert med forskjellige, så vel som overdreven bitkapasitet til like funksjonelle elementer. I tillegg er implementeringen av den kjente tekniske løsningen effektivt mulig i form av en separat integrert krets, men dette krever organisering av spesialisert produksjon, men gitt at DTMF-signalgeneratorer er en del av multifunksjonelle enheter (telefonsett med avanserte muligheter, enheter for overføring av telemetrisk informasjon over telefonlinjer, etc.) etc.), for tiden implementert på grunnlag av universelle mikrokontrollere, er produksjonen av individuelle DTMF-signalmikrokretser økonomisk ineffektiv. Grunnlaget for den foreslåtte tekniske løsningen er oppgaven med å lage en metode for generering av DTMF-signaler ved bruk av en DTMF-signalgenerator, der, ved å endre betingelsene og sekvensen av operasjoner, implementering av en metode med høye tekniske og økonomiske indikatorer, på grunn av en reduksjon i bitkapasiteten til lignende operasjoner, høyteknologiske indikatorer, når implementere metoden, både i kretsdesign med enkel maskinvare, og som en del av en multifunksjonell mikrokontroller, assosiert med repeterbarhet, ved implementering, identiske funksjonelle elementer. Grunnlaget for teknisk løsning ble oppgaven satt til å lage en DTMF signalgenerator, der, ved å introdusere nye elementer og lage nye koblinger økes det tekniske resultatet knyttet til å redusere antall redundante kretselementer, og følgelig økes den økonomiske effektiviteten knyttet til muligheten for å implementere den foreslåtte tekniske løsningen med allment tilgjengelige midler. løst ved at i den kjente fremgangsmåten for å generere DTMF-signaler, inkludert valg av den første og andre koden for samplingsvinkler som tilsvarer den første og andre frekvensen til komponentene i DTMF-signalet, den kumulative summeringen av den første og andre koden til samplingsvinkler hver for seg, periodisk fast, med en periode som tilsvarer samplingsklokkefrekvensen, de første og andre resultatene av kumulativ summering, som oppnår den første og andre diskrete verdien av DTMF-signalkomponentene lagret i adresselokaliserte celler i tilsvarende tabeller med diskrete verdier for DTMF-signalkomponentene, ved å lese fra de tilsvarende tabellene på adressene som tilsvarer resultatene av den kumulative summeringen av samplingsvinkelkoder, summere de første og andre diskrete verdiene til DTMF-signalkomponentene til oppnå den tredje diskrete verdien som tilsvarer verdien av DTMF-signalet, det som er nytt er at å oppnå de første og andre diskrete verdiene til DTMF-signalkomponentene lagret i de adresserbare cellene i de tilsvarende tabellene med diskrete verdier til DTMF signalkomponenter utføres ved å lese fra de tilsvarende tabellene til adressene som tilsvarer resultatene av den kumulative summeringen av henholdsvis den første og andre sekvensen av heltall, hvis gjennomsnittsverdi tilsvarer kodene for samplingsvinkler som tilsvarer komponentene til DTMF-signalet. I tillegg kan gjennomsnittsverdien av sekvensen av heltall som danner resultatet av den kumulative summeringen være det aritmetiske gjennomsnittet av disse tallene. I tillegg kan periodisk registrering av det første og andre resultatet av den kumulative summeringen være med en periode som tilsvarer samplingsklokkefrekvens, som er forskjellig for forskjellige DTMF-signaler. Problemet som oppstår er også løst ved det faktum at i den kjente DTMF-signalgeneratoren, inkludert en første akkumulativ adderer, et første låseregister, en første minneanordning, en andre akkumulativ adderer , et andre låseregister, en andre minneenhet, en siste adderer, en digital-til-analog omformer, og utgangen til den første akkumulative addereren er koblet til inngangen det første låseregisteret, utgangen til det første låseregisteret er koblet til til inngangen til den første minneenheten, så vel som til en av inngangene til den første akkumulative addereren, er utgangen til den første minneenheten koblet til en av inngangene til den siste adderen, utgangen til den andre akkumulative addereren er koblet til inngangen til det andre låseregisteret, utgangen til det andre låseregisteret er koblet til inngangen til den andre lagringsenheten, samt til en av inngangene til den andre akkumulative addereren, er utgangen til den andre lagringsenheten koblet til en annen inngang på sluttaddereren, er utgangen til sluttaddereren koblet til inngangen til digital-til-analog-omformeren, hvis utgang er utgangen fra DTMF-signalgeneratoren, ny, i henhold til oppfinnelsen DTMF-signalgeneratoren inneholder i tillegg en omformer av DTMF-signalkoder til en sekvens av heltall, en deler av referansefrekvensen til DTMF-signalgeneratoren med en justerbar delingskoeffisient, en omformer av DTMF-signalkoder til en delingskoeffisientkode, og den første utgangen til omformeren av DTMF-signalkoder i en sekvens av heltall er koblet til en annen inngang til den første akkumulative addereren, den andre utgangen til DTMF-signalkodeomformeren i en sekvens av heltall er koblet til en annen inngang til den andre akkumulative addereren, utgangen til hovedfrekvensdeleren til DTMF-signalgeneratoren med en justerbar delingskoeffisient er koblet til klokkeinngangen til DTMF-signalkodeomformeren i en sekvens av heltall, samt med klokkeinngangen til det første låseregisteret og klokken inngangen til det andre låseregisteret, er utgangen fra DTMF-signalkodeomformeren til divisjonskoeffisientkoden koblet til inngangen for innstilling av divisjonskoeffisienten til hovedfrekvensdeleren til DTMF-signalgeneratoren, inngangen til hovedfrekvensdeleren til DTMF-signalgenerator med en justerbar delingskoeffisient er inngangen til referansefrekvensen til DTMF-signalgeneratoren, inngangen til omformeren av DTMF-signalkoder til divisjonskoeffisientkoden er koblet til inngangen til omformeren av DTMF-signalkoder i en sekvens av heltall og er inngangen til DTMF-signalgeneratoren. I tillegg kan omformeren av DTMF-signalkoder til sekvenser av heltall gjøres i form av en kontrollert programmerbar minneenhet, hvis minne består av, tilsvarende antall DTMF-signaler, minneområder som består av minneceller som tilsvarer lengden av sekvensen av heltall, minneceller utformet slik at den ene halvdelen av minnecellen lagrer et tall relatert til den første sekvensen av heltall, og den andre halvdelen av minnecellen lagrer henholdsvis et tall relatert til en annen sekvens av heltall som er termer for de tilsvarende akkumulative addererne, og styringen av den programmerbare minneenheten er konfigurert til å styre valget separat minneområde og en separat minnecelle Nye funksjoner ved fremgangsmåten for å generere DTMF-signaler og DTMF-signalgeneratoren, sammen med den kjente trekk ved disse objektene, gir nye tekniske egenskaper ved objektene, og som en konsekvens av disse egenskapene gis et nytt nødvendig teknisk resultat Årsak-virkningsforhold mellom funksjonssettet Den foreslåtte metoden og det oppnådde tekniske resultatet er forklart som følger: For å avsløre essensen av den foreslåtte tekniske løsningen, vil følgende beregninger være praktiske: y(P)=sin(n) (1.2), hvor y(P) er den diskrete verdien av sinusfunksjonen;=wT =27F/Fr (1,3) - samplingsvinkel, målt i radianer; n - prøvens serienummer - prøve; F t = F OSC / kd - samplingsklokkefrekvens, hvor F OSC - innstillingsfrekvens for enheten; kd - justerbar delingskoeffisient. Da = 2FC D / F O S C . (1.4) Som kjent er sinusfunksjonen periodisk med en periode på 2. For å konvertere samplingsvinkelen fra radianer til relative enheter og få samplingsvinkelkoden deler vi hele perioden i m deler, der m er en binær heltall. Dermed får vi en minimumsdiskret del av perioden: = 2/m. (1.5) Samplingsvinkelkoden er den relative verdien av prøvetakingsvinkelen i samsvar med en del av perioden, nemlig K=/=2F/F t: 2P/m=Fm/F t. (1.6) For eksempel, for genererte frekvenser på 1477 Hz og 697 Hz (tilsvarer DTMF-signalkoden "3"), med m = 64, og klokkefrekvensen Ft = 32768 Hz K 697 = 1,36; K l477 = 2,88. Selvfølgelig, for binær visning av samplingsvinkelkoden K 697 =1,36 V, henholdsvis 136 krever 8 bits (1281+640+320+160+81+40+20+10), og K 1477 =2,88 V, henholdsvis 288 krever 9 biter ( 2561+1280+640+321+ 160+80+40+ 20+10). Samtidig, for henholdsvis kumulativ summering, i en binær representasjon, kreves det 12 biter, noe som bestemte de ovenfor beskrevne ulempene ved den kjente løsning. Den foreslåtte tekniske løsningen definerer for eksempel tallet 1,36 som gjennomsnittsverdien av en sekvens av heltall 1 og 2, nemlig 1,36=(1x+2y)/(x+y), hvor x og y er antall tall 1 og 2, henholdsvis periodisk repeterende med en periode (x+y).Verdien av samplingsvinkelkoden består av en heltallsdel C og en brøkdel, dvs. for eksempel 1,36=1+0,36. Den relative nøyaktigheten av en slik erstatning i samsvar med uttrykket (1.7) = K/C (1.7) øker med en økning i heltallsdelen av samplingsvinkelkodeverdien. For eksempel, for en generert frekvens på 697 Hz, m = 64, og en klokkefrekvens Ft = 32768 Hz, er feilen ved å erstatte K 697 = 1,36 med verdiene til tallene 1 og 2 henholdsvis 36 og 32 % Samtidig, hvis du øker verdien av m = 256, reduseres feilen ved å erstatte K 697 = 5,45 med verdiene til tallene 5 og 6 med henholdsvis 9 og 10%. feil på den genererte frekvensen, for eksempel når du erstatter K 697 = 5,45 med verdiene til tallene 5 og 6 i løpet av repetisjonsperioden, lik 16, 5,45=(5x+6y)/(x+y), hvor ( x+y)=16. Løser vi ligningen får vi x=9, y=7, dvs. av seksten kumulative summeringsoperasjoner summeres ledd 5 ni ganger og ledd 6 summeres syv ganger, mens faktisk K 697 = 5,4375, ved å erstatte denne verdien med uttrykk (1,6) for m = 256, F t = 32768 Hz, bestemmer vi faktisk beregnet verdi av den genererte frekvensen F = 696 Hz, mens feilen forble 0,1%. Dermed gjør kumulativ summering av en sekvens av heltall, hvis gjennomsnittsverdi tilsvarer de tilsvarende samplingsvinklene, det mulig å oppnå høy teknisk og økonomisk indikatorer ved å redusere bitkapasiteten til kumulative summeringsoperasjoner, på grunn av muligheten til å variere komponentene i uttrykkene ovenfor, og følgelig redusere bitkapasiteten til enheter som implementerer den foreslåtte metoden, noe som fører til en reduksjon i maskinvare- og energikostnader ved implementering av metoden , og for å sikre høy teknologisk ytelse av den foreslåtte metoden når den brukes i multifunksjonelle enheter på grunn av reduserte tekniske krav Årsak-virkningsforholdet mellom settet Egenskapene til den foreslåtte tekniske løsningen og det oppnådde tekniske resultatet er forklart som følger. høy teknisk resultat av DTMF-signalgeneratoren sikres ved introduksjon av nye elementer i en DTMF-signalkodeomformer i en sekvens av heltall, en DTMF-signamed en justerbar divisjonskoeffisient, en DTMF-signalkodeomformer i en dividerkoeffisient kode, som sikrer implementering av metoden av kretselementer med samme bitdybde, som ikke overstiger 8-biter, mens det ikke er noen redundans av elementer som er nødvendig for å løse flere problemer, for eksempel både for å registrere resultatet av kumulativ summering og for å adresser den tilsvarende lagringsenheten, brukes det samme antall biter, som ikke er implementert mer enn et 8-bits register, som kan implementeres med offentlig tilgjengelige midler i form av en enkelt mikrokrets eller, i en mikroprosessorversjon, en enkelt minnecelle. I tillegg kan implementeringen av akkumulerende addere gjøres i form av identiske enheter, med samme bitdybde, i form av offentlig tilgjengelige adder-mikrokretser som opererer med 4-bit addends. Selvfølgelig er det underforstått at tallene og , følgelig kan enhetene som danner de ovenfor beskrevne sekvensene av heltall, hvis helhet bestemmer de tilsvarende samplingsvinkelkodene, være med en annen bitdybde, men den mest optimale, fra synspunktet om å oppfylle målene satt av foreslåtte løsning, er 4-bits tall. I tillegg sikres et høyt teknisk resultat også når den foreslåtte tekniske løsningen implementeres som en del av mikrokontrollere, hvor nødvendigvis inkluderer kommandoer som opererer med 4-bits tall – nibbles. den foreslåtte tekniske løsningen til DTMF-signalgeneratoren tillater høye tekniske resultater assosiert med en reduksjon i antall kretselementer, og gir også allsidighet når du implementerer DTMF-signalgeneratoren som offentlig tilgjengelig maskinvare, og som en del av multifunksjonelle mikrokontrollere, som bestemmer høy økonomisk effektivitet av den tekniske løsningen Oppfinnelsen er illustrert på tegningen, hvor Fig. 1 funksjonelt viser en DTMF-signalgenerator som implementerer en fremgangsmåte for å generere DTMF-signaler.DTMF-signalgeneratoren inkluderer en omformer 1 av DTMF-signalkoder i sekvensheltall. , deler 2 av referansefrekvensen til DTMF-signalgeneratoren med en justerbar delingskoeffisient, omformer 3 av DTMF-signalkoder til en delingskoeffisientkode, første akkumulerende adderer 4, første låseregister 5, første minneenhet 6, andre minneenhet 7, andre låseregister 8, den andre akkumulative addereren, den endelige adderen 10, digital-til-analog-omformeren 11. Virkemåten til DTMF-signalgeneratoren er illustrert ved et eksempel på implementeringen av en fremgangsmåte for å generere DTMF-signaler. på uttrykk (1.4, 1.6) og tekniske data, spesielt innstillingsfrekvensen til enheten der den foreslåtte metoden skal implementeres, beregnes sekvenser av heltall, som definerer de tilsvarende kodene for samplingsvinkler og koder for divisjonskoeffisienter for deleren 2 av referansefrekvensen til DTMF-signalgeneratoren med en justerbar delingskoeffisient, som er skrevet i de tilsvarende cellene i minneområdene til omformeren 1 av DTMF-signalkoder i en sekvens av heltall og omformeren 3 av DTMF-signalkoder i divisjonen koeffisientkoder, er de diskrete verdiene til de tilsvarende sinusfunksjonene også forhåndsberegnet, hvorav antallet bestemmes av antall diskreter m, og skrevet inn i de tilsvarende minnene 6 og 7, når det genereres et DTMF-signal, ved innganger til omformer 1 og omformer 3, som er generatorinngangene, for en stund handling av DTMF-signalet, vil koden til det genererte DTMF-signalet settes, ved utgangen til omformer 3 vil det bli satt en kode som bestemmer delingskoeffisienten for deler 2, mens ved utgangen til deler 2 vil samplingsklokkefrekvensen stilles inn periodisk, med en periode som tilsvarer samplingsklokkefrekvensen, fra den første utgangen til omformer 1 vil det være de binære tallene inkludert i den første sekvensen av heltall vil bli tilført inngangen til den første akkumulative addereren 4, og fra den andre utgangen til omformeren 1 vil de binære tallene som er inkludert i den andre sekvensen av heltall som tilsvarer komponentene i DTMF-signalet, bli levert til inngangen til den andre akkumulative addereren 9, blir resultatene av den akkumulerte summeringen tilført fra utgangene til de akkumulative addererne til inngangene til de tilsvarende låseregistrene 5 og 8, fra utgangene til låseregistrene 5 og 8, resultatene av den akkumulative summeringen, med en periode som tilsvarer samplingsklokkefrekvensen, sendes til andre innganger til de tilsvarende akkumulative addererne 4 og 9, samt til inngangene til de tilsvarende lagringsenhetene 6 og 7, og setter adressene til de diskrete verdiene til sinusene til de tilsvarende komponentene til DTMF-signalet, fra utgangene til lagringsenhetene 6 og 7, de diskrete verdiene til de tilsvarende komponentene i DTMF-signalet leveres til de tilsvarende inngangene til den endelige addereren 10, ved utgangen som en diskret binært DTMF-signal dannes, som mates til inngangen til digital-til-analog-omformeren 11, hvis utgang genererer et trinnformet sinusformet DTMF-signal som tilsvarer inngangskoden til DTMF-signalet. Omformeren 1 av DTMF-signalkoder til en sekvens av heltall (fig. 1) kan lages i formen vist i fig. 2, hvor omformeren av DTMF-signalkoder til en sekvens av heltall inkluderer en kontrollanordning 12, et programmerbart minne enhet 13. Driften av DTMF-signalgeneratoren er illustrert Nedenfor er et spesifikt eksempel på implementeringen av den foreslåtte metoden i en telefonstemmefrekvensoppringer. Tidligere, basert på uttrykk (1.4, 1.6) og tekniske data, er sekvenser av heltall. beregnet som bestemmer de tilsvarende samplingsvinkelkodene og delingskoeffisientkodene for deler 2 av referansefrekvensen til DTMF-signalgeneratoren med justerbart delingsforhold. Tatt i betraktning at implementeringen av metoden inkluderer samme type beregninger, for å illustrere arbeidet, viser et spesifikt eksempel implementeringen av en metode for å generere et DTMF-signal tilsvarende å trykke på "7"-tasten som en del av en tonepulsoppringer. Den mest vanlige kvartsfrekvensen innen telefonteknologi, nemlig F OSC =3579545 Hz, er satt som referansefrekvensen til generatoren. Et trykk på "7"-tasten tilsvarer et DTMF-signal med en øvre (kolonner) frekvens på 1209 Hz og en nedre (rader) frekvens på 852 Hz. Siden DTMF-signalet samtidig sender to frekvenser, beregnes delingskoeffisientene for den større - øvre frekvensen slik at den tilsvarende samplingsvinkelkoden i samsvar med uttrykk (1.6) er nær maksimumsverdien - 16, som implementeres på ikke mer enn 4 bits data. Dermed, med F OSC = 3579545 Hz, antall diskrete verdier av sinus m = 128, de beregnede verdiene av divisjonskoeffisienten for deler 2 av referansefrekvensen til DTMF-signalgeneratoren med en justerbar delingskoeffisient K D = 240 = 460, mens de tilsvarende samplingsvinkelkodene for den øvre frekvensen er K 1209 /852 =10,376, for den nedre frekvensen K 852/1209 = 7,312. I henhold til oppfinnelsen erstatter vi samplingsvinkelkodene med henholdsvis sekvenser av heltall. 10/11 og 7/8.10.375 = (10x+11y)/(x+y), mens faktisk K 1209 / 852 = 10.3757.312 = (7x+8y)/(x+y), mens faktisk K 952/1209 = 7,313, med (x+y) = 16. Dermed erstattes 10,375 med periodisk en repeterende sekvens av heltall 10 x 10 ganger og 11 x 6 ganger, og 7,312 erstattes som 7 x 11 ganger og 8 x 5 ganger. Minneområdet for DTMF-signalkoden "7" i binær representasjon er som følger:
På denne måten beregnes seksten tabeller som tilsvarer DTMF-signalkodene, nemlig 0, 1, 2...9, *, #, A, B, C, D, og ​​er tidligere skrevet inn i minnet til den programmerbare minneenheten 13 (DTMF-tegnkodekonvertering til sekvenser av heltall.) Når du trykker på en tast, for eksempel "7" ved generatorinngangen for varigheten av DTMF-signalet, er den binære koden til DTMF-signalet "7" (0111) sett, omformer omformeren 3 av DTMF-signalkoden til divisjonskoeffisienten DTMF-signalkoden til koeffisientkoden som deler kd for deler 2 av generatorens referansefrekvens med en justerbar delingskoeffisient, samplingsklokkefrekvensen F t =F OSC /K D vil bli satt på utgangen av deler 2. DTMF-signalkoden kommer også til adresseinngangene til de mest signifikante bitene til den programmerbare minneinnretningen 13 (omformer av DTMF-signalkoder til sekvenser av heltall) og er tilstede der under varigheten av DTMF-signalet. Den kontrollerte enheten 12, laget for eksempel i form av en teller (omformer av DTMF-signalkoder til en sekvens av heltall), under påvirkning av klokkesignaler med en frekvens t endrer syklisk verdien på de parallelle utgangene sekvensielt fra 0000 til 1111, ved å endre verdiene til adresseinngangene til lavordensbitene til den programmerbare minneenheten 13 (konvertering av DTMF-signalkoder til en sekvens av heltall), vises 8-biters (byte) tall ved utgangen av den programmerbare minneinnretningen 13 med en samplingsklokkefrekvens, og i samsvar med tabell 1 danner de mest signifikante fire bitene (mest signifikante nibble) en sekvens av heltall, hvis helhet, nemlig det aritmetiske gjennomsnittet, bestemmer samplingsvinkelkoden som tilsvarer den øvre (kolonner) frekvensen, og de minst signifikante fire bitene (lav nibble) danner en sekvens av heltall, hvis helhet, nemlig det aritmetiske gjennomsnittet, bestemmer samplingsvinkelkoden tilsvarende nedre (linje) frekvens, fire- bitdata, i samsvar med tabell 1, fra utgangen til den programmerbare minneinnretningen 13 (omformer av DTMF-signalkoder til en sekvens av heltall) tilføres separat til inngangene til de tilsvarende akkumulative addererne 4 og 9, ved utgangene til tilsvarende adderere 4 og 9 endres dataene med en samplingsklokkefrekvens fra 0 til m (i dette tilfellet m=128), bestemmer og fikserer ved hjelp av holderegistrene 5 og 8 adressene for lagringsenhetene 6 og 7, inn i hvilke binær diskret verdiene til de korresponderende sinusformede komponentene til DTMF-signalet blir henholdsvis skrevet, fra utgangslagringsenhetene 6 og 7, blir binære diskrete verdier av de tilsvarende sinusformede komponentene til DTMF-signalet levert til de tilsvarende inngangene til sluttaddereren 10 , ved hvis utgang det dannes binære diskrete verdier av DTMF-signalet, som deretter tilføres inngangen til digital-til-analog-omformeren 11, ved hvis utgang et trinnvis sinusformet DTMF-signal genereres. DTMF-signalgeneratoren kan implementeres på grunnlag av velkjente tekniske midler, beskrevet for eksempel i: Anvendelse av integrerte kretser i elektronisk datateknologi. Håndbok / Red. B.N. Fayzulaeva, B.V. Tarabrina. - M.: Radio and Communications, 1986. I dette tilfellet kan omformeren 3 av DTMF-signalkoder til delingskoeffisientkoder lages for eksempel i form av en skrivebeskyttet minnebrikke 155PE 3 (s. 343), gjennomføringen av registrene er beskrevet på s. 108, er implementeringen av akkumulerende addere beskrevet på s. 114. Den oppfinneriske metoden og DTMF-signalgeneratoren er også implementert på grunnlag av maskinvare fra Microchip Inc. (8-bits enkeltbrikke mikrokontrollere av typen pic16f628), som en del av pulstonetelefonoppringeren “Kadran - NKT - 01” produsert av selskapet “Kadran” (Ukraina, Zaporozhye). Kommandosystemet og den interne strukturen til mikrokontrollernodene er beskrevet i: Prokopenko B.Ya. Enkeltbrikke mikrokontrollere. Dodeka, 2000, ISBN8-87835-056-4 En beskrivelse av parameterne til DTMF-signalet er gitt for eksempel i: Integrerte kretser: Brikker for telefoni. Utgave 1. - M.: Dodeka, 1994, 256 s. - ISBN-5-87835-003-3., s. 12, 13.

KRAV

1. Fremgangsmåte for generering av to-tone frekvens (DTMF) signaler, inkludert å velge den første og andre samplingsvinkelkoden som tilsvarer den første og andre frekvensen til DTMF-signalkomponentene, kumulativt summere separat den første og andre samplingsvinkelkoden med henholdsvis periodisk faste perioder som tilsvarer samplingsklokkefrekvensen, det første og det andre resultatet av kumulativ summering, som oppnår de første og andre diskrete verdiene til DTMF-signalkomponentene lagret i adresselokaliserte celler i de tilsvarende tabellene med diskrete verdier for DTMF-signalkomponenter, ved å lese fra de tilsvarende tabellene på adressene som tilsvarer resultatene av den kumulative summeringen av samplingsvinkelkoder, summere den første og andre diskrete verdien til DTMF-signalkomponentene for å oppnå den tredje diskrete verdien som tilsvarer verdien av DTMF-signalet, karakterisert ved at de første og andre diskrete verdiene til DTMF-signalkomponentene lagret i de adresserbare cellene til de tilsvarende tabellene med diskrete verdier for DTMF-signalkomponentene oppnås ved å lese fra de tilsvarende tabellene ved adresser , som tilsvarer resultatene av den kumulative summeringen av henholdsvis den første og andre sekvensen av heltall, hvor gjennomsnittsverdien tilsvarer kodene for samplingsvinkler, de tilsvarende komponentene i DTMF-signalet.2. 2. Fremgangsmåte ifølge krav 1, karakterisert ved at gjennomsnittsverdien av sekvensen av heltall som danner resultatet av den kumulative summeringen er det aritmetiske gjennomsnittet av disse tallene.3. Fremgangsmåten ifølge krav 1, karakterisert ved at de første og andre resultatene av kumulativ summering registreres periodisk med en periode som tilsvarer samplingsklokkefrekvensen, som er forskjellig for forskjellige DTMF-signaler.4. En DTMF-signalgenerator, inkludert en første akkumulativ adderer, et første låseregister, en første minneenhet, en andre akkumulativ adderer, et andre låseregister, en andre minneenhet, en siste adderer, en digital-til-analog-omformer, hvori utgangen til den første akkumulative addereren er koblet til inngangen til det første låseregisteret, utgangen til det første låseregisteret er koblet til inngangen til den første minneenheten, samt til en av inngangene til den første akkumulative addereren, utgangen til den første minneenheten er koblet til en av inngangene til den endelige addereren, utgangen til den andre akkumulerende adderen er koblet til inngangen til det andre låseregisteret, utgangen til det andre låseregisteret er koblet til inngangen til andre minneenhet, så vel som med en av inngangene til den andre akkumulerende addereren, er utgangen til den andre lagringsenheten koblet til en annen inngang til den endelige addereren, utgangen til den endelige addereren er koblet til inngangen til en digital- til-analog omformer, hvis utgang er utgangen fra en DTMF-signalgenerator, karakterisert ved at DTMF-signalgeneratoren i tillegg inneholder en omformerkoder for DTMF-signaler i en sekvens av heltall, en deler av referansefrekvensen til DTMF-signalgeneratoren med en justerbar delingskoeffisient, en omformer av DTMF-signalkoder til en delingskoeffisientkode, hvori den første utgangen til omformeren av DTMF-signalkoder i en sekvens av heltall er koblet til en annen inngang til den første akkumulative addereren, den andre utgangen til omformerkoder for DTMF-signaler i en sekvens av heltall er koblet til en annen inngang til den andre akkumulative addereren, utgangen fra den innstilte frekvensdeleren til DTMF-signalgeneratoren med en justerbar delingskoeffisient er koblet til klokkeinngangen til omformeren av koder for DTMF-signaler i en sekvens av heltall, så vel som til klokkeinngangen til det første låseregisteret og klokkeinngangen til det andre holderegisteret, er utgangen fra DTMF-signalkodeomformeren til en delingskoeffisientkode koblet til inngangen til innstillingen delingskoeffisienten til DTMF-signalgeneratorens referansefrekvensdeler, inngangen til DTMF-signalgeneratorens referansefrekvensdeler med en justerbar divisjonskoeffisient er inngangen til referansefrekvensen til DTMF-signalgeneratoren, inngangen til DTMF-signalkodeomformeren i delingskoeffisientkode er koblet til inngangen til DTMF-signalkodeomformeren til en sekvens av heltall og er inngangen til DTMF-signalgeneratoren. 5. DTMF-signalgenerator ifølge krav 4, karakterisert ved at kodeomformeren av DTMF-signaler til en sekvens av heltall er laget i form av en styrt programmerbar minneanordning, hvis minne består av å tilsvare antallet DTMF-signaler , minneområder som består av celler som tilsvarer lengden av sekvensen av heltallsminne, utformet slik at i den ene halvdelen av minnecellen lagres et tall relatert til den første sekvensen av heltall, og i den andre halvdelen av minnecellen en tall lagres tilsvarende en annen sekvens av heltall som er termer for de tilsvarende akkumulative addererne, og kontroll av den programmerbare minneenheten utføres med muligheten til å styre valget av et minneområde og en separat minnecelle separat.

Toneoppringing (Dual-tone multi-frequency signaling, DTMF) ble utviklet av Bell Labs på 50-tallet av forrige århundre for den da revolusjonerende trykkknapptelefonen. For å representere og overføre digitale data i tonemodus, brukes et par frekvenser (toner) i talefrekvensområdet. Systemet definerer to grupper på fire frekvenser, og informasjon kodes ved å sende to frekvenser samtidig, en fra hver gruppe. Dette gir totalt seksten kombinasjoner for å representere seksten forskjellige tall, symboler og bokstaver. DTMF-koding brukes nå i et bredt spekter av kommunikasjons- og kontrollapplikasjoner, slik det for eksempel fremgår av International Telecommunication Union (ITU) Recommendation Q.23.

Denne artikkelen beskriver kretsen til en DTMF-tonegenerator som reproduserer alle åtte frekvenser og genererer det resulterende to-tone utgangssignalet. Det aktuelle systemet ble bygget rundt Silego GreenPAK™ SLG46620V-brikken og Silego SLG88104V operasjonsforsterkere. Det resulterende signalet som produseres er summen av to frekvenser bestemt av raden og kolonnen på telefontastaturet.

Den foreslåtte kretsen bruker fire innganger for å velge frekvenskombinasjonen som skal genereres. Kretsen har også en aktiveringsinngang, som utløser generering og bestemmer hvor lenge signalet skal sendes. Generatorens utgangsfrekvens samsvarer med ITU-standarden for DTMF.

DTMF-toner

DTMF-standarden definerer kodingen av tallene 0-9, bokstavene A, B, C og D, og ​​tegnene * og # som en kombinasjon av to frekvenser. Disse frekvensene er delt inn i to grupper: en høyfrekvensgruppe og en lavfrekvensgruppe. Tabell 1 viser frekvensene, gruppene og tilsvarende symbolrepresentasjoner.

Tabell 1. DTMF-tonekoding

Diskantgruppe

Lavpassgruppe

Frekvenser ble valgt for å unngå flere harmoniske. I tillegg resulterer ikke summen eller forskjellen i en annen DTMF-frekvens. På denne måten unngås harmoniske eller modulasjonsforvrengning.

Q.23-standarden spesifiserer at feilen for hver overført frekvens må være innenfor ±1,8 % av den nominelle verdien, og den totale forvrengningen (på grunn av harmoniske eller modulasjon) må være 20 dB under grunnfrekvensene.

Det resulterende signalet beskrevet ovenfor kan beskrives som:

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

hvor fhigh og flow er de tilsvarende frekvensene fra høy- og lavfrekvensgruppene.

Figur 1 viser det resulterende signalet for sifferet "1". Figur 2 viser frekvensspekteret som tilsvarer dette signalet.

Ris. 1. DTMF-tone

Ris. 2. DTMF tonespektrum

Varigheten av DTMF-toner kan variere avhengig av den spesifikke applikasjonen som bruker tonekoding. For de vanligste applikasjonene faller varighetsverdier vanligvis mellom manuell og automatisk oppringing. Tabell 2 viser en oppsummering av typisk tidsperiode for de to rekrutteringstypene.

Tabell 2. Varighet av toneoppringingssignaler

Skivetype

Diskantgruppe

Diskantgruppe

Manuell oppringing

Automatisk oppringing

For å gi større fleksibilitet er DTMF-generatoren som tilbys i denne håndboken utstyrt med en aktiveringsinngang, som brukes til å starte signalgenereringen og bestemme dens varighet. I dette tilfellet er varigheten av signalet lik varigheten av pulsen ved aktiveringsinngangen.

Analog del av DTMF-generatorkretsen

ITU-anbefaling Q.23 definerer DTMF-signaler som analoge signaler skapt av to sinusbølger. I den foreslåtte DTMF-generatorkretsen genererer Silego GreenPAK SLG46620V IC firkantbølgesignaler med de ønskede DTMF-frekvensene. For å oppnå sinusformede signaler med den nødvendige frekvensen og danne det resulterende signalet (summen av to sinusformede bølger), kreves det analoge filtre og en adderer. Av denne grunn ble det i dette prosjektet besluttet å bruke filtre og en kombinator basert på SLG88104V operasjonsforsterkere.

Figur 3 viser strukturen til den foreslåtte analoge delen av enheten.

Ris. 3. Analog prosesseringskrets for mottak av DTMF-signal

Analoge filtre brukes for å få sinusformede signaler fra rektangulære pulser. Etter at filtrering er utført, summeres de to signalene og det ønskede to-tone DTMF-signalet genereres.

Figur 4 viser resultatet av Fourier-transformasjonen brukt for å oppnå spekteret til firkantbølgesignalet.

Ris. 4. Spektrum av et firkantbølgesignal

Som du kan se, inneholder firkantbølgen bare odde harmoniske. Hvis vi representerer et slikt signal med amplitude A i form av en Fourier-serie, vil det ha følgende form:

Analyse av dette uttrykket lar oss konkludere med at hvis analoge filtre har tilstrekkelig dempning for harmoniske, så er det fullt mulig å oppnå sinusformede signaler med en frekvens lik frekvensen til det opprinnelige firkantbølgesignalet.

Med hensyn til interferensnivåtoleransen definert i Q.23-standarden, er det nødvendig å sikre at alle harmoniske dempes med 20 dB eller mer. I tillegg skal enhver frekvens fra lavpassgruppen kombineres med en hvilken som helst frekvens fra høypassgruppen. Med hensyn til disse kravene ble det utviklet to filtre, ett for hver gruppe.

Begge filtrene var lavpass Butterworth-filtre. Dempningen av en ordre n Butterworth-filter kan beregnes som:

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

hvor fc er filterets grensefrekvens, n er filterrekkefølgen.

Forskjellen i demping mellom den laveste frekvensen og den høyeste frekvensen for hver gruppe kan ikke være mer enn 3 dB, så:

A(fHØYERE)[dB] - A(FLOWER)[dB] > 3 dB.

Gitt absolutte verdier:

A(fHØYERE) 2 / A(FLOWER) 2 > 2.

Også, som vi sa tidligere, bør harmonisk demping være 20 dB eller mer. I dette tilfellet vil det verste tilfellet være den laveste frekvensen i gruppen, fordi dens 3. harmoniske er den laveste frekvensen og er nærmest filterets grensefrekvens. Tatt i betraktning at den tredje harmoniske er 3 ganger mindre enn den grunnleggende, må filteret oppfylle betingelsen (absoluttverdier):

A(3FLOWER) 2 / A(FLOWWER) 2 > 10/3.

Hvis disse ligningene brukes på begge gruppene, må filtrene som brukes være andreordens filtre. Dette betyr at de vil ha to motstander og to kondensatorer hver hvis de implementeres ved bruk av op-ampere. Hvis tredjeordens filtre ble brukt, ville følsomheten for komponenttoleranser være lavere. De valgte filtergrensefrekvensene er 977 Hz for lavpassgruppen og 1695 Hz for høypassgruppen. Ved disse verdiene er forskjeller i signalnivåer i frekvensgrupper i samsvar med kravene ovenfor, og følsomheten for endringer i grensefrekvensen på grunn av komponenttoleranser er minimal.

Skjematiske diagrammer av filtre implementert ved bruk av SLG88104V er presentert i figur 5. Rangeringene til det første RC-paret er valgt på en slik måte at de begrenser utgangsstrømmen til SLG46620V-brikken. Den andre filterlenken bestemmer forsterkningen, som er 0,2. Amplituden til firkantbølgesignalene setter operasjonsforsterkerens driftspunkt til 2,5 V. Uønskede spenninger blokkeres av utgangsfilterkondensatorer.

Ris. 5. Skjematiske diagrammer av utgangsfiltre

Ved utgangen summeres filtersignalene, og det resulterende signalet er summen av harmoniske valgt fra gruppen av lave og høye frekvenser. For å kompensere for filterdempning kan amplituden til utgangssignalet justeres ved hjelp av to motstander R9 og R10. Figur 6 viser addererkretsen. Figur 7 viser hele den analoge delen av kretsen.

Ris. 6. Skjematisk diagram av addereren

Ris. 7. Analog del av kretsen

Digital del av DTMF-tonegeneratorkretsen

Den digitale delen av DTMF-tonegeneratorkretsen inkluderer et helt sett med firkantbølgegeneratorer - en for hver DTMF-frekvens. Siden det kreves åtte tellere for å lage disse generatorene, ble GreenPAK SLG46620V-brikken valgt for implementeringen. Ved utgangene til den digitale kretsen genereres to rektangulære signaler, ett for hver frekvensgruppe.

Firkantbølgesignaler genereres ved hjelp av tellere og D-flip-flops og har en driftssyklus på 50 %. Av denne grunn er tellersvitsjefrekvensen to ganger den nødvendige DTMF-frekvensen, og DFF-flip-flop deler utgangssignalet i to.

Klokkekilden for tellerne er en innebygd 2 MHz RC-oscillator, hvis frekvens er videre delt med 4 eller 12. Deleren velges under hensyntagen til bitkapasiteten og den maksimale verdien av hver teller som kreves for å oppnå en spesifikk Frekvens.

For å generere høye frekvenser kreves færre samples, så 8-bit tellere brukes til å generere dem, klokket fra en intern RC-oscillator hvis signal er delt med 4. Av samme grunn implementeres lavere frekvenser ved hjelp av 14-bit tellere.

SLG46620V har bare tre standard 14-bits tellere, så en av de lavere frekvensene ble implementert med en 8-bits CNT8-teller. For at antallet samples skulle falle innenfor området 0...255, for å klokke denne CNT8 var det nødvendig å bruke et RC-oscillatorsignal delt på 12. For denne kretsen, frekvensen med det største antallet sampler, som is, den laveste frekvensen, ble valgt. Dette gjorde at vi kunne minimere feilen.

Tabell 3 viser parameterne for hver firkantbølge.

Tabell 3. Parametre for kvadratpulsgeneratorer

Klokking

Frekvensfeil [%]

Lavpassgruppe

Diskantgruppe

Som det fremgår av tabellen har alle frekvenser en feil på mindre enn 1,8 %, så de overholder DTMF-standarden. Disse beregnede karakteristikkene, basert på den ideelle RC-oscillatorfrekvensen, kan justeres ved å måle RC-oscillatorens utgangsfrekvens.

Selv om alle generatorer i den foreslåtte kretsen opererer parallelt, vil signalet til bare én generator fra hver gruppe sendes til utgangen til mikrokretsen. Valget av spesifikke signaler bestemmes av brukeren. Dette gjøres ved å bruke fire GPIO-innganger (to bits for hver gruppe) med en sannhetstabell vist i tabell 4.

Tabell 4. Tabell for valg av frekvenser fra lavfrekvensgruppen

Lavpassgruppe

Tabell 5. Frekvensvalgtabell fra høyfrekvensgruppen

Diskantgruppe

Figur 8 viser den logiske kretsen til en 852 Hz firkantbølgegenerator. Dette mønsteret gjentas for hver frekvens med passende tellerinnstillinger og LUT-konfigurasjon.

Ris. 8. Rektangulær pulsgenerator

Telleren genererer en utgangsfrekvens som bestemmes av innstillingene. Denne frekvensen er lik to ganger frekvensen til den tilsvarende DTMF-tonen. Målerkonfigurasjonsparametrene er vist i figur 9.

Ris. 9. Eksempel på oppsett av rektangulær pulsgeneratorteller

Tellerutgangssignalet er koblet til klokkeinngangen til D-Flip Flop flip-flop. Siden DFF-utgangen er konfigurert som invertert, hvis du kobler DFF-utgangen til inngangen, blir D-flip-flop konvertert til en T-flip-flop. DFF-konfigurasjonsparametrene kan sees i figur 10.

Ris. 10. Eksempel på oppsett av en rektangulær pulsgeneratorutløser

Signalet fra DFF-utgangen mates til LUT-sannhetstabellinngangen. LUT-er brukes til å velge ett signal for hver spesifikke R1-R0-kombinasjon. Et eksempel på en LUT-konfigurasjon er vist i figur 11. I dette eksemplet, hvis R1 mottar en 1 og R0 mottar en 0, sendes inngangssignalet til utgangen. I andre tilfeller inneholder utgangen "0".

Ris. 11. Eksempel på å sette opp sannhetstabellen til en kvadratisk pulsgenerator

Som nevnt ovenfor har den foreslåtte kretsen en aktiveringsinngang. Hvis det er en logisk enhet "1" ved Enable-tillatelsesinngangen, blir de genererte rektangulære signalene levert til et par utganger på mikrokretsen. Overføringsvarigheten er lik pulsvarigheten ved aktiveringsinngangen. For å implementere denne funksjonen var det nødvendig med flere LUT-er.

Høypassgruppen bruker en 4-bits LUT og en 2-bits LUT, som vist i figur 12.

Ris. 12. Diskantgruppeutgangskrets

4-bits LUT1 er konfigurert som en ELLER-port, så den sender ut en logisk 1 hvis en 1 er tilstede på noen av inngangene. C1/C0-sannhetstabellene lar bare én av oscillatorene velges, så 4-bit LUT1 bestemmer hvilket signal som sendes ut. Utgangen til denne LUT er koblet til 2-bit LUT4, som bare sender et signal hvis aktiveringsinngangen er en logisk "1". Figurene 13 og 14 viser konfigurasjonene av 4-bit LUT1 og 2-bit LUT4.

Ris. 13. 4-bits LUT1-konfigurasjon

Ris. 14. 2-bits LUT4-konfigurasjon

Siden det ikke lenger var 4-bits sannhetstabell-LUT-er, ble to 3-bits LUT-er brukt for lavpassgruppen.

Ris. 15. Lavpass gruppe utgangskrets

Den komplette interne kretsen til GreenPAK SLG46620V er vist i figur 16. Figur 17 viser det endelige kretsskjemaet til DTMF-generatoren.

Ris. 16. Blokkskjema over DTMF-tonegenerator

Ris. 17. Skjematisk diagram av en DTMF-tonegenerator

Testing av DTMF-generatorkretsen

I den første fasen av testingen av den foreslåtte DTMF-generatoren ble det besluttet å sjekke frekvensene til alle genererte rektangulære signaler ved hjelp av et oscilloskop. Som et eksempel viser figur 18 og 19 firkantbølgeutgangene for 852 Hz og 1477 Hz.

Ris. 18. Firkantbølge 852 Hz

Ris. 19. Firkantbølge 1477 Hz

Når frekvensene til alle firkantbølgesignaler ble kontrollert, begynte testing av den analoge delen av kretsen. Utgangssignalene for alle kombinasjoner av de lave og høye frekvensene ble undersøkt. Som et eksempel viser figur 20 summen av 770 Hz og 1209 Hz signalene, og figur 21 viser summen av 941 Hz og 1633 Hz signalene.

Ris. 20. DTMF-tone 770 Hz og 1209 Hz

Ris. 21. DTMF-tone 941 Hz og 1633 Hz

Konklusjon

I denne artikkelen ble det foreslått en krets for en DTMF-tonegenerator basert på Silego GreenPAK SLG46620V-brikken og Silego SLG88104V operasjonsforsterkere. Generatoren lar brukeren velge kombinasjoner av ønskede frekvenser ved å bruke fire innganger og kontrollere aktiveringsinngangen, som bestemmer varigheten av utgangssignalene.

Egenskaper til SLG46620V-brikken:

  • Type: Programmerbar blandet signal-IC;
  • Analoge blokker: 8-bits ADC, to DAC, seks komparatorer, to filtre, ION, fire integrerte oscillatorer;
  • Digitale blokker: Opptil 18 I/O-porter, sammenkoblingsmatrise og kombinatorisk logikk, programmerbare forsinkelseskretser, programmerbar funksjonsgenerator, seks 8-bit tellere, tre 14-bit tellere, tre PWM oscillatorer/komparatorer;
  • Kommunikasjonsgrensesnitt: SPI;
  • Forsyningsspenningsområde: 1,8…5 V;
  • Driftstemperaturområde: -40…85 °C;
  • Pakkeversjon: 2 x 3 x 0,55 mm 20-pin STQFN.

Karakteristiske trekk

  • Generering av sinusbølger ved hjelp av pulsbreddemodulasjon (PWM)
  • Kombinere forskjellige sinusbølgesignaler til ett DTMF-signal
  • Kildekoder på assembly- og C-språk
  • Designet for å fungere med STK500
  • Programkodestørrelse 260 byte / konstant tabellstørrelse 128 byte
  • Bruke tabellkonverteringsmetoden

Introduksjon

Dette dokumentet beskriver en teknikk for å generere DTMF-signaler (dual-tone multi-frequency signals) ved å bruke en hvilken som helst AVR-mikrokontroller som inneholder en pulsbreddemodulasjonsenhet (PWM) og statisk RAM. Disse signalene er mye brukt i telefoni, hvor de gjengis når du trykker på ringeknappene på et telefonapparat. For å generere et DTMF-signal på riktig måte, må to frekvenser legges over hverandre: en lav frekvens (fb) og en høy frekvens (fa). Tabell 1 viser hvordan ulike frekvenser blandes for å produsere DTMF-toner når forskjellige taster trykkes.


Figur 1. DTMF-signalgeneratorkrets

Tabell 1. Tonegenereringsmatrise

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

Radene i Tabell 1 viser lavfrekvensverdier, og kolonnene viser høyfrekvensverdier. For eksempel viser matrisen at når du trykker på “5”-knappen, skal frekvensene fb = 770 Hz og fa = 1336 Hz blandes. Som et resultat av tillegg av to sinusformede signaler med forskjellige frekvenser, dannes et DTMF-signal

hvor amplitudeforholdet K=A b/A a til de opprinnelige signalene må oppfylle betingelsen

Driftsprinsipp

I tillegg til generell informasjon om bruk av pulsbreddemodulasjon, vil det nedenfor vises hvordan pulsbreddemodulasjon lar deg generere sinusformede signaler. Det neste avsnittet beskriver hvordan du bruker basesvitsjefrekvensen for å oppnå forskjellige frekvenser. Etter gjennomgang av det teoretiske grunnlaget vil det bli gitt en beskrivelse av selve DTMF-signalgeneratoren. Generering av sinusbølger

Avhengig av forholdet mellom varigheten av høye VH- og lave VL-spenningsnivåer, endres gjennomsnittsverdien ved PWM-utgangen. Hvis forholdet mellom varighetene til begge nivåene holdes konstant, vil et konstant VAV-spenningsnivå genereres som et resultat. Figur 2 viser et pulsbreddemodulert signal.


Figur 2. Generering av likespenningsnivå

Spenningsnivået bestemmes av uttrykket:

(3)

Et sinusformet signal kan genereres forutsatt at gjennomsnittsverdien av spenningen generert av pulsbreddemodulasjonen endres hver PWM-syklus. Forholdet mellom høye og lave nivåer må settes i samsvar med spenningsnivået til sinusbølgen på tilsvarende tidspunkt. Figur 3 illustrerer denne prosessen. Kildedataene for PWM beregnes for hver av periodene og registreres i konverteringstabellen (TC).

Figur 3 illustrerer også forholdet mellom frekvensen til den grunnleggende sinusbølgen og antall sampler. Jo høyere antall prøver (Nc), desto høyere er nøyaktigheten av å modellere det resulterende signalet:

(4)

PWM-frekvensen avhenger av PWM-oppløsningen. Ved 8-bits oppløsning er den endelige verdien (toppen av tellingen) for timeren 0xFF (255). Fordi Timeren teller forover og bakover, så må denne verdien dobles. Derfor kan PWM-frekvensen beregnes ved å dele timerklokkefrekvensen f CK med 510. Med en timerklokkefrekvens på 8 MHz vil den resulterende PWM-frekvensen være 15,6 kHz.


Figur 3. Generering av en sinusbølge ved hjelp av PWM

Endring av frekvensen til en sinusbølge

La oss anta at sinusformede prøver leses fra oppslagstabellen ikke sekvensielt, men én om gangen. I dette tilfellet, med samme samplingshastighet, vil et signal med dobbel frekvens genereres (se figur 4).


Figur 4. Dobling av den resulterende frekvensen (XSW = 2)

I analogi, hvis du leser ikke annenhver verdi, men hver tredje, fjerde, femte (henholdsvis trinnbredden er 3, 4, 5 ...), etc. det er mulig å generere Nc-frekvenser i området. Merk at for høye frekvenser vil den resulterende bølgeformen ikke være sinusformet. Vi betegner trinnbredden i henhold til konverteringstabellen som X SW, hvor

(5)

Beregning av gjeldende posisjon i TP for neste PWM-periode (når timeren renner over) utføres ved hjelp av uttrykk (6). Den nye verdien i X LUT-posisjonen avhenger av dens tidligere tilstand i X" LUT-posisjonen med tillegg av trinnbredden X SW

(6)

Legge til forskjellige frekvenser for å oppnå et DTMF-signal

DTMF-signalet kan genereres ved å bruke uttrykk (1) og (2). For enkelhet av aritmetiske operasjoner, er verdien av koeffisienten K tatt lik 0,75 for å erstatte den aritmetiske operasjonen med logiske skift. Med hensyn til uttrykk (6), kan gjeldende verdi for PWM-kontroll beregnes ved hjelp av uttrykket:

og tar i betraktning at X LUTa =X" LUTa + X SWa,X LUTb =X" LUTb + X SWb, vil vi til slutt skrive

Implementering av en DTMF-generator

Dette vedlegget undersøker konstruksjonen av en DTMF-tonegenerator som bruker en 8-bits PWM-utgang (OC1A) og en tabell med 128 sinusfunksjon (Nc)-sampler, hver spesifisert med 7 bits (n). Følgende uttrykk viser denne avhengigheten og viser også hvordan du beregner oppslagstabelloppføringene:

(9)

Fordelen med å bruke 7 bits er at summen av høy- og lavfrekvente signalverdier er en byte stor. For å støtte hele settet med DTMF-toner, må 8 verdier for hver DTMF-frekvens fra Tabell 1 beregnes og legges inn i oppslagstabellen.

For å oppnå høyere nøyaktighet ble følgende løsning implementert: verdiene beregnet med uttrykk 5 krever kun 5 byte. For å bruke alle 8 byte, som vil redusere avrundingsfeil, multipliseres denne verdien med 8. Pekeren til oppslagstabellen skrives på samme måte. Men i dette tilfellet tar det to byte å lagre 8 ganger verdien. Dette betyr at 3 høyreforskyvninger og en radiks Nc-moduloperasjon (logisk multiplikasjon med Nc-1) må utføres før disse bytene brukes som en peker til sinusbølgeverdiene i


Figur 5. Modulskjema for tilkobling til STK500

PWM-signalet genereres ved pin OC1A (PD5). Et ekstra utgangsfilter vil bidra til å gjøre signalet mer kompatibelt med den sinusformede bølgeformen. Ved reduksjon av PWM-frekvensen kan det være nødvendig å bruke et filter med brattere frekvensrespons for å få et godt resultat.

Tastaturtilkoblingen er vist i figur 1. Betjeningen av tastaturet må organiseres på en slik måte at det er mulig å bestemme hvilken tast som er trykket. Dette kan gjøres ved hjelp av følgende algoritme:

  1. Bestemme strengen til den trykket tasten
    • konfigurer lavordre-notebooken til port B som en utgang og still inn loggen. "0"
    • konfigurer den høye tetrad av port B som en inngang med tilkobling av pull-up motstander
    • linjen med den trykket knappen er definert som sifferet til den høyeste tetrad med logg. "0"
  2. Definerer den trykket tastekolonnen
    • konfigurer den høye notebooken til port B som en utgang og still inn loggen. "0"
    • konfigurer lavordens tetrad til port B som en inngang ved å koble til pull-up motstander
    • kolonnen med den trykket knappen er definert som sifferet til lavordens tetrad med logg. "0"

Merk: I STK200 er motstander koblet i serie mellom PORTB-kontaktpinnene og mikrokontrollerpinnene BP5, PB6 og PB7 (se STK200-diagram). Dette vil forårsake problemer hvis tastaturet er koblet til PORTB-kontakten.

Figur 6 illustrerer operasjonen av subrutinen for å bestemme den nedtrykte tasten. Avhengig av tasten som trykkes, bestemmes varigheten av intervallet. Avbruddsrutinen bruker denne verdien til å beregne PWM-innstillingene for de to DTM-tonesinusbølgene. Prosedyren for avbruddshåndtering er vist i figur 7 og 8.

Denne rutinen beregner en verdi som skal sammenlignes med timerutgangen for neste PWM-periode. Avbruddsrutinen beregner først posisjonen til neste prøveverdi i oppslagstabellen og leser verdien som er lagret der.

Plasseringen av prøven i oppslagstabellen bestemmes av pulsbredden, og den faktiske pulsbredden bestemmes av den genererte frekvensen.

Den endelige verdien som skrives til bestemmes ved hjelp av formel (7), som tar hensyn til prøveverdiene til begge DTMF-frekvensene.


Figur 6. Blokkskjema over hovedprogrammet


Figur 7. Blokkdiagram over behandlingsprosedyren for timeroverløpsavbrudd


Figur 8. Flytskjema for "GetSample" prøvelesingsprosedyren

Publikasjon: www.cxem.net

Se andre artikler seksjon.