dtmf 신호 생성 방법 및 dtmf 신호 생성기. DTMF 신호 생성 및 인식 DTMF 톤 신호 발생기 칩

첫 번째 부분 이 예애플리케이션에서는 MSP430 마이크로컨트롤러를 사용하여 DTMF 신호를 생성하는 방법을 설명합니다. 이 경우에 사용된 가장 중요한 사양에 대해 설명하고, 적절한 아날로그 필터를 사용하여 구형파를 사용하여 사인파를 생성하는 이론적, 수학적 타당성을 제공합니다. 이 예제에는 MSP430 마이크로컨트롤러의 다양한 타이머 구성을 기반으로 구형파 신호를 생성하기 위한 테스트된 데모 프로그램도 포함되어 있습니다. 마지막 부분은 다음을 제공합니다. 회로도, 구형파 신호에서 DTMF 신호를 생성할 수 있습니다.

2 DTMF 신호 사양

약어 DTMF는 "Dual Tone Multi Frequency"를 의미하며 아날로그 통신 회선을 통해 전송하기 위해 서로 다른 주파수에서 숫자를 표현하는 방법입니다. 전화선. 표준을 개발할 때 조건이 고려되었습니다. 모든 주파수는 "음성" 범위에 있어야 하므로 전송 채널에 대한 요구 사항을 줄일 수 있습니다. 전화 네트워크는 전화 걸기 및 기타 정보를 위해 DTMF 신호를 사용합니다. 예를 들어 독일에서는 표준인 펄스 다이얼링 방식이 여전히 널리 사용되고 있음에도 불구하고 다이얼링 시간이 크게 증가하여 통신 회선에 비생산적인 부하가 발생합니다. 또한, 많은 추가적인 서비스톤 다이얼링을 통해서만 통신이 가능합니다. DTMF 방식을 사용하여 인코딩하는 경우 숫자 0~9 및 편지 AD, */E 및 #/F는 두 주파수의 조합을 나타냅니다.

빈도 1209Hz 1336Hz 1477Hz 1633Hz
697Hz 1 2 3
770Hz 4 5 6
852Hz 7 8 9
941Hz */이자형 0 #/에프

이 시스템에서 열은 "상위" 주파수 그룹(Hi-그룹: 1209-1633Hz)의 주파수를 나타내고 행은 "하위" 주파수 그룹(Lo-그룹: 697-941Hz)의 주파수를 나타냅니다. . 고조파의 영향을 제거하기 위해 음조 주파수가 선택됩니다. 주파수는 서로의 배수가 아니며 다른 주파수를 더하거나 빼서 DTMF 주파수를 얻을 수 없습니다. Deutsche Telekom 네트워크에서 다이얼러를 생성하려면 다음 사양이 필요합니다(Zulassungsvorschrift des Bundesamtes fur Post und Telekommunikation, BAPT 223 ZV 5(연방 우편 통신부의 공식 사양)에서 가져옴).

3 DTMF 신호 생성

위에서 설명한 대로 DTMF 신호는 아날로그이며 두 개의 독립적인 사인파로 구성됩니다. 따라서 이러한 신호를 디지털로만 생성하는 것은 불가능합니다. 디지털 신호 ADC 및/또는 아날로그 필터를 사용하여 필요한 사인파 형태로 변환해야 합니다.

3.1 구형파를 이용한 생성

구형파 신호를 사용하여 DTMF 신호를 생성하는 경우 소프트웨어와 하드웨어최소한. 주기 T를 갖는 모든 연속 신호는 다음과 같이 사인파와 코사인파의 무한한 합으로 구성된 푸리에 급수로 표현될 수 있습니다.

여기서 a0/2는 신호의 상수 구성 요소입니다. 가장 낮은 각주파수(w0)를 갖는 합산 요소를 주(기본) 고조파라고 하며, 나머지는 배음 또는 더 높은 고조파입니다.

마이크로컨트롤러를 사용하여 구현된 가장 간단한 연속 신호는 구형파이며 푸리에 계열의 형식은 다음과 같습니다.

전체 신호에 대한 각 주파수 구성요소의 기여도는 진폭 스펙트럼으로 가장 잘 설명됩니다(그림 2 참조).


쌀. 2: 구형파 신호의 진폭 스펙트럼

아날로그 필터를 사용하면 DC 성분과 고조파가 효과적으로 억제되는 반면 출력에서는 원래 구형파의 주파수와 동일한 주파수를 갖는 정현파 신호가 생성됩니다.

3.2 소프트웨어사행을 생성하기 위해

사행 생성 프로그램은 다음 요구 사항을 충족해야 합니다.

  • 두 개의 독립적인 직사각형 신호를 합성할 수 있습니다.
  • 신호를 분리하려면 "상위"(Hi-Group) 및 "하위"(Lo-Group)에서 신호를 생성하는 두 개의 출력 핀이 필요합니다. 주파수 범위각기.
  • 소프트웨어는 약 65ms - 100ms 범위에서 필요한 신호 지속 시간을 설정할 수 있어야 합니다.

MSP430 시리즈 마이크로컨트롤러에는 구형파 신호를 생성할 수 있는 다양한 타이머가 내장되어 있습니다. '31x/'32x 제품군은 8비트 타이머와 타이머 포트를 사용하여 두 구형파 신호를 모두 생성합니다. 이 프로그램 1.048MHz와 동일한 MCLK 주파수에서 테스트되었습니다. '33x 제품군의 Timer_A는 두 가지 필수 신호를 독립적으로 생성할 수 있습니다. 두 번째 프로그램은 이 타이머를 사용하여 구형파를 생성하고 모든 MCLK 주파수와 함께 작동합니다. 두 프로그램 모두 아래에서 자세히 설명합니다.

3.2.1 8비트 타이머 및 타이머 포트를 사용하여 구형파 생성

그림에서. 도 3은 DTMF 신호 생성을 위한 초기화 절차의 흐름도이다. 두 주파수를 합성하기 위해 타이머 포트와 8비트 타이머 카운터가 사용됩니다. 이들 각각은 필요한 주파수를 정확하게 합성하는 데 필요한 프로그래밍 가능 카운터 레지스터입니다. 타이머 포트 카운터가 단일 16비트 타이머에 계단식으로 연결되고 시스템 주파수 MCLK에서 클럭되면 높은 정확도로 높은 범위의 주파수를 생성할 수 있습니다. 인터럽트가 발생하면 해당 출력이 전환되고 두 8비트 카운터 레지스터가 모두 재설정됩니다. 로드된 값은 RAM의 두 변수에 저장되어 다른 작업을 위한 내부 레지스터를 저장합니다.

낮은 범위의 주파수는 8비트 타이머에 의해 생성됩니다. 이 타이머의 카운터 레지스터 폭은 8비트이므로 세 번째 인터럽트마다 필요한 출력 핀의 레벨 변경이 발생하여 동일한 주파수 카운터가 생성될 수 있습니다.

두 개의 타이머 출력 - 포트는 서로 다른 주파수의 두 개의 구불구불한 형태를 형성하는 데 사용됩니다.

쌀. 3 DTMF 신호 생성을 위한 초기화 절차 흐름도

초기화 절차는 한 번만 수행됩니다. 완료 후 전송된 문자의 16진수 값을 RAM의 전역 변수에서 읽습니다. 높고 낮은 DTMF 톤을 형성하는 두 개의 주파수가 두 테이블에서 생성되면 두 타이머를 모두 초기화하고 시작하기만 하면 됩니다. 전송 기간은 "낮은" 주파수의 반주기를 계산하여 제어되며 추가 테이블에서 읽혀집니다. 이 절차가 완료되면 폴링 기능으로 돌아갑니다. 해당 인터럽트 처리 루틴은 포트 핀을 전환합니다. 이 과정은 그림 1에 설명되어 있습니다. 4와 5.

타이머 포트의 작업에는 로그 기록만 포함됩니다. 레벨을 포트 출력으로 설정하고 RAM에서 카운터를 다시 로드하는 반면, 8비트 타이머의 작동은 약간 더 복잡한 구조를 가지고 있습니다. 즉, 인터럽트에 대한 각 입력은 카운터 레지스터에 의해 계산됩니다. 출력은 세 번의 인터럽트 후에만 상태를 변경할 수 있습니다. 또한 각 반주기도 계산됩니다. 특정 반주기 수에 도달하면 생성이 중지됩니다.


쌀. 4 블록 – 8비트 타이머의 인터럽트 회로(Lo-Group)


쌀. 5 블록 – 타이머 포트 인터럽트 회로(Hi-Group)

; 사용자 정의 정의 FLLMPY equ 32 ; 1.048MHz의 주파수 체배기 FLL TCLK equ FLLMPY*32768 ; TCLK: FLLMPY x f 석영 DL equ 85 ; 지속 DTMF 신호 (65..100ms) LO_OUT equ 02h ; "낮은" 주파수 출력 HI_OUT equ 04h ; 고주파수 출력 RCOUNT equ r14 ; 길이 카운터 DTMF RTEMP equ r15 ; 서비스 레지스터.글로벌 DTMF_NR ; RAM의 전역 변수; DTMF 번호(0..F)의 경우; 정의 RAM.even .bss DTMF_TL ; 짝수 주소 alignment.bss DTMF_TH .bss DTMF_NR ; RAM의 전역 변수; DTMF 번호(0..F)의 경우.even ; 8비트 타이머에 대한 정의 TCCTL EQU 42H TCPLD EQU 43H TCDAT EQU 44H ; 범용 타이머 포트 TPCTL equ 04bh에 대한 정의; 타이머 포트 제어 TPCNT1 equ 04ch ; 타이머 포트 카운터 1 TPCNT2 equ 04dh ; 타이머 포트 카운터 2 TPD equ 04eh ; 타이머 포트 데이터 TPE equ 04fh ; 타이머-포트-해상도.text ; DTMF 빈도표: 표에는 다음이 포함됩니다. 한 반주기에 대한 MCLK 주기 수입니다. ; "상위" 주파수에 대한 표입니다. 수정 사항이 추가되었습니다. 인터럽트 진입 시간을 고려 DTMF_HI .word 0ffffh-(TCLK/(1336*2))+25 ; 0 .word에 대한 고주파수 0ffffh-(TCLK/(1207*2))+28 ; 1 .word에 대한 고주파수 0ffffh-(TCLK/(1336*2))+25 ; 2 .word의 고주파수 0ffffh-(TCLK/(1477*2))+24 ; 3워드의 고주파수 0ffffh-(TCLK/(1207*2))+28 ; 4 .word에 대한 고주파수 0ffffh-(TCLK/(1336*2))+25 ; 5 .word에 대한 고주파수 0ffffh-(TCLK/(1477*2))+24 ; 6 .word의 고주파수 0ffffh-(TCLK/(1207*2))+28 ; 7 .word에 대한 고주파수 0ffffh-(TCLK/(1336*2))+25 ; 8 .word의 고주파수 0ffffh-(TCLK/(1477*2))+24 ; 9 .word 0ffffh-(TCLK/(1633*2))+22 에 대한 고주파수 ; A .word의 고주파수 0ffffh-(TCLK/(1633*2))+22 ; B .word의 고주파수 0ffffh-(TCLK/(1633*2))+22 ; C .word의 고주파수 0ffffh-(TCLK/(1633*2))+22 ; D .word의 고주파수 0ffffh-(TCLK/(1207*2))+28 ; * .word 0ffffh-(TCLK/(1477*2))+24 에 대한 고주파수; #에 대한 빈도가 높음; "낮은" 주파수에 대한 표 DTMF_LO .byte 0ffh-(TCLK/(941*2*3)) ; 0 .byte 0ffh-(TCLK/(697*2*3)) 에 대한 낮은 주파수; 1 .byte에 대한 저주파 0ffh-(TCLK/(697*2*3)) ; 2 .byte 0ffh-(TCLK/(697*2*3)) 에 대한 저주파; 3 .byte 0ffh-(TCLK/(770*2*3)) 에 대한 저주파; 4 .byte 0ffh-(TCLK/(770*2*3)) 에 대한 저주파; 5 .byte 0ffh-(TCLK/(770*2*3)) 에 대한 저주파; 6 .byte 0ffh-(TCLK/(853*2*3)) 에 대한 저주파; 7 .byte 0ffh-(TCLK/(853*2*3)) 에 대한 저주파; 8 .byte 0ffh-(TCLK/(853*2*3)) 에 대한 저주파; 9 .byte 0ffh-(TCLK/(697*2*3)) 에 대한 저주파; A .byte 0ffh-(TCLK/(770*2*3)) 에 대한 저주파; B .byte 0ffh-(TCLK/(853*2*3)) 에 대한 낮은 주파수; C의 낮은 주파수 .byte 0ffh-(TCLK/(941*2*3)) ; D .byte 0ffh-(TCLK/(941*2*3)) 에 대한 저주파; *.byte 0ffh-(TCLK/(941*2*3)) 에 대한 낮은 주파수; #에 대한 낮은 빈도; 신호 기간 테이블 DTMF_L .byte 2*941*DL/1000 ; 0 .byte 2*697*DL/1000 의 절반 주기; 1 .byte 2*697*DL/1000 의 절반 주기; 2 .byte 2*697*DL/1000 의 절반 주기; 3 .byte 2*770*DL/1000 의 절반 주기; 4 .byte 2*770*DL/1000 의 절반 주기; 5 .byte 2*770*DL/1000 의 절반 주기; 6 .byte 2*852*DL/1000의 절반 주기; 7 .byte 2*852*DL/1000 의 절반 주기; 8 .byte 2*852*DL/1000의 절반 주기; 9 .byte 2*697*DL/1000 의 절반 주기; A .byte 2*770*DL/1000 의 절반 주기; B .byte 2*852*DL/1000의 절반 주기; C .byte 2*941*DL/1000의 절반 주기; D .byte 2*941*DL/1000 의 절반 주기; *.byte 2*941*DL/1000 의 반주기; # ;********************************************에 대한 반주기 ********** ******************************* ; DTMF-TX DTMF 서브루틴 ;******************************************** ******************************** DTMF_TX mov.b DTMF_NR,RTEMP ; 임시 레지스터에 숫자를 저장합니다. mov.b DTMF_L(RTEMP),RCOUNT ; 기간 카운터 저장, DTMF-Lo 주파수 mov.b #0a8h,&TCCTL에 대한 8비트 타이머 준비; MCLK mov.b의 클록 DTMF_LO(RTEMP),&TCPLD ; 등록 준비; mov.b #000,&TCDAT 미리 로드; 레지스터에서 카운터를 로드합니다. bis.b #008h,&IE1을 미리 로드합니다. 인터럽트를 활성화합니다. 8비트 타이머에서; DTMF-Hi 주파수 rla r15 에 대한 타이머 포트를 준비하는 단계; * 16비트 테이블의 경우 2 mov DTMF_HI(RTEMP),&DTMF_TL ; 고주파수에 대한 단어 저장 mov #003,RTEMP ; 8비트 타이머용 카운터 bis.b #008h,IE2 ; 인터럽트를 활성화합니다. 타이머 포트에서 mov.b &DTMF_TH,&TPCNT2 ; TC2 mov.b &DTMF_TL,&TPCNT1에 상위 바이트 로드 ; TC1 bis.b #080h,&TPD에 하위 바이트 로드 중; 16비트 타이머 활성화 bis.b #HI_OUT+LO_OUT,&TPE ; DTMF-Hi/Lo 출력 활성화 mov.b #090h,&TPCTL ; 타이머 ret 활성화 ;********************************************* ******** ******************************* ; 타이머 포트 인터럽트;********************************************* *** ******************************* TP_INT xor.b #HI_OUT,&TPD ; DTMF-Hi 출력 반전 mov.b &DTMF_TH,&TPCNT2 ; TC2 mov.b &DTMF_TL,&TPCNT1에 상위 바이트 로드 ; TC1 bic.b #007h,&TPCTL에 낮은 바이트 로드 중; 레티 플래그 지우기 ;********************************************** ******** *************

3.2.2 1 Timer_A를 이용한 구형파 생성

이 DTMF 신호 생성 루틴은 Timer_A만 사용하여 원하는 주파수를 모두 구형파합니다. 조립 과정에서는 MCLK 주파수 값과 관계없이 타이머가 프로그램을 사용할 수 있도록 적절한 값을 계산합니다. 출력 신호의 지속 시간은 밀리초 단위의 DL 상수로 지정됩니다.

; 하드웨어 정의; FLLMPY .equ 32 ; 1.048MHz의 주파수 체배기 FLL TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f 석영 DL .equ 82 ; DTMF 신호 지속 시간(ms); (65..100ms) STACK .equ 600h ; 스택 초기화 주소. RAM 정의; STDTMF .equ 202h ; Hi 및 Lo 주파수 상태 TIM32B .equ 204 ; 타이머 레지스터 확장 LENGTH .equ 206h ; DTMF 기간 카운터; .text 0F000h ; 프로그램의 시작 주소입니다. ; Timer_A 초기화: MCLK, 연속 모드, 인터럽트 활성화; 타이머 출력 모듈 준비 Timer_A MCLK = 1.048 MHz (자동) ; INIT MOV #STACK,SP ;스택 포인터 초기화 CALL #INITSR ;승수 초기화; FLL 주파수 및 RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; 타이머 초기화 MOV.B #TA2+TA1,&P3SEL ; 포트 P3.5/4 CLR TIM32B의 출력 TA2 및 TA1; 확장 타이머 레지스터 지우기 BIS #MCONT,&TACTL ; 타이머 시작 Timer_A EINT ; 일반 인터럽트 활성화 MAINLOOP ... ; 메인 루프; ;Keypress: SDTMF에는 테이블 오프셋이 포함됩니다. 상위 및 하위 바이트의 2개 주파수(0..6,0..6)에 대해; MOV&TAR,R5 ; 즉시 시작하려면: ADD FDTMFLO,R5 ; 더 짧은 시간에 대한 오프셋 MOV R5,&CCR1 ; 0.71ms 후 첫 번째 상태 변경 MOV R5,&CCR2 ; 1/(2x697) = 0.71ms MOV #OMT+CCIE,&CCTL1 ; 출력 반전, 비트 인터럽트. MOV #OMT+CCIE,&CCTL2 ; 반전 출력, 인터럽트 비트 MOV.B STDTMF,R5 ; 82ms 카운터 RRA R5 ; 낮은 주파수 상태 변경 횟수 MOV.B DTMFL(R5),LENGTH ; 신호 지속 시간 동안... ; 프로그램 지속; ; CCR0의 인터럽트 핸들러(여기에서는 사용되지 않음) TIMMOD0 ... 레티 ; ; 캡처 비교 레지스터 1..4의 인터럽트 핸들러; TIM_HND 추가 &TAIV,PC ; 가장 높은 요청을 처리합니다. RETI 우선순위; 인터럽트 요청 없음: RETI JMP HCCR1 ; CCR1로부터의 요청(DTMF 저주파) JMP HCCR2 ; CCR2로부터의 요청(DTMF 고주파수) JMP HCCR3 ; CCR3 JMP HCCR4의 요청; CCR4의 요청; 티모브 INC TIM32B; Timer_A를 32비트 RETI로 확장; ; DTMF 저주파: TA1은 출력 장치 1의 출력을 반전시킵니다. 각 상태 변화는 신호 지속 시간을 제어하기 위해 계산됩니다. HCCR1 푸시 R5; 사용된 레지스터 저장 MOV.B STDTMF,R5 ; 저주파 상태 DTMF ADD FDTMFLO(R5),&CCR1 ; 반주기 기간 추가 DEC.B LENGTH ; DL 신호 기간이 완료되었습니까? JNZ 타렛 ; 아니요; ; 예, DTMF 신호를 중지합니다. 인터럽트를 비활성화합니다. 빅 #OMRS+OUT+CCIE,&CCTL1 ; TA1 BIC #OMRS+OUT+CCIE,&CCTL2 재설정; TA2 TARET POP R5 재설정; R5 RETI를 복원하십시오. 인터럽트에서 복귀; ; 고주파수 DTMF: TA2는 출력 장치 2의 출력을 반전시킵니다. HCCR2 푸시 R5; 사용된 MOV 레지스터를 저장합니다. B STDTMF+1,R5 ; 고주파 상태 DTMF ADD FDTMFHI(R5),&CCR2 ; 반주기 기간 추가 POP R5 ; R5 RETI를 복원하십시오. 인터럽트에서 복귀; HCCR3 ... ;레지스터 CCR3에 의해 제어되는 작업 RETI HCCR4 ... ;레지스터 CCR4 RETI에 의해 제어되는 작업 ; ; DTMF 주파수 테이블: 테이블에는 다음이 포함됩니다. 반주기당 MCLK 주기 수. 조정된 값; 조립 공정 중 유효 주파수 MCLK; 그리고 최소값으로 반올림 가능한 실수주파수; FDTMFLO .단어 ((TCLK/697)+1)/2 ; 저주파 DTMF 697Hz .word ((TCLK/770)+1)/2 ; 770Hz .워드((TCLK/852)+1)/2 ; 852Hz .워드 ((TCLK/941)+1)/2 ; 941Hz FDTMFHI .word ((TCLK/1209)+1)/2 ; 고주파 DTMF1209Hz .word ((TCLK/1336)+1)/2 ; 1336Hz .워드 ((TCLK/1477)+1)/2 ; 1477Hz .워드 ((TCLK/1633)+1)/2 ; 1633Hz; ; 이 표에는 DL 신호 기간 동안의 반주기 수가 포함되어 있습니다(ms). ; 계산에는 더 낮은 DTMF 주파수가 사용됩니다. DTMFL .byte 2*697*DL/1000 ; 반주기 수.byte 2*770*DL/1000 ; DL의 경우 ms.byte 2*852*DL/1000 ; .byte 2*941*DL/1000 ; ; .sect "TIMVEC",0FFF0h ; 타이머 인터럽트 벡터 Timer_A .word TIM_HND ; 모듈 1..4의 벡터 타이머.단어 TIMMOD0 ; 타이머 모듈 0 vector.sect "INITVEC",0FFFEh ; 벡터 초기화.word 초기화

아래는 약간 더 빠른 솔루션입니다. 하지만 더 많은 RAM이 필요하기 때문에... 테이블에서 얻은 데이터는 매번 다시 계산되지 않고 간단히 말해서 RAM DTMFLO 및 DTMFHI에 저장됩니다. 읽기는 Timer_A 타이머 인터럽트 루틴에서 수행됩니다. 사용된 테이블은 이전 예에 표시된 테이블과 동일합니다.

FLLMPY .equ 32 ; 1.048MHz의 주파수 체배기 FLL TCLK .equ FLLMPY*32768 ; TCLK: FLLMPY x f 석영 DL .equ 82 ; DTMF 신호 지속 시간; ms 단위(65..100ms) STDTMF .equ 202h ; Hi 및 Lo 주파수 상태 TIM32B .equ 204 ; 타이머 레지스터 확장 LENGTH .equ 206h ; DTMF 기간 카운터 DTMFLO .equ 208h ; 더 낮은 주파수 DTMFHI .equ 20Ah의 반주기; 상위 주파수 반주기 STACK .equ 600h ; 스택 초기화 address.text 0F000h ; 프로그램의 시작 주소입니다. Timer_A 초기화: MCLK, 연속 모드, 인터럽트 활성화; 타이머 출력 모듈 준비 Timer_A MCLK = 1.048 MHz (자동) ; INIT MOV #STACK,SP ; 스택 포인터 초기화 CALL #INITSR ; 승수 초기화; FLL 주파수 및 RAM MOV #ISMCLK+TAIE+CLR,&TACTL ; 타이머 시작 MOV.B #TA2+TA1,&P3SEL ; 포트 P3.5/4 CLR TIM32B의 출력 TA2 및 TA1; 확장 타이머 레지스터 지우기 BIS #MCONT,&TACTL ;타이머 시작 Timer_A EINT ; 일반 인터럽트 활성화 MAINLOOP ... ; 메인 루프, Keypress: SDTMF에는 테이블 오프셋이 포함되어 있습니다. 상위 및 하위 바이트의 2개 주파수(0..6,0..6)에 대해; MOV&TAR,R5 ; 즉시 시작하려면 ADD FDTMFLO,R5 ; 더 짧은 시간에 대한 오프셋 MOV R5,&CCR1 ; 0.71ms 후 첫 번째 상태 변경 MOV R5,&CCR2 ; 1/(2x697) = 0.71ms; ; DTMF 주파수에 대한 두 개의 사이클 카운트를 가져옵니다. MOV.B STDTMF+1,R5 ; 고주파 DTMF MOV FDTMFHI(R5),DTMFHI ; 반주기 기간 MOV.B STDTMF,R5 ; 저주파 DTMF MOV DTMFLO(R5),DTMFLO ; 반주기 기간; ; 기간 카운터 RRA R5 ; 바이트 인덱스 준비 MOV.B DTMFL(R5),LENGTH ; 낮은 주파수 상태 변경 횟수 MOV #OMT+CCIE,&CCTL1 ; 출력 반전, 비트 인터럽트. MOV #OMT+CCIE,&CCTL2 ; 출력 반전, 비트 인터럽트. ... ; 메인 루프로 돌아갑니다. ; CCR0의 인터럽트 핸들러(여기에서는 사용되지 않음) TIMMOD0 ... 레티 ; ; 캡처 비교 레지스터 1..4의 인터럽트 핸들러; TIM_HND 추가 &TAIV,PC ; 가장 높은 요청을 처리합니다. RETI 우선순위; 인터럽트 요청 없음: RETI JMP HCCR1 ; CCR1로부터의 요청(DTMF 저주파) JMP HCCR2 ; CCR2로부터의 요청(DTMF 고주파수) JMP HCCR3 ; CCR3 JMP HCCR4의 요청; CCR4의 요청; 티모브 INC TIM32B; Timer_A를 32비트 RETI로 확장; ; DTMF 저주파: TA1은 출력 장치 1의 출력을 반전시킵니다. HCCR1 추가 DTMFLO,&CCR1 ; 반주기 기간 추가 DEC.B LENGTH ; DL 신호 기간이 완료되었습니까? JNZ 타렛 ; 아니요; ; 예, DTMF 신호를 중지합니다. 인터럽트를 비활성화합니다. 빅 #OMRS+OUT+CCIE,&CCTL1 ; TA1 BIC #OMRS+OUT+CCIE,&CCTL2 재설정; TA2 TARET RETI 재설정; 인터럽트에서 복귀; 고주파수 DTMF: TA2는 출력 장치 2의 출력을 반전시킵니다. HCCR2 추가 DTMFHI,&CCR2 ; 반주기 기간 추가 RETI ; 인터럽트에서 복귀; HCCR3. .. ;레지스터 CCR3 RETI HCCR4에 의해 제어되는 태스크 ... ;레지스터 CCR4 RETI에 의해 제어되는 태스크 ; ; 인터럽트 테이블과 벡터는 이전 예에 표시된 것과 동일합니다.

3.3 DTMF 신호 생성을 위한 하드웨어

위에서 언급한 바와 같이, 주파수 범위 200Hz~4600Hz에서 전송 주파수의 신호 레벨은 외부 신호(잡음) 레벨보다 최소 20dB 높아야 합니다. 또한, 사양에 따라 '상위' 그룹과 '하위' 그룹의 신호는 서로 다른 레벨을 가져야 하므로 각 신호에는 자체 필터가 필요합니다. 정현파 주파수 진폭은 푸리에 급수에서 얻을 수 있습니다.

아날로그 필터를 설계할 때 차단 주파수를 선택하려면 다음을 기준으로 다음 요구 사항을 준수해야 합니다.

  • 왜냐하면 "하위" 그룹의 주파수와 "상위" 그룹의 주파수 조합 가능성을 보장해야 하며, 그룹의 최저 주파수와 최고 주파수 사이의 레벨 차이가 3dB를 초과해서는 안 됩니다.
  • 그룹(f1)의 가장 낮은 주파수에 대해 고조파 억제(3f1)는 20dB보다 나빠서는 안 됩니다. 이 조건의 충족은 그룹의 낮은 빈도에 대해 가장 중요합니다. 필터 차단 주파수에서 최대한 멀리 떨어져 있습니다.

이 공식은 n차 고역 통과 버터워스 필터의 출력에서 ​​절대값의 제곱을 설명합니다.

이 공식은 주파수에 대한 버터워스 고역 통과 필터 이득의 의존성을 나타냅니다. 매개변수 fg와 n은 각각 필터의 ​​차단 주파수와 차수를 결정합니다.

우선, 위 요구사항의 준수를 고려하여 필요한 필터 차수를 계산해야 합니다.

첫 번째 조건을 충족하려면 그룹의 최저 주파수와 최고 주파수의 절대값의 제곱 비율이 3dB를 넘지 않아야 합니다.

두 번째 조건은 주파수 f1과 3f1의 절대값의 제곱 비율이 10/3보다 크면 자동으로 충족됩니다. 이 경우 직사각형 신호의 세 번째 고조파는 1/3보다 작습니다(푸리에 참조). 시리즈 및 그림 2):

두 그룹의 주파수를 계산한 결과 필요한 필터 차수 n=1.15를 얻었습니다. 따라서 요구사항은 2차 필터에 의해 충족될 것이며 이를 기반으로 구축할 수 있습니다. 연산 증폭기. 3차 필터를 사용하는 경우 두 개의 추가 요소만 필요합니다. 그러나 이렇게 하면 구성 요소 매개변수의 분산에 대한 요구 사항이 줄어듭니다. 차단 주파수가 다음 제한 내에 있으면 위의 요구 사항이 모두 충족됩니다.

하위 그룹 fg>880Hz fg<1418 Гц
상위 그룹 fg>1527Hz fg<2460 Гц

차단 주파수가 최소이면 최대 고조파 감소가 발생합니다. 그러나 이 경우 그룹의 가장 낮은 주파수 레벨과 가장 높은 주파수 레벨 간의 차이는 3dB와 같습니다. 가능한 가장 높은 차단 주파수에서는 레벨 차이가 최소화되지만 고조파 성분은 20dB만 억제됩니다.

필터를 계산할 때 고조파 억제에 더 많은 주의를 기울였으며 그룹 내 레벨 차이는 2dB로 고정되었습니다. 결과적으로 차단 주파수는 977Hz와 1695Hz입니다. 결과적인 고조파 억제는 요구 사항을 크게 초과합니다. 그룹 내 주파수 수준의 차이는 사용된 구성요소 매개변수의 확산과 관련된 차단 주파수 편차의 경우에도 요구 사항 내에 있습니다. 필터 요소의 값을 계산할 때 E12 시리즈의 표준 값에 대한 최대 근접성을 기준으로 저항이 선택되었습니다.

필터 출력에서는 고조파가 크게 억제된 2개의 정현파 신호가 생성됩니다. 이러한 신호를 결합하기 위해 추가 가산기가 도입됩니다.

따라서 단 3개의 연산 증폭기와 소수의 수동 소자를 사용하여 상당한 컴퓨팅 리소스를 사용하지 않고도 마이크로 컨트롤러를 사용하여 DTMF 신호를 생성할 수 있습니다.

시뮬레이터 프로그램을 이용하여 대략적인 값을 확인하였습니다. 필터의 응답은 계산된 주파수 응답과 매우 밀접하게 일치합니다.


쌀. 6: 3차 필터 출력에서 ​​697Hz 주파수를 갖는 직사각형 신호의 진폭 스펙트럼

그림에서. 그림 6은 3차 필터를 통과한 697Hz 주파수의 직사각형 신호의 진폭 스펙트럼을 보여줍니다. 그림에서 볼 수 있듯이 3차 및 5차 고조파(2091Hz 및 3485Hz)가 크게 감쇠되었습니다(-25.6dB).


쌀. 7: 3차 필터 출력에서 ​​941Hz 주파수를 갖는 직사각형 신호의 진폭 스펙트럼

그림에서. 그림 7은 주파수가 941Hz인 구형파 신호의 스펙트럼을 보여줍니다. 우리가 관심 있는 주파수 영역인 최대 4600Hz에는 고조파가 하나만 있습니다. 필터를 통과한 후 이 2823Hz 고조파는 크게 감쇠됩니다(-27.9dB). 그룹 내 최저 주파수와 최고 주파수 간의 레벨 차이는 1.9dB를 초과하지 않습니다.

매개변수의 변동성이 큰 저가형 부품을 사용하기 위해 추가 모델링을 수행하였다. 시뮬레이션 결과, 저항과 커패시터 값의 허용 확산은 10%인 것으로 나타났습니다.


그림 8: 히스토그램 – 그룹 내 신호 레벨 분포


그림 9: 히스토그램 - 고조파 억제

그림에서. 도 8 및 도 9는 몬테카를로 분석을 이용하여 얻은 히스토그램을 나타낸다. 이 경우 성분값은 10% 범위 내에서 무작위로 변했습니다. 100회 반복 후 모든 시뮬레이션 필터의 결과가 히스토그램으로 표시됩니다. 그림의 히스토그램에서 그림 8은 그룹 내 주파수 간의 레벨 차이를 보여줍니다. 최소 주파수와 최대 주파수 사이의 최대 허용 차이인 3dB는 어떠한 경우에도 달성되지 않았습니다. 평균값은 1.6dB로 계산된 값인 2dB보다 약간 더 좋습니다.

그림에서. 그림 9는 "낮은" 주파수 그룹에 대한 고조파 감쇠를 보여줍니다. 모든 경우에 필요한 값 20dB가 달성되며 평균값은 약 27dB입니다. 최악의 경우 고조파는 24.2dB만큼 억제됩니다.

"낮은" 주파수 그룹의 필터에 대해 계산된 값은 "상위" 주파수 그룹의 필터에 대해서도 수행됩니다.

두 필터 모두 동일한 회로를 가지고 있습니다. 유일한 차이점은 상위 및 하위 주파수 그룹에 대한 필터의 차단 주파수에 있습니다. R1과 C1은 1차 고역 통과 필터를 형성합니다. 왜냐하면 회로의 입력 저항도 R1에 따라 달라지므로 이 요소의 값이 너무 작아서는 안 됩니다. 그렇지 않으면 마이크로컨트롤러 출력이 과부하되고 구형파가 왜곡됩니다. 이 경우 상호 변조 왜곡으로 인한 추가 주파수가 신호에 추가되어 신호 대 잡음비에 부정적인 영향을 미칩니다.

고차 필터의 전달 함수는 수동 부품만으로는 얻을 수 없습니다.

따라서 2차 필터에는 연산 증폭기가 포함되어야 합니다. 능동 필터 이득은 저항 R1-1 및 R1-2를 사용하여 0.2로 설정됩니다. 보시다시피 신호가 다소 약해졌습니다. 이는 연산 증폭기의 과부하를 방지하는 데 필요합니다. 구형파 신호의 기본 정현파 고조파의 피크 진폭은 구형파 신호 자체의 진폭을 초과합니다(푸리에 계열 및 그림 2 참조). 추가 가산기는 필요한 출력 레벨을 조정합니다. 직사각형 신호의 일정한 성분으로 인해 연산 증폭기의 동작 지점은 Vcc/2 레벨로 설정됩니다(푸리에 계열 및 그림 2 참조). 이 경우 입력 분배기 R1-1/R1-2로 상수 성분을 제거할 수 없습니다. DC 전압으로 OS 회로를 분리하기 위해 커패시터 C3이 사용됩니다.

아날로그 필터의 각 출력에서는 각각 상위 및 하위 주파수 그룹의 신호가 생성됩니다. 추가 가산기에서는 이러한 신호가 추가됩니다. 이 회로 요소에서는 저항 R4 및 R5를 사용하여 전체 신호의 "낮은" 주파수와 "높은" 주파수 사이의 관계와 출력 신호 레벨을 설정할 수 있습니다. 따라서 출력 진폭은 여러 국가의 다양한 요구 사항에 맞게 쉽게 조정할 수 있습니다.

부품 값을 계산할 때 커패시터 값은 평소와 같이 고정되었으며 이에 따라 저항 값이 계산되었습니다. 이 회로에는 표준 E12 시리즈의 커패시터와 저항기가 10% 확산되어 사용되었습니다.

그림에서. 그림 10은 아날로그 필터와 가산기의 개략도를 보여줍니다.


쌀. 10: 추가 가산기가 있는 아날로그 필터의 개략도

커패시터 C1-1 및 C1-2는 Vcc/2 작동 지점에서 두 신호를 결합합니다. 이러한 요소에 대해 너무 큰 값을 선택하면 안 됩니다. 이는 저주파 저조파를 제거하는 저역 통과 필터 요소입니다. 필터 커패시터 C5는 기준 전압 잡음을 제거합니다. 피드백 저항 R6에 병렬로 연결된 추가 커패시터 C6은 1차 고역 통과 필터를 형성합니다. 가장 낮은 필터 차단 주파수를 선택한 경우 고주파 상호 변조 간섭을 추가로 필터링하면 출력 신호의 품질이 향상되지만 "상위" 그룹의 최고 주파수가 어느 정도 감쇠됩니다. 어떤 경우에는 1633Hz의 가장 높은 DTMF 주파수를 생성할 필요가 없습니다. 이는 서비스 심볼 A~D를 형성하는 데에만 사용되며, 필터 차단 주파수를 낮춤으로써 신호 대 잡음 비율을 향상시킬 수 있습니다. 따라서 차단 주파수를 높이면 고주파 간섭 수준이 높아지지만 동시에 DTMF 신호의 최고 주파수 구성 요소에 대한 부정적인 영향은 줄어듭니다.

4 DTMF 송신기 신호 연구 결과

아래 스펙트로그램(그림 11 및 12)은 다양한 주파수에서 DTMF 송신기의 출력 신호를 보여줍니다. 그림에서. 그림 11은 기호 "1"의 진폭 스펙트럼을 보여줍니다. 전송에 필요한 주파수(697Hz 및 1207Hz)는 각각 -10.5dB 및 -8.5dB 수준입니다. 2091Hz와 3621Hz의 고조파는 거의 30dB 억제됩니다. "D" 기호를 전송하기 위해 두 개의 가장 높은 주파수인 941Hz와 1633Hz가 생성됩니다. 그림에서 볼 수 있듯이. 도 12에서, 저주파 레벨은 -12dB이고, 고주파수 레벨은 -11dB이다. 해당 고조파는 30dB 이상 감쇠됩니다. 따라서 측정된 값은 시뮬레이션 결과 및 사양 요구 사항에 해당합니다.


쌀. 11: 기호 "1"의 진폭 스펙트럼: 697 및 1207Hz


쌀. 12: 기호 "D"의 진폭 스펙트럼: 941 및 1633Hz

생성된 구형파 신호의 절대 주파수 정확도는 두 개의 서로 다른 타이머를 사용할 때 달성할 수 없습니다. 결과는 두 주파수의 조합과 사용된 타이머 유형에 따라 달라집니다. 그 이유는 타이머 인터럽트 충돌 때문입니다. 그러나 ±1.8%의 요구 정확도는 큰 여유로 충족됩니다.

8비트 타이머와 타이머 포트 타이머가 MCLK 1.048MHz의 시스템 주파수에서 사용되는 경우 "하위" 그룹의 주파수는 0.3%보다 나쁘지 않은 정확도로 생성됩니다. 실제로 "상위" 그룹의 빈도에 대해서는 0.5% 이하의 편차가 얻어졌습니다.

유일한 예외는 가장 높은 주파수가 생성되는 DTMF 문자 "D"입니다. 결과적으로 이 조합에서 "상위" 그룹 1633Hz의 주파수 편차는 -0.97%입니다.

이러한 예외 없이 1633Hz의 최고 주파수도 0.5% 이상의 정확도로 생성됩니다. 다양한 주파수에 대한 최대 편차가 표에 나와 있습니다.

Timer_A를 사용하여 주파수를 생성하는 경우 오류는 사용된 MCLK 주파수에 따라 달라집니다.

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

5. 결론

이 예제의 소프트웨어는 매우 간단하며 약 300바이트를 차지하며 소량의 RAM과 ROM이 필요합니다. 내장된 타이머 모듈 덕분에 CPU 부하를 낭비하지 않고 필요한 주파수가 높은 정확도로 생성됩니다. 8비트 타이머와 타이머/포트를 생성에 사용하는 구성에서 인터럽트 루틴은 CPU 리소스의 약 12%를 차지합니다. Timer_A 타이머에 의해 주파수가 생성되는 경우 인터럽트 루틴 처리를 위한 CPU 부하가 6%로 감소됩니다. 결과적으로 DTMF 신호가 전송되는 동안 다른 작업이 실행될 수도 있고, 전류 소비를 줄이기 위해 CPU가 저전력 모드로 전환될 수도 있습니다.

구형파 신호를 사용하여 DTMF 신호를 생성하기 위해 설명된 모듈의 우수한 기능은 하드웨어 회로 설계를 통해 입증됩니다. 왜냐하면 회로에서 다양한 매개변수를 가진 구성 요소를 사용할 수 있으며 이러한 솔루션의 가격은 매우 낮습니다. 모든 사양 요구 사항이 대부분 충족되므로 MSP430을 제어 컨트롤러로 사용하는 계측기에는 별도의 DTMF 신호 발생기 모듈이 필요하지 않습니다.

특별한 경우에 추가 연산 증폭기를 사용하여 신호 대 잡음비를 높여야 하는 경우 상호 변조 왜곡을 더욱 억제하도록 필터를 구성할 수 있습니다. 이러한 추가 연산 증폭기는 DIL14 패키지의 쿼드 연산 증폭기에 이미 있습니다.

6개의 링크

Bundesamt fur Post und Telekommunikation(우편 통신 연방 사무소): BAPT 223 ZV 5, Zulassungsvorschrift fur Endeinrichtungen zur Anschaltung an Analoge Wahlanschlusse (ausgenommen Notruf- und Durchwahlanschlusse) des Telefonnetzes(아날로그 전화선에 연결된 단말 장치에 대한 공식 사양, 제외) 보안 및 통화 요구 사항) / Deutschen Bundespost Telekom의 ISDN; Bundesministerium fur Post und Telekommunikation, Draft, Bonn 1994년 4월 Papula: Mathematick fur Ingenieure 2(엔지니어를 위한 수학); Vieweg Verlag, Braunschweig 1990 Tietze / Schenk: Halbleiterschaltungstechnik; (Titze/Schenk, 반도체 회로 공학), 10판; Springer Verlag, 베를린 1993 Lutz Bierl / Texas Instruments: MSP430 제품군, 계측 애플리케이션 보고서, Texas Instruments, 2.1호, 1997년 1월, SLAAE10B Texas Instruments: MSP430 제품군, 아키텍처 사용자 가이드 및 모듈 라이브러리, Texas Instruments, 1996, SLAUE10B Texas Instruments: MSP430 제품군, 소프트웨어 사용자 가이드, Texas Instruments, 1996 Texas Instruments: MSP430 제품군, 어셈블리 언어 도구 사용자 가이드, Texas Instruments, 1996 Siwy, Robert: Systementwicklung einer Telekom-Applikation zum Senden und Empfangen von DTMF-Signalen mit dem 마이크로컨트롤러 MSP430(개발 MSP430 마이크로컨트롤러를 기반으로 디지털 신호를 수신하고 전송하는 통신 시스템; Diplomarbeit, Fachhochschule Landshut, 마이 1997

고유 한 특징:

  • 펄스 폭 변조(PWM)를 사용하여 사인파 생성
  • 서로 다른 사인파 신호를 하나의 DTMF 신호로 결합
  • 어셈블리 및 C 언어의 소스 코드
  • STK500과 함께 작동하도록 설계됨
  • 프로그램 코드 크기 260바이트 / 상수 테이블 크기 128바이트
  • 테이블 변환 방법 사용

소개

이 문서에서는 펄스 폭 변조(PWM) 장치와 정적 RAM이 포함된 AVR 마이크로컨트롤러를 사용하여 DTMF 신호(이중 톤 다중 주파수 신호)를 생성하는 기술을 설명합니다. 이러한 신호는 전화기의 다이얼 버튼을 누를 때 재생되는 전화 통신에서 널리 사용됩니다. DTMF 신호를 적절하게 생성하려면 두 주파수, 즉 저주파(fb)와 고주파(fa)를 중첩해야 합니다. 표 1은 서로 다른 키를 눌렀을 때 서로 다른 주파수가 혼합되어 DTMF 톤을 생성하는 방법을 보여줍니다.

그림 1 - DTMF 신호 발생기 회로

표 1 - 톤 신호 생성 매트릭스

페이스북/fa 1209Hz 1336Hz 1477Hz 1633Hz
697Hz 1 2 3
770Hz 4 5 6
852Hz 7 8 9
941Hz * 0 #

표 1의 행은 낮은 빈도 값을 나타내고 열은 높은 빈도 값을 나타냅니다. 예를 들어, 행렬은 “5” 버튼을 누르면 주파수 fb = 770Hz와 fa = 1336Hz가 혼합되어야 함을 보여줍니다. 주파수가 다른 두 개의 정현파 신호를 추가하면 DTMF 신호가 형성됩니다.

진폭 비율은 어디에 있습니까? K=Ab/Aa소스 신호는 조건을 충족해야 합니다.

동작 원리

펄스 폭 변조 사용에 대한 일반적인 정보 외에도 펄스 폭 변조를 통해 정현파 신호를 생성하는 방법이 아래에 나와 있습니다. 다음 단락에서는 기본 스위칭 주파수를 사용하여 다양한 주파수를 얻는 방법을 설명합니다. 이론적 기초를 검토한 후 DTMF 신호 발생기 자체에 대해 설명합니다. 사인파 생성

높은 VH와 낮은 VL 전압 레벨의 지속 시간 비율에 따라 PWM 출력의 평균값이 변경됩니다. 두 레벨의 지속 시간 사이의 비율이 일정하게 유지되면 결과적으로 일정한 VAV 전압 레벨이 생성됩니다. 그림 2는 펄스 폭 변조 신호를 보여줍니다.


그림 2 - DC 전압 레벨 생성

전압 레벨은 다음 식으로 결정됩니다.

(3)

펄스폭 변조에 의해 생성된 전압의 평균값이 매 PWM 사이클마다 변경된다면 정현파 신호가 생성될 수 있습니다. 높은 레벨과 낮은 레벨 사이의 관계는 해당 시간의 사인파의 전압 레벨에 따라 설정되어야 합니다. 그림 3은 이 프로세스를 보여줍니다. PWM의 소스 데이터는 각 주기별로 계산되어 변환 테이블(TC)에 기록됩니다.

그림 3은 기본 사인파의 주파수와 샘플 수 사이의 관계도 보여줍니다. 샘플 수(Nc)가 높을수록 결과 신호 모델링의 정확도가 높아집니다.

(4)

PWM 주파수는 PWM 분해능에 따라 달라집니다. 8비트 분해능에서 타이머의 최종 값(카운트의 최상위)은 0xFF(255)입니다. 왜냐하면 타이머는 앞뒤로 계산하므로 이 값은 두 배가 되어야 합니다. 따라서 PWM 주파수는 타이머 클록 주파수 f CK 를 510으로 나누어 계산할 수 있습니다. 따라서 타이머 클록 주파수가 8MHz인 경우 결과적인 PWM 주파수는 15.6kHz가 됩니다.


그림 3 - PWM을 사용하여 정현파 신호 생성

사인파의 주파수 변경

정현파 샘플을 순차적이 아닌 한 번에 하나씩 조회 테이블에서 읽는다고 가정해 보겠습니다. 이 경우 동일한 샘플링 속도에서 주파수가 두 배인 신호가 생성됩니다(그림 4 참조).


그림 4 - 결과 주파수를 두 배로 늘림(XSW = 2)

비유하자면, 두 번째 값마다 읽는 것이 아니라 세 번째, 네 번째, 다섯 번째 값마다 읽는 경우(각각 단계 너비는 3, 4, 5...) 등입니다. 범위에서 Nc 주파수를 생성하는 것이 가능합니다. 고주파수의 경우 결과 파형은 정현파가 아닙니다. 변환표에 따라 단계 폭을 다음과 같이 나타냅니다. XSW, 어디

(5)

다음 PWM 기간(타이머가 오버플로되는 경우)에 대한 TP의 현재 위치 계산은 식(6)을 사용하여 수행됩니다. 위치의 새로운 가치 X LUT위치의 이전 상태에 따라 달라집니다. X" LUT단계 폭이 증가함에 따라 XSW

(6)

DTMF 신호를 얻기 위해 다양한 주파수 추가

DTMF 신호는 식 (1)과 (2)를 사용하여 생성될 수 있습니다. 산술 연산을 단순화하기 위해 산술 연산을 논리 시프트로 대체하기 위해 계수 K의 값을 0.75로 사용합니다. 식 (6)을 고려하면 PWM 제어를 위한 현재 값은 다음 식으로 계산할 수 있습니다.

그리고 그 점을 고려하면 X 루타=X' 루타 + XSWa ,X LUTb=X" LUTb + XSWb, 드디어 적어보자

DTMF 생성기 구현

이 부록에서는 8비트 PWM 출력(OC1A)과 각각 7비트(n)로 지정된 128개의 사인 함수(Nc) 샘플이 포함된 테이블을 사용하여 DTMF 톤 발생기의 구성을 살펴봅니다. 다음 표현식은 이러한 종속성을 보여주고 조회 테이블 항목을 계산하는 방법도 보여줍니다.

(9)

7비트를 사용하는 장점은 고주파 신호 값과 저주파 신호 값의 합이 1바이트 크기라는 점이다. 전체 DTMF 톤 세트를 지원하려면 표 1의 각 DTMF 주파수에 대해 8개의 값을 계산하여 조회 테이블에 입력해야 합니다.

더 높은 정확도를 달성하기 위해 다음 솔루션이 구현되었습니다. 식 5를 사용하여 계산된 값에는 5바이트만 필요합니다. 반올림 오류를 줄이기 위해 8바이트를 모두 사용하려면 이 값에 8을 곱합니다. 조회 테이블에 대한 포인터도 같은 방식으로 작성됩니다. 하지만 이 경우에는 8배의 값을 저장하는 데 2바이트가 필요합니다. 이는 이 바이트를 사인파 값에 대한 포인터로 사용하기 전에 3번의 오른쪽 이동과 기수 Nc 모듈러스 연산(Nc-1에 의한 논리적 곱셈)을 수행해야 함을 의미합니다.


그림 5 – STK500에 연결하기 위한 모듈 다이어그램

PWM 신호는 OC1A(PD5) 핀에서 생성됩니다. 추가 출력 필터를 사용하면 신호가 정현파와 더 잘 호환되도록 할 수 있습니다. PWM 주파수를 줄일 때 좋은 결과를 얻으려면 더 가파른 주파수 응답을 가진 필터를 사용해야 할 수도 있습니다.

키보드 연결은 그림 1에 나와 있습니다. 키보드 작동은 누른 키를 확인할 수 있도록 구성되어야 합니다. 이는 다음 알고리즘을 사용하여 수행할 수 있습니다.

  1. 누른 키의 문자열 확인
    • 포트 B의 하위 노트북을 출력으로 구성하고 로그를 설정합니다. "0"
    • 풀업 저항을 연결하여 포트 B의 하이 테트라드를 입력으로 구성합니다.
    • 버튼을 누른 라인은 로그가 있는 가장 높은 사분면의 숫자로 정의됩니다. "0"
  2. 누른 키 열 정의
    • 포트 B의 하이 노트북을 출력으로 구성하고 로그를 설정합니다. "0"
    • 풀업 저항을 연결하여 포트 B의 하위 4차를 입력으로 구성합니다.
    • 버튼을 누른 열은 로그가 있는 하위 4차원 숫자로 정의됩니다. "0"

참고: STK200에서는 저항이 PORTB 커넥터 핀과 마이크로컨트롤러 핀 BP5, PB6 및 PB7 사이에 직렬로 연결됩니다(STK200 다이어그램 참조). 키보드가 PORTB 커넥터에 연결된 경우 문제가 발생합니다.

그림 6은 누른 키를 결정하는 서브루틴의 동작을 보여줍니다. 누른 키에 따라 간격의 지속 시간이 결정됩니다. 인터럽트 루틴은 이 값을 사용하여 두 개의 DTM 톤 사인파에 대한 PWM 설정을 계산합니다. 인터럽트 처리 절차는 그림 7과 8에 나와 있습니다.

이 루틴은 다음 PWM 기간에 대한 타이머 출력과 비교할 값을 계산합니다. 인터럽트 루틴은 먼저 조회 테이블에서 다음 샘플 값의 위치를 ​​계산하고 거기에 저장된 값을 읽습니다.

룩업 테이블에서 샘플의 위치는 펄스 폭에 따라 결정되며, 실제 펄스 폭은 생성된 주파수에 따라 결정됩니다.

타이머 비교 레지스터에 기록되는 최종 값은 두 DTMF 주파수의 샘플 값을 고려한 공식 (7)을 사용하여 결정됩니다.


그림 6 – 메인 프로그램의 블록 다이어그램

본 발명은 예를 들어 전화 분야에서 데이터 전송을 위한 이중 톤 주파수(DTMF) 신호의 디지털 생성 분야에 관한 것입니다. 달성된 기술적 결과는 중복 회로 요소의 수를 줄여 경제성을 높이는 것입니다. DTMF 신호 생성 방법을 구현하는 DTMF 신호 생성기는 2개의 누적 가산기, 2개의 유지 레지스터, 2개의 저장 장치, 최종 가산기, 디지털-아날로그 변환기, DTMF 신호 코드를 일련의 정수로 변환하는 변환기를 포함합니다. , 조정 가능한 분할 계수를 갖는 DTMF 신호 발생기의 기준 주파수 분할기, 변환기 DTMF 신호 코드를 분할 계수 코드로 코딩합니다. 2초 그리고 월급 3개 f-ly, 2 병.

본 발명은 예를 들어 톤-주파수 다이얼링 중 전화 통신 분야에서 데이터 전송을 위한 디지털 방법으로 DTMF(이중 톤 주파수) 신호를 생성하는 방법에 관한 것으로, 기술적 본질에 있어서 가장 가깝고 청구된 결과에 관한 것입니다. 방법은 DTMF 신호를 생성하는 방법으로, 미국 특허 번호 5034977(2089년 4월 4일자, 공개)에 제시되어 있습니다. 07.23.91, M. 클래스. 5 N 04 M 1/00. DTMF 신호를 생성하는 공지된 방법은 DTMF 신호 성분의 제1 및 제2 주파수에 대응하는 제1 및 제2 샘플링 각도 코드를 선택하고, 제1 및 제2 샘플링 각도 코드를 각각 주기적으로 누적 합산하는 것을 포함합니다. 고정된 것, 클럭 샘플링 주파수에 해당하는 주기, 누적 합산의 첫 번째 및 두 번째 결과, 해당 이산 테이블의 주소 위치 셀에 저장된 DTMF 신호 구성 요소의 첫 번째 및 두 번째 이산 값을 얻습니다. 샘플링 각도 코드의 누적 합산 결과에 해당하는 주소의 해당 테이블을 읽어 DTMF 신호 구성 요소의 첫 번째 및 두 번째 이산 값을 합산하여 DTMF 신호 구성 요소의 값을 DTMF 신호의 값에 해당하는 세 번째 이산 값을 얻습니다. DTMF 신호를 생성하는 알려진 방법은 다음과 같습니다: DTMF 신호의 코드에 따라 먼저 DTMF 신호의 코드를 변환하여 첫 번째 코드가 선택됩니다. 고주파 열 그룹에 해당하는 주파수로 신호의 샘플링 각도를 결정하고 DTMF 신호 코드의 두 번째 변환을 통해 다음에 해당하는 주파수로 신호의 샘플링 각도를 결정하는 두 번째 코드가 선택됩니다. 저주파 그룹 - 샘플링 클록 주파수에 해당하는 주기로 주기적으로 행, 첫 번째 샘플링 각도 코드는 해당 누적 가산기에서 합산되어 해당 레지스터에 기록되며 그 출력은 결과입니다. 그 값은 해당 읽기 전용 메모리에 저장된 테이블 셀의 주소에 해당하고 동일한 방식으로 주기적으로 DTMF 신호의 상위 주파수를 결정하는 사인의 해당 이산 값이 위치합니다. 샘플링 클럭 주파수에 해당하는 주기, 두 번째 샘플링 각도 코드는 해당 누적 가산기에서 합산되어 해당 레지스터에 기록됩니다. 그 결과는 출력이며, 그 값은 저장된 테이블 셀의 주소에 해당합니다. 해당 읽기 전용 메모리 장치에서 DTMF 신호의 하위 주파수를 결정하는 사인의 해당 이산 값과 DTMF 신호의 상위 및 하위 주파수를 결정하는 사인의 이산 값이 합산됩니다. 최종 가산기에서 DTMF 신호의 이산 값을 결정하고 디지털-아날로그 변환을 통해 출력에 공급되어 DTMF 신호의 입력 코드에 해당하는 스텝 사인 DTMF 신호를 형성합니다. 알려진 방법은 기술 및 경제 지표가 낮기 때문에 효과적이지 않습니다. 기술 및 경제 지표는 DTMF 신호에 필요한 필수 매개변수를 달성하기 위해 방법을 구현할 때 필요한 비용에 따라 결정됩니다. 알려진 방법은 샘플링 각도에 해당하는 코드의 비트 심도에 따라 주파수 생성의 정확도가 달라지기 때문에 누적 가산기의 큰 비트 폭이 필요하므로 간단한 하드웨어로 구현하기가 어렵다. 즉, 공지된 방법의 샘플링 각도 코드는 K = (F/F t)32..., (1.1) 식에 의해 결정되며, 여기서 K는 샘플링 각도에 해당하는 코드이고 F는 생성된 주파수이며 F t 는 샘플링 주파수입니다. 보시다시피 생성된 주파수의 정확도는 생성된 주파수와 샘플링 주파수의 비율에 따라 분명히 달라집니다. 생성된 주파수의 요구되는 정확도, 즉 1.5%보다 나쁘지 않은 것을 달성하려면 다음과 같이 하십시오. 소수점 이하 유효 숫자 2자리가 필요합니다. 이를 위해서는 저주파의 경우 최소 8비트, 고주파의 경우 최소 9비트, 누적 합계의 경우 각각 최소 12비트의 비트 깊이를 가진 데이터를 표시해야 합니다. 이는 알려진 방법을 구현하는 장치의 구성 요소 수의 증가로 이어집니다. 알려진 방법을 구현하기 위한 알려진 장치, 즉 가산기, 레지스터 및 영구 저장 장치는 4비트 및 8비트 폭의 입력/출력을 갖는다. 따라서 더 높은 비트 용량으로 동일한 기능의 장치를 구현하려면 추가적인 기술적, 경제적 비용이 필요합니다. 또한, 알려진 방법에서 소수 자릿수를 줄이면 허용 가능한 범위를 초과하는 빈도 오류가 발생합니다.기술 지표는 예를 들어 현대 기술 수준과 같은 방법 구현의 다양성과 통일성에 의해 결정됩니다. 재료, 부품의 소비를 줄이고 장치의 다양성을 높이려면 마이크로컨트롤러를 사용해야 합니다. 전화 통신 및 원격 측정 측정에 사용되는 광범위한 마이크로컨트롤러는 8비트 데이터와 8비트 산술 논리 장치를 사용합니다. 이는 알려진 방법을 구현할 때 8비트 이상의 너비를 가진 데이터를 합산하고 분석하는 것과 관련된 추가 계산 작업이 필요합니다. 명령 수와 그에 따른 마이크로 컨트롤러의 클록 주파수 및 마이크로 컨트롤러의 RAM 양을 증가시키는 전송 신호로 인해 알려진 DTMF 생성 방법을 사용하는 장치의 비용이 증가합니다. 신호. 이 결론은 Atmel, Microchip tnc 및 기타 회사에서 제조한 마이크로컨트롤러를 기반으로 하는 톤 다이얼러에서 알려진 방법의 사용을 분석할 때 제공됩니다. 따라서 알려진 방법은 근본적으로 비효율적이며 이는 낮은 기술 및 경제적 지표로 인해 증가된 재료 소비, 에너지 소비 및 낮은 기술 지표 널리 사용되는 마이크로 컨트롤러의 일부를 포함하여 방법을 사용할 때 제한이 있기 때문에 마이크로 컨트롤러에 필요한 기술적 특성이 증가하여 다양성이 감소합니다. 기술적 본질과 가장 가까운 청구된 DTMF 신호 발생기에 대해 달성된 결과는 89년 4월 4일자 미국 특허 번호 5034977, publ.에 제시된 DTMF 발생기 신호입니다. 07.23.91, M. 클래스. 5 N 04 M 1/00. 알려진 DTMF 신호 발생기는 다음을 포함합니다: 제1 누적 가산기, 제1 래치 레지스터, 제1 메모리 장치, 제2 누적 가산기, 제2 래치 레지스터, 제2 메모리 장치, 최종 가산기, 디지털-아날로그 변환기로서, 상기 제1 누적 가산기의 출력은 상기 제1 래치 레지스터의 입력에 연결되고, 상기 제1 래치 레지스터의 출력은 상기 제1 메모리 장치의 입력뿐만 아니라 다음 중 하나에 연결된다. 첫 번째 누적 가산기의 입력, 첫 번째 메모리 장치의 출력은 최종 가산기의 입력 중 하나에 연결되고, 두 번째 누적 가산기의 출력은 두 번째 래치 레지스터의 입력에 연결되고, 두 번째 메모리 장치의 출력은 홀딩 레지스터는 두 번째 저장 장치의 입력과 두 번째 누적 가산기의 입력 중 하나에 연결되고, 두 번째 저장 장치의 출력은 최종 가산기의 다른 입력인 최종 가산기의 출력에 연결됩니다. 디지털-아날로그 변환기의 입력에 연결되며 그 출력은 DTMF 신호 발생기의 출력입니다. 알려진 발생기에는 DTMF 신호 코드를 상위 주파수에 해당하는 샘플링 각도의 해당 코드로 변환하는 첫 번째 변환기도 포함되어 있습니다. DTMF 신호의 제2 변환기는 DTMF 신호의 하위 주파수에 대응하는 샘플링 각도의 대응 코드로 코드를 변환하고, DTMF 신호 코드의 제1 변환기의 출력은 제1 누적 가산기의 다른 입력에 연결되고, 두 번째 DTMF 신호 코드 변환기의 출력은 두 번째 누적 가산기의 다른 입력에 연결되고, 첫 번째 및 두 번째 DTMF 신호 코드 변환기의 입력은 DTMF 신호 발생기의 입력이며, 첫 번째 및 두 번째 래칭의 클록 입력입니다. 레지스터는 상호 연결되어 있으며 DTMF 신호 발생기의 샘플링 클록 주파수의 입력입니다. 알려진 DTMF 신호 발생기는 서로 다른 회로 요소의 수가 너무 많을 뿐만 아니라 동일한 기능 요소의 비트 용량이 과도하기 때문에 기술적 결과가 낮습니다. 또한 알려진 기술 솔루션의 구현은 별도의 집적 회로 형태로 효과적으로 가능하지만 이를 위해서는 전문적인 생산 조직이 필요하지만 DTMF 신호 발생기가 다기능 장치(고급 기능을 갖춘 전화기, 전화선 등을 통해 원격 측정 정보를 전송하는 장치 등) 현재 범용 마이크로 컨트롤러를 기반으로 구현된 개별 DTMF 신호 마이크로 회로의 생산은 경제적으로 비효율적입니다. 제안된 기술 솔루션의 기초는 방법을 만드는 작업입니다. DTMF 신호 생성기를 사용하여 DTMF 신호를 생성하는 경우 작업 조건과 순서를 변경하여 유사한 작업의 비트 용량 감소로 인해 높은 기술 및 경제 지표를 사용하는 방법을 구현합니다. 간단한 하드웨어를 사용하는 회로 설계와 동일한 기능 요소를 구현할 때 반복성과 관련된 다기능 마이크로 컨트롤러의 일부로 방법을 구현합니다. 기본 기술 솔루션인 작업은 DTMF 신호 발생기를 만드는 것으로 설정되었습니다. 새로운 요소를 도입하고 새로운 연결을 함으로써 중복 회로 요소의 수를 줄이는 것과 관련된 기술적 결과가 증가하고 이에 따라 널리 사용 가능한 수단을 통해 제안된 기술 솔루션을 구현할 가능성과 관련된 경제적 효율성이 증가합니다. DTMF 신호 성분의 제1 및 제2 주파수에 대응하는 샘플링 각도의 제1 및 제2 코드를 선택하는 단계를 포함하는 공지된 DTMF 신호 생성 방법에서, 샘플링 각도는 각각 샘플링 클록 주파수에 해당하는 주기로 주기적으로 고정되고, 누적 합산의 첫 번째 및 두 번째 결과로, 주소에 위치한 셀에 저장된 DTMF 신호 성분의 첫 번째 및 두 번째 이산 값을 얻습니다. 샘플링 각도 코드의 누적 합산 결과에 해당하는 주소의 해당 테이블을 읽고 DTMF 신호 구성 요소의 첫 번째 및 두 번째 이산 값을 합산하여 DTMF 신호 구성 요소의 이산 값에 대한 해당 테이블 DTMF 신호의 값에 해당하는 세 번째 이산 값을 얻습니다. 새로운 점은 DTMF의 이산 값에 대한 해당 테이블의 주소 지정 가능한 셀에 저장된 DTMF 신호 구성 요소의 첫 번째 및 두 번째 이산 값을 얻는 것입니다. 신호 구성 요소는 해당 테이블에서 정수의 첫 번째 및 두 번째 시퀀스의 누적 합계 결과에 해당하는 주소를 읽어 수행됩니다. 평균값은 구성 요소에 해당하는 샘플링 각도 코드에 해당합니다. DTMF 신호. 또한, 누적합의 결과를 이루는 정수열의 평균값은 이들 숫자의 산술평균이 될 수 있으며, 또한 누적합의 첫 번째 결과와 두 번째 결과는 다음과 같은 주기로 주기적으로 기록될 수 있다. 서로 다른 DTMF 신호에 대해 서로 다른 샘플링 클록 주파수. 제기된 문제는 또한 제1 누적 가산기, 제1 래치 레지스터, 제1 메모리 장치, 제2 누적 가산기를 포함하는 알려진 DTMF 신호 생성기의 사실에 의해 해결됩니다. , 제2 래치 레지스터, 제2 메모리 장치, 최종 가산기, 디지털-아날로그 변환기, 제1 누적 가산기의 출력이 제1 래치 레지스터의 입력에 연결되고, 제1 래치 레지스터의 출력이 연결됨 첫 번째 메모리 장치의 입력과 첫 번째 누적 가산기의 입력 중 하나에 대해, 첫 번째 메모리 장치의 출력은 최종 가산기의 입력 중 하나에 연결되고, 두 번째 누적 가산기의 출력은 다음과 같습니다. 제2 래치 레지스터의 입력에 연결되고, 제2 래치 레지스터의 출력은 제2 저장 장치의 입력에 연결될 뿐만 아니라, 제2 누적 가산기의 입력 중 하나에 연결되고, 제2 저장 장치의 출력은 다음과 같다. 최종 가산기의 또 다른 입력에 연결되고, 최종 가산기의 출력은 디지털-아날로그 변환기의 입력에 연결되며, 그 출력은 DTMF 신호 발생기의 출력이 된다. 본 발명에 따르면, DTMF 신호 생성기는 추가적으로 DTMF 신호 코드를 정수 시퀀스로 변환하는 장치, 조정 가능한 분할 계수를 갖는 DTMF 신호 생성기의 기준 주파수를 분할하는 장치, DTMF 신호 코드를 분할 계수 코드로 변환하는 장치, 그리고 첫 번째 단계를 포함합니다. 정수 시퀀스의 DTMF 신호 코드 변환기의 출력은 제1 누적 가산기의 다른 입력에 연결되고, 정수 시퀀스의 DTMF 신호 코드 변환기의 두 번째 출력은 두 번째 누적 가산기의 다른 입력에 연결되며, 조정 가능한 분배 계수를 갖는 DTMF 신호 발생기의 마스터 주파수 분배기의 출력은 정수 시퀀스로 DTMF 신호 코드 변환기의 클록 입력뿐만 아니라 첫 번째 래치 레지스터의 클록 입력 및 클록에도 연결됩니다. 두 번째 래치 레지스터의 입력, DTMF 신호 코드 변환기의 분할 계수 코드 출력은 DTMF 신호 발생기의 마스터 주파수 분할기의 분할 계수 설정 입력, 마스터 주파수 분할기의 입력에 연결됩니다. 조정 가능한 분할 계수를 갖는 DTMF 신호 발생기는 DTMF 신호 발생기의 기준 주파수 입력이며, DTMF 신호 코드를 분할 계수 코드로 변환하는 입력은 DTMF 신호 코드를 시퀀스로 변환하는 입력에 연결됩니다. 정수이며 DTMF 신호 발생기의 입력입니다. 또한, DTMF 신호 코드를 정수 시퀀스로 변환하는 것은 제어된 프로그래밍 가능 메모리 장치의 형태로 이루어질 수 있으며, 그 메모리는 DTMF 신호의 수에 해당하는 메모리 셀로 구성된 메모리 영역으로 구성됩니다. 메모리 셀의 절반은 첫 번째 정수열과 관련된 숫자를 저장하고, 메모리 셀의 나머지 절반은 각각 다른 정수열과 관련된 숫자를 저장하도록 설계된 메모리 셀입니다. 는 해당 누적 가산기의 용어이며 프로그래밍 가능한 메모리 장치의 제어는 메모리 영역과 별도의 메모리 셀을 별도로 선택하도록 구성됩니다. DTMF 신호 생성 방법 및 DTMF 신호 생성기의 새로운 특징과 함께 알려진 이러한 개체의 특징은 개체의 새로운 기술적 속성을 제공하고 이러한 속성의 결과로 필요한 새로운 기술적 결과가 제공됩니다. 특징 집합 간의 인과 관계 제안된 방법과 달성된 기술적 결과는 다음과 같습니다. 제안된 기술 솔루션의 본질을 밝히기 위해 다음 계산이 편리합니다: y(P)=sin(n) (1.2), 여기서 y(P)는 사인 함수의 이산 값입니다.=wT =27F/Fr(1.3) - 라디안으로 측정된 샘플링 각도, n - 샘플의 일련 번호 - 샘플, F t = F OSC / kd - 샘플링 클록 주파수, 여기서 F OSC - 장치의 설정 주파수, kd - 조정 가능 나눗셈 계수 그러면 = 2FC D / F O S C . (1.4) 잘 알려진 바와 같이 사인 함수는 주기가 2인 주기 함수입니다. 샘플링 각도를 라디안에서 상대 단위로 변환하고 샘플링 각도 코드를 얻기 위해 전체 주기를 m 부분으로 나눕니다. 여기서 m은 이진수입니다. 정수. 따라서 우리는 주기의 최소 이산 부분(= 2/m)을 얻습니다. (1.5) 샘플링 각도 코드는 주기의 한 부분, 즉 K=/=2F/F t: 2P/m=Fm/F t에 따른 샘플링 각도의 상대 값입니다. (1.6) 예를 들어, 생성된 주파수 1477Hz 및 697Hz(DTMF 신호 코드 "3"에 해당)의 경우 m = 64, 클록 주파수 F t = 32768Hz K 697 = 1.36, K l477 = 2.88입니다. 분명히 이진수에 대해 샘플링 각도 코드 표시 K 697 =1.36V, 각각 136에는 8비트 필요(1281+640+320+160+81+40+20+10), K 1477 =2.88V, 각각 288에는 9비트 필요( 2561+1280+640+321+ 160+80+40+ 20+10) 동시에 이진 표현의 누적 합계에는 각각 12비트가 필요하며 이는 위에서 설명한 알려진 단점을 결정합니다. 해결책. 제안된 기술 솔루션은 예를 들어 숫자 1.36을 정수 1과 2의 시퀀스 평균값, 즉 1.36=(1x+2y)/(x+y)로 정의합니다. 여기서 x와 y는 숫자 1의 수입니다. 및 2는 각각 주기(x+y)로 주기적으로 반복됩니다. 샘플링 각도 코드의 값은 정수 부분 C와 분수 부분으로 구성됩니다. 예를 들어 1.36=1+0.36입니다. 식 (1.7) = K/C (1.7)에 따른 이러한 대체의 상대적 정확도는 샘플링 각도 코드 값의 정수 부분이 증가함에 따라 증가합니다. 예를 들어, 생성된 주파수 697Hz, m = 64, 클럭 주파수 F t = 32768Hz의 경우 K 697 = 1.36을 숫자 1과 2의 값으로 대체할 때의 오류는 각각 36%와 32%입니다. 동시에 m = 256의 값을 늘리면 K 697 = 5.45를 숫자 5와 6의 값으로 대체하는 오류가 각각 9%와 10% 감소합니다. 예를 들어 반복 기간 동안 K 697 = 5.45를 숫자 5와 6의 값(16과 같음)으로 대체할 때 생성된 주파수의 오류는 5.45=(5x+6y)/(x+y)입니다. 여기서 ( x+y)=16. 방정식을 풀면 x=9, y=7이 됩니다. 즉, 16개의 누적 합산 연산 중 5항은 9번, 6항은 7번 더해지며, 실제로는 K 697 = 5.4375이며, 이 값을 m = 256, F t = 32768Hz인 식 (1.6)에 대입하면 다음과 같이 결정됩니다. 생성된 주파수 F = 696Hz의 실제 계산 값, 오류는 0.1%로 유지됩니다. 따라서 해당 샘플링 각도에 해당하는 평균값인 정수 시퀀스의 누적 합산을 통해 높은 기술적, 경제적 달성이 가능합니다. 위 식의 구성 요소를 다양화할 수 있으므로 누적 합산 연산의 비트 용량을 줄이고 이에 따라 제안 방법을 구현하는 장치의 비트 용량을 줄임으로써 방법 구현 시 하드웨어 및 에너지 비용이 절감됩니다. , 기술 요구 사항이 감소하여 다기능 장치에 사용할 때 제안된 방법의 높은 기술적 성능을 보장합니다. 세트 간의 인과 관계 제안된 기술 솔루션의 특징과 달성된 기술 결과는 다음과 같습니다. DTMF 신호 발생기의 높은 기술적 결과는 정수 시퀀스에 DTMF 신호 코드 변환기의 새로운 요소, 조정 가능한 분할 계수가 있는 DTMF 신호 발생기 기준 주파수 분배기, 분배 계수에 DTMF 신호 코드 변환기를 도입함으로써 보장됩니다. 8비트를 초과하지 않는 동일한 비트 깊이를 가진 회로 요소에 의한 메서드 구현을 보장하는 코드. 예를 들어 누적 합계 결과를 기록하고 해당 저장 장치의 주소를 지정하려면 동일한 수의 비트가 사용되며 8비트 레지스터 이상으로 구현되지 않으며 단일 마이크로회로 또는 마이크로프로세서 버전의 형태로 공개적으로 사용 가능한 수단으로 구현될 수 있습니다. 메모리 셀. 또한 누적 가산기의 구현은 4비트 가산기로 작동하는 공개적으로 사용 가능한 가산기 마이크로 회로의 형태로 동일한 비트 깊이를 가진 동일한 장치 형태로 이루어질 수 있습니다. 따라서, 위에서 설명한 정수 시퀀스를 형성하는 장치는 해당 샘플링 각도 코드를 결정하는 전체 비트 깊이를 가질 수 있지만, 설정된 목표를 달성한다는 관점에서 볼 때 가장 최적입니다. 제안된 솔루션은 4비트 숫자입니다. 또한 제안된 기술 솔루션을 마이크로컨트롤러의 일부로 구현할 때 높은 기술적 결과도 보장됩니다. 여기서 시스템 마이크로컨트롤러 명령에는 반드시 4비트 숫자(니블)로 작동하는 명령이 포함됩니다. 제안된 DTMF 신호 발생기의 기술 솔루션은 회로 요소 수의 감소와 관련된 높은 기술적 결과를 허용하며 DTMF 신호 발생기를 공개적으로 사용 가능한 하드웨어 및 다기능 마이크로 컨트롤러의 일부로 구현할 때 다양성을 제공합니다. 본 발명은 도면에 도시되어 있으며, 도 1은 DTMF 신호 생성 방법을 구현하는 DTMF 신호 생성기를 기능적으로 도시한 것이며, DTMF 신호 생성기는 시퀀스 정수의 DTMF 신호 코드 변환기(1)를 포함한다. , 조정 가능한 분할 계수를 갖는 DTMF 신호 생성기의 기준 주파수 분할기 2, DTMF 신호 코드를 분할 계수 코드로 변환하는 3, 첫 번째 누적 가산기 4, 첫 번째 래치 레지스터 5, 첫 번째 메모리 장치 6, 두 번째 메모리 장치 7, 두 번째 래치 레지스터(8), 두 번째 누적 가산기, 최종 가산기(10), 디지털-아날로그 변환기(11). DTMF 신호 생성기의 동작은 DTMF 신호 생성 방법의 구현 예를 통해 설명되었다. 식 (1.4, 1.6) 및 기술 데이터, 특히 제안된 방법이 구현될 장치의 설정 주파수에 대해 정수 시퀀스가 ​​계산되어 샘플링 각도의 해당 코드와 제산기 2에 대한 분할 계수 코드를 정의합니다. DTMF 신호 코드 변환기 1의 메모리 영역의 해당 셀에 일련의 정수로 기록되고 DTMF 신호 코드 변환기 3의 분할 계수로 조정 가능한 분할 계수를 갖는 DTMF 신호 발생기의 기준 주파수 계수 코드, 해당 사인 함수의 이산 값도 미리 계산되며 그 수는 이산 수 m에 의해 결정되며 DTMF 신호를 생성할 때 해당 메모리 6 및 7에 기록됩니다. 생성기 입력인 변환기 1과 변환기 3의 입력은 DTMF 신호의 잠시 동안 생성된 DTMF 신호의 코드가 설정되고 변환기 3의 출력에는 분할 계수를 결정하는 코드가 설정됩니다. 분배기 2의 경우 분배기 2의 출력에서 ​​샘플링 클록 주파수가 샘플링 클록 주파수에 해당하는 주기로 주기적으로 설정되는 반면 변환기 1의 첫 번째 출력에는 첫 번째 정수 시퀀스에 포함된 이진수가 있습니다. 는 첫 번째 누적 가산기(4)의 입력에 공급되고 변환기(1)의 두 번째 출력으로부터 DTMF 신호의 구성 요소에 해당하는 두 번째 정수 시퀀스에 포함된 이진수는 두 번째 누적 가산기의 입력에 공급됩니다. 가산기 9, 누적 합산 결과는 누적 가산기의 출력에서 ​​해당 래치 레지스터 5 및 8의 입력으로, 래치 레지스터 5 및 8의 출력에서 ​​누적 합산 결과가 제공됩니다. 샘플링 클록 주파수에 해당하는 기간은 해당 누적 가산기(4 및 9)의 다른 입력뿐만 아니라 해당 저장 장치(6 및 7)의 입력으로 전송되어 사인의 이산 값 주소를 설정합니다. DTMF 신호의 해당 구성요소는 저장 장치(6 및 7)의 출력으로부터 DTMF 신호의 해당 구성요소의 이산 값이 최종 가산기(10)의 해당 입력에 공급되며, 그 출력은 이산 이진 DTMF 신호가 형성되어 디지털-아날로그 변환기(11)의 입력에 공급되고, 그 출력은 DTMF 신호의 입력 코드에 대응하는 계단형 정현파 DTMF 신호를 생성합니다. DTMF 신호 코드를 정수 시퀀스로의 변환기(1)(도 1)는 도 2에 도시된 형태로 만들어질 수 있으며, 여기서 DTMF 신호 코드를 정수 시퀀스로의 변환기는 프로그래밍 가능한 메모리인 제어 장치(12)를 포함한다. DTMF 신호 발생기의 동작은 다음과 같습니다. 아래는 제안된 방법을 전화 음성-주파수 다이얼러에 구현한 구체적인 예입니다. 이전에는 식 (1.4, 1.6)과 기술 데이터를 기반으로 정수 시퀀스는 다음과 같습니다. 조정 가능한 분할 비율을 사용하여 DTMF 신호 발생기의 기준 주파수의 분할기 2에 대한 해당 샘플링 각도 코드 및 분할 계수 코드를 결정하도록 계산됩니다. 방법의 구현에 동일한 유형의 계산이 포함된다는 점을 고려하여 작업을 설명하기 위해 톤 펄스 다이얼러의 일부로 "7" 키를 누르는 것에 해당하는 DTMF 신호를 생성하는 방법의 구현을 구체적인 예에 ​​보여줍니다. 전화 기술에서 가장 일반적인 수정 주파수, 즉 F OSC =3579545Hz가 발생기의 기준 주파수로 설정됩니다. "7" 키를 누르면 상위(열) 주파수가 1209Hz이고 하위(행) 주파수가 852Hz인 DTMF 신호에 해당합니다. DTMF 신호는 두 개의 주파수를 동시에 전송하므로 분할 계수는 더 큰 - 상위 주파수에 대해 계산되어 식 (1.6)에 따른 해당 샘플링 각도 코드가 최대값 - 16에 가깝습니다. 이는 최대값 16에 가깝습니다. 4비트 데이터. 따라서 F OSC = 3579545Hz, 사인의 이산 값 수 m = 128, 조정 가능한 분배 계수를 갖는 DTMF 신호 발생기의 기준 주파수 분배기 2에 대한 분배 계수의 계산된 값 K D = 240 = 460이고, 상위 주파수에 대한 해당 샘플링 각도 코드는 K 1209/852 =10.376이고 하위 주파수에 대한 K 852/1209 =7.312입니다. 본 발명에 따르면 샘플링 각도 코드를 각각 정수 시퀀스로 대체합니다. 10/11 및 7/8.10.375 = (10x+11y)/(x+y), 실제로는 K 1209 / 852 = 10.3757.312 = (7x+8y)/(x+y), 실제로는 K 952/1209 = 7.313, (x+y) = 16입니다. 따라서 10.375는 주기적으로 10 x 10번과 11 x 6번의 반복되는 정수 시퀀스로 대체되고, 7,312는 7 x 11번과 8 x 5로 대체됩니다. 이진수로 표현된 DTMF 신호 코드 "7"의 메모리 영역은 다음과 같습니다.
이러한 방식으로 DTMF 신호 코드에 해당하는 16개의 테이블, 즉 0, 1, 2...9, *, #, A, B, C, D가 계산되고 프로그래밍 가능한 메모리 장치의 메모리에 미리 기록됩니다. 13(정수 시퀀스로의 DTMF 문자 코드 변환기) DTMF 신호 기간 동안 생성기 입력에서 키(예: "7")를 누르면 DTMF 신호 "7"(0111)의 이진 코드는 다음과 같습니다. 설정된 경우, DTMF 신호 코드를 분할 계수로 변환하는 변환기 3은 DTMF 신호 코드를 조정 가능한 분할 계수를 사용하여 생성기 기준 주파수의 분할기 2에 대해 kd를 분할하는 계수 코드로 변환하고 샘플링 클록 주파수 F t =F OSC /K D 분배기 2의 출력에 설정됩니다. DTMF 신호 코드는 또한 프로그램 가능 메모리 장치(13)(DTMF 신호 코드를 정수 시퀀스로 변환기)의 최상위 비트의 주소 입력에 도달하고 DTMF 신호 기간 동안 거기에 존재합니다. 예를 들어 카운터(DTMF 신호 코드를 정수 시퀀스로 변환기) 형태로 만들어진 제어 장치(12)는 주파수 t를 갖는 클록 신호의 영향을 받아 병렬 출력의 값을 0000에서 순차적으로 주기적으로 변경합니다. 1111에 따라 프로그래밍 가능한 메모리 장치(13)(DTMF 신호 코드를 정수 시퀀스로 변환기)의 하위 비트의 주소 입력 값을 변경하면 8비트(바이트) 숫자가 출력에 나타납니다. 프로그래밍 가능한 메모리 장치(13)는 샘플링 클록 주파수를 갖고 표 1에 따라 최상위 4비트(최상위 니블)가 정수 시퀀스를 형성하며, 그 전체, 즉 산술 평균이 대응하는 샘플링 각도 코드를 결정합니다. 상위(열) 주파수까지, 최하위 4자리(낮은 니블)는 정수 시퀀스를 형성하며, 그 전체, 즉 산술 평균에 따라 하위(라인) 주파수, 4비트에 해당하는 샘플링 각도 코드가 결정됩니다. 표 1에 따라 프로그래밍 가능한 메모리 장치(13)(DTMF 신호 코드를 정수 시퀀스로의 변환기)의 출력으로부터의 데이터는 해당 누산 가산기(4 및 9)의 입력, 해당 누산기(9)의 입력에 개별적으로 공급됩니다. 가산기 4와 9는 0에서 m(이 경우 m=128)까지의 샘플링 클록 주파수로 데이터를 변경하고, 저장 레지스터 5와 8을 사용하여 저장 장치 6과 7의 주소를 결정하고 고정합니다. DTMF 신호의 해당 정현파 성분 중 각각 기록되고, 출력 저장 장치(6 및 7)로부터 DTMF 신호의 해당 정현파 성분의 이진 이산 값이 최종 가산기(10)의 해당 입력에 공급됩니다. DTMF 신호의 이진 이산 값이 형성된 출력에서 ​​디지털-아날로그 변환기(11)의 입력에 공급되고, 출력에서 ​​계단식 정현파 DTMF 신호가 생성됩니다. DTMF 신호 발생기는 예를 들어 전자 컴퓨터 기술의 집적 회로 적용에 설명된 잘 알려진 기술 수단을 기반으로 구현될 수 있습니다. 핸드북 / Ed. B.N. 파이줄라예바, B.V. 타라브리나. - M.: Radio and Communications, 1986. 이 경우, DTMF 신호 코드를 분할 계수 코드로 변환하는 3은 예를 들어 읽기 전용 메모리 칩 155PE 3(p. 343)의 형태로 만들어질 수 있습니다. 레지스터의 구현은 p.2에 설명되어 있습니다. 108, 누적 가산기의 구현은 p.108에 설명되어 있습니다. 114. 본 발명의 방법 및 DTMF 신호 발생기는 또한 Microchip Inc.의 하드웨어를 기반으로 구현됩니다. (pic16f628 유형의 8비트 단일 칩 마이크로 컨트롤러), "Kadran"(우크라이나, Zaporozhye) 회사에서 생산한 펄스 톤 전화 다이얼러 "Kadran - NKT - 01"의 일부입니다. 마이크로컨트롤러 노드의 명령 시스템과 내부 구조는 Prokopenko B.Ya에 설명되어 있습니다. 단일 칩 마이크로컨트롤러. Dodeka, 2000, ISBN8-87835-056-4. DTMF 신호의 매개변수에 대한 설명은 예를 들어 다음과 같습니다. 집적 회로: 전화 통신용 칩. 이슈 1. -M .: Dodeka, 1994, 256p. - ISBN-5-87835-003-3., p. 12, 13.

주장하다

1. DTMF 신호 성분의 제1 주파수와 제2 주파수에 대응하는 제1 샘플링 각도 코드와 제2 샘플링 각도 코드를 선택하고, 제1 샘플링 각도 코드와 제2 샘플링 각도 코드를 각각 주기적으로 누적 합산하는 단계를 포함하는 DTMF 신호 생성 방법 샘플링 클록 주파수에 해당하는 고정 기간, 누적 합산의 첫 번째 및 두 번째 결과, 이산 값의 해당 테이블의 주소 위치 셀에 저장된 DTMF 신호 구성 요소의 첫 번째 및 두 번째 이산 값을 얻습니다. DTMF 신호 성분은 샘플링 각도 코드의 누적 합산 결과에 해당하는 주소의 해당 테이블에서 판독하여 DTMF 신호 성분의 첫 번째 이산 값과 두 번째 이산 값을 합산하여 해당 값에 해당하는 세 번째 이산 값을 얻습니다. DTMF 신호 성분의 이산값에 대한 대응 테이블의 어드레싱 가능한 셀에 저장된 DTMF 신호 성분의 제1 및 제2 이산값은 다음의 해당 테이블로부터 판독하여 획득되는 것을 특징으로 하는 DTMF 신호의 주소 , 각각 첫 번째 및 두 번째 정수 시퀀스의 누적 합계 결과에 해당하며 평균값은 DTMF 신호의 해당 구성 요소인 샘플링 각도 코드에 해당합니다. 제1항에 있어서, 누적합의 결과를 형성하는 정수열의 평균값은 이들 숫자의 산술평균인 것을 특징으로 하는 방법. 제1항에 있어서, 상기 제1 및 제2 누적 합산 결과는 DTMF 신호마다 다른 샘플링 클럭 주파수에 대응하는 주기로 주기적으로 기록되는 것을 특징으로 하는 방법. 제1 누적 가산기, 제1 래치 레지스터, 제1 메모리 장치, 제2 누적 가산기, 제2 래치 레지스터, 제2 메모리 장치, 최종 가산기, 디지털-아날로그 변환기를 포함하는 DTMF 신호 생성기에 있어서, 제1 누적 가산기의 출력은 제1 래치 레지스터의 입력에 연결되고, 제1 래치 레지스터의 출력은 제1 메모리 장치의 입력과 제1 누적 가산기의 입력 중 하나에 연결되고, 첫 번째 메모리 장치의 출력은 최종 가산기의 입력 중 하나에 연결되고, 두 번째 누적 가산기의 출력은 두 번째 래치 레지스터의 입력에 연결되며, 두 번째 래치 레지스터의 출력은 마지막 가산기의 입력에 연결됩니다. 두 번째 기억 장치는 두 번째 누적 가산기의 입력 중 하나와 마찬가지로 두 번째 저장 장치의 출력은 최종 가산기의 다른 입력에 연결되고, 최종 가산기의 출력은 디지털 가산기의 입력에 연결됩니다. DTMF 신호 발생기의 출력이 DTMF 신호 발생기의 출력인 대 아날로그 변환기로서, DTMF 신호 발생기는 DTMF 신호 발생기의 기준 주파수를 나누는 정수 시퀀스의 DTMF 신호 변환기 코드를 추가로 포함하는 것을 특징으로 하는 아날로그 변환기. 조정 가능한 분할 계수를 갖는, DTMF 신호 코드를 분할 계수 코드로 변환기로서, 정수 시퀀스의 DTMF 신호 코드 변환기의 제1 출력은 제1 누적 가산기의 다른 입력에 연결되고, 정수 시퀀스의 DTMF 신호 변환기 코드는 두 번째 누적 가산기의 다른 입력에 연결되고, 조정 가능한 분할 계수를 가진 DTMF 신호 발생기의 설정된 주파수 분배기의 출력은 코드 변환기의 클록 입력에 연결됩니다. 정수 시퀀스의 DTMF 신호와 첫 번째 래치 레지스터의 클록 입력 및 두 번째 홀딩 레지스터의 클록 입력, 분할 계수 코드로의 DTMF 신호 코드 변환기의 출력은 설정 입력에 연결됩니다. DTMF 신호 발생기의 기준 주파수 분배기의 분배 계수, 조정 가능한 분배 계수가 있는 DTMF 신호 발생기의 기준 주파수 분배기의 입력은 DTMF 신호 발생기의 기준 주파수 입력, DTMF 신호 코드 변환기의 입력입니다. 분할 계수 코드는 DTMF 신호 코드 변환기의 입력에 일련의 정수로 연결되며 DTMF 신호 생성기의 입력입니다. 제4항에 있어서, DTMF 신호를 정수 시퀀스로의 코드 변환기는 제어형 프로그래밍 가능 메모리 장치의 형태로 만들어지며, 그 메모리는 DTMF 신호의 수에 대응하여 구성되는 것을 특징으로 하는 DTMF 신호 발생기 , 정수열의 길이에 해당하는 셀들로 구성된 메모리 영역 메모리 셀의 절반에는 첫 번째 정수열에 관련된 숫자가 저장되고, 나머지 절반에는 메모리 셀이 저장되도록 설계됨 숫자는 해당 누적 가산기의 항인 다른 정수 시퀀스에 대응하여 저장되고, 프로그래밍 가능한 메모리 장치의 제어는 메모리 영역과 별도의 메모리 셀의 선택을 별도로 제어하는 ​​기능으로 수행됩니다.

톤 다이얼링(이중 톤 다중 주파수 신호, DTMF)은 지난 세기 50년대 당시 혁신적인 푸시 버튼 전화기를 위해 Bell Labs에서 개발되었습니다. 톤 모드에서 디지털 데이터를 표현하고 전송하기 위해 음성 주파수 범위의 주파수(톤) 쌍이 사용됩니다. 시스템은 4개의 주파수로 구성된 두 그룹을 정의하고 각 그룹에서 하나씩 두 개의 주파수를 동시에 전송하여 정보를 인코딩합니다. 이는 16개의 서로 다른 숫자, 기호 및 문자를 나타내는 총 16개의 조합을 제공합니다. DTMF 인코딩은 현재 ITU(International Telecommunication Union) 권장 사항 Q.23에서 입증된 바와 같이 광범위한 통신 및 제어 애플리케이션에서 사용됩니다.

이 기사에서는 8개 주파수를 모두 재생하고 결과적인 2톤 출력 신호를 생성하는 DTMF 톤 발생기의 회로에 대해 설명합니다. 문제의 시스템은 Silego GreenPAK™ SLG46620V 칩과 Silego SLG88104V 연산 증폭기를 기반으로 구축되었습니다. 생성된 결과 신호는 전화 키패드의 행과 열에 의해 결정되는 두 주파수의 합입니다.

제안된 회로는 생성할 주파수 조합을 선택하기 위해 4개의 입력을 사용합니다. 회로에는 생성을 트리거하고 신호가 전송되는 시간 길이를 결정하는 활성화 입력도 있습니다. 발전기 출력 주파수는 DTMF에 대한 ITU 표준을 준수합니다.

DTMF 톤

DTMF 표준은 숫자 0-9, 문자 A, B, C 및 D, 문자 * 및 #의 인코딩을 두 주파수의 조합으로 정의합니다. 이러한 주파수는 고주파 그룹과 저주파 그룹의 두 그룹으로 나뉩니다. 표 1은 주파수, 그룹 및 해당 기호 표현을 보여줍니다.

1 번 테이블. DTMF 톤 코딩

고음 그룹

로우패스 그룹

다중 고조파를 피하기 위해 주파수가 선택되었습니다. 또한 이들의 합이나 차이로 인해 DTMF 주파수가 달라지지는 않습니다. 이러한 방식으로 고조파 또는 변조 왜곡이 방지됩니다.

Q.23 표준은 각 전송 주파수의 오류가 공칭 값의 ±1.8% 내에 있어야 하며 총 왜곡(고조파 또는 변조로 인해)이 기본 주파수보다 20dB 낮아야 한다고 명시합니다.

위에서 설명한 결과 신호는 다음과 같이 설명할 수 있습니다.

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

여기서 fhigh와 flow는 높은 주파수와 낮은 주파수 그룹의 해당 주파수입니다.

그림 1은 숫자 "1"에 대한 결과 신호를 보여줍니다. 그림 2는 이 신호에 해당하는 주파수 스펙트럼을 보여줍니다.

쌀. 1. DTMF 톤

쌀. 2. DTMF 톤 스펙트럼

DTMF 톤의 지속 시간은 톤 코딩을 사용하는 특정 애플리케이션에 따라 달라질 수 있습니다. 가장 일반적인 애플리케이션의 경우 지속 시간 값은 일반적으로 수동 다이얼링과 자동 다이얼링 사이에 속합니다. 표 2는 두 가지 채용 유형의 일반적인 기간을 요약한 것입니다.

표 2. 톤 다이얼링 신호의 지속 시간

다이얼 유형

고음 그룹

고음 그룹

수동 다이얼링

자동 전화 걸기

유연성을 높이기 위해 이 설명서에 제공된 DTMF 발생기에는 신호 생성을 시작하고 지속 시간을 결정하는 데 사용되는 활성화 입력이 장착되어 있습니다. 이 경우 신호 지속 시간은 활성화 입력의 펄스 지속 시간과 동일합니다.

DTMF 생성기 회로의 아날로그 부분

ITU 권장 사항 Q.23에서는 DTMF 신호를 두 개의 사인파로 생성된 아날로그 신호로 정의합니다. 제안된 DTMF 생성기 회로에서 Silego GreenPAK SLG46620V IC는 원하는 DTMF 주파수로 구형파 신호를 생성합니다. 필요한 주파수의 정현파 신호를 얻고 결과 신호(두 개의 정현파의 합)를 형성하려면 아날로그 필터와 가산기가 필요합니다. 이러한 이유로 이 프로젝트에서는 SLG88104V 연산 증폭기를 기반으로 한 필터와 결합기를 사용하기로 결정했습니다.

그림 3은 제안된 장치의 아날로그 부분의 구조를 보여줍니다.

쌀. 3. DTMF 신호 수신을 위한 아날로그 처리 회로

아날로그 필터는 직사각형 펄스에서 정현파 신호를 얻는 데 사용됩니다. 필터링이 수행된 후 두 신호가 합산되어 원하는 출력 2톤 DTMF 신호가 생성됩니다.

그림 4는 구형파 신호의 스펙트럼을 얻기 위해 사용된 푸리에 변환의 결과를 보여줍니다.

쌀. 4. 구형파 신호의 스펙트럼

보시다시피 구형파에는 홀수 고조파만 포함되어 있습니다. 푸리에 급수 형태로 진폭 A를 갖는 신호를 표현하면 다음과 같은 형식을 갖게 됩니다.

이 표현을 분석하면 아날로그 필터가 고조파에 대해 충분한 감쇠를 갖는 경우 원래 구형파 신호의 주파수와 동일한 주파수를 갖는 정현파 신호를 얻는 것이 가능하다는 결론을 내릴 수 있습니다.

Q.23 표준에 정의된 간섭 레벨 허용치를 고려하면 모든 고조파가 20dB 이상 감쇠되도록 해야 합니다. 또한 저역 통과 그룹의 모든 주파수는 고역 통과 그룹의 모든 주파수와 결합되어야 합니다. 이러한 요구 사항을 고려하여 각 그룹마다 하나씩 두 개의 필터가 개발되었습니다.

두 필터 모두 저역 통과 버터워스 필터였습니다. n차 버터워스 필터의 감쇠는 다음과 같이 계산할 수 있습니다.

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

여기서 fc는 필터 차단 주파수이고, n은 필터 차수입니다.

각 그룹의 가장 낮은 주파수와 가장 높은 주파수 사이의 감쇠 차이는 3dB를 넘을 수 없으므로 다음과 같습니다.

A(f낮음)[dB] - A(f낮음)[dB] > 3dB.

주어진 절대값:

A(f높음) 2 / A(꽃) 2 > 2.

또한 앞서 말했듯이 고조파 감쇠량은 20dB 이상이어야 합니다. 이 경우 최악의 경우는 그룹에서 가장 낮은 주파수가 됩니다. 왜냐하면 3차 고조파가 가장 낮은 주파수이고 필터 차단 주파수에 가장 가깝기 때문입니다. 3차 고조파가 기본 고조파보다 3배 작다는 점을 고려하면 필터는 다음 조건(절대값)을 충족해야 합니다.

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

이러한 방정식이 두 그룹 모두에 적용되는 경우 사용되는 필터는 2차 필터여야 합니다. 즉, 연산 증폭기를 사용하여 구현하는 경우 각각 2개의 저항기와 2개의 커패시터를 갖게 됩니다. 3차 필터를 사용하면 부품 공차에 대한 민감도가 낮아집니다. 선택된 필터 차단 주파수는 저역 통과 그룹의 경우 977Hz이고 고역 통과 그룹의 경우 1695Hz입니다. 이러한 값에서 주파수 그룹의 신호 레벨 차이는 위의 요구 사항과 일치하며 구성 요소 허용 오차로 인한 차단 주파수 변화에 대한 민감도는 최소화됩니다.

SLG88104V를 사용하여 구현된 필터의 회로도가 그림 5에 나와 있습니다. 첫 번째 R-C 쌍의 정격은 SLG46620V 칩의 출력 전류를 제한하는 방식으로 선택됩니다. 두 번째 필터 링크는 게인(0.2)을 결정합니다. 구형파 신호의 진폭은 연산 증폭기 작동 지점을 2.5V로 설정합니다. 원하지 않는 전압은 출력 필터 커패시터에 의해 차단됩니다.

쌀. 5. 출력 필터의 개략도

출력에서 필터 신호가 합산되고 결과 신호는 저주파수 및 고주파수 그룹에서 선택된 고조파의 합입니다. 필터 감쇠를 보상하기 위해 두 개의 저항 R9 및 R10을 사용하여 출력 신호의 진폭을 조정할 수 있습니다. 그림 6은 가산기 회로를 보여줍니다. 그림 7은 회로의 전체 아날로그 부분을 보여줍니다.

쌀. 6. 가산기의 개략도

쌀. 7. 회로의 아날로그 부분

DTMF 톤 제너레이터 회로의 디지털 부분

DTMF 톤 발생기 회로의 디지털 부분에는 각 DTMF 주파수마다 하나씩 전체 구형파 발생기 세트가 포함되어 있습니다. 이러한 생성기를 생성하려면 8개의 카운터가 필요하므로 구현을 위해 GreenPAK SLG46620V 칩이 선택되었습니다. 디지털 회로의 출력에서는 각 주파수 그룹마다 하나씩 두 개의 직사각형 신호가 생성됩니다.

구형파 신호는 카운터와 D 플립플롭을 사용하여 생성되며 듀티 사이클은 50%입니다. 이러한 이유로 카운터 스위칭 주파수는 필요한 DTMF 주파수의 두 배이며 DFF 플립플롭은 출력 신호를 두 개로 나눕니다.

카운터의 클록 소스는 내장된 2MHz RC 발진기이며, 그 주파수는 4 또는 12로 더 나뉩니다. 분할기는 비트 용량과 특정 값을 얻는 데 필요한 각 카운터의 최대값을 고려하여 선택됩니다. 빈도.

높은 주파수를 생성하려면 더 적은 수의 샘플이 필요하므로 신호를 4로 나누는 내부 RC 발진기에서 클록된 8비트 카운터를 사용하여 생성합니다. 같은 이유로 더 낮은 주파수는 14비트 카운터를 사용하여 구현됩니다.

SLG46620V에는 3개의 표준 14비트 카운터만 있으므로 더 낮은 주파수 중 하나는 8비트 CNT8 카운터를 사용하여 구현되었습니다. 샘플 수가 0~255 범위 내에 들어가려면 이 CNT8을 클록하기 위해 RC 발진기 신호를 12로 나눈 값을 사용해야 했습니다. 이 회로의 경우 샘플 수가 가장 많은 주파수는 가장 낮은 주파수를 선택했습니다. 이를 통해 오류를 최소화할 수 있었습니다.

표 3은 각 구형파의 매개변수를 보여줍니다.

표 3. 사각 펄스 발생기의 매개변수

클러킹

주파수 오류 [%]

로우패스 그룹

고음 그룹

표에서 볼 수 있듯이 모든 주파수는 1.8% 미만의 오차를 갖고 있어 DTMF 규격을 준수하고 있다. 이상적인 RC 발진기 주파수를 기반으로 계산된 이러한 특성은 RC 발진기 출력 주파수를 측정하여 조정할 수 있습니다.

제안된 회로에서는 모든 생성기가 병렬로 작동하지만 각 그룹에서 하나의 생성기의 신호만 마이크로 회로의 출력으로 전송됩니다. 특정 신호의 선택은 사용자가 결정합니다. 이는 표 4에 표시된 진리표와 함께 4개의 GPIO 입력(각 그룹당 2비트)을 사용하여 수행됩니다.

표 4. 저주파 그룹에서 주파수를 선택하는 표

로우패스 그룹

표 5. 고주파 그룹의 주파수 선택 표

고음 그룹

그림 8은 852Hz 구형파 발생기의 논리 회로를 보여줍니다. 이 패턴은 적절한 카운터 설정 및 LUT 구성을 통해 각 주파수에 대해 반복됩니다.

쌀. 8. 직사각형 펄스 발생기

카운터는 해당 설정에 따라 결정되는 출력 주파수를 생성합니다. 이 주파수는 해당 DTMF 톤 주파수의 두 배와 같습니다. 미터 구성 매개변수는 그림 9에 나와 있습니다.

쌀. 9. 직사각형 펄스 발생기 카운터 설정 예

카운터 출력 신호는 D-Flip Flop 플립플롭의 클록 입력에 연결됩니다. DFF 출력이 반전으로 구성되어 있으므로 DFF 출력을 입력에 연결하면 D 플립플롭이 T 플립플롭으로 변환됩니다. DFF 구성 매개변수는 그림 10에서 볼 수 있습니다.

쌀. 10. 직사각형 펄스 발생기 트리거 설정 예

DFF 출력의 신호는 LUT 진리표 입력으로 공급됩니다. LUT는 각 특정 R1-R0 조합에 대해 하나의 신호를 선택하는 데 사용됩니다. LUT 구성의 예가 그림 11에 나와 있습니다. 이 예에서 R1이 1을 수신하고 R0이 0을 수신하면 입력 신호가 출력으로 전송됩니다. 다른 경우에는 출력에 "0"이 포함됩니다.

쌀. 11. 사각 펄스 발생기의 진리표 설정 예

위에서 언급한 바와 같이 제안된 회로는 Enable Enable 입력을 갖는다. 활성화 권한 입력에 논리 장치 "1"이 있으면 생성된 직사각형 신호가 마이크로 회로의 한 쌍의 출력에 공급됩니다. 전송 지속 시간은 활성화 입력의 펄스 지속 시간과 동일합니다. 이 기능을 구현하려면 몇 가지 LUT가 더 필요했습니다.

고역 통과 그룹은 그림 12와 같이 4비트 LUT 하나와 2비트 LUT 하나를 사용합니다.

쌀. 12. 고음 그룹 출력 회로

4비트 LUT1은 OR 게이트로 구성되므로 입력에 1이 있으면 논리 1을 출력합니다. C1/C0 진리표에서는 발진기 중 하나만 선택할 수 있으므로 4비트 LUT1이 어떤 신호가 출력되는지 결정합니다. 이 LUT의 출력은 인에이블 입력이 로직 "1"인 경우에만 신호를 전송하는 2비트 LUT4에 연결됩니다. 그림 13과 14는 4비트 LUT1과 2비트 LUT4의 구성을 보여줍니다.

쌀. 13. 4비트 LUT1 구성

쌀. 14. 2비트 LUT4 구성

더 이상 4비트 진리표 LUT가 없었기 때문에 저역 통과 그룹에 2개의 3비트 LUT가 사용되었습니다.

쌀. 15. 로우패스 그룹 출력 회로

GreenPAK SLG46620V의 전체 내부 회로는 그림 16에 나와 있습니다. 그림 17은 DTMF 생성기의 최종 회로 다이어그램을 보여줍니다.

쌀. 16. DTMF 톤 제너레이터의 블록 다이어그램

쌀. 17. DTMF 톤 발생기의 개략도

DTMF 생성기 회로 테스트

제안된 DTMF 발생기를 테스트하는 첫 번째 단계에서는 생성된 모든 직사각형 신호의 주파수를 오실로스코프를 사용하여 확인하기로 결정했습니다. 예를 들어, 그림 18과 19는 852Hz 및 1477Hz에 대한 구형파 출력을 보여줍니다.

쌀. 18. 구형파 852Hz

쌀. 19. 구형파 1477Hz

모든 구형파 신호의 주파수를 확인한 후 회로의 아날로그 부분 테스트를 시작했습니다. 저주파와 고주파의 모든 조합에 대한 출력 신호를 검사했습니다. 예를 들어, 그림 20은 770Hz와 1209Hz 신호의 합을 보여주고, 그림 21은 941Hz와 1633Hz 신호의 합을 보여줍니다.

쌀. 20. DTMF 톤 770Hz 및 1209Hz

쌀. 21. DTMF 톤 941Hz 및 1633Hz

결론

이 기사에서는 Silego GreenPAK SLG46620V 칩과 Silego SLG88104V 연산 증폭기를 기반으로 하는 DTMF 톤 발생기용 회로를 제안했습니다. 생성기를 사용하면 사용자는 4개의 입력을 사용하여 원하는 주파수 조합을 선택하고 출력 신호의 지속 시간을 결정하는 활성화 입력을 제어할 수 있습니다.

SLG46620V 칩의 특성:

  • 유형: 프로그래밍 가능 혼합 신호 IC;
  • 아날로그 블록: 8비트 ADC, DAC 2개, 비교기 6개, 필터 2개, ION, 통합 발진기 4개,
  • 디지털 블록: 최대 18개의 I/O 포트, 상호 연결 매트릭스 및 조합 논리, 프로그래밍 가능 지연 회로, 프로그래밍 가능 함수 발생기, 6개의 8비트 카운터, 3개의 14비트 카운터, 3개의 PWM 발진기/비교기;
  • 통신 인터페이스: SPI;
  • 공급 전압 범위: 1.8~5V;
  • 작동 온도 범위: -40~85 °C;
  • 패키지 버전: 2 x 3 x 0.55mm 20핀 STQFN.

고유 한 특징

  • 펄스 폭 변조(PWM)를 사용하여 사인파 생성
  • 서로 다른 사인파 신호를 하나의 DTMF 신호로 결합
  • 어셈블리 및 C 언어의 소스 코드
  • STK500과 함께 작동하도록 설계됨
  • 프로그램 코드 크기 260바이트 / 상수 테이블 크기 128바이트
  • 테이블 변환 방법 사용

소개

이 문서에서는 펄스 폭 변조(PWM) 장치와 정적 RAM이 포함된 AVR 마이크로컨트롤러를 사용하여 DTMF 신호(이중 톤 다중 주파수 신호)를 생성하는 기술을 설명합니다. 이러한 신호는 전화기의 다이얼 버튼을 누를 때 재생되는 전화 통신에서 널리 사용됩니다. DTMF 신호를 적절하게 생성하려면 두 주파수, 즉 저주파(fb)와 고주파(fa)를 중첩해야 합니다. 표 1은 서로 다른 키를 눌렀을 때 서로 다른 주파수가 혼합되어 DTMF 톤을 생성하는 방법을 보여줍니다.


그림 1. DTMF 신호 발생기 회로

표 1. 톤 생성 매트릭스

페이스북/fa 1209Hz 1336Hz 1477Hz 1633Hz
697Hz 1 2 3
770Hz 4 5 6
852Hz 7 8 9
941Hz * 0 #

표 1의 행은 낮은 빈도 값을 나타내고 열은 높은 빈도 값을 나타냅니다. 예를 들어, 행렬은 “5” 버튼을 누르면 주파수 fb = 770Hz와 fa = 1336Hz가 혼합되어야 함을 보여줍니다. 주파수가 다른 두 개의 정현파 신호를 추가하면 DTMF 신호가 형성됩니다.

여기서 원래 신호의 진폭 비율 K=A b /A a는 조건을 충족해야 합니다.

동작 원리

펄스 폭 변조 사용에 대한 일반적인 정보 외에도 펄스 폭 변조를 통해 정현파 신호를 생성하는 방법이 아래에 나와 있습니다. 다음 단락에서는 기본 스위칭 주파수를 사용하여 다양한 주파수를 얻는 방법을 설명합니다. 이론적 기초를 검토한 후 DTMF 신호 발생기 자체에 대해 설명합니다. 사인파 생성

높은 VH와 낮은 VL 전압 레벨의 지속 시간 비율에 따라 PWM 출력의 평균값이 변경됩니다. 두 레벨의 지속 시간 사이의 비율이 일정하게 유지되면 결과적으로 일정한 VAV 전압 레벨이 생성됩니다. 그림 2는 펄스 폭 변조 신호를 보여줍니다.


그림 2. DC 전압 레벨 생성

전압 레벨은 다음 식으로 결정됩니다.

(3)

펄스폭 변조에 의해 생성된 전압의 평균값이 매 PWM 사이클마다 변경된다면 정현파 신호가 생성될 수 있습니다. 높은 레벨과 낮은 레벨 사이의 관계는 해당 시간의 사인파의 전압 레벨에 따라 설정되어야 합니다. 그림 3은 이 프로세스를 보여줍니다. PWM의 소스 데이터는 각 주기별로 계산되어 변환 테이블(TC)에 기록됩니다.

그림 3은 기본 사인파의 주파수와 샘플 수 사이의 관계도 보여줍니다. 샘플 수(Nc)가 높을수록 결과 신호 모델링의 정확도가 높아집니다.

(4)

PWM 주파수는 PWM 분해능에 따라 달라집니다. 8비트 분해능에서 타이머의 최종 값(카운트의 최상위)은 0xFF(255)입니다. 왜냐하면 타이머는 앞뒤로 계산하므로 이 값은 두 배가 되어야 합니다. 따라서 PWM 주파수는 타이머 클록 주파수 f CK 를 510으로 나누어 계산할 수 있습니다. 따라서 타이머 클록 주파수가 8MHz인 경우 결과적인 PWM 주파수는 15.6kHz가 됩니다.


그림 3. PWM을 사용하여 사인파 생성

사인파의 주파수 변경

정현파 샘플을 순차적이 아닌 한 번에 하나씩 조회 테이블에서 읽는다고 가정해 보겠습니다. 이 경우 동일한 샘플링 속도에서 주파수가 두 배인 신호가 생성됩니다(그림 4 참조).


그림 4. 결과 주파수를 두 배로 늘림(XSW = 2)

비유하자면, 두 번째 값마다 읽는 것이 아니라 세 번째, 네 번째, 다섯 번째 값마다 읽는 경우(각각 단계 너비는 3, 4, 5...) 등입니다. 범위에서 Nc 주파수를 생성하는 것이 가능합니다. 고주파수의 경우 결과 파형은 정현파가 아닙니다. 변환표에 따라 스텝 폭을 X SW로 표시합니다.

(5)

다음 PWM 기간(타이머가 오버플로되는 경우)에 대한 TP의 현재 위치 계산은 식(6)을 사용하여 수행됩니다. X LUT 위치의 새 값은 단계 폭 X SW가 추가된 X" LUT 위치의 이전 상태에 따라 달라집니다.

(6)

DTMF 신호를 얻기 위해 다양한 주파수 추가

DTMF 신호는 식 (1)과 (2)를 사용하여 생성될 수 있습니다. 산술 연산을 단순화하기 위해 산술 연산을 논리 시프트로 대체하기 위해 계수 K의 값을 0.75로 사용합니다. 식 (6)을 고려하면 PWM 제어를 위한 현재 값은 다음 식으로 계산할 수 있습니다.

X LUTa =X" LUTa + X SWa,X LUTb =X" LUTb + X SWb를 고려하여 마침내 다음과 같이 작성합니다.

DTMF 생성기 구현

이 부록에서는 8비트 PWM 출력(OC1A)과 각각 7비트(n)로 지정된 128개의 사인 함수(Nc) 샘플이 포함된 테이블을 사용하여 DTMF 톤 발생기의 구성을 살펴봅니다. 다음 표현식은 이러한 종속성을 보여주고 조회 테이블 항목을 계산하는 방법도 보여줍니다.

(9)

7비트를 사용하는 장점은 고주파 신호 값과 저주파 신호 값의 합이 1바이트 크기라는 점이다. 전체 DTMF 톤 세트를 지원하려면 표 1의 각 DTMF 주파수에 대해 8개의 값을 계산하여 조회 테이블에 입력해야 합니다.

더 높은 정확도를 달성하기 위해 다음 솔루션이 구현되었습니다. 식 5를 사용하여 계산된 값에는 5바이트만 필요합니다. 반올림 오류를 줄이기 위해 8바이트를 모두 사용하려면 이 값에 8을 곱합니다. 조회 테이블에 대한 포인터도 같은 방식으로 작성됩니다. 하지만 이 경우에는 8배의 값을 저장하는 데 2바이트가 필요합니다. 이는 이 바이트를 사인파 값에 대한 포인터로 사용하기 전에 3번의 오른쪽 이동과 기수 Nc 모듈러스 연산(Nc-1에 의한 논리적 곱셈)을 수행해야 함을 의미합니다.


그림 5. STK500 연결을 위한 모듈 다이어그램

PWM 신호는 OC1A(PD5) 핀에서 생성됩니다. 추가 출력 필터를 사용하면 신호가 정현파와 더 잘 호환되도록 할 수 있습니다. PWM 주파수를 줄일 때 좋은 결과를 얻으려면 더 가파른 주파수 응답을 가진 필터를 사용해야 할 수도 있습니다.

키보드 연결은 그림 1에 나와 있습니다. 키보드 작동은 누른 키를 확인할 수 있도록 구성되어야 합니다. 이는 다음 알고리즘을 사용하여 수행할 수 있습니다.

  1. 누른 키의 문자열 확인
    • 포트 B의 하위 노트북을 출력으로 구성하고 로그를 설정합니다. "0"
    • 풀업 저항을 연결하여 포트 B의 하이 테트라드를 입력으로 구성합니다.
    • 버튼을 누른 라인은 로그가 있는 가장 높은 사분면의 숫자로 정의됩니다. "0"
  2. 누른 키 열 정의
    • 포트 B의 하이 노트북을 출력으로 구성하고 로그를 설정합니다. "0"
    • 풀업 저항을 연결하여 포트 B의 하위 4차를 입력으로 구성합니다.
    • 버튼을 누른 열은 로그가 있는 하위 4차원 숫자로 정의됩니다. "0"

참고: STK200에서는 저항이 PORTB 커넥터 핀과 마이크로컨트롤러 핀 BP5, PB6 및 PB7 사이에 직렬로 연결됩니다(STK200 다이어그램 참조). 키보드가 PORTB 커넥터에 연결된 경우 문제가 발생합니다.

그림 6은 누른 키를 결정하는 서브루틴의 동작을 보여줍니다. 누른 키에 따라 간격의 지속 시간이 결정됩니다. 인터럽트 루틴은 이 값을 사용하여 두 개의 DTM 톤 사인파에 대한 PWM 설정을 계산합니다. 인터럽트 처리 절차는 그림 7과 8에 나와 있습니다.

이 루틴은 다음 PWM 기간에 대한 타이머 출력과 비교할 값을 계산합니다. 인터럽트 루틴은 먼저 조회 테이블에서 다음 샘플 값의 위치를 ​​계산하고 거기에 저장된 값을 읽습니다.

룩업 테이블에서 샘플의 위치는 펄스 폭에 따라 결정되며, 실제 펄스 폭은 생성된 주파수에 따라 결정됩니다.

타이머 비교 레지스터에 기록되는 최종 값은 두 DTMF 주파수의 샘플 값을 고려한 공식 (7)을 사용하여 결정됩니다.


그림 6. 메인 프로그램의 블록 다이어그램


그림 7. 타이머 오버플로 인터럽트 처리 절차의 블록 다이어그램


그림 8. "GetSample" 샘플 판독 절차의 흐름도

출판: www.cxem.net

다른 기사 보기부분.