하드웨어 구현 - A/D 변환기(A/D converter) - 샘플링 주파수(Sampling frequency)

Slides:



Advertisements
Similar presentations
전자통신연구실 1 확률과 랜덤 해석 잡음 분석 확률 - 실험 (experiment) - 결과 (outcome) - 사건 (event)
Advertisements

컴퓨터의 구조 2006년 2학기 컴퓨터의 개념 및 실습.
12장. 음성 신호처리 12.1 개 요 12.2 음성생성 모델 12.3 음성 합성 12.4 음성 부호화 12.5 음성 인식
IC DESIGN LAB 서강대학교 집적회로설계 연구실 SOGANG UNIVERSITY 2014 Since 1993
ASIC (Application Specific Integrated Circuit)
Chapter 9. 컴퓨터설계기초 9-1 머리말 9-2 데이터 처리장치 (Datapath)
사운드.
음향 시스템 사양서 DIGITAL MIXING CONSOLE SOUNDCRAFT : VI6 SPECIFICATIONS
Signal 자연계에 존재하는 모든 정보전달의 수단 신호의 공학적 표현 물소리, 바람소리, 새소리 짐승소리,불,연기,봉화…
마이크로프로세서(Microprocessor,µP)
기본 컴퓨터 프로그래밍 Lecture #6.
디지털 신호처리
디지털 시스템 2010년 1학기 교수: 송상훈 연구실: 율곡관 603-B
Computer System Architecture
7 조합논리회로 IT CookBook, 디지털 논리회로.
컴퓨터 과학 개론 √ 원리를 알면 IT가 맛있다 컴퓨터 과학도를 위한 첫 전공서 ehanbit.net.
4 컴퓨터에서 활용되는 디지털 논리회로 IT CookBook, 컴퓨터 구조와 원리 2.0.
VHDL, FPGA를 이용한 소리인식 스위치 (Matched Filter 사용)
32비트 캐리 예측 덧셈기(CLA) RCA(Ripple Carry Adder)
제어기술 소개 목표 : 제어기의 종류, 제어 방식 등을 살펴본다. 주요내용 제어기의 종류 제어방식 : 시퀀스, 피드백, 등.
디지털 산술과 연산회로.
생체계측과제#12 8조 1등 조진호 2등 차송희 3등 조은진
 midi LOGGER GL220   신제품 소개 Dec, 2011.
Verilog HDL 이론.
공학실험.
아날로그 및 디지털 회로의 인터페이싱.
Computer System Architecture
DSP와 TMS320F28X의 이해
DSP와 TMS320F28x의 이해.
Medical Instrumentation #1
Medical Instrumentation
DIVIDING48 192KHz 샘플링 주파수, 32-BIT A/D, D/A 컨버터, 32-BIT DSP 프로세서 채용
Ch2-2. VHDL Basic VHDL lexical element VHDL description
학습 목표 반가산기, 전가산기, 고속가산기의 동작을 이해하고 설계하는 방법을 알아본다.
연구실 : 연219호 연락처 : 홈페이지: itsys.hansung.ac.kr 정성훈
Ch. 5 : Analog Transmission
MEDICAL INSTRUMENTATION I
디지털 앰프의 기초 아날로그 앰프와 디지털 앰프의 차이 음질과 스펙과의 연관 관계
1 장 서론 목원대학교 정보통신공학과.
DSP 소개 및 TMS320LF2407A 6th hyaoo.
                                  3장 가산회로 게이트를 이용한 2진 가산회로의 동작 원리 특성 1 비트 반 가산기, 전 가산기, 4비트 전 가산기 회로.

6 중앙처리장치의 조직과 기능 IT CookBook, 컴퓨터 구조와 원리 2.0.
컴퓨터 시스템의 개요.
신호처리 Signal Processing
제 2장 컴퓨터동작의 기본 개념.
Unit 1 Number Systems and Conversion (수의 체계와 변환)
2 데이터 표현과 컴퓨터 연산 IT CookBook, 컴퓨터 구조와 원리 2.0.
논문을 위한 통계 논문과 통계의 기초 개념 하성욱 한성대학교 대학원.
Programmable Logic Device
데이터의 표현과 컴퓨터 연산 Prof. Jae Young Choi (최재영 교수)
6장 연산 장치 6.1 개요 6.2 연산장치의 구성요소 6.3 처리기 6.4 기타 연산장치.
Chapter 01. 들어가기.
Mathematical Description of Continuous-Time Signals
6-1 중앙 처리 장치의 내부 구조 6-2 명령(instruction) 6-3 주소 지정 방식
Chapter 01 디지털기초.
논리회로 설계 및 실험 3주차.
Inferences concerning two populations and paired comparisons
Statistical inference I (통계적 추론)
신 호(Signal).
디 지 털 공 학 한국폴리텍V대학.
제5강 처리 장치 2.
디지털회로설계_강의안5 7. 가산기와 감산기 회로.
(1) 필터 구조마다 유한 정세도 특성(finite precision characteristics)이 다름.
DEGITAL LOGIC CIRCUIT Term Project – 4 bit ALU.
아날로그 신호와 디지털 신호의 개념을 이해할 수 있다.
RF Spectrum Analyzer 의 기본이해
논리회로 설계실험 ICE ICE 담당교수 : 김 인 수.
제03장 정보의 표현.
디지털 TV 방송 신호 (4)
Presentation transcript:

하드웨어 구현 - A/D 변환기(A/D converter) - 샘플링 주파수(Sampling frequency) - 양자화(Quantization) - D/A 변환기(D/A converter) - 디지털신호처리 소자의 구현(덧셈기, 곱셈기, 지연소자)

그림 4-1. A/D변환기, 디지털 신호처리, D/A 변환기 하드웨어 구현 신호처리를 해야 하는 대상의 신호는 아날로그 신호인 경우가 많다. 음성 신호나 악기가 만들어내는 오디오 신호, 사람의 눈에 보이는 영상의 흐름 등은 모두 아날로그 신호들이다. A/D 변환기(analog-to-digital converter) : 아날로그 신호를 디지털 신호로 만들어줌. D/A 변환기(digital-to-analog converter) : 디지털 신호를 아날로그 신호로 만들어줌. 이와 같은 아날로그 신호의 디지털신호처리는 다음 그림과 같이 나타낸다. 이 강의에서는 : A/D 변환기의 원리. A/D 변환기에서 중요하게 고려하여야 할 샘플링 주기와 양자화에 대하여 살핀다. D/A 변환기의 원리를 구현 하드웨어를 통하여 살펴본다. 덧셈기 구현 곱셈기 구현 지연소자 구현(하드웨어 구현을 게이트 레벨에서 살핀다.) 이와 같은 게이트가 트랜지스터 레벨과 실제 layout 레벨에서 어떻게 구현되는지 살펴본다. 그림 4-1. A/D변환기, 디지털 신호처리, D/A 변환기

그림 4-3. 샘플/유지기 출력과 램프전압 발생기의 출력 A/D 변환기 아날로그 신호를 비트로 구성되는 디지털 신호로 변환하는 A/D 변환기에는 카운터형 A/D 변환기, 시그마-델타 A/D 변환기 등 여러 가지 방식이 있다. 원리를 이해하기 위하여 다음 그림의 카운터형 A/D 변환기를 살펴본다. 샘플/유지기(sample-hold)는 샘플한 신호를 샘플링 주기 동안 유지하게 된다. 따라서 샘플/유지기의 출력은 다음 그림의 횡직선과 와 같다. 그림 4-2. 카운터형 A/D 변환기 그림 4-3. 샘플/유지기 출력과 램프전압 발생기의 출력

램프전압 발생기 샘플링 구간의 시작점에서 0볼트부터 시작하여 직선으로 증가하는 램프전압을 발생시킨다. 그림과 같은 연산 증폭기(OP Amp)를 이용한 하드웨어를 사용하여 구현 할 수 있다. 연산 증폭기의 증폭도는 증폭기 입력부의 저항과 귀환부의 저항의 비 와 를 고정시키고 디지털 신호의 크기에 의한 을 조정하면 디지털 신호의 크기에 비례하는 의 아날로그 신호를 얻을 수 있다. 는 1 볼트로 고정하고 입력은 4비트로 표현된 2진 코드로 가정해보자. 따라서 0000이 가장 작은 입력이고 1111이 가장 큰 입력이다. 그림 4-4. 연산 증폭기를 사용한 램프전압 발생기

│표 4-1│ 그림 4-4의 4비트 램프전압 발생기의 출력 1000이 입력되면 램프전압 발생기의 출력은 어떻게 되는지 살펴보자. 입력의 MSB(most significant bit)가 위의 램프전압 발생기의 S1에 연결되어 1이면 스위치를 닫게 만들고 0이면 스위치를 열도록 조정한다. 이런 방식으로 스위치를 조정하므로 입력의 LSB(least significant bit)는 S4의 스위치를 조정한다. 1000의 디지털 신호가 입력되면 S1의 스위치만 닫히고 S2부터 S4까지의 스위치는 모두 열림. 입력부의 저항 은 R/8이 된다. 램프전압 발생기의 출력은 다음과 같다. 0000부터 1111까지 증가시키면 램프전압 발생기의 출력은 0부터 0.9375 볼트까지 순차로 증가. │표 4-1│ 그림 4-4의 4비트 램프전압 발생기의 출력

램프전압 발생기 4비트 표현된 디지털 신호는 0~1 volt를 16으로 균등하게 구분한 어느 한 레벨로 변환된다. 램프전압 발생기의 S1부터 S4까지의 스위치에 증가 카운터(up counter)를 사용하여 입력 비트를 0000부터 1111까지 증가하도록 제어하면 위의 표 4-1의 차례로 증가하는 램프전압 출력을 얻을 수 있다. 이 출력이 바로 그림 4-3의 사선으로 증가하는 램프신호가 된다. 즉, 그림 4-4의 램프전압 발생기에서  0000부터 1111까지를 차례로 입력시키면 출력은 0 볼트부터 0.9375 볼트까지의 램프전압을 발생. [예제 4.1] 그림 4-4의 램프전압 발생기에서 S1S2S3S4=1100이다. 출력이 0.75 볼트가 됨을 보이시오. (풀이) 입력부의 저항은 다음과 같이 구할 수 있다. 이렇게 만들어진 샘플/유지기의 출력과 램프전압 발생기의 출력이 비교기의 입력으로 들어간다. 비교기는 기준 전압인 샘플/유지기의 전압과 램프전압 발생기의 출력 값을 비교하여 램프전압 발생기의 출력 값이 샘플/유지기의 전압과 같아지는 순간에 2진 카운터를 중지시키는 펄스를 발생. 그림 4-2의 2진 카운터는 0000부터 1111까지 16 단계를 증가하는 카운터이며 비교기가 발생시킨 펄스에 의해서 중지된다. 이 중지된 순간의 카운터 값이 비트로 표현된 디지털 신호가 된다. 따라서 카운터의 출력은 의 레벨에 비례하는 양자화된 디지털 신호가 된다. 이와 같은 A/D 변환기를 설계할 때에 두 가지를 고려 : 샘플링 주기와 양자화의 크기.

샘플링 주파수 나이퀴스트 샘플링 주파수 아날로그 신호 x(t)를 샘플링할 때에 그 샘플링 주기는 어떻게 결정해야 할까? 샘플링 후의 스펙트럼은 아날로그의 스펙트럼이 반복됨을 보았다. 다음 그림과 같은 최대 주파수가 4000 Hz인 음성의 아날로그 신호와 그 스펙트럼을 다시 살펴보기로 하자. 그림 4-5. 샘플링의 모델 그림 4-6. 음성신호의 샘플링 주기 결정

샘플링 주파수 위의 그림 (a)에서 최대 주파수는 이므로 각주파수로 표현하면 . 이 아날로그 신호를 디지털 신호로 만들기 위한 중간 단계인 임펄스 트레인 신호로 표현하기 위해서 샘플링 주기를 최대주파수의 2배인 8000 Hz의 임펄스 트레인을 곱해보자. 이 때에 Hz의 단위에 대해서 주의해야 한다. 즉, 아날로그 신호의 주파수 표현단위도 Hz이고 디지털 신호로 만들기 위해서 샘플링하는 주기의 단위도 Hz이다. 샘플링 주기에서 사용하는 Hz는 1초에 8000번을 샘플링한다는 의미이다. 따라서 샘플링 주기는 T=1/8000초이다. 아날로그 신호를 임펄스 트레인 신호로 표현하면 그 스펙트럼은 그림 4-5의 (b)와 같이 반복되며 주기는 . 이 임펄스 트레인 신호를 디지털 신호로 표현하면 주파수 축은 1/T로 스케일링되어 그림 (c)와 같게 된다. 그림 (b)와 (c)에서 보듯이 아날로그 신호의 스펙트럼 정보가 그대로 유지되고 있음. 이와 같이 아날로그 신호의 최대 주파수 성분을 알고 있을 때 그 주파수의 두 배 이상으로 샘플링하면 원래의 주파수 스펙트럼이 보존. 이 식에서 을 나이퀴스트 샘플링 주파수(Nyquist sampling frequency). 그림 (c)에서 보듯이 아날로그 주파수인 4000 Hz의 최대 주파수 성분이 디지털 주파수 로 매핑. 따라서 디지털 신호의 스펙트럼을 관찰할 때에 지점의 정확한 의미는 원래의 아날로그 신호에 대한 샘플링 주파수를 알아야 결정.

앨리어싱 아날로그 신호의 스펙트럼이 무한대의 고주파수 성분을 포함하고 있으면, 샘플링하여 디지털 신호를 얻을 때에 주파수 영역에서의 반복되는 성분과의 겹치는 현상을 피할 수 없다. : 앨리어싱(aliasing) 위의 그림에서 샘플링 각 주파수 를 어떻게 결정하더라도 앨리어싱이 발생한다. 앨리어싱으로 왜곡된 스펙트럼으로부터 원래의 아날로그 신호를 복원하기 어렵게 된다. 나이퀴스트 샘플링 주파수보다 낮은 주파수로 샘플링하는 경우에도 앨리어싱이 생긴다. : 샘플링 주파수가 결정된 경우에 앨리어싱이 생기지 않도록 하기 위해서는 원래의 아날로그 신호를 대역제한(band limited)시킨 후에 샘플링. 나이퀴스트 샘플링 주파수로 샘플링하는 것이 가장 경제적인 샘플링 나이퀴스트 샘플링 주파수보다 낮게 샘플링하면 앨리어싱 발생. 나이퀴스트 샘플링 주파수보다 높게 샘플링하면 샘플링의 수가 많아져서 비경제적. 그림 4-7. 샘플링의 모델

그림 4-8. 아날로그 신호로부터 디지털 신호를 얻는 수학적 모델 양자화 2의 보수형 양자화기 아날로그 신호는 그림과 같이 샘플링을 통하여 이산신호가 되며 양자화기를 통하여 디지털 신호로 변환. 개념적인 모델이며 실제로 A/D 변환기에서는 그림처럼 두 개의 블록으로 나누어서 변환되는 것은 아니다. 양자화기에서 양자화 샘플(quantized sample)은 다음과 같이 나타낸다. 일반적으로 이산신호 x[n]의 범위를 에서 으로 표현한다. 보통 -1.0에서 1.0까지의 값을 갖는 것으로 간주하는 것이 편리하다. 그림 4-8. 아날로그 신호로부터 디지털 신호를 얻는 수학적 모델

양자화 : 3비트 버림 양자화 3비트로 나타낼 수 있는 종류는 8개이므로 양자화 계단크기(step size) 는 2/8=0.25 표와 같이 -1.0부터 1.0까지를 0.25의 계단크기로 분할하여 000부터 111까지의 2의 보수형 2진 코드를 할당. 오디오 신호를 A/D 변환하는 경우 양자화기에서는 보통 16비트 정도를 사용해서 디지털 신호로 변환한다. 1000 0000 0000 0000(=-1)부터 0111 1111 1111 1111( 1)의 2의 보수형 2진 비트로 변환된다. hexa-decimal 표현을 사용하여 8000(=-1)부터 7fff( 1)의 2의 보수형 2진 비트 표기가 많이 사용. B+1 비트의 2진 부호를 사용하면 개의 레벨을 나타낼 수 있다. 따라서 에서 까지의 값을 갖는 이산신호를 B+1비트로 양자화하면 양자화 계단크기 는 다음과 같다. │표 4-2│ 버림 양자화(3비트의 2의 보수형)

양자화 : 3비트 버림 양자화 버림 양자화의 경우에 이산신호에 대한 디지털 신호의 변환 함수. 표 4-2와 같이 양자화된 코드는 다시 D/A 변환될 때에 다음 표 4-3의 값을 의미한다. 버림 양자화의 경우에 이산신호에 대한 디지털 신호의 변환 함수. │표 4-3│ 2진 코드의 값(B=2인 경우) 그림 4-9. 3비트(B=2) 버림 양자화 변환 함수

양자화 : 3비트 버림 양자화 레벨은 9개이나 2진 코드로 나타낼 수 있는 종류는 8개이므로 1.0의 값은 복원시킬 수 없다. 2진 코드의 비트 수를 늘이면 이 영향은 매우 작아진다. (B+1)비트의 2의 보수형 수를 다음과 같이 나타내보자. 이 2의 보수형 수는 다음의 값을 의미한다.   [예제 4.1] 다음의 2의 보수형 수의 값을 구하시오.                 (a) 0111                 (b) 1111 (풀이) (a) 0111=(1)(0.5)+(1)(0.25)+(1)(0.125)=0.5+0.25+0.125=0.875 (a) 1111=-(1)(1)+(1)(0.5)+(1)(0.25)+(1)(0.125)=-1+0.5+0.25+0.125=-0.125

양자화 : 3비트 반올림 양자화 버림 양자화기에서는 0~0.25를 000(=0)으로 변환. 반올림 양자화기는 -0.125~0.125를 000(=0)으로 변환. 반올림 양자화기(rounding quantizer) : 000부터 111까지의 비트를 할당. │표 4-4│ 반올림 양자화(3비트의 2의 보수형) 그림 4-10. 3비트(B=2) 반올림 양자화 변환 함수

버림 양자화 에러(Truncation quantization error) 이산신호에서 양자화된 디지털 신호를 뺀 값을 양자화 에러로 정의. 이 양자화 에러를 얼마나 허용하는 A/D 변환기를 설계해야 하는가는 중요한 문제. 고음질의 오디오 신호처리의 경우에 이 양자화 에러를 매우 작게 해야 하므로 16~20의 비트를 사용. 상대적으로 정보 전달에 비중을 두는 음성 처리의 경우에는 8~14 비트를 사용. 각각의 샘플에서 발생되는 양자화 에러의 범위 양자화 계단크기(quantization step size) 를 사용하여 다음과 같이 나타낼 수 있다. 양자화 에러는 확률변수(random variable)로 간주할 수 있으며 그림과 같은 잡음 모델로 표현. 그림 4-11. 양자화기의 잡음 모델

버림 양자화 에러(Truncation quantization error) 확률밀도 함수(probability density function, pdf) 0 에서부터 사이에 분포할 확률이 일정하므로 확률밀도 함수는 다음 그림과 같다. 확률의 총합은 1 이 되어야 하므로 확률밀도 함수의 적분은 1 이 되어야 한다. 따라서 그림에서 보듯이 확률밀도 함수의 크기는 항상 이 됨. (1) 평균값(mean) 그림 4-12 에서 보듯이 버림 양자화 에러의 평균값은 양자화 계단크기의 반과 같다. 그림 4-12. 버림 양자화기의 확률밀도 함수

버림 양자화 에러(Truncation quantization error) (2) 분산(variance) 확률변수의 분산은 평균값을 중심으로 확률변수가 변동하는 정도를 나타내며 정의에 의해 구할 수 있다. 이 결과를 에 대입하면 다음과 같이 분산을 양자화 계단크기로 나타낼 수 있다. B+1 비트로 양자화하는 경우에, 분산을 B로 다음과 같이 나타낼 수 있다.

반올림 양자화 에러(Rounding quantization error) 각각의 샘플에서 발생되는 양자화 에러의 범위 : 양자화 계단크기 를 사용하여 다음과 같이 나타낼 수 있다. 확률밀도 함수 반올림 양자화 에러는 에서부터 사이에 분포할 확률이 일정. 확률의 총합은 1 이 되어야 하므로 확률밀도 함수의 적분은 1 이 되어야 한다. 따라서 그림에서 보듯이 확률밀도 함수의 크기는 항상 이 됨. (1) 평균값 그림 4-13 에서 보듯이 반올림 양자화 에러의 평균값은 다음과 같다. 그림 4-13. 반올림 양자화기의 확률밀도 함수

반올림 양자화 에러(Rounding quantization error) (2) 분산 평균값이 0이므로 반올림 양자화 에러의 분산은 다음과 같다. B+1 비트로 양자화하는 경우, 분산은 다음과 같이 버림 양자화 에러의 경우와 같다. 신호대잡음비(SNR, Signal-to-Noise Ratio) 원 신호에 대한 양자화 에러의 비율을 정량적으로 나타내는 도구 신호대 잡음비의 정의 : 원 신호의 분산 에 대한 양자화 에러의 분산 의 비이다.

반올림 양자화 에러(rounding quantization error) B+1 비트로 양자화하는 경우의 분산은 버림이나 반올림의 경우 모두 같으므로 신호대잡음비는 다음과 같이 나타낼 수 있다. 실무에서는 을 많이 사용한다. 따라서 다음과 같이 간단한 형의 신호 대 잡음 비를 사용하기도 한다. [예제 4.2] 10 비트를 사용하여 양자화하는 경우에 신호대잡음비를 구하시오. (풀이) 10 비트의 경우 B는 9이므로 신호대잡음비는 다음과 같다.

그림 4-14. 변환기의 구조와 신호 (a)D/A 변환, (b)샘플/유지기 디지털 시스템에서 처리된 출력신호는 비트로 저장된다. 이와 같이 비트로 저장된 디지털 신호를 아날로그 신호로 변환하기 위해서는 D/A 변환기가 필요. D/A 변환기는 다음 그림과 같이 구성된다. 위의 그림에서 비트로 표현된 디지털 신호는 D/A 변환과 샘플/ 유지기를 통해 아날로그 신호로 변환. 그림 4-14. 변환기의 구조와 신호 (a)D/A 변환, (b)샘플/유지기

D/A 변환기 연산 증폭기를 이용한 D/A 변환기. 다른 점은 연산 증폭기를 사용한 램프전압 발생기에서는 S1~S4의 스위치에 카운터 출력을 연결하지만 D/A 변환기에서는 비트로 저장된 디지털 신호가 연결한다. 입력부의 저항을 구하는 방법은 연산 증폭기를 사용한 램프전압 발생기의 경우와 같다. 위의 D/A 변환기의 출력은 샘플/유지기를 거쳐서 아날로그 신호가 된다. 이 아날로그 신호에서 고주파수를 제거하기 위해서 다음 그림과 같은 아날로그 저역통과 필터를 사용. 그림 4-15. 연산 증폭기를 이용한 D/A 변환

그림 4-16. 샘플/유지기의 출력으로부터 아날로그 신호의 복원 D/A 변환기 위의 스펙트럼을 다음과 같이 역 CTFT하여 아날로그 임펄스 응답을 구하여야 한다. 그림 4-16. 샘플/유지기의 출력으로부터 아날로그 신호의 복원 그림 4-17. 고주파 제거용 필터의 임펄스 응답

디지털신호처리의 구현 구현방법 : Hard-wired 구현과 DSP 프로세서를 사용한 구현으로 나눌 수 있다. 복잡한 연산이 요구되는 경우에는 프로세서를 사용하는 방식이 주로 사용. 간단한 연산이지만 매우 빠른 연산이 요구되는 경우에는 hard-wired 방식이 주로 사용. 음성압축 알고리즘인 CELP(Code Excited Linear Predicted coding) 는 연산이 매우 복잡하므로 DSP 프로세서를 사용하여 구현하는 것이 일반적. H.264 와 같은 비교적 간단하지만 매우 빠른 연산 속도를 요구하는 알고리즘은 hard-wired 방식이 사용. MP3 와 같은 오디오 알고리즘은 두 가지 방식 모두 사용.  디지털신호의 값을 표현하는 세 가지 방식(8 비트로 표기되는 샘플) 01001100 : binary 표기방식 4C       : hexadecimal 표기방식 0.59375   : 일반표기방식 이론적인 전문서적에서는 세 번째 방식이 널리 사용. 실제 저장되는 비트로 표현하는 경우에는 binary 표기방식이 사용. 비트의 길이가 긴 경우에는 hexadecimal 표기방식이 많이 사용. 예를 들어 오디오 샘플들은 주로 16 비트의 정세도로 처리되므로 샘플들을 나타내는데 5F3B 등과 같이 4 개의 hexadecimal 로 표현.

덧셈기 구현 Hard-wired 구현은 실제로 하드웨어를 사용하여 구현하는 방법으로서 주로 반도체 집적회로를 사용하여 구현하는 방식 집적회로로서 CMOS(Complementary Metal Oxide Silicon) 기술이 많이 사용 덧셈기, 곱셈기, 지연소자가 논리회로로는 어떻게 표기되며 반도체 집적회로로 어떻게 구현되는지 알아보자. 덧셈기(adder)는 디지털신호처리 시스템의 주요 소자이며, 곱셈기(multiplier)를 제작하는 데에도 많이 사용. a[n]과 b[n]을 더하여 s[n]을 만드는 덧셈기 : 신호 a[n]과 b[n]이 각각 8비트의 binary number로 가정하면, 다음과 같이 덧셈이 이루어진다.                                0 0 1 0 0 1 0 1                             + 0 1 0 0 1 1 1 1                                  0 1 1 1 0 1 0 0 위의 덧셈에서 보듯이 두 개의 8비트 신호를 더하려면 LSB용으로 1개의 half adder가 필요 7개의 full adder가 필요

덧셈기 구현 Half adder의 하드웨어 LSB의 두 개의 입력을 더하여 sum과 carry를 만듬. 진가표(truth table)는 다음 표와 같다. 표 4-5의 진가 표에서 보듯이 sum과 carry를 만들기 위한 연산은 다음과 같다. │표 4-5│ half addert용 진가표 그림 4-18. half adder의 논리회로 구현

덧셈기 구현 Full adder의 하드웨어 LSB를 제외한 비트들의 구현은 하위비트에서 올라 온 carry ci-1와 ai와 bi 를 더하는 full adder. 진가표(truth table)는 다음 표와 같다. 표 4-6 진가표의 와 를 만들기 위한 연산은 다음과 같다. │표 4-6│ full adder용 진가표

덧셈기 구현 위의 연산을 구현하기 위한 논리회로는 다음 그림과 같다. 그림 4-19에 사용되고 있는 AND 게이트는 실제로 NAND 게이트와 인버터로 제작되며, OR 게이트도 역시 NOR 게이트와 인버터로 구성된다. 그림 4-19. full adder의 논리회로 구현

덧셈기 구현 인버터, NAND 게이트, NOR 게이트의 CMOS 트랜지스터를 사용한 표현. (a)인버터 (b)NAND 게이트 (C)NOR 게이트 그림 4-21. CMOS 반도체 구현 (a)인버터 (b)NAND 게이트 (c)NOR 게이트

곱셈기 구현 : 쉬프트와 덧셈기를 사용하여 구현하는 방식 신호 x[n]=0.625와 필터계수 0.375가 곱해지면 결과는 다음과 같다. 위의 값들이 8비트로 구성되었다고 가정하면 다음과 같이 binary 연산으로 표현할 수 있다. 이 곱셈은 다음과 같이 두개의 곱셈으로 분해될 수 있다.                (a)                       (b)                       (c)         0 1 0 1 0 0 0 0          0 1 0 1 0 0 0 0         0 1 0 1 0 0 0 0    × 0 0 1 1 0 0 0 0       × 0 0 1 0 0 0 0 0      × 0 0 0 1 0 0 0 0        0 0 0 1 1 1 1 0   =      0 0 0 1 0 1 0 0    +    0 0 0 0 1 0 1 0 (b)의 연산은 01010000의 피승수를 우로 2비트 쉬프트시키면 된다. (c)의 연산은 피승수 01010000을 우로 3비트 쉬프트시키면 된다. 쉬프트된 각각의 값을 더하면 00011110이 계산된다. 그림 4-22에서 우로 쉬프트는 >>n으로 표기하였으며 n은 쉬프트되는 양을 나타낸다. 아무리 많은 비트로 표기되는 2진수의 곱셈 계산도 위와 같이 쉬프트와 덧셈기를 이용하여 쉽게 구현될 수 있다. 그림 4-22. 쉬프트와 덧셈기를 이용한 x[n]×00110000의 구현

곱셈기 구현 : Braun 곱셈기 승수가 변하는 경우의 곱셈기로서 병렬처리를 통해 고속으로 곱셈연산을 수행 승수와 피승수가 모두 4비트인 경우 그림 4-23. Braun 곱셈기의 회로도(4X4)

곱셈기 구현 : Serial 곱셈기 곱셈기의 구현면적을 줄이기 위하여 한 번에 하나의 Partial product를 구하여 반복하는 Serial 곱셈기를 알아보기로 한다. 다음과 같이 Multiplicand(피승수) 01011101과 Multiplier(승수) 01101010을 곱하는 경우를 보자.                          위에서 보듯이 순차적으로 8 개의 Partial product 가 발생한다.

곱셈기 구현 : Serial 곱셈기 Serial 곱셈기의 하드웨어 구조 ALU 가 동작하는 클록이 라고 가정하면 곱셈연산을 완료하는데 총 가 소요. Multiplier 의 LSB 부터 ALU 를 제어하는데 사용된다. 즉, Multiplier 의 비트가 1 이면 Multiplicand 를 입력시키고 0 이면 블로킹하여 Multiplicand 대신에 0을 입력시키도록 제어. 마다 출력되는 ALU 출력이 Partial product 이며 다음 Partial product 와 더해지기 전에 Shifter가 값을 우로 1 비트 shift 시킨다. 이렇게 가 지나면 완전한 곱셈연산이 끝나게 되어 그림의 스위치를 출력 쪽으로 스위칭. 그림 4-24. Serial 곱셈기의 블록도

곱셈기 구현 : Modified Booth 곱셈기 Booth algorithm 곱셈을 수행할 때 , 승수의 값이 0인 자리들에 대해서는 그 곱을 더 할 필요 없이 쉬프트만 함. 에서 까지의 값이 1인 자리들은 과 동등하게 취급할 수 있다. Booth 곱셈기는 곱셈 연산을 고속으로 처리하며 구현 하드웨어 복잡도도 감소시킬 수 있다. 예를 들면 승수가 인 경우에 과 같이 표현할 수 있다. 1의 수가 구현비용과 비례하므로 4개에서 2개로 감소. 그러나 이 방법은 승수 Y가 계속 변하는 경우에 구조가 균일하지 않아서 오히려 구현비용이 증가할 수도 있다. 이러한 단점을 보완하여 Partial product의 수도 감소하며 균일한 구조를 만들 수 있는 Modified Booth 곱셈기에 대하여 알아보자. 승수가 다음과 같이 i+1 비트인 경우를 보자. 승수 Y의 비트들을 세 비트씩 하나의 그룹으로 묶는데 옆 그룹과는 한비트씩 공유한다. 자릿수를 맞춰주기 위해 LSB에 0을 추가한다. 예를 들어 승수가 8 비트인 경우에 4개의 그룹이 만들어진다. 이 경우에 일반적으로 최대 8개의 Partial product가 만들어지는데 반하여 4개의 Partial product로 줄일 수 있게 된다.

곱셈기 구현 : Modified Booth 곱셈기 그림 4-25. 승수 Y의 case 별 Partial product Modified Booth의 원리 : 승수를 3비트로 묶었으므로 그림 4-25와 같이 8개의 경우가 있다. <case 1> 000인 경우의 Partial product는 0X가 된다. <case 2> 001인 경우에 1의 오른쪽에 1이 있으면 010 이 되고 오른쪽에 0이 있어도 이 되므로 Partial product 는 1X가 된다. <case 3> 010인 경우의 Partial product는 1X가 된다. <case 4> 011인 경우에 이 되므로 Partial product는 +2X가 된다. <case 5> 100인 경우에 이 되므로 Partial product는 -2X가 된다. <case 6> 101인 경우에 이 되므로 Partial product는 -2X+1X=-1X가 된다. <case 7> 110인 경우에 이 되므로 Partial product는 -1X가 된다. <case 8> 111인 경우에 이 되므로 Partial product는 0X가 된다.

곱셈기 구현 : Modified Booth 곱셈기 8bit × 8bit 의 예 : 0.4140625(00110011)와 0.8203125(01001101)를 곱하는 연산 위의 예제에서 보듯이 4개의 Partial product가 발생함. 이 4개의 Partial product를 더하면 최종 곱셈연산의 결과인 0.3396606445(0001010110111101)가 얻어짐. 위의 연산에서 점선의 왼쪽 부분은 Sign Extension의 연산을 나타내었다.(많은 덧셈연산이 필요함.) Sign Extension의 연산에 필요한 덧셈기를 줄이기 위하여 다음과 같은 Sign Extension 연산방법이 제안 첫 번째 Partial Product의 두 비트는 Sign 비트를 카피한다. 두 번째 Partial Product의 두 비트의 extension 중에서 우측의 은 바로 우측 비트와 그 우측 비트의 위 비트와의 exclusive OR 출력을 사용. 좌측의 는 OR 출력을 사용하여 구한다. (식으로 나타내면 다음과 같고 j는 Partial Product의 순서)

곱셈기 구현 : Modified Booth 곱셈기 Modified Booth 알고리즘을 사용하는 병렬 Modified Booth 곱셈기의 전체 구조(8bit의 승수와 피승수인 경우) Y를 리코드 하는 Modified Booth encoder 블록. 각각의 Partial Product를 더해주는 Wallace tree 블록. 최종적으로 Wallace tree의 결과를 더해주는 Adder 블록으로 구성. 그림 4-26. 8bit × 8bit Modified Booth 곱셈기 블록도

곱셈기 구현 : Modified Booth 곱셈기 Modified Booth Encoder의 세부 구조 : Multiplicand와 Multiplier가 각각 8비트. 승수(Multiplier) Y 가 3 비트씩 묶여서 각각의 D1 블록으로 들어감. X(Multiplicand) 는 0, +X, -X, +2X, -2X 중 한 가지가 선택되어 Partial product 가 계산된다. 그림 4-27. Modified Booth Encoder의 세부 구조

곱셈기 구현 : Modified Booth 곱셈기 Y의 3비트를 5가지 경우로 분리하는 회로는 그림 4-28(b)의 D1 블록과 같다. 5가지의 경우에 대하여 0, +X, -X, +2X, -2X 중 한 가지를 선택하는 Partial product를 계산하는 블록이 그림의 D2 블록. 이렇게 만들어진 Partial product 가운데 -X나 -2X는 완전한 Partial product가 아니다. 즉, 부호를 바꾸기 위해서는 각각의 비트를 반전시킨 후에 1을 더해주어야 하기 때문이다. 따라서 이 두 경우에 대하여 LSB에 1을 더해주는 회로가 그림 4-27의 A블록이다. 그림 4-28. Modified Booth encoder의 세부 블록도 (a)D2블록 (b)D1블록

곱셈기 구현 : Modified Booth 곱셈기 Wallace Tree 구해진 Partial Product는 두비트씩 shift되면서 서로 더해지게 된다. 이때 캐리 연산에 의해 속도가 제한되는 것을 막기 위해 CSA(Carry Save Adder)를 사용한다. CSA는 FA(Full adder)를 2개를 사용하여 CSA을 구성하여 사용한다. 4:2 CSA의 구조는 그림과 같다. 4개의 입력을 받아서 두 개의 출력인 S, C를 출력하고, 또 다른 입력과 출력인 Cin과 Cout은 다음 단으로 넘어가는 것이 아니고 현재의 부분 곱 가산 단에서 처리되는 신호들이므로 4:2 CSA의 전체 입출력에는 포함시키지 않음. 그림 4-29. Full Adder를 사용한 4:2 CSA의 구조 그림 4-30. 4:2 CSA를 사용한 Wallace tree와 Final adder

그림 4-31. 4:2 CSA를 사용한 Wallace tree와 Final adder 지연소자 구현 디지털필터를 구현하기 위해서는 입력신호 x[n]의 지연된 과거 값들이 필요. 예를 들어 6탭 FIR 필터의 경우에 x[n-1]부터 x[n-5]까지의 5개의 과거 입력신호 값들이 출력계산에 필요. 과거의 입력신호 값들이 데이터를 저장해두는 장치인 레지스터에 보관되어 있다면 특별한 하드웨어가 필요치 않으며, 단지 적당한 레지스터용 어드레스에 의해서 보관된 데이터를 곱셈기의 입력 단으로 가져오면 된다. 그러나 출력계산에 필요한 신호들이 보관되어있지 않으면 쉬프트 레지스터 등의 하드웨어를 사용하여 다음 그림과 같이 과거의 신호들을 지연시키면서 보관하여야 한다. 그림에서 보듯이 쉬프트 레지스터는 데이터를 일정한 방향으로 이동시키는 레지스터를 말한다. 그림 4-31. 4:2 CSA를 사용한 Wallace tree와 Final adder

그림 4-32. D 플립플롭을 사용한 쉬프트 레지스터의 구현 그림 4-33. 논리 게이트를 사용한 D 플립플롭의 블록도 지연소자 구현 입력신호를 지연시키기 위하여 D 플립플롭을 사용하여 쉬프트 레지스터를 제작하면 그림과 같다. 그림은 한 비트에 대한 지연소자들을 나타내고 있음. 입력신호의 정세도가 4 비트면 그림의 회로가 4 개가 필요하게 된다. 그림 4-32에서 사용되고 있는 D 플립플롭을 인버터와 트랜스미션 게이트를 사용하여 구성. 그림에서 보듯이 D 플립플롭은 간단히 인버터와 트랜스미션 게이트로 구성할 수 있음. 그림 4-32. D 플립플롭을 사용한 쉬프트 레지스터의 구현 그림 4-33. 논리 게이트를 사용한 D 플립플롭의 블록도

그림 4-34. 1개의 곱셈기를 사용한 6탭 FIR 필터의 구현 Hard-wired 구현 FIR 필터 구현 곱셈기의 하드웨어 크기가 매우 크므로 곱셈기의 수를 특히 고려하여 구현하는 경우가 많다. 곱셈이 6개가 필요한 6탭 FIR 필터를 6개의 곱셈기를 사용하는 구현하면 그림 4-23과 같다. 1개의 곱셈기를 사용하는 구현은 다음 그림 4-26과 같다. 입력신호가 1μsec 마다 들어온다고 가정하면 그림 4-23 의 곱셈기들은 1MHz 의 클럭으로 동작하면 된다. 4-26의 곱셈기는 이보다 6 배 빠른 6MHz 의 클럭으로 곱셈이 수행되어야 함. 그림 4-26 과 같은 구조에서는 MAC(Multiplication and Accumulator) 이라고 불리는 곱셈기가 사용(MAC 은 곱셈의 결과가 계속 누적되면서 이전의 곱셈결과와 더해지는 하드웨어) 그림 4-34. 1개의 곱셈기를 사용한 6탭 FIR 필터의 구현

DSP 프로세서를 사용한 구현 DSP 알고리즘을 수행하는 칩을 탑재한 전자제품들이 일반화되면서 알고리즘 개발 및 완제품 칩 개발을 쉽게 하기 위한 DSP 프로세서가 많이 사용. 강력한 MAC 엔진을 탑재하고 있으므로 곱셈이 많이 들어간 알고리즘을 쉽게 구현하도록 설계된 VLSI 칩. 분류 : 부동소수점(Floating Point) DSP 와 고정소수점(Fixed Point) DSP. 부동소수점 DSP : 데이터를 Mantissa 와 exponent 로 나누어 계산하는 방식. 고정소수점 DSP : 소수점의 위치를 고정시켜서 계산하는 방식. VLSI 집적도의 괄목할만한 발전으로 여러 개의 곱셈기를 탑재한 DSP 프로세서들도 등장. 여러 반도체 회사들이 이와 같은 DSP 칩을 ASIC으로 상업화. TI의 TMS320C 시리즈. 모토롤라의 5600 시리즈 등. MIPS(Mega Instruction Per Second) : DSP 프로세서의 속도 표현 100 MIPS 의 DSP : 1 초에 1 억 번의 명령어를 수행한다. 곱셈이 한 개의 명령어로 수행되므로 이 프로세서는 1 초에 1억 번의 MAC 연산을 수행할 수 있다. [예제 4.3] 1 초에 44100 개의 입력 샘플이 100 MIPS 의 DSP 프로세서로 입력되고 있다. 이 프로세서가 실시간으로 구현할 수 있는 FIR 필터의 탭수를 구하시오. (풀이) 1 초에 1 억 번의 명령어를 수행할 수 있는데 1 초에 44100 개의 입력신호가 들어오므로 다음의 입력신호가 들어올 때까지의 명령어의 수는 다음과 같다. 2267 개의 명령어가 새로 입력되는 신호 전에 수행되므로 2267 탭의 FIR 필터를 실시간으로 구현.

DSP 프로세서를 사용한 구현 <DSP 프로세서를 사용한 칩 개발 순서 : 휴대폰용 DSP 칩을 개발하는 예.> (1) 알고리즘 개발 Floating point 시뮬레이션 : 휴대폰용 칩에서 수행되어야 하는 알고리즘들을 먼저 결정한다. 음성압축 알고리즘으로서 CELP. 오디오압축 알고리즘으로서 MP3 알고리즘. 음성인식 알고리즘으로서 DTW(Dynamic Time Wrap) 알고리즘이 수행된다고 가정. 일련의 디지털신호처리로서 표현되는 알고리즘을 개발하는 과정에서는 일반적으로 C 프로그램을 사용. Integer 시뮬레이션 : 이렇게 완성된 프로그램을 사용하여 칩 개발을 하기 위하여 DSP 프로세서를 결정하여야 한다. 만일 고정소수점 DSP 프로세서를 사용하기로 결정되면, 고정소수점용으로 C 프로그램을 다시 수정. 즉, 16 비트 고정소수점 DSP 를 사용하는 경우에는 C 프로그램 상에서 모든 데이터의 크기를 16 비트로 고정시키고 연산도 DSP 프로세서와 동일하게 16 비트 연산을 하도록 시뮬레이션. 이렇게 연산된 고정소수점 시뮬레이션의 결과는 나중에 DSP 프로세서를 통하여 연산되는 결과와 같아야 한다. DSP 시뮬레이션 : 시뮬레이터를 사용하는 방법과 Emulator 를 사용하는 방법. Emulator 를 사용하는 방법 : 그 DSP 프로세서가 탑재된 Emulator 를 호스트 PC 에 연결하여 알고리즘의 코드를 개발하는 real time 시뮬레이션 방식. 시뮬레이터를 사용하는 방법 : DSP 프로세서 회사에서 제공하는 시뮬레이션 프로그램을 호스트 PC 의 CPU 를 사용하여 시뮬레이션 하는 non real time 방식. 이 예제의 경우에는 음성압축 전문가, 오디오신호압축 전문가, 음성인식 전문가가 각각의 알고리즘들을 개발.

DSP 프로세서를 사용한 구현 (2) 프로토타이핑 각각의 수행 알고리즘 개발이 끝나면 실제의 칩과 거의 같은 환경에서 시뮬레이션하는 프로토타이핑 단계. 프로토타이핑 보드 설계 선정된 DSP 프로세서 탑재. 실제의 시스템에서 DSP 프로세서를 제어하는 마이크로 프로세서. DSP 프로세서와 연결되는 A/D 변환기와 D/A 변환기. MP3 압축파일 등이 저장되는 Flash 메모리 등을 모두 탑재. 일반적으로 DSP 프로세서는 External BUS 를 통하여 외부의 하드웨어와 연결되므로 External BUS 인터페이스를 FPGA 등으로 설계하여 프로토타이핑 보드에 탑재. 프로토타이핑 보드를 사용하여 DSP 프로그램을 완성. 이렇게 설계한 프로토타이핑 보드는 나중에 완성될 칩과 거의 같은 시스템. 이 환경 아래에서 각각의 알고리즘들이 결합되어 ROM에 들어갈 프로그램이 완성. 이 단계에는 시스템 프로그래밍 전문가와 하드웨어 보드제작 전문가가 필요. (3) 칩 개발 DSP 프로세서에 대한 반도체 설계 데이터는 이미 완성되어 있음. DSP 프로세서를 제외한 인터페이스 회로들을 VHDL 이나 Verilog 와 같은 RTL(Register Transfer Level) 코딩을 사용하여 설계 이 단계에서는 반도체 설계전문가와 칩 테스트 전문가가 필요. 설계한 RTL 코드와 DSP core 의 RTL 코드는 결합되어 검증프로그램을 통하여 검증되며, Tool 을 사용하여 반도체 layout으로 변환. 이렇게 생성된 반도체 layout 도 역시 검증 프로그램을 통하여 에러가 있는지 검증된 후에 반도체 공정을 통해 칩 제작 및 테스트.