이번글에서는 SAR-ADC 의 주요블럭인 CDAC의 unit capacitor 크기를 어떻게 결정해야 하는지 살펴보도록 하겠습니다. CDAC의 unit capacitor의 크기 결정을 위해서는 아래와 같은 사항들을 고려해야 합니다.
- 잡음 (Noise)
- SAR ADC 동작속도 (speed)
- 부정합 (Mismatch)
- 전력소모 (Power Consumption)
- 면적 (Area)
- 공정 (Process)
- 기생성분 (Parasitics)
짜증 나게 너무 많죠? 더욱 짜증나는 것은 이것들이 서로 복잡하게 trade off 관계에 있다는 거죠. 무언가 하나를 만족시키면 다른 것은 손해를 봐야하는 아주 복잡한 관계에 있습니다. 그렇다면, 어디에서 부터 시작해야 할까요?
기본적으로 두가지를 알고 있어야 합니다. 하나는 잡음과 부정합을 줄이고 싶으면 capacitance 를 크게 해야 한다는 것입니다. (그 이유를 알고 싶으면, capacitor의 KT/C noise 와 device mismatch를 공부하세요.) 그리고 두번째는 동작속도를 높이고 면적을 줄이려면 capacitance를 작게 해야 한다는 것입니다. 중요한 것은 이 둘의 경계를 정해주는 것이 ADC의 해상도와 Dynamic Range입니다. 이 두 놈이 결정이 되면unit capacitance의 범위가 어느정도 결정이 됩니다. 왜 그런지 볼까요?
먼저 해상도 입니다. 앞서 살펴본 CDAC 의 경우, N-bit 해상도의 경우 2^N*C 의 capacitor가 비교기의 positive와 negative 입력에 각각 필요합니다. 따라서, 해상도가 높아질 수록 capacitor의 갯수는 지수함수로 커지게 됩니다. 비교기 입력단에 붙게 되는 전체 capacitor의 크기는 2*2^2*C 입니다. (+/- 입력을 모두 합쳤습니다.)
이번에는 Dynamic Range 입니다. Dynamc Range에 대한 자세한 설명은 추후 다시 하기로 하고 일단, Dynamic Range는 ADC 가 감당할 수 있는 입력 아날로그 신호의 최대 진폭이라고 생각하면 됩니다. 기본적으로 Dynamic Range가 클 수록 좋지만 현실적으로 무작정 크게 할 수 없습니다. 그 이유는 Power Supply 값이 정해져 있고 회로가 감당할 수 있는 선형 범위가 있기 때문입니다. N-bit ADC의 경우 1-bit 에 해당하는 Analaog Level (우리는 이것을 1 LSB 라고 합니다.) 은 Dynamic Range를 2^N 으로 나눈 값으로 결정됩니다 (1 LSB = Dynamic Range / 2^N). 예를 들어, 10-bit ADC 입력으로 들어오는 Analog differential 신호의 Dynamic Range 가 1V peak-to-peak 라고 하면 (쉽게 생각하려면 사인곡선의 swing 폭이라고 생각하세요), 1 LSB는 1/2^10 = 1/1024 = 0.977mV 가 됩니다. 따라서, CDAC 에서 만들어내야 하는 1LSB 가 0.977mV 가 되어야 합니다. 그런데 여기서 문제가 되는 것이 CDAC 의 잡음입니다. 만일, CDAC에서 발생하는 잡음이 CDAC이 만들어 낼 수 있는1LSB 값인 0.997mV 가 커지면 어떻게 될까요? 그렇습니다. 비교기의 출력에서 잘못된 디지탈 값이 나옵니다. 더 심각한 것은 비교기 자체가 가지고 있는 잡음도 있다는 것입니다. 이렇게 CDAC 의 잡음과 비교기의 잡음이 합쳐지면 (이 합은 산술적인 합이 아니라 RMS 합 입니다.) 비교기 입력에서 나타나는 잡음은 아주 커집니다.
정상적으로 CDAC 이 동작하려면 비교기 입력에서 나타나는 모든 잡음의 크기가 1LSB 보다 작아야 합니다. 실제의 경우는 ‘1LSB 보다 작아야 한다’ 라고 말할 수는 없습니다. 왜냐면 잡음은 랜덤하게 나타나는 양이기 때문에 단순히 1LSB 와 비교할 수 없는 거죠. 이 부분은 나중에 다시 설명하겠지만 SNR (Signal-to-Noise Ratio)을 통해서 계산해서 결정해야 합니다. 일단, 정성적으로 이해하기 위해서 ‘비교기 입력단에서 나타나는 전체 잡음이 1LSB 보다 크면 디지탈 신호에 에러가 난다’ 라고 이해하도록 하죠.
결국, KT/C 로 계산되는 CDAC 잡음을 줄이기 위해서는C를 키워야 하고, 비교기 입력 잡음과 더불어 SNR 을 통해서 계산되어야 합니다. 이 과정이 쉽지 않기 때문에 unit capacitor의 크기를 결정하는 것이 쉽지 않은 거죠.
경험적으로 볼때, CDAC 의 잡음은 비교기의 잡음보다 작습니다. 따라서, 비교기의 잡음을 먼저 구하는 것이 올바른 순서 입니다. 그리고 나서 CDAC의 잡음을 생각하는 것이 좋습니다. CDAC의 잡음을 너무 작게 잡고 설계를 시작하면 capacitor의 크기를 크게 해야하기 때문에 capacitor를 구동해야 하는 스위치와 또 그 스위치를 구동해야 하는 버퍼의 크기도 커져야 합니다. 이렇게 되면 저력 소모가 증가합니다. 그리고 속도도 느려집니다. 따라서, 가능하다면, 잡음 요구사항을 만족하는 범위내에서 CDAC 의 unit capacitor의 크기를 작게 잡는 것이 좋습니다.
물론, 이게 전부가 아닙니다. 부정합도 생각해야 합니다. 너무 작게 잡으면 부정합이 나빠지게 되기 때문입니다. 그리고 unit capacitance 값이 정해졌다고 하더라도 공정에서 정해진 크기의 capacitor를 구현할 방법을 제공해 주지 못한다면 의미가 없습니다. 따라서, 공정을 담당하는 분들과 소통을 하면서 capacitor의 구현 여부를 물어봐야 합니다. 기껏 힘들게 계산하고 시뮬레이션해서 unit capacitance 를 계산했는데 공정에서 못 만들면 꽝이거든요. 보통은 대부분의 공정에서 metal capacitor를 지원해 주니까 metal capacitor를 사용하면 좋을 겁니다. Metal capapcitor 에는 MOM-capacitor 혹은 MIM-capacitor 가 있는데 공정 비용 때문에 주로 MOM-capacitor를 사용합니다.
정리하면, CDAC의 unit capacitor 값을 결정하기 위해서는,
첫번째, ADC 의 해상도와 Dynamic Range 를 결정합니다.
두번째, 비교기의 잡음을 구합니다.
세번째. Dynamic Range 와 비교기 잡음으로부터 대략적인SNR 을 구합니다.
네번째, 전체 SNR 요구사항과 대략적으로 구한 SNR 로 부터 얼마만큼 CDAC에 잡음을 허용해 줄 수 있는지 결정합니다.
다섯째, 허용해준 CDAC 의 잡음 = KT/C 로부터 C 값을 결정합니다. 이때 구해진 C 는 전체 Capacitance 이기 때문에 unit capacitance 값은 C / (2*2^N) 으로 계산됩니다.
여기까지 읽으면 이런 생각이 듭니다. ‘여전히 CDAC 의 unit capacitance를 구할 수 없지 않는가?’
네, 맞습니다. 비교기 잡음과 ADC의 전체 SNR 을 계산할 줄 모르면 CDAC 의 합리적인 unit capacitance 를 계산 할 수 없습니다. 사실, 비교기 잡음과 ADC의 전체 SNR 를 구하는 것 만으로도 SAR-ADC 설계의 상당 부분을 알았다고 할 수 있습니다.
다음 글에서는 비교기 잡음을 구하는 방법 (시뮬레이션 방법) 그리고 ADC의 SNR 을 어떻게 계산하는지 알아보도록 하겠습니다.