Metod för att generera dtmf-signaler och dtmf-signalgenerator. Generering och igenkänning av DTMF-signaler DTMF-tonsignalgeneratorchip

Första delen detta exempel Applikationen beskriver genereringen av DTMF-signaler med hjälp av MSP430-mikrokontrollern. En förklaring ges av de viktigaste specifikationerna som används i detta fall, och den teoretiska och matematiska motiveringen för att generera sinusvågor med fyrkantvågor med lämpliga analoga filter ges. Exemplet inkluderar också testade demoprogram för att generera fyrkantsvågssignaler baserade på olika timerkonfigurationer av MSP430-mikrokontroller. Den sista delen ger kretsschema, som låter dig generera DTMF-signaler från fyrkantsvågssignaler.

2 DTMF-signalspecifikation

Förkortningen DTMF står för “Dual Tone Multi Frequency” och är en metod att representera siffror vid olika frekvenser i syfte att överföra dem över analoga kommunikationslinjer, t.ex. telefonlinje. Vid utvecklingen av standarden togs hänsyn till villkoret - alla frekvenser måste vara i "röst" -området, vilket gjorde det möjligt att minska kraven på överföringskanalen. Telefonnätverk använder DTMF-signaler för uppringning och annan information. Trots att pulsuppringningsmetoden fortfarande används i stor utsträckning, vilket är standarden, till exempel i Tyskland, ökar uppringningstiden avsevärt, vilket leder till improduktiv belastning på kommunikationslinjer. Dessutom många Ytterligare tjänster Kommunikation är endast möjlig med tonval. Vid kodning med DTMF-metoden, nummer 0-9 och bokstäverna A-D, */E och #/F representerar kombinationer av två frekvenser:

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

I det här systemet representerar kolumnen frekvensen från den "övre" frekvensgruppen (Hi-Group: 1209-1633 Hz), och raden representerar frekvensen från den "lägre" frekvensgruppen (Lo-Group: 697-941 Hz) . Tonala frekvenser väljs för att eliminera påverkan av övertoner. Frekvenserna är inte multiplar av varandra och ingen DTMF-frekvens kan erhållas genom att addera eller subtrahera andra frekvenser. För att generera en uppringare på Deutsche Telekom-nätverket krävs följande specifikationer (hämtade från Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5 (Officiell specifikation för det federala ministeriet för post och telekommunikation):

3 Generera DTMF-signaler

Som beskrivits ovan är DTMF-signaler analoga och består av två oberoende sinusvågor. Det är således inte möjligt att generera sådana signaler endast digitalt. Digitala signaler måste konverteras med hjälp av ADC och/eller analoga filter till den nödvändiga sinusvågformen.

3.1 Generering med fyrkantsvågor

Om fyrkantsvågssignaler används för att generera DTMF-signaler, kommer programvaran och hårdvara minimal. Varje kontinuerlig signal med en period T kan representeras av en Fourier-serie bestående av en oändlig summa av sinus- och cosinusvågor enligt följande:

Där a0/2 är den konstanta komponenten av signalen. Summaelementet med den lägsta vinkelfrekvensen (w0) kallas huvud (fundamentala) övertoner, resten är övertoner eller högre övertoner.

Den enklaste kontinuerliga signalen som implementeras med hjälp av en mikrokontroller är en fyrkantsvåg, Fourier-serien för vilken har formen:

Bidraget från varje frekvenskomponent till den totala signalen visas bäst av amplitudspektrumet (se fig. 2):


Ris. 2: Amplitudspektrum för en fyrkantvågssignal

Vid användning av ett analogt filter undertrycks likströmskomponenten och högre övertoner effektivt, medan vi vid utgången har en sinusformad signal med en frekvens lika med den ursprungliga fyrkantvågens frekvens.

3.2 programvara att generera en meander

Meandergenereringsprogrammet måste uppfylla följande krav:

  • Kunna syntetisera två oberoende rektangulära signaler.
  • För att separera signalerna krävs två utgångsstift för att generera signaler från den "övre" (Hi-Group) och "nedre" (Lo-Group) frekvensområden respektive.
  • Mjukvaran ska kunna ställa in den erforderliga signallängden i intervallet cirka 65 ms - 100 ms.

MSP430-seriens mikrokontroller har olika inbyggda timers som kan generera fyrkantsvågssignaler. '31x/'32x-familjen använder en 8-bitars timer och en timerport för att generera båda fyrkantsvågsignalerna. Det här programmet testad vid MCLK-frekvens lika med 1,048 MHz. Timer_A i 33x-familjen kan oberoende generera båda nödvändiga signalerna. Det andra programmet använder denna timer för att generera fyrkantsvågor och fungerar med alla MCLK-frekvenser. Båda programmen kommer att diskuteras i detalj nedan.

3.2.1 Generera fyrkantsvågor med en 8-bitars timer och timerport

I fig. 3 är ett flödesschema över initieringsproceduren för generering av DTMF-signaler. För att syntetisera de två frekvenserna används timerporten och 8-bitars timerräknare. Var och en av dem är ett programmerbart räknarregister som är nödvändigt för exakt syntes av de erforderliga frekvenserna. Om timer-port-räknarna kaskadkopplas till en enda 16-bitars timer och klockas vid systemfrekvensen MCLK, då kan högfrekvensfrekvenserna genereras med hög noggrannhet. När ett avbrott inträffar, kopplas motsvarande utgång och båda 8-bitars räknarregistren återställs. Laddade värden lagras i två variabler i RAM för att spara interna register för andra uppgifter.

De låga frekvenserna genereras av en 8-bitars timer. Eftersom räknarregistret för denna timer är 8 bitar brett, orsakar endast vart tredje avbrott en nivåändring på det erforderliga utgångsstiftet, vilket gör att samma frekvensräknare kan genereras.

Två timerutgångar - portar används för att bilda två meandrar med olika frekvenser.

Ris. 3 Flödesschema för initialiseringsprocedur för generering av DTMF-signaler

Initieringsproceduren utförs endast en gång. Efter dess slutförande läses det hexadecimala värdet av det överförda tecknet från den globala variabeln i RAM. När de två frekvenserna som bildar de höga och låga DTMF-tonerna har genererats från de två tabellerna, är allt som krävs att initiera och starta båda timers. Sändningens varaktighet styrs genom att räkna halvcyklerna för den "lägre" frekvensen och läses från en extra tabell. När denna procedur har slutförts återgår du till pollingfunktionen. Motsvarande rutiner för avbrottshantering byter portstiften. Denna process visas i fig. 4 och 5.

Timerportens uppgifter inkluderar endast att spela in loggen. nivå vid portutgången och ladda om räknaren från RAM, medan driften av en 8-bitars timer har en något mer komplex struktur: varje ingång till avbrottet räknas av ett räknarregister. Utgången kan ändra tillstånd först efter tre avbrott. Dessutom räknas också varje halvcykel. Genereringen avbryts när ett visst antal halvcykler uppnås.


Ris. 4 Block – avbrottskrets från en 8-bitars timer (Lo-Group)


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

; Anpassade definitioner FLLMPY ekv 32 ; Frekvensmultiplikator FLL vid 1,048 MHz TCLK ekv FLLMPY*32768 ; TCLK: FLLMPY x f kvarts DL ekv 85; Varaktighet DTMF-signal (65..100 ms) LO_OUT ekv 02h ; Utmatning av "lägre" frekvens HI_OUT ekv 04h ; Högfrekvent utgång RCOUNT ekv r14 ; Längdräknare DTMF RTEMP ekv r15 ; tjänst register.global DTMF_NR ; global variabel i RAM; för DTMF-nummer (0..F); Definitioner RAM.even .bss DTMF_TL ; Även adressjustering.bss DTMF_TH .bss DTMF_NR ; global variabel i RAM; för DTMF-nummer (0..F).jämn ; Definitioner för 8-bitars timer TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; Definitioner för den universella timerporten TPCTL equ 04bh ; Timer-port kontroll TPCNT1 equ 04ch ; Timer-porträknare 1 TPCNT2 equ 04dh ; Timer-port räknare 2 TPD equ 04eh ; Timer-port data TPE equ 04fh ; Timer-port-resolution.text ; DTMF-frekvenstabeller: tabellen innehåller; antal MCLK-cykler under en halvcykel. ; Tabell för den "övre" frekvensen; Korrigerande ändring tillagd; att ta hänsyn till tidpunkten för inträde i avbrottet DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; Hög frekvens för 0 .ord 0ffffh-(TCLK/(1207*2))+28 ; Hög frekvens för 1 .ord 0ffffh-(TCLK/(1336*2))+25 ; Hög frekvens för 2 .ord 0ffffh-(TCLK/(1477*2))+24 ; Hög frekvens för 3 ord 0ffffh-(TCLK/(1207*2))+28 ; Hög frekvens för 4 .ord 0ffffh-(TCLK/(1336*2))+25 ; Hög frekvens för 5 .ord 0ffffh-(TCLK/(1477*2))+24 ; Hög frekvens för 6 .ord 0ffffh-(TCLK/(1207*2))+28 ; Hög frekvens för 7 .ord 0ffffh-(TCLK/(1336*2))+25 ; Hög frekvens för 8 .ord 0ffffh-(TCLK/(1477*2))+24 ; Hög frekvens för 9 .ord 0ffffh-(TCLK/(1633*2))+22 ; Hög frekvens för A .ord 0ffffh-(TCLK/(1633*2))+22 ; Hög frekvens för B .ord 0ffffh-(TCLK/(1633*2))+22 ; Hög frekvens för C .ord 0ffffh-(TCLK/(1633*2))+22 ; Hög frekvens för D .ord 0ffffh-(TCLK/(1207*2))+28 ; Hög frekvens för * .ord 0ffffh-(TCLK/(1477*2))+24 ; Hög frekvens för # ; Tabell för den "lägre" frekvensen DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; Låg frekvens för 0 .byte 0ffh-(TCLK/(697*2*3)); Låg frekvens för 1 .byte 0ffh-(TCLK/(697*2*3)); Låg frekvens för 2 .byte 0ffh-(TCLK/(697*2*3)); Låg frekvens för 3 .byte 0ffh-(TCLK/(770*2*3)); Låg frekvens för 4 .byte 0ffh-(TCLK/(770*2*3)); Låg frekvens för 5 .byte 0ffh-(TCLK/(770*2*3)); Låg frekvens för 6 .byte 0ffh-(TCLK/(853*2*3)); Låg frekvens för 7 .byte 0ffh-(TCLK/(853*2*3)); Låg frekvens för 8 .byte 0ffh-(TCLK/(853*2*3)); Låg frekvens för 9 .byte 0ffh-(TCLK/(697*2*3)); Låg frekvens för A .byte 0ffh-(TCLK/(770*2*3)); Låg frekvens för B .byte 0ffh-(TCLK/(853*2*3)); Låg frekvens för C .byte 0ffh-(TCLK/(941*2*3)); Låg frekvens för D .byte 0ffh-(TCLK/(941*2*3)); Låg frekvens för *.byte 0ffh-(TCLK/(941*2*3)); Låg frekvens för # ; Signalvaraktighetstabell DTMF_L .byte 2*941*DL/1000 ; Halva cykler för 0 .byte 2*697*DL/1000; Halva cykler för 1 .byte 2*697*DL/1000; Halva cykler för 2 .byte 2*697*DL/1000; Halva cykler för 3 .byte 2*770*DL/1000; Halva cykler för 4 .byte 2*770*DL/1000; Halva cykler för 5 .byte 2*770*DL/1000; Halva cykler för 6 .byte 2*852*DL/1000; Halva cykler för 7 .byte 2*852*DL/1000; Halva cykler för 8 .byte 2*852*DL/1000; Halva cykler för 9 .byte 2*697*DL/1000; Halva cykler för A .byte 2*770*DL/1000 ; Halva cykler för B.byte 2*852*DL/1000; Halva cykler för C.byte 2*941*DL/1000; Halva cykler för D .byte 2*941*DL/1000; Halvcykler för *.byte 2*941*DL/1000 ; Halvcykler för # ;********************************************* ********** ******************************* ; DTMF-TX DTMF subrutin ;********************************************* ********************************* DTMF_TX mov.b DTMF_NR,RTEMP ; Lagra numret i ett tillfälligt register mov.b DTMF_L(RTEMP),RCOUNT ; Spara varaktighetsräknare, förbered 8-bitars timer för DTMF-Lo frekvens mov.b #0a8h,&TCCTL ; Klocka från MCLK mov.b DTMF_LO(RTEMP),&TCPLD ; Registerförberedelse; förladda mov.b #000,&TCDAT ; Ladda en räknare från ett register; förladda bis.b #008h,&IE1 ; Aktivera avbrott; från en 8-bitars timer; förbereda en timerport för DTMF-Hi-frekvensen rla r15; * 2 för 16-bitars tabell mov DTMF_HI(RTEMP),&DTMF_TL ; spara ord för högfrekvent mov #003,RTEMP ; räknare för 8-bitars timer bis.b #008h,IE2 ; Aktivera avbrott; från timer-port mov.b &DTMF_TH,&TPCNT2 ; Laddar den höga byten i TC2 mov.b &DTMF_TL,&TPCNT1 ; Laddar låg byte till TC1 bis.b #080h,&TPD ; Aktivera 16-bitars timer bis.b #HI_OUT+LO_OUT,&TPE ; Aktivera DTMF-Hi/Lo-utgångar mov.b #090h,&TPCTL ; Aktivera timer ret ;************************************************** ********** ******************************* ; Timer-port avbrott;********************************************* ***** ******************************* TP_INT xor.b #HI_OUT,&TPD ; Invertera DTMF-Hi-utgång mov.b &DTMF_TH,&TPCNT2 ; Laddar den höga byten till TC2 mov.b &DTMF_TL,&TPCNT1 ; Laddar låg byte till TC1 bic.b #007h,&TPCTL ; Rensa reti-flaggor ;************************************************** ******** *************

3.2.2 1 Generera fyrkantvågor med Timer_A

Denna DTMF-signalgenereringsrutin använder endast Timer_A för att fyrkantsvåga båda önskade frekvenserna. Monteringsprocessen beräknar lämpliga värden för timern för att använda programmet oavsett MCLK-frekvensvärdet. Varaktigheten av utsignalen specificeras av DL-konstanten i millisekunder.

; Hårdvarudefinitioner; FLLMPY .equ 32; Frekvensmultiplikator FLL vid 1,048 MHz TCLK .equ FLLMPY*32768; TCLK: FLLMPY x f kvarts DL .equ 82; DTMF-signalens varaktighet i ms; (65..100 ms) STACK .equ 600h ; Stackinitieringsadress; RAM-definitioner; STDTMF.equ 202h; Hi and Lo frekvensstatus TIM32B .equ 204 ; Timerregisterförlängning LENGTH .equ 206h ; DTMF varaktighetsräknare; .text 0F000h ; Startadress för programmet; ; Timer_A-initiering: MCLK, kontinuerligt läge, avbrott aktiverade; Förbereda timerutgångsmoduler Timer_A MCLK = 1,048 MHz (automatisk) ; INIT MOV #STACK,SP ;Initialisering av stackpekaren CALL #INITSR ;Initialisering av multiplikatorn; FLL-frekvenser och RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Initiering av timern MOV.B #TA2+TA1,&P3SEL ; Utgångar TA2 och TA1 på portarna P3.5/4 CLR TIM32B; Rensa utökat timerregister BIS #MCONT,&TACTL ; Starttimer Timer_A EINT ; Generellt avbrott aktivera MAINLOOP ... ; Huvudslinga; ;Tangenttryckning: SDTMF innehåller tabelloffset; för 2 frekvenser (0..6,0..6) i hög och låg byte; MOV&TAR,R5 ; För att starta omedelbart: LÄGG TILL FDTMFLO,R5 ; Offset för kortare tid MOV R5,&CCR1 ; Första tillståndsändring efter 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71ms MOV #OMT+CCIE,&CCTL1 ; Utgångsinvertering, bitavbrott. MOV #OMT+CCIE,&CCTL2 ; Invertera utgång, avbrottsbit MOV.B STDTMF,R5 ; 82 ms räknare RRA R5 ; antal lägre frekvenstillståndsändringar MOV.B DTMFL(R5),LENGTH ; för signalens varaktighet... ; fortsättning på programmet; ; Avbrottshanterare från CCR0 (används inte här); TIMMOD0 ... RETI ; ; Avbrottshanterare från fångst-jämförelseregister 1..4; TIM_HND ADD &TAIV,PC ; Behandling av begäran med högsta; RETI-prioritet; ingen avbrottsbegäran: RETI JMP HCCR1 ; begäran från CCR1 (DTMF lågfrekvens) JMP HCCR2 ; begäran från CCR2 (DTMF högfrekvens) JMP HCCR3 ; begäran från CCR3 JMP HCCR4 ; begäran från CCR4; TIMOVH INC TIM32B ; Utöka Timer_A till 32 bitar RETI ; ; DTMF lågfrekvens: TA1 inverterar utgången från utgångsenhet 1; Varje tillståndsändring räknas för att styra signalens varaktighet; HCCR1 PUSH R5 ; Spara använda register MOV.B STDTMF,R5 ; Lågfrekvensstatus DTMF ADD FDTMFLO(R5),&CCR1 ; Lägg till halvcykellängd DEC.B LENGTH ; Är DL-signalens varaktighet klar? JNZ TARET ; Nej; ; Ja, stoppa DTMF-signal: inaktivera avbrott; BIC #OMRS+OUT+CCIE,&CCTL1 ; Återställ TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Återställ TA2 TARET POP R5 ; Återställ R5 RETI; Återgå från avbrott; ; Högfrekvent DTMF: TA2 inverterar utgången från utgångsenhet 2; HCCR2 PUSH R5 ; Spara använda MOV-register. B STDTMF+1,R5; Högfrekvensstatus DTMF ADD FDTMFHI(R5),&CCR2 ; Lägg till halvcykellängd POP R5 ; Återställ R5 RETI; Återgå från avbrott; HCCR3 ... ;Uppgift kontrollerad av register CCR3 RETI HCCR4 ... ;Uppgift kontrollerad av register CCR4 RETI ; ; DTMF Frekvenstabell: Tabellen innehåller; antal MCLK-cykler per halvcykel. Värden justerade för; effektiv frekvens MCLK under monteringsprocessen; och avrundat till ett minimum möjligt misstag frekvenser; FDTMFLO .ord ((TCLK/697)+1)/2; Lågfrekvent 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ögfrekvent DTMF1209Hz .ord ((TCLK/1336)+1)/2 ; 1336Hz.ord ((TCLK/1477)+1)/2; 1477Hz.ord ((TCLK/1633)+1)/2; 1633Hz; ; Tabellen innehåller antalet halvcykler för varaktigheten av DL-signalen (ms). ; Den lägre DTMF-frekvensen används för räkning; DTMFL .byte 2*697*DL/1000 ; Antal halvcykler.byte 2*770*DL/1000 ; för DL i ms.byte 2*852*DL/1000 ; .byte 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; Timeravbrottsvektorer Timer_A .word TIM_HND ; Vektor av moduler 1..4 timers.word TIMMOD0 ; Timermodul 0 vector.sect "INITVEC",0FFFEh ; Vektor Återställa.word INIT

Nedan finns en lite snabbare lösning. Men det kräver mer RAM eftersom... Data som erhålls från tabellerna räknas inte om varje gång, utan lagras i ett nötskal i RAM DTMFLO och DTMFHI. Avläsning görs från Timer_A-timeravbrottsrutinerna. Tabellerna som används är identiska med de som visas i föregående exempel.

FLLMPY .equ 32; Frekvensmultiplikator FLL vid 1,048 MHz TCLK .equ FLLMPY*32768; TCLK: FLLMPY x f kvarts DL .equ 82; DTMF-signalens varaktighet; i ms (65..100 ms) STDTMF = ekv 202h; Hi and Lo frekvensstatus TIM32B .equ 204 ; Timerregisterförlängning LENGTH .equ 206h ; DTMF varaktighetsräknare DTMFLO .equ 208h; Halvcykel av den lägre frekvensen DTMFHI .equ 20Ah; Övre frekvens halvcykel STAPEL .equ 600h ; Stackinitiering address.text 0F000h ; Startadress för programmet; Timer_A-initiering: MCLK, kontinuerligt läge, avbrott aktiverade; Förbereda timerutgångsmoduler Timer_A MCLK = 1,048 MHz (automatisk) ; INIT MOV #STACK,SP ; Initiera stackpekaren CALL #INITSR ; Multiplikatorinitiering; FLL-frekvenser och RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; Starttimer MOV.B #TA2+TA1,&P3SEL ; Utgångar TA2 och TA1 på portarna P3.5/4 CLR TIM32B; Rensa det utökade timerregistret BIS #MCONT,&TACTL ;Starta timern Timer_A EINT ; Generellt avbrott aktivera MAINLOOP ... ; Huvudslinga;Tangenttryckning: SDTMF innehåller tabelloffset; för 2 frekvenser (0..6,0..6) i hög och låg byte; MOV&TAR,R5 ; För att starta omedelbart LÄGG TILL FDTMFLO,R5 ; Offset för kortare tid MOV R5,&CCR1 ; Första tillståndsändring efter 0,71 ms MOV R5,&CCR2 ; 1/(2x697) = 0,71 ms; ; Hämta de två cykelräkningarna för DTMF-frekvenserna; MOV.B STDTMF+1,R5; Högfrekvent DTMF MOV FDTMFHI(R5),DTMFHI ; Halvcykellängd MOV.B STDTMF,R5 ; Lågfrekvent DTMF MOV DTMFLO(R5),DTMFLO ; Halvcykelns varaktighet; ; Varaktighetsräknare RRA R5 ; Förbered byteindex MOV.B DTMFL(R5),LENGTH ; antal tillståndsändringar med lägre frekvens MOV #OMT+CCIE,&CCTL1 ; Utgångsinvertering, bitavbrott. MOV #OMT+CCIE,&CCTL2 ; Utgångsinvertering, bitavbrott. ... ; Återgå till huvudslingan; ; Avbrottshanterare från CCR0 (används inte här); TIMMOD0 ... RETI ; ; Avbrottshanterare från fångst-jämförelseregister 1..4; TIM_HND ADD &TAIV,PC ; Behandling av begäran med högsta; RETI-prioritet; ingen avbrottsbegäran: RETI JMP HCCR1 ; begäran från CCR1 (DTMF lågfrekvens) JMP HCCR2 ; begäran från CCR2 (DTMF högfrekvens) JMP HCCR3 ; begäran från CCR3 JMP HCCR4 ; begäran från CCR4; TIMOVH INC TIM32B ; Utöka Timer_A till 32 bitar RETI ; ; DTMF lågfrekvens: TA1 inverterar utgången från utgångsenhet 1; HCCR1 ADD DTMFLO,&CCR1 ; Lägg till halvcykellängd DEC.B LENGTH ; Är DL-signalens varaktighet klar? JNZ TARET ; Nej; ; Ja, stoppa DTMF-signal: inaktivera avbrott; BIC #OMRS+OUT+CCIE,&CCTL1 ; Återställ TA1 BIC #OMRS+OUT+CCIE,&CCTL2 ; Återställ TA2 TARET RETI ; Återgå från avbrott; Högfrekvent DTMF: TA2 inverterar utgången från utgångsenhet 2; HCCR2 ADD DTMFHI,&CCR2 ; Lägg till halvcykels varaktighet RETI ; Återgå från avbrott; HCCR3. .. ;Uppgift kontrollerad av register CCR3 RETI HCCR4 ... ;Uppgift kontrollerad av register CCR4 RETI ; ; Avbrottstabellerna och vektorerna är identiska med de som visas i föregående exempel.

3.3 Hårdvara för generering av DTMF-signaler

Som nämnts ovan, i frekvensområdet 200 Hz.. 4600 Hz, måste signalnivån för sändningsfrekvensen vara minst 20 dB över nivån för främmande signaler (brus). Dessutom, baserat på specifikationen, måste signaler från de "övre" och "nedre" grupperna ha olika nivåer, så varje signal kräver sitt eget filter. Sinusformade frekvensamplituder kan erhållas från Fourier-serien.

För att välja gränsfrekvenser när du designar ett analogt filter måste du följa följande krav baserat på:

  • Därför att det är nödvändigt att säkerställa möjligheten för alla kombinationer av frekvenser i den "lägre" gruppen med frekvenser i den "övre" gruppen; skillnaden i nivåer mellan de lägsta och högsta frekvenserna i gruppen bör inte överstiga 3 dB.
  • För den lägsta frekvensen i gruppen (f1) bör övertonsundertryckningen (3f1) inte vara sämre än 20 dB. Uppfyllelsen av detta villkor är mest kritisk för den lägre frekvensen i gruppen, eftersom det är så långt bort från filtrets gränsfrekvens som möjligt.

Formeln beskriver kvadraten på det absoluta värdet vid utgången av ett högpass-butterworth-filter av ordningen n:

Denna formel representerar beroendet av Butterworths högpassfilterförstärkning på frekvensen. Parametrarna fg och n bestämmer gränsfrekvensen respektive ordningen för filtret.

Först och främst är det nödvändigt att beräkna den erforderliga filterordningen, med hänsyn till överensstämmelse med ovanstående krav.

För att uppfylla det första villkoret får förhållandet mellan kvadraterna av de absoluta värdena för de lägsta och högsta frekvenserna i gruppen inte vara mer än 3 dB eller:

Det andra villkoret kommer att uppfyllas automatiskt om förhållandet mellan kvadraterna av absolutvärdena för frekvenserna f1 och 3f1 är mer än 10/3, i detta fall är den tredje övertonen i den rektangulära signalen 1/3 mindre (se Fourier serie och Fig. 2):

Som ett resultat av beräkningar för frekvenserna för båda grupperna har vi den erforderliga filterordningen n=1,15. Därmed kommer kraven att uppfyllas av ett 2:a ordningens filter, som kan byggas på operationsförstärkare. Om du använder ett 3:e ordningens filter behöver du bara två extra element. Detta kommer dock att minska kraven på spridning av komponentparametrar. Båda ovanstående krav kommer att uppfyllas om gränsfrekvensen är inom följande gränser:

Nedre grupp fg>880 Hz fg<1418 Гц
Övre grupp fg>1527 Hz fg<2460 Гц

Om gränsfrekvensen är på sitt minimum, kommer maximal övertonsreduktion att inträffa. Men i detta fall blir skillnaden mellan de lägsta och högsta frekvenserna i gruppen 3 dB. Vid högsta möjliga gränsfrekvens är nivåskillnaden minimal, men övertonskomponenter dämpas endast med 20 dB.

Vid beräkning av filtret ägnades ökad uppmärksamhet åt övertonsundertryckning, nivåskillnaden inom gruppen var fixerad till 2 dB. Som ett resultat är gränsfrekvenserna 977 Hz och 1695 Hz. Den resulterande övertonsdämpningen överstiger avsevärt kraven. Skillnaden i frekvensnivåer i gruppen ligger inom kraven även vid avvikelse av gränsfrekvensen förknippad med spridningen i parametrarna för de komponenter som används. Vid beräkning av filterelementens värden valdes motstånd baserat på deras maximala närhet till standardvärdena för E12-serien.

Vid filterutgångarna blir resultatet två sinusformade signaler med signifikant undertryckta övertoner. För att kombinera dessa signaler introduceras en extra adderare.

Således, med endast 3 op-amps och några passiva element, kan vi generera DTMF-signaler med en mikrokontroller utan att använda betydande beräkningsresurser.

Med hjälp av simulatorprogram kontrollerades ungefärliga värden. Filtrens respons matchar det beräknade frekvenssvaret mycket nära.


Ris. 6: Amplitudspektrum för en rektangulär signal med en frekvens på 697 Hz vid utgången av ett 3:e ordningens filter

I fig. Figur 6 visar amplitudspektrumet för en rektangulär signal med en frekvens på 697 Hz, passerad genom ett 3:e ordningens filter. Som framgår av figuren är den tredje och femte övertonen (2091 Hz och 3485 Hz) avsevärt dämpad (-25,6 dB).


Ris. 7: Amplitudspektrum för en rektangulär signal med en frekvens på 941 Hz vid utgången av ett 3:e ordningens filter

I fig. Figur 7 visar spektrumet för en fyrkantsvågssignal med en frekvens på 941 Hz. I frekvensområdet av intresse för oss, upp till 4600 Hz, finns det bara en överton. Efter att ha passerat filtret dämpas denna 2823 Hz överton avsevärt (-27,9 dB). Nivåskillnaden mellan de lägsta och högsta frekvenserna i gruppen överstiger inte 1,9 dB.

För att använda lågkostnadskomponenter med stor variation i parametrar genomfördes ytterligare modellering. Simuleringsresultaten visade att den tillåtna spridningen i värdena på motstånd och kondensatorer är 10 %.


Figur 8: Histogram – fördelning av signalnivåer i en grupp


Figur 9: Histogram – Harmonisk dämpning

I fig. 8 och 9 visar histogram erhållna med användning av Monte Carlo-analys. I det här fallet varierade komponentvärdena slumpmässigt inom en spridning på 10 %. Efter 100 iterationer plottas resultaten för alla simulerade filter i histogram. I histogrammet i fig. Figur 8 visar nivåskillnaden mellan frekvenser inom gruppen. Den maximalt tillåtna skillnaden på 3 dB mellan lägsta och högsta frekvensen uppnåddes inte i något fall. Medelvärdet är 1,6 dB, vilket är något bättre än det beräknade värdet på 2 dB.

I fig. Figur 9 visar dämpningen av övertoner för den "lägre" frekvensgruppen. Det erforderliga värdet på 20 dB uppnås i alla fall, medelvärdet är cirka 27 dB. I värsta fall dämpas övertonen med 24,2 dB.

Värdena som beräknas för filtret i den "lägre" frekvensgruppen utförs också för filtret i den "övre" frekvensgruppen.

Båda filtren har identiska kretsar. Den enda skillnaden ligger i gränsfrekvenserna för filtren för de övre och nedre frekvensgrupperna. R1 och C1 bildar ett 1:a ordningens högpassfilter. Därför att kretsens ingångsresistans beror också på R1, värdet på detta element bör inte vara för litet; annars kommer mikrokontrollerns utgångar att överbelastas och fyrkantsvågformen kommer att förvrängas. I detta fall kommer ytterligare frekvenser som är ett resultat av intermodulationsdistorsion att läggas till signalen, vilket kommer att påverka signal-brusförhållandet negativt.

Överföringsfunktionen för filter av högre ordning kan inte erhållas med enbart passiva komponenter.

Således måste filtret av 2:a ordningen innehålla en op-amp. Den aktiva filterförstärkningen är inställd på 0,2 med hjälp av motstånden R1-1 och R1-2. Som ni ser är signalen något försvagad. Detta är nödvändigt för att undvika överbelastning av op-amp, eftersom toppamplituden för den grundläggande sinusformade övertonen för fyrkantvågssignalen överstiger amplituden för själva fyrkantvågssignalen (se Fourier-serien och fig. 2). En extra adderare justerar önskad effektnivå. På grund av den konstanta komponenten av den rektangulära signalen ställs operationspunkten för op-förstärkaren in på nivån Vcc/2 (se även Fourier-serien och fig. 2). I detta fall kan den konstanta komponenten inte elimineras av ingångsdelaren R1-1/R1-2. För att koppla bort OS-kretsen med DC-spänning används kondensator C3.

Vid var och en av utgångarna på det analoga filtret genereras en signal från de övre respektive undre frekvensgrupperna. I en extra adderare läggs dessa signaler till. I detta kretselement kan du ställa in förhållandet mellan de "nedre" och "övre" frekvenserna i den totala signalen och utsignalnivån med hjälp av motstånden R4 och R5. Således kan utgångsamplituden enkelt justeras för att passa olika krav i olika länder.

Vid beräkning av komponentvärdena var kondensatorvärdena, som vanligt, fasta och motståndsvärdena beräknades i enlighet med dem. I denna krets användes kondensatorer och motstånd i standardserien E12 med en spridning på 10 %.

I fig. Figur 10 visar ett schematiskt diagram över analoga filter och en adderare:


Ris. 10: Schematisk bild av analoga filter med en extra adderare

Kondensatorerna C1-1 och C1-2 kombinerar de två signalerna tillsammans vid Vcc/2-driftpunkten. Du bör inte välja för stora värden för dessa element, eftersom de är lågpassfilterelement för att eliminera lågfrekventa undertoner. Filterkondensator C5 eliminerar referensspänningsbrus. En extra kondensator C6 ansluten parallellt med återkopplingsmotståndet R6 bildar ett första ordningens högpassfilter. Om den lägsta filtrets gränsfrekvens väljs, förbättrar ytterligare filtrering av högfrekvent intermodulationsstörning kvaliteten på utsignalen, men det kommer att bli en viss dämpning av de högsta frekvenserna i den "övre" gruppen. I vissa fall är det inte nödvändigt att generera den högsta DTMF-frekvensen på 1633 Hz eftersom den används endast för att bilda tjänstesymboler A-D, och signal-brusförhållandet kan förbättras genom att sänka filtrets gränsfrekvens. En ökning av gränsfrekvensen leder således till en ökning av nivån av högfrekvent interferens, men samtidigt minskar den negativa påverkan på de högsta frekvenskomponenterna i DTMF-signalen.

4 Resultat av studier av DTMF-sändarsignaler

Spektrogrammen nedan (fig. 11 och 12) visar utsignalerna från DTMF-sändaren vid olika frekvenser. I fig. Figur 11 visar amplitudspektrumet för symbolen "1". Frekvenserna som krävs för dess överföring - 697 och 1207 Hz - ligger på nivån -10,5 dB respektive -8,5 dB. Övertoner vid 2091 och 3621 Hz undertrycks med nästan 30 dB. För att sända "D"-symbolen genereras de två högsta frekvenserna - 941 och 1633 Hz. Som framgår av fig. 12 är lågfrekvensnivån -12 dB, högfrekvensnivån är -11 dB. Motsvarande övertoner dämpas med mer än 30 dB. Således motsvarar de uppmätta värdena simuleringsresultaten och specifikationskraven.


Ris. 11: Amplitudspektrum för symbol "1": 697 och 1207 Hz


Ris. 12: Amplitudspektrum för symbol "D": 941 och 1633 Hz

Absolut frekvensnoggrannhet för de genererade fyrkantvågssignalerna kan inte uppnås när man använder två olika timers; resultatet kommer att bero på kombinationen av de två frekvenserna och vilken typ av timer som används. Anledningen till detta är en timeravbrottskonflikt. Den erforderliga noggrannheten på ±1,8 % uppfylls dock med stor marginal.

Om en 8-bitars timer och en Timer Port-timer används vid en systemfrekvens på MCLK 1,048 MHz, genereras frekvenserna för den "lägre" gruppen med en noggrannhet på inte sämre än 0,3 %. För frekvenserna för den "övre" gruppen erhölls i praktiken en avvikelse på högst 0,5 %.

Det enda undantaget är DTMF-tecknet "D", för vilket de högsta frekvenserna genereras. Som ett resultat, i denna kombination har frekvensen för den "övre" gruppen 1633 Hz en avvikelse på -0,97%.

Utan detta undantag genereras även den högsta frekvensen på 1633 Hz med en noggrannhet på bättre än 0,5 %. De maximala avvikelserna för olika frekvenser anges i tabellen:

Om Timer_A används för att generera frekvenser kommer felet att bero på MCLK-frekvensen som används:

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. Sammanfattning

Mjukvaran för det här exemplet är mycket enkel och kräver en liten mängd RAM och ROM, som upptar cirka 300 byte. Tack vare den inbyggda timermodulen genereras de erforderliga frekvenserna med hög noggrannhet utan att slösa CPU-belastning. I en konfiguration där en 8-bitars timer och en timer/port används för generering, upptar avbrottsrutiner ungefär 12 % av CPU-resursen. I det fall då frekvenser genereras av Timer_A-timern, reduceras CPU-belastningen för bearbetning av avbrottsrutiner till 6 %. Som ett resultat kan andra uppgifter köras medan DTMF-signaler sänds, eller så kan CPU:n sättas i ett lågeffektläge för att minska strömförbrukningen.

Den goda funktionaliteten hos den beskrivna modulen för att generera DTMF-signaler med fyrkantsvågsignaler demonstreras av hårdvarukretsdesignen. Därför att Det är möjligt att använda komponenter med ett brett spektrum av parametrar i kretsen; priset för en sådan lösning är mycket lågt. Alla specifikationskrav uppfylls i stor utsträckning, så en separat DTMF-signalgeneratormodul krävs inte i instrument som använder MSP430 som styrenhet.

Om det i ett särskilt fall är nödvändigt att öka signal-brusförhållandet, med hjälp av en extra op-amp, kan ett filter konstrueras för att ytterligare undertrycka intermodulationsdistorsion. En sådan extra operationsförstärkare finns redan i quad op-amp i DIL14-paketet.

6 länkar

Bundesamt fur Post und Telekommunikation (Federal Office for Post and Telecommunications): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) des Telefonnetzes (officiell specifikation för terminalenheter anslutna till analoga telefonlinjer säkerhets- och samtalskrav) / ISDN från 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:e upplagan; 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 och Empfangen av DTMF-Signalen med dem Microcontroller MSP430 (Development MSP430) telekommunikationssystem för att ta emot och sända digitala signaler baserat på MSP430 mikrokontroller); Diplomarbeit, Fachhochschule Landshut, maj 1997

Utmärkande egenskaper:

  • Generera sinusvågor med pulsbreddsmodulering (PWM)
  • Kombinera olika sinusvågssignaler till en DTMF-signal
  • Källkoder i assembly och C-språk
  • Designad för att fungera med STK500
  • Programkodstorlek 260 byte / konstant tabellstorlek 128 byte
  • Använda tabellkonverteringsmetoden

Introduktion

Detta dokument beskriver en teknik för att generera DTMF-signaler (dual-tone multi-frequency signals) med användning av valfri AVR-mikrokontroller som innehåller en pulsbreddsmodulationsenhet (PWM) och statiskt RAM. Dessa signaler används i stor utsträckning inom telefoni, där de återges när du trycker på uppringningsknapparna på en telefon. För att korrekt generera en DTMF-signal måste två frekvenser läggas över varandra: en låg frekvens (fb) och en hög frekvens (fa). Tabell 1 visar hur olika frekvenser blandas för att producera DTMF-toner när olika tangenter trycks ned.

Figur 1 – DTMF-signalgeneratorkrets

Tabell 1 – Tonsignalgenereringsmatris

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

Raderna i Tabell 1 visar lågfrekvensvärden och kolumnerna visar högfrekvensvärden. Till exempel visar matrisen att när du trycker på “5”-knappen ska frekvenserna fb = 770 Hz och fa = 1336 Hz blandas. Som ett resultat av tillägget av två sinusformade signaler med olika frekvenser bildas en DTMF-signal

var är amplitudförhållandet K=Ab/Aa källsignaler måste uppfylla villkoret

Funktionsprincip

Förutom allmän information om användningen av pulsbreddsmodulering kommer det att visas nedan hur pulsbreddsmodulering låter dig generera sinusformade signaler. Nästa stycke beskriver hur man använder basomkopplingsfrekvensen för att erhålla olika frekvenser. Efter genomgång av de teoretiska grunderna kommer en beskrivning av själva DTMF-signalgeneratorn att ges. Generering av sinusvågor

Beroende på förhållandet mellan varaktigheten av höga VH- och låga VL-spänningsnivåer ändras medelvärdet vid PWM-utgången. Om förhållandet mellan varaktigheterna för båda nivåerna hålls konstant, kommer en konstant VAV-spänningsnivå att genereras som ett resultat. Figur 2 visar en pulsbreddsmodulerad signal.


Figur 2 – Generering av likspänningsnivå

Spänningsnivån bestäms av uttrycket:

(3)

En sinusformad signal kan genereras förutsatt att medelvärdet för spänningen som genereras av pulsbreddsmoduleringen ändras varje PWM-cykel. Förhållandet mellan höga och låga nivåer måste ställas in i enlighet med sinusvågens spänningsnivå vid motsvarande tidpunkt. Figur 3 illustrerar denna process. Källdata för PWM beräknas för var och en av dess perioder och registreras i konverteringstabellen (TC).

Figur 3 illustrerar också förhållandet mellan frekvensen av den grundläggande sinusvågen och antalet sampel. Ju högre antal sampel (Nc), desto högre är noggrannheten för att modellera den resulterande signalen:

(4)

PWM-frekvensen beror på PWM-upplösningen. Vid 8-bitars upplösning är det slutliga värdet (överst av räkningen) för timern 0xFF (255). Därför att Timern räknar framåt och bakåt, då måste detta värde fördubblas. Därför kan PWM-frekvensen beräknas genom att dividera timerklockfrekvensen f CK med 510. Således, med en timerklockfrekvens på 8 MHz, blir den resulterande PWM-frekvensen 15,6 kHz.


Figur 3 – Generering av en sinusformad signal med PWM

Ändra frekvensen för en sinusvåg

Låt oss anta att sinusformade prov läses från uppslagstabellen inte sekventiellt, utan ett i taget. I detta fall kommer en signal med dubbel frekvens att genereras med samma samplingshastighet (se figur 4).


Figur 4 – Fördubbling av den resulterande frekvensen (XSW = 2)

I analogi, om du inte läser vartannat värde, utan vart tredje, fjärde, femte (respektive stegbredden är 3, 4, 5...), etc. det är möjligt att generera Nc-frekvenser i området. Observera att för höga frekvenser kommer den resulterande vågformen inte att vara sinusformad. Vi betecknar stegbredden enligt omvandlingstabellen som XSW, Var

(5)

Beräkning av den aktuella positionen i TP för nästa PWM-period (när timern svämmar över) utförs med hjälp av uttryck (6). Nytt värde i position X LUT beror på dess tidigare läge i position X" LUT med ökande stegbredd XSW

(6)

Lägga till olika frekvenser för att få en DTMF-signal

DTMF-signalen kan genereras med hjälp av uttryck (1) och (2). För att förenkla aritmetiska operationer tas värdet på koefficienten K lika med 0,75 för att ersätta den aritmetiska operationen med logiska skift. Med hänsyn till uttryck (6) kan det aktuella värdet för PWM-kontroll beräknas med uttrycket:

och med hänsyn till det X LUTa=X" LUta + XSWa ,X LUTb=X" LUTb + XSWb, låt oss äntligen skriva ner det

Implementering av en DTMF-generator

Denna appendix undersöker konstruktionen av en DTMF-tongenerator som använder en 8-bitars PWM-utgång (OC1A) och en tabell med 128 sinusfunktions (Nc) sampel, var och en specificerad av 7 bitar (n). Följande uttryck visar detta beroende och visar också hur man beräknar posterna i uppslagstabellen:

(9)

Fördelen med att använda 7 bitar är att summan av hög- och lågfrekventa signalvärden är en byte stor. För att stödja hela uppsättningen DTMF-toner måste 8 värden för varje DTMF-frekvens från Tabell 1 beräknas och matas in i uppslagstabellen.

För att uppnå högre noggrannhet implementerades följande lösning: värdena beräknade med uttryck 5 kräver endast 5 byte. För att använda alla 8 byte, vilket kommer att minska avrundningsfel, multipliceras detta värde med 8. Pekaren till uppslagstabellen skrivs på samma sätt. Men i det här fallet tar det två byte att lagra 8 gånger värdet. Detta innebär att 3 högerskift och en radix Nc-moduloperation (logisk multiplikation med Nc-1) måste utföras innan dessa bytes används som pekare till sinusvågsvärdena i


Figur 5 – Moduldiagram för anslutning till STK500

PWM-signalen genereras vid stift OC1A (PD5). Ett extra utgångsfilter hjälper till att göra signalen mer kompatibel med den sinusformade vågformen. Vid sänkning av PWM-frekvensen kan det vara nödvändigt att använda ett filter med en brantare frekvensgång för att få ett bra resultat.

Tangentbordsanslutningen visas i figur 1. Tangentbordets funktion måste organiseras på ett sådant sätt att det är möjligt att avgöra vilken tangent som trycks ned. Detta kan göras med hjälp av följande algoritm:

  1. Bestämma strängen för den nedtryckta tangenten
    • konfigurera den lågordnade bärbara datorn för port B som en utgång och ställ in loggen. "0"
    • konfigurera den höga tetrad för port B som en ingång med anslutning av pull-up-motstånd
    • linjen med den nedtryckta knappen definieras som siffran för den högsta tetraden med log. "0"
  2. Definiera kolumnen för nedtryckt tangent
    • konfigurera den höga bärbara datorn för port B som en utgång och ställ in loggen. "0"
    • konfigurera lågordningens tetrad för port B som en ingång genom att ansluta pull-up-motstånd
    • kolumnen med den nedtryckta knappen definieras som siffran för den låga ordningens tetrad med log. "0"

Obs: I STK200 är motstånd anslutna i serie mellan PORTB-kontaktstiften och mikrokontrollerstiften BP5, PB6 och PB7 (se STK200-diagram). Detta kommer att orsaka problem om tangentbordet är anslutet till PORTB-kontakten.

Figur 6 illustrerar funktionen av subrutinen för att bestämma den nedtryckta tangenten. Beroende på vilken tangent som trycks in bestäms intervallets varaktighet. Avbrottsrutinen använder detta värde för att beräkna PWM-inställningarna för de två DTM-tonsinusvågorna. Proceduren för avbrottshantering visas i figurerna 7 och 8.

Denna rutin beräknar ett värde att jämföra med timerutgången för nästa PWM-period. Avbrottsrutinen beräknar först positionen för nästa sampelvärde i uppslagstabellen och läser värdet som lagrats där.

Provets position i uppslagstabellen bestäms av pulsbredden och den faktiska pulsbredden bestäms av den genererade frekvensen.

Det slutliga värdet som skrivs till timerjämförelseregistret bestäms med formeln (7), som tar hänsyn till sampelvärdena för båda DTMF-frekvenserna.


Figur 6 – Blockschema över huvudprogrammet

Uppfinningen hänför sig till området för digital generering av signaler med dubbla tonfrekvenser (DTMF) avsedda för dataöverföring, till exempel inom området telefoni. Det uppnådda tekniska resultatet är en minskning av antalet redundanta kretselement, vilket ökar den ekonomiska effektiviteten. DTMF-signalgeneratorn, som implementerar metoden för att generera DTMF-signaler, innehåller två ackumulerande adderare, två lagringsregister, två lagringsenheter, en slutadderare, en digital-till-analog-omvandlare, en omvandlare av DTMF-signalkoder till en sekvens av heltal , en delare av referensfrekvensen för DTMF-signalgeneratorn med en justerbar divisionskoefficient, kodar en omvandlare DTMF-signal till divisionsfaktorkod. 2 s. och 3 lön flyg, 2 ill.

Uppfinningen avser förfaranden för att generera DTMF-signaler (dual-tone frequency) med digitala förfaranden, avsedda för dataöverföring, till exempel inom telefoniområdet vid tonfrekvensuppringning, Det tekniska närmaste och uppnådda resultatet till patentkraven metod är metoden för att generera DTMF-signaler, presenterad i US patent nr. 5034977 daterad 04/04/89, publ. 07.23.91, M. klass. 5 N 04 M 1/00 ​​En känd metod för att generera DTMF-signaler innefattar val av de första och andra samplingsvinkelkoderna som motsvarar de första och andra frekvenserna för DTMF-signalkomponenterna, kumulativt separat summering av den första och andra samplingsvinkelkoden med respektive periodiskt fasta, med en period som motsvarar klocksamplingsfrekvensen, de första och andra resultaten av kumulativ summering, som erhåller de första och andra diskreta värdena för komponenterna i DTMF-signalen lagrade i adresslokaliserade celler i motsvarande diskreta tabeller värden för komponenterna i DTMF-signalen, genom att läsa från motsvarande tabeller på adresserna som motsvarar resultaten av den kumulativa summeringen av samplingsvinkelkoder, summera de första och andra diskreta värdena för komponenterna i DTMF-signalen till erhålla det tredje diskreta värdet som motsvarar värdet på DTMF-signalen. En känd metod för att generera DTMF-signaler är följande: beroende på DTMF-signalens kod, genom att först konvertera koderna för DTMF-signalerna, väljs en första kod som bestämmer signalens samplingsvinkel med frekvens , motsvarande gruppen högfrekvenskolumner, och med hjälp av den andra omvandlingen av DTMF-signalkoder väljs en andra kod som bestämmer signalens samplingsvinkel med en frekvens motsvarande gruppen av låga frekvenser - rader, periodiskt, med en period som motsvarar samplingsklockfrekvensen, summeras den första samplingsvinkelkoden i motsvarande ackumulativa adderare och registreras i motsvarande register, vars utdata är resultatet, vars värde motsvarar adressen för tabellcellen som är lagrad i motsvarande skrivskyddade minne och i vilken de motsvarande diskreta värdena för sinusen finns som bestämmer den övre frekvensen för DTMF-signalen på samma sätt, periodiskt, med en period som motsvarar samplingsklockfrekvensen, den andra samplingsvinkelkoden summeras i motsvarande ackumulativa adderare och registreras i motsvarande register, vars utdata är resultatet, vars värde motsvarar adressen för den lagrade tabellcellen i motsvarande skrivskyddade minnesenhet och där de motsvarande diskreta värdena för sinusen som bestämmer den lägre frekvensen för DTMF-signalen, summeras diskreta värden för sinusen som bestämmer de övre och nedre frekvenserna för DTMF-signalen upp i den slutliga adderaren, fastställande av det diskreta värdet av DTMF-signalen och, genom digital-till-analog-omvandling, tillförd till utgången, bildande en stegsinus DTMF-signal motsvarande ingångskoden för DTMF-signalen. Den kända metoden är ineffektiv, vilket beror på dess låga tekniska och ekonomiska indikatorer och tekniska indikatorer.Tekniska och ekonomiska indikatorer bestäms av de nödvändiga kostnaderna vid implementering av metoden för att uppnå de nödvändiga parametrarna som krävs för DTMF-signaler. I det kända förfarandet beror frekvensgenereringens noggrannhet på bitdjupet hos koden som motsvarar samplingsvinkeln, vilket kräver en stor bitbredd av den ackumulativa adderaren, vilket gör det svårt att implementera förfarandet med enkel hårdvara. Samplingsvinkelkoden i den kända metoden bestäms nämligen av uttrycket K = (F/F t)32..., (1.1) där K är koden som motsvarar samplingsvinkeln, F är den genererade frekvensen, F t är samplingsfrekvensen. Som kan ses beror noggrannheten för den genererade frekvensen tydligt på förhållandet mellan den genererade frekvensen och samplingsfrekvensen. För att uppnå den erforderliga noggrannheten för den genererade frekvensen, nämligen inte sämre än 1,5 %, uppenbarligen, vid Det krävs minst två signifikanta siffror efter decimaltecknet, vilket kräver presentation av data med ett bitdjup för lägre frekvenser på minst 8 bitar, och för höga frekvenser minst 9 bitar, respektive för kumulativ summering minst 12 bitar , vilket leder till en ökning av antalet komponentelement i anordningar som implementerar den kända metoden. Kända anordningar för implementering av det kända förfarandet, nämligen adderare, register och permanenta lagringsanordningar har ingångar/utgångar med en bredd av 4 och 8 bitar. Därför, med en högre bitkapacitet, krävs ytterligare tekniska och ekonomiska kostnader vid implementering av lika funktionella enheter. Vidare, i den kända metoden, leder minskning av antalet decimaler till ett frekvensfel som överstiger det tillåtna. Teknologiska indikatorer bestäms av mångsidigheten och enhetligheten i implementeringen av metoden, till exempel den moderna tekniknivån, vilket innebär att minska förbrukningen av material, komponenter och öka mångsidigheten hos enheter kräver användning av mikrokontroller. Utbredda mikrokontroller som används i telefoni- och telemetrimätningar använder 8-bitars data och en 8-bitars aritmetisk-logisk enhet, vilket kräver, vid implementering av den kända metoden, ytterligare beräkningsoperationer associerade med att summera data med en bredd på mer än 8 bitar, och analysera överföringssignalen, vilket ökar antalet kommandon och följaktligen klockfrekvensen för mikrokontrollern, såväl som mängden RAM för mikrokontrollern, vilket leder till en ökning av kostnaden för enheter som använder den kända metoden för att generera DTMF signaler. Denna slutsats ges när man analyserar användningen av den kända metoden i en tonuppringare baserad på mikrokontroller tillverkade av Atmel, Microchip tnc, etc. Den kända metoden är alltså i grunden ineffektiv, vilket beror på låga tekniska och ekonomiska indikatorer, uttryckt i ökade materialförbrukning, energiförbrukning och låga tekniska indikatorer , eftersom den har begränsningar när metoden används, inklusive som en del av mycket använda mikrokontroller, vilket uttrycks i ökade tekniska egenskaper som krävs av mikrokontroller, vilket minskar deras mångsidighet. Närmast i teknisk väsen och uppnått resultat för den patentsökta DTMF-signalgeneratorn är DTMF-generatorsignalerna, presenterade i US patent nr. 5034977 daterat 04/04/89, publ. 07.23.91, M. klass. 5 N 04 M 1/00 ​​Den kända DTMF-signalgeneratorn inkluderar: en första ackumulerande adderare, ett första låsregister, en första minnesanordning, en andra ackumulativ adderare, ett andra låsregister, en andra minnesanordning, en slutlig adderare, en digital-till-analog-omvandlare, där utgången från den första ackumulativa adderaren är ansluten till ingången på det första låsregistret, utgången på det första låsregistret är ansluten till ingången på den första minnesanordningen, såväl som till en av ingångarna för den första ackumulerade adderaren, utgången på den första minnesanordningen är ansluten till en av ingångarna på den slutliga adderaren, utgången från den andra ackumulerade adderaren är ansluten till ingången på det andra låsregistret, utgången på den andra hållregistret är anslutet till ingången på den andra lagringsanordningen, såväl som till en av ingångarna på den andra ackumulerande adderaren, utgången från den andra lagringsanordningen är ansluten till en annan ingång på den slutliga adderaren, utgången från den slutliga adderaren är ansluten till ingången på digital-till-analog-omvandlaren, vars utgång är utgången från DTMF-signalgeneratorn, generatorn innehåller också en första omvandlare av DTMF-signalkoder till motsvarande koder av samplingsvinklar motsvarande de övre frekvenserna av DTMF-signalen, en andra omvandlare av DTMF-signalkoder till motsvarande koder för samplingsvinklar som motsvarar de lägre frekvenserna av DTMF-signalen, och utgången från den första omvandlaren av DTMF-signalkoder är ansluten till en annan ingång på den första kumulativa adderaren, utgången från den andra DTMF-signalkodsomvandlaren är ansluten till en annan ingång på den andra ackumulativa adderaren, ingångarna på de första och andra DTMF-signalkodsomvandlarna är ingångarna till DTMF-signalgeneratorn och klockingångarna för den första och andra låsningen register är sammankopplade och är ingången till samplingsklockfrekvensen för DTMF-signalgeneratorn. Den kända DTMF-signalgeneratorn ger ett lågt tekniskt resultat på grund av det överdrivna antalet kretselement associerade med olika, såväl som överdriven bitkapacitet hos lika funktionella element. Dessutom är implementeringen av den kända tekniska lösningen effektivt möjlig i form av en separat integrerad krets, men detta kräver organisation av specialiserad produktion, men med tanke på att DTMF-signalgeneratorer är en del av multifunktionella enheter (telefonapparater med avancerade möjligheter, anordningar för att överföra telemetrisk information över telefonlinjer, etc.) etc.), för närvarande implementerade på basis av universella mikrokontroller, är produktionen av individuella DTMF-signalmikrokretsar ekonomiskt ineffektiv. Grunden för den föreslagna tekniska lösningen är uppgiften att skapa en metod för att generera DTMF-signaler med hjälp av en DTMF-signalgenerator, där, genom att ändra villkoren och sekvensen av operationer, implementering av en metod med höga tekniska och ekonomiska indikatorer, på grund av en minskning av bitkapaciteten för liknande operationer, höga tekniska indikatorer, när implementera metoden, både i kretsdesign med enkel hårdvara, och som en del av en multifunktionell mikrokontroller, förknippad med repeterbarhet, vid implementering, identiska funktionella element. Den tekniska grunden var uppgiften att skapa en DTMF-signalgenerator, i vilken, genom att införa nya element och göra nya kopplingar, ökas det tekniska resultatet i samband med att minska antalet redundanta kretselement, och följaktligen ökas den ekonomiska effektiviteten i samband med möjligheten att implementera den föreslagna tekniska lösningen med allmänt tillgängliga medel. löst genom att i det kända förfarandet för att generera DTMF-signaler, inklusive valet av den första och andra koden för samplingsvinklar som motsvarar de första och andra frekvenserna för komponenterna i DTMF-signalen, den kumulativa summeringen av den första och andra koden av samplingsvinklar var för sig, periodiskt fixerade, med en period som motsvarar samplingsklockfrekvensen, de första och andra resultaten av kumulativ summering, som erhåller de första och andra diskreta värdena för DTMF-signalkomponenterna lagrade i adresslokaliserade celler i motsvarande tabeller med diskreta värden för DTMF-signalkomponenterna, genom att läsa från motsvarande tabeller på adresserna som motsvarar resultaten av den kumulativa summeringen av samplingsvinkelkoder, summera de första och andra diskreta värdena för DTMF-signalkomponenterna till erhålla det tredje diskreta värdet som motsvarar värdet på DTMF-signalen, vad som är nytt är att erhålla det första och andra diskreta värdet för DTMF-signalkomponenterna lagrade i de adresserbara cellerna i motsvarande tabeller med diskreta värden för DTMF signalkomponenter utförs genom att läsa från motsvarande tabeller till adresserna som motsvarar resultaten av den kumulativa summeringen av de första respektive andra sekvenserna av heltal, vars medelvärde motsvarar koderna för samplingsvinklar som motsvarar komponenterna i DTMF-signalen. Dessutom kan medelvärdet för sekvensen av heltal som bildar resultatet av den kumulativa summeringen vara det aritmetiska medelvärdet av dessa tal. Dessutom kan periodisk registrering av de första och andra resultaten av den kumulativa summeringen vara med en period som motsvarar samplingsklockfrekvens, som är olika för olika DTMF-signaler. Problemet löses också av det faktum att i den kända DTMF-signalgeneratorn, inklusive en första ackumulerande adderare, ett första låsregister, en första minnesanordning, en andra ackumulativ adderare , ett andra låsregister, en andra minnesanordning, en slutadderare, en digital-till-analog-omvandlare, och utgången från den första ackumulerade adderaren är ansluten till ingången det första låsregistret, utgången från det första låsregistret är ansluten till ingången på den första minnesanordningen, såväl som till en av ingångarna på den första ackumulativa adderaren, utgången från den första minnesanordningen är ansluten till en av ingångarna på den sista adderaren, utgången från den andra ackumulativa adderaren är ansluten till ingången på det andra låsregistret, utgången på det andra låsregistret är ansluten till ingången på den andra lagringsenheten, såväl som till en av ingångarna på den andra ackumulativa adderaren, är utgången från den andra lagringsenheten ansluten till en annan ingång på slutadderaren, utgången på slutadderaren är ansluten till ingången på digital-till-analog-omvandlaren, vars utgång är utgången från DTMF-signalgeneratorn, ny, enligt Uppfinningen är att DTMF-signalgeneratorn innehåller dessutom en omvandlare av DTMF-signalkoder till en sekvens av heltal, en delare av referensfrekvensen för DTMF-signalgeneratorn med en justerbar divisionskoefficient, en omvandlare av DTMF-signalkoder till en divisionskoefficientkod, och den första utgången från omvandlaren av DTMF-signalkoder i en sekvens av heltalstal är ansluten till en annan ingång på den första ackumulerade adderaren, den andra utgången på DTMF-signalkodsomvandlaren i en sekvens av heltal är ansluten till en annan ingång på den andra ackumulativa adderaren, utgången från huvudfrekvensdelaren för DTMF-signalgeneratorn med en justerbar divisionskoefficient är ansluten till klockingången på DTMF-signalkodsomvandlaren i en sekvens av heltal, såväl som med klockingången för det första låsregistret och klockan ingången för det andra låsregistret, utgången från DTMF-signalkodsomvandlaren till divisionskoefficientkoden är ansluten till ingången för inställning av divisionskoefficienten för DTMF-signalgeneratorns huvudfrekvensdelare, ingången för huvudfrekvensdelaren för DTMF-signalgenerator med en justerbar divisionskoefficient är inmatning av referensfrekvensen för DTMF-signalgeneratorn, ingången av omvandlaren av DTMF-signalkoder till divisionskoefficientkoden är ansluten till ingången på omvandlaren av DTMF-signalkoder i en sekvens av heltal och är ingången till DTMF-signalgeneratorn. Dessutom kan omvandlingen av DTMF-signalkoder till sekvenser av heltal göras i form av en styrd programmerbar minnesenhet, vars minne består av, motsvarande antalet DTMF-signaler, minnesområden bestående av minnesceller motsvarande längden av sekvensen av heltal, minnesceller utformade så att ena halvan av minnescellen lagrar ett tal relaterat till den första sekvensen av heltal, och den andra halvan av minnescellen lagrar ett tal relaterat till en annan sekvens av heltal som är termer för motsvarande ackumulativa adderare, och styrningen av den programmerbara minnesanordningen är konfigurerad att styra valet separat minnesområde och en separat minnescell Nya egenskaper hos metoden för att generera DTMF-signaler och DTMF-signalgeneratorn, tillsammans med den kända egenskaper hos dessa objekt, ger nya tekniska egenskaper hos objekten, och, som en konsekvens av dessa egenskaper, tillhandahålls ett nytt nödvändigt tekniskt resultat Orsak-och-verkan samband mellan uppsättningen av egenskaper Den föreslagna metoden och det uppnådda tekniska resultatet är förklaras enligt följande: För att avslöja kärnan i den föreslagna tekniska lösningen kommer följande beräkningar att vara lämpliga: y(P)=sin(n) (1.2), där y(P) är det diskreta värdet av sinusfunktionen;=wT =27F/Fr (1,3) - samplingsvinkel, mätt i radianer; n - provets serienummer - prov; F t = F OSC / kd - samplingsklockfrekvens, där F OSC - enhetens inställningsfrekvens; kd - justerbar divisionskoefficient Då = 2FC D / F O S C . (1.4) Som bekant är sinusfunktionen periodisk med en period på 2. För att omvandla samplingsvinkeln från radianer till relativa enheter och erhålla samplingsvinkelkoden delar vi in ​​hela perioden i m delar, där m är en binär heltal. Således får vi en minsta diskret del av perioden: = 2/m. (1.5) Samplingsvinkelkoden är det relativa värdet av samplingsvinkeln i enlighet med en del av perioden, nämligen K=/=2F/F t: 2P/m=Fm/F t. (1.6) Till exempel, för genererade frekvenser på 1477 Hz och 697 Hz (motsvarar DTMF-signalkoden "3"), med m = 64, och klockfrekvensen Ft = 32768 Hz K 697 = 1,36; K l477 = 2,88. Uppenbarligen för den binära visning av samplingsvinkelkoden K 697 =1,36 V, respektive, 136 kräver 8 bitar (1281+640+320+160+81+40+20+10), respektive K 1477 =2,88 V, 288 kräver 9 bitar ( 2561+1280+640+321+ 160+80+40+ 20+10). Samtidigt, för kumulativ summering, i en binär representation, krävs 12 bitar, vilket bestämde de ovan beskrivna nackdelarna med den kända lösning. Den föreslagna tekniska lösningen definierar till exempel talet 1,36 som medelvärdet av en sekvens av heltal 1 och 2, nämligen 1,36=(1x+2y)/(x+y), där x och y är antalet tal 1 respektive 2 periodiskt upprepande med en period (x+y) Värdet på samplingsvinkelkoden består av en heltalsdel C och en bråkdel, dvs. till exempel, 1,36=1+0,36. Den relativa noggrannheten för en sådan ersättning i enlighet med uttrycket (1.7) = K/C (1.7) ökar med en ökning av heltalsdelen av samplingsvinkelkodvärdet. Till exempel, för en genererad frekvens på 697 Hz, m = 64, och en klockfrekvens Ft = 32768 Hz, är felet att ersätta K 697 = 1,36 med värdena för nummer 1 och 2 36 respektive 32% Samtidigt, om du ökar värdet på m = 256, minskar felet att ersätta K 697 = 5,45 med värdena för nummer 5 och 6 med 9 respektive 10%. fel av den genererade frekvensen, till exempel när du ersätter K 697 = 5,45 med värdena för nummer 5 och 6 under repetitionsperioden, lika med 16, 5,45=(5x+6y)/(x+y), där ( x+y)=16. Löser vi ekvationen får vi x=9, y=7, dvs. av sexton kumulativa summeringsoperationer summeras term 5 nio gånger och term 6 summeras sju gånger, medan faktiskt K 697 = 5,4375, genom att ersätta detta värde med uttryck (1,6) för m = 256, F t = 32768 Hz, bestämmer vi det faktiska beräknade värdet av den genererade frekvensen F = 696 Hz, medan felet förblev 0,1% Således, kumulativ summering av en sekvens av heltal, vars medelvärde motsvarar motsvarande samplingsvinklar, gör det möjligt att uppnå höga tekniska och ekonomiska indikatorer genom att minska bitkapaciteten för kumulativa summeringsoperationer, på grund av förmågan att variera komponenter i ovanstående uttryck, och följaktligen minska bitkapaciteten för enheter som implementerar den föreslagna metoden, vilket leder till en minskning av hårdvaru- och energikostnader vid implementering av metoden , och för att säkerställa hög teknisk prestanda för den föreslagna metoden när den används i multifunktionella enheter på grund av minskade tekniska krav. Orsak-och-verkan förhållandet mellan uppsättningen Egenskaperna för den föreslagna tekniska lösningen och det uppnådda tekniska resultatet förklaras enligt följande. högt tekniskt resultat av DTMF-signalgeneratorn säkerställs genom införandet av nya element i en DTMF-signalkodomvandlare i en sekvens av heltal, en DTMF-signalgenerators referensfrekvensdelare med en justerbar divisionskoefficient, en DTMF-signalkodsomvandlare till en dividerskoefficient kod, som säkerställer implementeringen av metoden av kretselement med samma bitdjup, som inte överstiger 8-bitar, medan det inte finns någon redundans av element som är nödvändiga för att lösa flera problem, till exempel både för att registrera resultatet av kumulativ summering och för att adressera motsvarande lagringsenhet används samma antal bitar, som inte är implementerade mer än ett 8-bitars register, som kan implementeras med allmänt tillgängliga medel i form av en enda mikrokrets eller, i en mikroprocessorversion, en enda minnescell. Dessutom kan implementeringen av ackumulerande adderare göras i form av identiska enheter, med samma bitdjup, i form av allmänt tillgängliga adderare mikrokretsar som arbetar med 4-bitars addends. Naturligtvis är det underförstått att siffrorna och , följaktligen kan enheterna som bildar de ovan beskrivna sekvenserna av heltal, vars helhet bestämmer motsvarande samplingsvinkelkoder, ha ett annat bitdjup, men de mest optimala, ur synvinkeln att uppfylla de mål som satts av föreslagen lösning, är 4-bitars nummer. Dessutom säkerställs ett högt tekniskt resultat även när den föreslagna tekniska lösningen implementeras som en del av mikrokontroller, där systemets mikrokontrollerkommandon nödvändigtvis inkluderar kommandon som fungerar med 4-bitars nummer - nibbles. Alltså, den föreslagna tekniska lösningen för DTMF-signalgeneratorn möjliggör höga tekniska resultat förknippade med en minskning av antalet kretselement, och ger även mångsidighet vid implementering av DTMF-signalgeneratorn som allmänt tillgänglig hårdvara och som en del av multifunktionella mikrokontroller, vilket bestämmer hög ekonomisk effektivitet hos den tekniska lösningen Uppfinningen illustreras på ritningen, där Fig. 1 funktionellt visar en DTMF-signalgenerator som implementerar ett förfarande för att generera DTMF-signaler.DTMF-signalgeneratorn inkluderar en omvandlare 1 av DTMF-signalkoder i sekvensheltal , delare 2 för referensfrekvensen för DTMF-signalgeneratorn med en justerbar divisionskoefficient, omvandlare 3 av DTMF-signalkoder till en divisionskoefficientkod, första ackumulerande adderare 4, första låsregistret 5, första minnesanordning 6, andra minnesanordning 7, andra låsregistret 8, den andra ackumulativa adderaren, den slutliga adderaren 10, digital-till-analog-omvandlaren 11. Driften av DTMF-signalgeneratorn illustreras av exemplet på implementeringen av en metod för att generera DTMF-signaler. på uttryck (1.4, 1.6) och tekniska data, i synnerhet inställningsfrekvensen för enheten där den föreslagna metoden kommer att implementeras, beräknas sekvenser av heltal, som definierar motsvarande koder för samplingsvinklar och koder för divisionskoefficienter för delaren 2 av referensfrekvensen för DTMF-signalgeneratorn med en justerbar divisionskoefficient, vilka skrivs i motsvarande celler i minnesområdena för omvandlaren 1 av DTMF-signalkoder i en sekvens av heltal och omvandlaren 3 av DTMF-signalkoder i divisionen koefficientkoder, förberäknas också de diskreta värdena för motsvarande sinusfunktioner, vars antal bestäms av antalet diskreta m, och skrivs in i motsvarande minnen 6 och 7, när en DTMF-signal genereras, vid ingångarna till omvandlare 1 och omvandlare 3, som är generatoringångarna, under en stunds verkan av DTMF-signalen kommer koden för den genererade DTMF-signalen att ställas in, vid utgången av omvandlare 3 kommer en kod att ställas in som bestämmer divisionskoefficienten för delare 2, medan vid utgången av delare 2 samplingsklockfrekvensen kommer att ställas in periodiskt, med en period som motsvarar samplingsklockfrekvensen, från den första utgången på omvandlare 1 kommer det att finnas de binära talen som ingår i den första sekvensen av heltal kommer att matas till ingången av den första ackumulativa adderaren 4, och från den andra utgången av omvandlaren 1 kommer de binära talen som ingår i den andra sekvensen av heltal som motsvarar komponenterna i DTMF-signalen att matas till ingången av den andra ackumulativa adderaren 9 tillförs resultaten av den ackumulativa summeringen från utgångarna från de ackumulativa adderarna till ingångarna på motsvarande låsregister 5 och 8, från utgångarna från låsregistren 5 och 8, resultaten av den ackumulerade summeringen, med en period som motsvarar samplingsklockfrekvensen, skickas till andra ingångar för motsvarande ackumulativa adderare 4 och 9, såväl som till ingångarna för motsvarande lagringsenheter 6 och 7, och ställer in adresserna för de diskreta värdena för sinusen för motsvarande komponenter i DTMF-signalen, från utgångarna på lagringsenheterna 6 och 7, de diskreta värdena för motsvarande komponenter i DTMF-signalen matas till motsvarande ingångar på den slutliga adderaren 10, vid vars utgång en diskret binär DTMF-signal bildas, vilken matas till ingången på digital-till-analogomvandlaren 11, vars utgång genererar en stegad sinusformad DTMF-signal motsvarande ingångskoden för DTMF-signalen. Omvandlaren 1 av DTMF-signalkoder till en sekvens av heltal (fig. 1) kan göras i den form som visas i fig. 2, där omvandlaren av DTMF-signalkoder till en sekvens av heltal inkluderar en styranordning 12, ett programmerbart minne anordning 13. Funktionen av DTMF-signalgeneratorn illustreras Nedan är ett specifikt exempel på implementeringen av den föreslagna metoden i en telefonröst-frekvensuppringare. Tidigare, baserat på uttryck (1.4, 1.6) och tekniska data, är sekvenser av heltal. beräknade som bestämmer motsvarande samplingsvinkelkoder och divisionskoefficientkoder för delare 2 av referensfrekvensen för DTMF-signalgeneratorn med justerbart divisionsförhållande. Med tanke på att implementeringen av metoden inkluderar samma typ av beräkningar, för att illustrera arbetet, visar ett specifikt exempel implementeringen av en metod för att generera en DTMF-signal motsvarande att trycka på "7"-tangenten som en del av en tonpulsuppringare. Den kvartsfrekvens som är vanligast inom telefonteknik, nämligen F OSC =3579545 Hz, ställs in som referensfrekvens för generatorn. Att trycka på "7"-tangenten motsvarar en DTMF-signal med en övre (kolumner) frekvens på 1209 Hz och en nedre (rader) frekvens på 852 Hz. Eftersom DTMF-signalen samtidigt sänder två frekvenser, beräknas divisionskoefficienterna för den större - övre frekvensen så att motsvarande samplingsvinkelkod i enlighet med uttryck (1.6) ligger nära maxvärdet - 16, vilket implementeras på högst 4 bitars data. Således, med F OSC = 3579545 Hz, antalet diskreta värden på sinus m = 128, de beräknade värdena för divisionskoefficienten för delare 2 av referensfrekvensen för DTMF-signalgeneratorn med en justerbar divisionskoefficient K D = 240 = 460, medan motsvarande samplingsvinkelkoder för den övre frekvensen är K 1209 /852 =10,376, för den lägre frekvensen K 852/1209 = 7,312. Enligt uppfinningen ersätter vi samplingsvinkelkoderna med sekvenser av heltal, respektive 10/11 och 7/8.10.375 = (10x+11y)/(x+y), medan faktiskt K 1209 / 852 = 10.3757.312 = (7x+8y)/(x+y), medan i själva verket K 952/1209 = 7,313, med (x+y) = 16. Således ersätts 10,375 med periodiskt en upprepad sekvens av heltal 10 x 10 gånger och 11 x 6 gånger, och 7 312 ersätts som 7 x 11 gånger och 8 x 5 Minnesområdet för DTMF-signalkoden "7" i binär representation är som följer:
På detta sätt beräknas sexton tabeller som motsvarar DTMF-signalkoderna, nämligen 0, 1, 2...9, *, #, A, B, C, D, och skrivs tidigare in i minnet hos den programmerbara minnesanordningen 13 (DTMF-teckenkodkonverterare till sekvenser av heltal.) När du trycker på en tangent, till exempel "7" vid generatoringången under DTMF-signalens varaktighet, är den binära koden för DTMF-signalen "7" (0111) inställd, omvandlar omvandlaren 3 för DTMF-signalkoden till divisionskoefficienten DTMF-signalkoden till koefficientkoden som delar kd för delare 2 av generatorreferensfrekvensen med en justerbar divisionskoefficient, samplingsklockfrekvensen Ft=F OSC/K D kommer att ställas in på utgången av delare 2. DTMF-signalkoden anländer också till adressingångarna för de mest signifikanta bitarna i den programmerbara minnesanordningen 13 (omvandlare av DTMF-signalkoder till sekvenser av heltal) och är närvarande där under DTMF-signalens varaktighet. Den styrda anordningen 12, tillverkad till exempel i form av en räknare (omvandlare av DTMF-signalkoder till en sekvens av heltal), under påverkan av klocksignaler med en frekvens t ändrar cykliskt sitt värde på parallella utgångar sekventiellt från 0000 till 1111, genom att följaktligen ändra värdena för adressingångarna för lågordningens bitar i den programmerbara minnesenheten 13 (omvandlare av DTMF-signalkoder till en sekvens av heltal), visas 8-bitars (byte) nummer vid utgången av programmerbar minnesanordning 13 med en samplingsklockfrekvens, och i enlighet med tabell 1 bildar de mest signifikanta fyra bitarna (mest signifikanta bitar) en sekvens av heltal, vars helhet, nämligen det aritmetiska medelvärdet, bestämmer samplingsvinkelkoden motsvarande till den övre (kolumner) frekvensen, och de minst signifikanta fyra siffrorna (låg nibble) bildar en sekvens av heltal, vars helhet, nämligen det aritmetiska medelvärdet, bestämmer samplingsvinkelkoden motsvarande lägre (linje) frekvens, fyra-bitars data, i enlighet med tabell 1, från utgången från den programmerbara minnesanordningen 13 (omvandlare av DTMF-signalkoder till en sekvens av heltal) tillförs separat till ingångarna på motsvarande ackumulativa adderare 4 och 9, vid utgångarna av motsvarande adderare 4 och 9 ändras data med en samplingsklockfrekvens från 0 till m (i detta fall m=128), bestämmer och fixerar med hjälp av hållregistren 5 och 8 adresserna för lagringsanordningarna 6 och 7, i vilka binära diskreta värden av de motsvarande sinusformade komponenterna i DTMF-signalen skrivs, från utgångarnas lagringsenheter 6 och 7, binära diskreta värden för motsvarande sinusformade komponenter i DTMF-signalen matas till motsvarande ingångar på den slutliga adderaren 10, vid vars utgång binära diskreta värden av DTMF-signalen bildas, vilka sedan matas till ingången på digital-till-analog-omvandlaren 11, vid vars utgång en stegad sinusformad DTMF-signal genereras. DTMF-signalgeneratorn kan implementeras på basis av välkända tekniska medel, beskrivna till exempel i: Tillämpning av integrerade kretsar i elektronisk datorteknik. Handbok / Ed. B.N. Fayzulaeva, B.V. Tarabrina. - M.: Radio and Communications, 1986. I detta fall kan omvandlaren 3 av DTMF-signalkoder till divisionskoefficientkoder göras till exempel i form av ett läsminneschip 155PE 3 (s. 343), genomförandet av registren beskrivs på sid. 108, implementeringen av ackumulerande adderare beskrivs på sid. 114. Metoden enligt uppfinningen och DTMF-signalgeneratorn implementeras också på basis av hårdvara från Microchip Inc. (8-bitars enkelchips mikrokontroller av typen pic16f628), som en del av pulstonstelefonuppringaren "Kadran - NKT - 01" producerad av företaget "Kadran" (Ukraina, Zaporozhye). Kommandosystemet och den interna strukturen för mikrokontrollernoderna beskrivs i: Prokopenko B.Ya. Enkelchips mikrokontroller. Dodeka, 2000, ISBN8-87835-056-4 En beskrivning av parametrarna för DTMF-signalen ges till exempel i: Integrerade kretsar: Chips för telefoni. Nummer 1. - M.: Dodeka, 1994, 256 sid. - ISBN-5-87835-003-3., sid. 12, 13.

KRAV

1. En metod för att generera signaler med dubbla toner (DTMF), inklusive val av de första och andra samplingsvinkelkoderna som motsvarar de första och andra frekvenserna för DTMF-signalkomponenterna, kumulativt separat summering av den första och andra samplingsvinkelkoden med respektive periodiskt fasta perioder som motsvarar samplingsklockfrekvensen, det första och det andra resultatet av kumulativ summering, som erhåller de första och andra diskreta värdena för DTMF-signalkomponenterna lagrade i adresslokaliserade celler i motsvarande tabeller med diskreta värden för DTMF-signalkomponenter, genom att läsa från motsvarande tabeller på adresserna som motsvarar resultaten av den kumulativa summeringen av samplingsvinkelkoder, summera det första och andra diskreta värdet för DTMF-signalkomponenterna för att erhålla det tredje diskreta värdet som motsvarar värdet av DTMF-signalen, kännetecknad av att de första och andra diskreta värdena för DTMF-signalkomponenterna lagrade i de adresserbara cellerna i motsvarande tabeller med diskreta värden för DTMF-signalkomponenterna erhålls genom att läsa från motsvarande tabeller vid adresser , motsvarande resultaten av den kumulativa summeringen av den första och andra sekvensen av heltal, vars medelvärde motsvarar koderna för samplingsvinklar, motsvarande komponenter i DTMF-signalen.2. 2. Förfarande enligt krav 1, kännetecknat av att medelvärdet av sekvensen av heltal som bildar resultatet av den kumulativa summeringen är det aritmetiska medelvärdet av dessa tal.3. 2. Förfarande enligt krav 1, kännetecknat av att de första och andra resultaten av kumulativ summering periodiskt registreras med en period som motsvarar samplingsklockfrekvensen, vilken är olika för olika DTMF-signaler.4. En DTMF-signalgenerator, innefattande en första ackumulerande adderare, ett första låsregister, en första minnesanordning, en andra ackumulativ adderare, ett andra låsregister, en andra minnesanordning, en slutlig adderare, en digital-till-analog-omvandlare, varvid utgången från den första ackumulerade adderaren är ansluten till ingången på det första låsregistret, utgången från det första låsregistret är ansluten till ingången på den första minnesanordningen, såväl som till en av ingångarna på den första ackumulativa adderaren, utgången på den första minnesanordningen är ansluten till en av ingångarna på den slutliga adderaren, utgången från den andra ackumulerande adderaren är ansluten till ingången på det andra låsregistret, utgången på det andra låsregistret är ansluten till ingången på andra minnesenheten, såväl som med en av ingångarna på den andra ackumulerade adderaren, utgången från den andra lagringsenheten ansluts till en annan ingång på den slutliga adderaren, utgången från den slutliga adderaren är ansluten till ingången på en digital- till-analogomvandlare, vars utgång är utgången från en DTMF-signalgenerator, kännetecknad av att DTMF-signalgeneratorn dessutom innehåller en omvandlarkoder för DTMF-signaler i en sekvens av heltal, en delare av referensfrekvensen för DTMF-signalgeneratorn med en justerbar divisionskoefficient, en omvandlare av DTMF-signalkoder till en divisionskoefficientkod, varvid den första utgången från omvandlaren av DTMF-signalkoder i en sekvens av heltal är ansluten till en annan ingång på den första ackumulativa adderaren, den andra utgången på omvandlarkoder för DTMF-signaler i en sekvens av heltal är ansluten till en annan ingång på den andra ackumulativa adderaren, utgången från den inställda frekvensdelaren för DTMF-signalgeneratorn med en justerbar divisionskoefficient är ansluten till klockingången på omvandlaren av koder för DTMF-signaler i en sekvens av heltal, såväl som till klockingången till det första låsregistret och klockingången till det andra hållregistret, utgången från DTMF-signalkodsomvandlaren till en divisionskoefficientkod är ansluten till ingången för inställning divisionskoefficienten för DTMF-signalgeneratorns referensfrekvensdelare, ingången för DTMF-signalgeneratorns referensfrekvensdelare med en justerbar divisionskoefficient är ingången för referensfrekvensen för DTMF-signalgeneratorn, ingången från DTMF-signalkodsomvandlaren till divisionskoefficientkoden är ansluten till ingången på DTMF-signalkodsomvandlaren till en sekvens av heltal och är ingången till DTMF-signalgeneratorn. 5. DTMF-signalgenerator enligt krav 4, kännetecknad av att kodomvandlaren av DTMF-signaler till en sekvens av heltal är utförd i form av en styrd programmerbar minnesanordning, vars minne består av att motsvara antalet DTMF-signaler , minnesområden som består av celler som motsvarar längden av sekvensen av heltalsminne, utformade så att i ena halvan av minnescellen lagras ett tal relaterat till den första sekvensen av heltal, och i den andra halvan av minnescellen en nummer lagras motsvarande en annan sekvens av heltal som är termer för motsvarande ackumulerande adderare, och styrning av den programmerbara minnesanordningen utförs med förmågan att separat styra valet av ett minnesområde och en separat minnescell.

Tonuppringning (Dual-tone multi-frequency signaling, DTMF) utvecklades av Bell Labs på 50-talet av förra seklet för den då revolutionerande tryckknappstelefonen. För att representera och sända digitala data i tonläge används ett par frekvenser (toner) av talfrekvensområdet. Systemet definierar två grupper om fyra frekvenser, och informationen kodas genom att två frekvenser sänds samtidigt, en från varje grupp. Detta ger totalt sexton kombinationer för att representera sexton olika siffror, symboler och bokstäver. DTMF-kodning används nu i ett stort antal kommunikations- och styrtillämpningar, vilket exempelvis framgår av International Telecommunication Unions (ITU) rekommendation Q.23.

Den här artikeln beskriver kretsen för en DTMF-tongenerator som reproducerar alla åtta frekvenser och genererar den resulterande tvåtonsutsignalen. Systemet i fråga byggdes kring Silego GreenPAK™ SLG46620V-chippet och Silego SLG88104V operationsförstärkare. Den resulterande signalen som produceras är summan av två frekvenser som bestäms av raden och kolumnen på telefonens knappsats.

Den föreslagna kretsen använder fyra ingångar för att välja den frekvenskombination som ska genereras. Kretsen har också en aktiveringsingång, som utlöser generering och bestämmer hur lång tid signalen sänds. Generatorns utgångsfrekvens överensstämmer med ITU-standarden för DTMF.

DTMF-toner

DTMF-standarden definierar kodningen av siffrorna 0-9, bokstäverna A, B, C och D, och tecknen * och # som en kombination av två frekvenser. Dessa frekvenser är uppdelade i två grupper: en högfrekvensgrupp och en lågfrekvensgrupp. Tabell 1 visar frekvenser, grupper och motsvarande symbolrepresentationer.

Bord 1. DTMF-tonkodning

Diskantgrupp

Lågpassgrupp

Frekvenser valdes för att undvika flera övertoner. Dessutom resulterar deras summa eller skillnad inte i en annan DTMF-frekvens. På detta sätt undviks övertoner eller modulationsdistorsion.

Q.23-standarden specificerar att felet för varje sänd frekvens måste ligga inom ±1,8 % av det nominella värdet, och den totala distorsionen (på grund av övertoner eller modulering) måste vara 20 dB under grundfrekvenserna.

Den resulterande signalen som beskrivs ovan kan beskrivas som:

s(t) = Acos(2πfhight)+ Acos(2πflödet),

där fhigh och flow är motsvarande frekvenser från hög- och lågfrekvensgrupperna.

Figur 1 visar den resulterande signalen för siffran "1". Figur 2 visar det frekvensspektrum som motsvarar denna signal.

Ris. 1. DTMF-ton

Ris. 2. DTMF-tonspektrum

Längden på DTMF-toner kan variera beroende på det specifika programmet som använder tonkodning. För de vanligaste applikationerna ligger varaktighetsvärdena vanligtvis mellan manuell och automatisk uppringning. Tabell 2 visar en sammanfattning av den typiska tidslängden för de två rekryteringstyperna.

Tabell 2. Varaktighet för tonvalssignaler

Typ av urtavla

Diskantgrupp

Diskantgrupp

Manuell uppringning

Automatisk uppringning

För att ge större flexibilitet är DTMF-generatorn som erbjuds i denna manual utrustad med en aktiveringsingång, som används för att starta signalgenereringen och bestämma dess varaktighet. I detta fall är varaktigheten av signalen lika med varaktigheten av pulsen vid aktiveringsingången.

Analog del av DTMF-generatorkretsen

ITU Rekommendation Q.23 definierar DTMF-signaler som analoga signaler skapade av två sinusvågor. I den föreslagna DTMF-generatorkretsen genererar Silego GreenPAK SLG46620V IC fyrkantsvågsignaler med önskade DTMF-frekvenser. För att erhålla sinusformade signaler med önskad frekvens och bilda den resulterande signalen (summan av två sinusformade vågor), krävs analoga filter och en adderare. Av denna anledning beslutades i detta projekt att använda filter och en combiner baserad på SLG88104V operationsförstärkare.

Figur 3 visar strukturen för den föreslagna analoga delen av anordningen.

Ris. 3. Analog bearbetningskrets för mottagning av DTMF-signal

Analoga filter används för att erhålla sinusformade signaler från rektangulära pulser. Efter att filtrering utförts summeras de två signalerna och den önskade tvåtons-DTMF-signalen alstras.

Figur 4 visar resultatet av Fouriertransformen som används för att erhålla spektrumet för fyrkantvågssignalen.

Ris. 4. Spektrum för en fyrkantsvågssignal

Som du kan se innehåller fyrkantvågen bara udda övertoner. Om vi ​​representerar en sådan signal med amplitud A i form av en Fourier-serie, kommer den att ha följande form:

Analys av detta uttryck tillåter oss att dra slutsatsen att om analoga filter har tillräcklig dämpning för övertoner, så är det fullt möjligt att erhålla sinusformade signaler med en frekvens som är lika med frekvensen för den ursprungliga fyrkantvågssignalen.

Med hänsyn till interferensnivåtoleransen som definieras i Q.23-standarden är det nödvändigt att säkerställa att alla övertoner dämpas med 20 dB eller mer. Dessutom måste valfri frekvens från lågpassgruppen kombineras med valfri frekvens från högpassgruppen. Med hänsyn till dessa krav utvecklades två filter, ett för varje grupp.

Båda filtren var lågpassfilter från Butterworth. Dämpningen av en order n Butterworth-filter kan beräknas som:

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

där fc är filtrets gränsfrekvens, n är filterordningen.

Skillnaden i dämpning mellan den lägsta frekvensen och den högsta frekvensen för varje grupp kan inte vara mer än 3 dB, så:

A(fHÖGRE)[dB] - A(FLOWER)[dB] > 3 dB.

Givna absoluta värden:

A(fHÖGRE) 2 / A(FLOWER) 2 > 2.

Dessutom, som vi sa tidigare, bör harmonisk dämpning vara 20 dB eller mer. I detta fall kommer det värsta fallet att vara den lägsta frekvensen i gruppen, eftersom dess 3:e överton är den lägsta frekvensen och ligger närmast filtrets gränsfrekvens. Med tanke på att den 3:e övertonen är 3 gånger mindre än den grundläggande, måste filtret uppfylla villkoret (absoluta värden):

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

Om dessa ekvationer tillämpas på båda grupperna måste filtren som används vara andra ordningens filter. Det betyder att de kommer att ha två motstånd och två kondensatorer vardera om de implementeras med op-förstärkare. Om tredje ordningens filter användes skulle känsligheten för komponenttoleranser vara lägre. De valda filtrets gränsfrekvenser är 977 Hz för lågpassgruppen och 1695 Hz för högpassgruppen. Vid dessa värden är skillnader i signalnivåer i frekvensgrupper förenliga med ovanstående krav, och känsligheten för förändringar i gränsfrekvensen på grund av komponenttoleranser är minimal.

Schematiska diagram av filter implementerade med hjälp av SLG88104V presenteras i figur 5. Klassificeringarna för det första R-C-paret är valda på ett sådant sätt att de begränsar utströmmen från SLG46620V-chippet. Den andra filterlänken bestämmer förstärkningen, som är 0,2. Amplituden för fyrkantvågssignalerna sätter operationsförstärkarens arbetspunkt till 2,5 V. Oönskade spänningar blockeras av utgångsfilterkondensatorer.

Ris. 5. Schematiska diagram av utgångsfilter

Vid utgången summeras filtersignalerna, och den resulterande signalen är summan av övertoner valda från gruppen låga och höga frekvenser. För att kompensera för filterdämpning kan amplituden på utsignalen justeras med två motstånd R9 och R10. Figur 6 visar adderarkretsen. Figur 7 visar hela den analoga delen av kretsen.

Ris. 6. Schematisk bild av adderaren

Ris. 7. Analog del av kretsen

Digital del av DTMF-tongeneratorkretsen

Den digitala delen av DTMF-tongeneratorkretsen inkluderar en hel uppsättning fyrkantvågsgeneratorer - en för varje DTMF-frekvens. Eftersom åtta räknare krävs för att skapa dessa generatorer valdes GreenPAK SLG46620V-chippet för deras implementering. Vid utgångarna på den digitala kretsen alstras två rektangulära signaler, en för varje frekvensgrupp.

Fyrkantsvågssignaler genereras med hjälp av räknare och D-vippor och har en arbetscykel på 50 %. Av denna anledning är räknarväxlingsfrekvensen två gånger den erforderliga DTMF-frekvensen, och DFF-vippan delar utsignalen i två.

Klockkällan för räknarna är en inbyggd 2 MHz RC-oscillator, vars frekvens delas ytterligare med 4 eller 12. Delaren väljs med hänsyn till bitkapaciteten och det maximala värdet för varje räknare som krävs för att erhålla en specifik frekvens.

För att generera höga frekvenser krävs färre sampel, så 8-bitars räknare används för att generera dem, klockade från en intern RC-oscillator vars signal delas med 4. Av samma anledning implementeras lägre frekvenser med hjälp av 14-bitars räknare.

SLG46620V har bara tre standard 14-bitarsräknare, så en av de lägre frekvenserna implementerades med en 8-bitars CNT8-räknare. För att antalet sampel skulle falla inom intervallet 0...255, för att klocka denna CNT8 var det nödvändigt att använda en RC-oscillatorsignal dividerad med 12. För denna krets, frekvensen med det största antalet sampel, som is, den lägsta frekvensen, valdes. Detta gjorde att vi kunde minimera felet.

Tabell 3 visar parametrarna för varje fyrkantsvåg.

Tabell 3. Parametrar för fyrkantspulsgeneratorer

Klocka

Frekvensfel [%]

Lågpassgrupp

Diskantgrupp

Som framgår av tabellen har alla frekvenser ett fel på mindre än 1,8 %, så de överensstämmer med DTMF-standarden. Dessa beräknade egenskaper, baserade på den ideala RC-oscillatorfrekvensen, kan justeras genom att mäta RC-oscillatorns utfrekvens.

Även om i den föreslagna kretsen alla generatorer arbetar parallellt, kommer signalen från endast en generator från varje grupp att skickas till utgången på mikrokretsen. Valet av specifika signaler bestäms av användaren. Detta görs med fyra GPIO-ingångar (två bitar för varje grupp) med en sanningstabell som visas i Tabell 4.

Tabell 4. Tabell för val av frekvenser från lågfrekvensgruppen

Lågpassgrupp

Tabell 5. Frekvensvalstabell från högfrekvensgruppen

Diskantgrupp

Figur 8 visar logikkretsen för en 852 Hz fyrkantvågsgenerator. Detta mönster upprepas för varje frekvens med lämpliga räknarinställningar och LUT-konfiguration.

Ris. 8. Rektangulär pulsgenerator

Räknaren genererar en utfrekvens som bestäms av dess inställningar. Denna frekvens är lika med två gånger frekvensen för motsvarande DTMF-ton. Mätarens konfigurationsparametrar visas i figur 9.

Ris. 9. Exempel på inställning av en rektangulär pulsgeneratorräknare

Räknarens utsignal är ansluten till klockingången på D-Flip Flop-vippan. Eftersom DFF-utgången är konfigurerad som inverterad, om du ansluter DFF-utgången till dess ingång, konverteras D-vippan till en T-vippa. DFF-konfigurationsparametrarna kan ses i figur 10.

Ris. 10. Exempel på inställning av en rektangulär pulsgeneratortrigger

Signalen från DFF-utgången matas till LUT-sanningstabellingången. LUT:er används för att välja en signal för varje specifik R1-R0-kombination. Ett exempel på en LUT-konfiguration visas i figur 11. I detta exempel, om R1 tar emot en 1 och R0 tar emot en 0, skickas insignalen till utgången. I andra fall innehåller utgången "0".

Ris. 11. Exempel på att sätta upp sanningstabellen för en fyrkantspulsgenerator

Som nämnts ovan har den föreslagna kretsen en aktiveringsingång. Om det finns en logisk enhet "1" vid enable-behörighetsingången, så matas de genererade rektangulära signalerna till ett par utgångar på mikrokretsen. Sändningslängden är lika med pulslängden vid aktiveringsingången. För att implementera denna funktion krävdes flera fler LUT:er.

Högpassgruppen använder en 4-bitars LUT och en 2-bitars LUT, som visas i figur 12.

Ris. 12. Diskantgrupputgångskrets

4-bitars LUT1 är konfigurerad som en ELLER-grind, så den matar ut en logisk 1 om en 1 finns på någon av dess ingångar. C1/C0-sanningstabellerna tillåter endast en av oscillatorerna att väljas, så 4-bitars LUT1 bestämmer vilken signal som matas ut. Utgången på denna LUT är ansluten till 2-bitars LUT4, som endast sänder en signal om aktiveringsingången är en logisk "1". Figurerna 13 och 14 visar konfigurationerna av 4-bitars LUT1 och 2-bitars LUT4.

Ris. 13. 4-bitars LUT1-konfiguration

Ris. 14. 2-bitars LUT4-konfiguration

Eftersom det inte längre fanns 4-bitars sanningstabeller LUT, användes två 3-bitars LUT för lågpassgruppen.

Ris. 15. Lågpassgrupputgångskrets

Den kompletta interna kretsen för GreenPAK SLG46620V visas i figur 16. Figur 17 visar det slutliga kretsschemat för DTMF-generatorn.

Ris. 16. Blockschema över DTMF-tongenerator

Ris. 17. Schematisk bild av en DTMF-tongenerator

Testa DTMF-generatorkretsen

I det första steget av att testa den föreslagna DTMF-generatorn beslutades det att kontrollera frekvenserna för alla genererade rektangulära signaler med hjälp av ett oscilloskop. Som ett exempel visar figurerna 18 och 19 fyrkantvågsutgångarna för 852 Hz och 1477 Hz.

Ris. 18. Fyrkantsvåg 852 Hz

Ris. 19. Fyrkantsvåg 1477 Hz

När frekvenserna för alla fyrkantsvågssignaler kontrollerats började testning av den analoga delen av kretsen. Utsignalerna för alla kombinationer av låga och höga frekvenser undersöktes. Som ett exempel visar figur 20 summan av 770 Hz- och 1209 Hz-signalerna, och figur 21 visar summan av 941 Hz- och 1633 Hz-signalerna.

Ris. 20. DTMF-ton 770 Hz och 1209 Hz

Ris. 21. DTMF-ton 941 Hz och 1633 Hz

Slutsats

I den här artikeln föreslogs en krets för en DTMF-tongenerator baserad på Silego GreenPAK SLG46620V-chippet och Silego SLG88104V operationsförstärkare. Generatorn låter användaren välja kombinationer av önskade frekvenser med hjälp av fyra ingångar och styra aktiveringsingången, som bestämmer varaktigheten för utsignalerna.

Egenskaper för SLG46620V-chippet:

  • Typ: Programmerbar blandad signal-IC;
  • Analoga block: 8-bitars ADC, två DAC, sex komparatorer, två filter, ION, fyra integrerade oscillatorer;
  • Digitala block: Upp till 18 I/O-portar, sammankopplingsmatris och kombinatorisk logik, programmerbara fördröjningskretsar, programmerbar funktionsgenerator, sex 8-bitarsräknare, tre 14-bitarsräknare, tre PWM-oscillatorer/komparatorer;
  • Kommunikationsgränssnitt: SPI;
  • Matningsspänningsområde: 1,8…5 V;
  • Drifttemperaturområde: -40…85 °C;
  • Paketversion: 2 x 3 x 0,55 mm 20-stift STQFN.

Särskiljande egenskaper

  • Generera sinusvågor med pulsbreddsmodulering (PWM)
  • Kombinera olika sinusvågssignaler till en DTMF-signal
  • Källkoder i assembly och C-språk
  • Designad för att fungera med STK500
  • Programkodstorlek 260 byte / konstant tabellstorlek 128 byte
  • Använda tabellkonverteringsmetoden

Introduktion

Detta dokument beskriver en teknik för att generera DTMF-signaler (dual-tone multi-frequency signals) med användning av valfri AVR-mikrokontroller som innehåller en pulsbreddsmodulationsenhet (PWM) och statiskt RAM. Dessa signaler används i stor utsträckning inom telefoni, där de återges när du trycker på uppringningsknapparna på en telefon. För att korrekt generera en DTMF-signal måste två frekvenser läggas över varandra: en låg frekvens (fb) och en hög frekvens (fa). Tabell 1 visar hur olika frekvenser blandas för att producera DTMF-toner när olika tangenter trycks ned.


Figur 1. DTMF-signalgeneratorkrets

Tabell 1. Tongenereringsmatris

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

Raderna i Tabell 1 visar lågfrekvensvärden och kolumnerna visar högfrekvensvärden. Till exempel visar matrisen att när du trycker på “5”-knappen ska frekvenserna fb = 770 Hz och fa = 1336 Hz blandas. Som ett resultat av tillägget av två sinusformade signaler med olika frekvenser bildas en DTMF-signal

där amplitudförhållandet K=Ab/Aa för de ursprungliga signalerna måste uppfylla villkoret

Funktionsprincip

Förutom allmän information om användningen av pulsbreddsmodulering kommer det att visas nedan hur pulsbreddsmodulering låter dig generera sinusformade signaler. Nästa stycke beskriver hur man använder basomkopplingsfrekvensen för att erhålla olika frekvenser. Efter genomgång av de teoretiska grunderna kommer en beskrivning av själva DTMF-signalgeneratorn att ges. Generering av sinusvågor

Beroende på förhållandet mellan varaktigheten av höga VH- och låga VL-spänningsnivåer ändras medelvärdet vid PWM-utgången. Om förhållandet mellan varaktigheterna för båda nivåerna hålls konstant, kommer en konstant VAV-spänningsnivå att genereras som ett resultat. Figur 2 visar en pulsbreddsmodulerad signal.


Figur 2. Generering av DC-spänningsnivåer

Spänningsnivån bestäms av uttrycket:

(3)

En sinusformad signal kan genereras förutsatt att medelvärdet för spänningen som genereras av pulsbreddsmoduleringen ändras varje PWM-cykel. Förhållandet mellan höga och låga nivåer måste ställas in i enlighet med sinusvågens spänningsnivå vid motsvarande tidpunkt. Figur 3 illustrerar denna process. Källdata för PWM beräknas för var och en av dess perioder och registreras i konverteringstabellen (TC).

Figur 3 illustrerar också förhållandet mellan frekvensen av den grundläggande sinusvågen och antalet sampel. Ju högre antal sampel (Nc), desto högre är noggrannheten för att modellera den resulterande signalen:

(4)

PWM-frekvensen beror på PWM-upplösningen. Vid 8-bitars upplösning är det slutliga värdet (överst av räkningen) för timern 0xFF (255). Därför att Timern räknar framåt och bakåt, då måste detta värde fördubblas. Därför kan PWM-frekvensen beräknas genom att dividera timerklockfrekvensen f CK med 510. Således, med en timerklockfrekvens på 8 MHz, blir den resulterande PWM-frekvensen 15,6 kHz.


Figur 3. Generera en sinusvåg med PWM

Ändra frekvensen för en sinusvåg

Låt oss anta att sinusformade prov läses från uppslagstabellen inte sekventiellt, utan ett i taget. I detta fall kommer en signal med dubbel frekvens att genereras med samma samplingshastighet (se figur 4).


Figur 4. Fördubbling av den resulterande frekvensen (XSW = 2)

I analogi, om du inte läser vartannat värde, utan vart tredje, fjärde, femte (respektive stegbredden är 3, 4, 5...), etc. det är möjligt att generera Nc-frekvenser i området. Observera att för höga frekvenser kommer den resulterande vågformen inte att vara sinusformad. Vi betecknar stegbredden enligt omvandlingstabellen som X SW, där

(5)

Beräkning av den aktuella positionen i TP för nästa PWM-period (när timern svämmar över) utförs med hjälp av uttryck (6). Det nya värdet i X LUT-positionen beror på dess tidigare tillstånd i X" LUT-positionen med tillägg av stegbredden X SW

(6)

Lägga till olika frekvenser för att få en DTMF-signal

DTMF-signalen kan genereras med hjälp av uttryck (1) och (2). För att förenkla aritmetiska operationer tas värdet på koefficienten K lika med 0,75 för att ersätta den aritmetiska operationen med logiska skift. Med hänsyn till uttryck (6) kan det aktuella värdet för PWM-kontroll beräknas med uttrycket:

och med hänsyn till att X LUTa =X" LUTa + X SWa,X LUTb =X" LUTb + X SWb, kommer vi slutligen att skriva

Implementering av en DTMF-generator

Denna appendix undersöker konstruktionen av en DTMF-tongenerator som använder en 8-bitars PWM-utgång (OC1A) och en tabell med 128 sinusfunktions (Nc) sampel, var och en specificerad av 7 bitar (n). Följande uttryck visar detta beroende och visar också hur man beräknar posterna i uppslagstabellen:

(9)

Fördelen med att använda 7 bitar är att summan av hög- och lågfrekventa signalvärden är en byte stor. För att stödja hela uppsättningen DTMF-toner måste 8 värden för varje DTMF-frekvens från Tabell 1 beräknas och matas in i uppslagstabellen.

För att uppnå högre noggrannhet implementerades följande lösning: värdena beräknade med uttryck 5 kräver endast 5 byte. För att använda alla 8 byte, vilket kommer att minska avrundningsfel, multipliceras detta värde med 8. Pekaren till uppslagstabellen skrivs på samma sätt. Men i det här fallet tar det två byte att lagra 8 gånger värdet. Detta innebär att 3 högerskift och en radix Nc-moduloperation (logisk multiplikation med Nc-1) måste utföras innan dessa bytes används som pekare till sinusvågsvärdena i


Figur 5. Moduldiagram för anslutning till STK500

PWM-signalen genereras vid stift OC1A (PD5). Ett extra utgångsfilter hjälper till att göra signalen mer kompatibel med den sinusformade vågformen. Vid sänkning av PWM-frekvensen kan det vara nödvändigt att använda ett filter med en brantare frekvensgång för att få ett bra resultat.

Tangentbordsanslutningen visas i figur 1. Tangentbordets funktion måste organiseras på ett sådant sätt att det är möjligt att avgöra vilken tangent som trycks ned. Detta kan göras med hjälp av följande algoritm:

  1. Bestämma strängen för den nedtryckta tangenten
    • konfigurera den lågordnade bärbara datorn för port B som en utgång och ställ in loggen. "0"
    • konfigurera den höga tetrad för port B som en ingång med anslutning av pull-up-motstånd
    • linjen med den nedtryckta knappen definieras som siffran för den högsta tetraden med log. "0"
  2. Definiera kolumnen för nedtryckt tangent
    • konfigurera den höga bärbara datorn för port B som en utgång och ställ in loggen. "0"
    • konfigurera lågordningens tetrad för port B som en ingång genom att ansluta pull-up-motstånd
    • kolumnen med den nedtryckta knappen definieras som siffran för den låga ordningens tetrad med log. "0"

Obs: I STK200 är motstånd anslutna i serie mellan PORTB-kontaktstiften och mikrokontrollerstiften BP5, PB6 och PB7 (se STK200-diagram). Detta kommer att orsaka problem om tangentbordet är anslutet till PORTB-kontakten.

Figur 6 illustrerar funktionen av subrutinen för att bestämma den nedtryckta tangenten. Beroende på vilken tangent som trycks in bestäms intervallets varaktighet. Avbrottsrutinen använder detta värde för att beräkna PWM-inställningarna för de två DTM-tonsinusvågorna. Proceduren för avbrottshantering visas i figurerna 7 och 8.

Denna rutin beräknar ett värde att jämföra med timerutgången för nästa PWM-period. Avbrottsrutinen beräknar först positionen för nästa sampelvärde i uppslagstabellen och läser värdet som lagrats där.

Provets position i uppslagstabellen bestäms av pulsbredden och den faktiska pulsbredden bestäms av den genererade frekvensen.

Det slutliga värdet som skrivs till timerjämförelseregistret bestäms med formeln (7), som tar hänsyn till sampelvärdena för båda DTMF-frekvenserna.


Figur 6. Blockschema över huvudprogrammet


Figur 7. Blockschema över bearbetningsproceduren för timerspillavbrott


Figur 8. Flödesschema för "GetSample" provavläsningsprocedur

Publikation: www.cxem.net

Se andra artiklar sektion.