[Circuit] Digital Delta-Sigma Modulator (DDSM, Digital-ΔΣM) - 1
Circuits/Digital

[Circuit] Digital Delta-Sigma Modulator (DDSM, Digital-ΔΣM) - 1

 

 

 

Digital ΔΣ Modulator는 Fractional-PLL, Audio-DAC 등등

예로부터 업계/학계의 많은 곳에서 사용되어왔다.

최근에는 Digital PLL/FLL, 심지어 Bio-signal ΔΣ ADC 등에까지 널리 사용되고 있다.

나도 이 친구를 Verilog로 RTL 짜고 합성 및 PnR 까지 해서 칩 측정도 해봤는데,

초반에 관련 지식을 습득하기가 상당히 까다로워서 고생했던 기억이 난다.

Input이 analog고 output이 oversampled digital stream인

ΔΣADC에 관한 자료는 널리고 널린 편이라고 봐도 무방한데,

(보통 ΔΣ modulator 강의하시는 교수님들은 ADC 얘기만 주로 하신다. KAIST 조성환 교수님 빼고.)

Input이 digital이고 output도 digital인

Digital ΔΣ Modulator에 관한 자료는 정말이지 너무나도 찾기가 어려웠다.

(나의 googling 실력이 부족한 탓인 걸지도)

 

 

 


 

 

 

Xilinx (자일링스) 자료 중 Verilog code가 공개된 것이 있긴 한데,

XAPP154 Virtex Synthesizable Delta-Sigma DAC v 1.1

위 예제는 output feedback digital ΔΣ modulator라서

physical 하게 implementation해야 하는 accumulator가 2개나 된다.

그러나, 수많은 회로논문들에서 찾아볼 수 있는 digital ΔΣ modulator는

한 개의 accumulator만 이용하는 방식이 대부분이다.

Hardware 적으로 이쪽이 훨씬 효율적이다.

 

 

 

하지만 .. 내가 이 분야를 처음 접할 때

이게 대체 무슨 원리로 어떻게 동작하는 것인지

공부할 기초 자료의 수집 자체가 꽤나 힘들었다.

이론적 배경 자체는 수많은 논문들에서 다뤄왔고

오랜기간 연구된 분야이기는 한데,

어째 오래된 분야일수록 사람들이

기초적인 내용은 논문에서 citation을 잘 안한다 ㅠㅠ

 

예전부터 내가 공부해오던 자료들을

다시 복습도 할겸 여기다가 좀 모아놓으려 한다.

 

 

 


 

 

 

Digital-ΔΣ modulator는 multi-bit의 input을

좀 더 낮은 bit로 바꾸면서도,

높은 bit의 resolution을 그대로 유지하는 것을

가능하게 해주는 circuit block이다.

낮은 수의 bit를 time축에 쭉 펼쳐놓은 후

averaging을 하는 과정을 통해 이것을 달성할 수 있지만,

word length가 짧아지기 때문에

당연히 quantization/truncation error가 생길 수 밖에 없다.

 

Digital-ΔΣ modulator는 ADC에서 사용하는

ΔΣ modulator와는 달리,

loop filter를 모두 digital-domain에서 처리할 수 있기 때문에

어떤 값의 coefficient를 가지는 loop filter든

perfect matching을 가지도록 구현하는 것이 가능하다.

 

이 때문에, analog ΔΣ modulator에서는 mismatch 때문에

(상대적으로) 구현을 꺼리는 Multi-StAge Noise SHaping (MASH)

architecture도 문제 없이 구현할 수 있다.

(보고 또 봐도 저 네이밍 센스는 참 뜬금없고 이상하다 ..)

단, loop filter coefficient는 되도록이면 2N으로 표현되도록

설정해야 정확하게 구현이 가능할 뿐만 아니라

bit-wise shifting을 이용하여 단순한 구현이 가능하기에

hardware complexity도 줄일 수 있다.

 

Digital accumulator. E는 quantization noise term을 뜻한다.

 

Digital-ΔΣ modulator의 가장 기본적인 block은 digital accumulator이다.

그냥 위와 같이 accumulator 하나만 있어도

1st-order noise-shaping이 일어난다.

이 때, modulator의 output은 overflow bit이며

accumulator의 output은 quantization error를 의미한다.

Modulator 회로가 그냥 accumulator 달랑 하나이기 때문에,

이거 자체가 stable 하다는 장점이 있다.

또한, 이 modulator stage들을 여러 개 이어붙여서

higher-order ΔΣ modulator (ex. MASH)를 만들 때

noise cancellation network을 구성해야 하는데,

이 network가 FIR filter여서 feedback loop이 존재하지 않으며

결과적으로 accumulator를 이용해 만든

MASH digital-ΔΣ modulator는 unconditionally stable하다.

 

R. Schreier, "Understanding Delta-Sigma Data Converters"

 

Digital accumulator의 loop을 좀 더 뜯어보면 위와 같이 생겼고,

위와 같은 architecture를 error-feedback modulator라 한다.

Accumulator의 overflow가 output이며 $Y$ 이고 input이 $X$ 인 상황인데,

accumulated data인 $X'$ 의 MSB만 똑 떼내어 $Y$ 로 계속해서 출력을 내주고 있다.

MSB만 똑 떼내어 출력에 보내면 이게 바로 중간 값과 비교한 후 quantizing (1-bit truncator)을 하는 회로가 된다.

MSB가 있고 없고의 차이는 2배이냐 아니냐의 차이이므로, 1/2을 기점으로 비교를 하는 것과 같기 때문이다.

이 때 quantization error $E$ 는 $Y-X'$ 이 되는데,

accumulator의 feedback loop은 summation 값을 feedback 시키므로,

feedback의 대상은 accumulated data에서 overflow를 뺀 값이 된다.

따라서, 그림에서 본다면 $H_{e}$ 라는 loop filter에 들어가는 녀석은 $X'-Y$, 즉 $-E$ 이다.

위 상황을 정리해보면 아래와 같은 식이 도출된다.

 

(모바일에서는 수식들이 LaTeX code로 표기됩니다. 데스크탑 버전으로 봐주세요.)

 

$$ X' = X-E\cdot H_{e}(z) \qquad E=Y-X' \\
\rightarrow Y = {X \over 2^{N}} + {1-H_{e}(z) \over 2^{N}}\cdot E $$

여기서 2N은 MSB truncation을 뜻한다. N-bit input X가 들어와서 1-bit output이 하나 나오므로 2N으로 나눠주는 것이다.

이 때, digital accumulator는 clocked operation을 하므로 $H_{e}$는 1-cycle delay가 되어야 한다.

이에 따라 $z^{-1}$ 이 대입될 수 있으며, 그 결과 식은 아래와 같이 1st-order noise-shaping term을 나타낸다.

$$ Y |_{H_{e}(z)=z^{-1}} = {X \over 2^{N}} + {1-z^{-1} \over 2^{N}}\cdot E $$
만약 $H_{e}$에다 $z^{-1}$ 대신 $z^{-1}(2-z^{-1})$ 이 들어간다면 식은 아래와 같이 2nd-order noise-shaping term을 나타낸다.
$$ Y |_{H_{e}(z)=2z^{-1}-z^{-2}} = {X \over 2^{N}} + {(1-z^{-1})^{2} \over 2^{N}}\cdot E $$

이 식이 바로 이 글 제일 위 사진에 나오는 2nd-order digital ΔΣ modulator에 해당한다.

 

 

 


 

 

 

그러나 .. 생각대로 잘 풀리면 좋겠으나 위와 같이 만든 후 simulation을 돌리고 spectrum을 보면

우리가 흔히 아는 noise-shaping graph가 보이질 않는다.

왜 그럴까? 그 이유는 다음 글에 설명하겠다.