Demystifying Switched-Capacitor Circuits

This appendix presents the exemplary simulation of a fourth-order 1-bit audio ? ? ADC. The target specifications of the ADC are listed in Table 5.A. Note that the term "simplified 4 th-order DFFIR" means the topology used here is a simplified version of the DFFIR topology shown in Figure 5.21. Specifically, all the forward paths (except for the input path that leads to the first integrator) are removed. The source codes are as follows.
| OSR | 128 |
|---|---|
| Signal bandwidth | 0 to 20kHz |
| Clock frequency | 5.12MHz |
| SNR | >120dB |
| No. of decimation stages | 5 |
| Modulator topology | Simplified 4 th-order DFFIR |
% Use MATLAB codes to derive the fourth-order <i class="emphasis">NTF</i>(<i class="emphasis">z</i>) and <i class="emphasis">STF</i>(<i class="emphasis">z</i>)%% MATLAB functions in Schreier's toolbox [68] are utilized%Clear all;fprintf(1,'NTF Synthesis- Fourth-order modulator')order=4;r=128;opt=1; %Enable zero optimization to minimize the in-band noisepower%H_inf=2.0; %Lee's rules%f0=0;H= synthesizeNTF(order,r,opt,H_inf,f0);[num1,den1]=tfdata(H,'v') %The original <i class="emphasis">NTF</i>(<i class="emphasis">z</i>) in 'zpk' format%figure(1);subplot(221);plotPZ(H); %Plot the <i class="emphasis">NTF</i>(<i class="emphasis">z)'s</i> zeros and poles%title('NTF poles and zeros diagram');f = [linspace(0,0.75/r,100) linspace(0.75/r,0.5,100)];z = exp(j*2*pi*f);magH = dbv(evalTF(H,z));subplot(222);plot(f,magH); %Plot the <i class="emphasis">NTF</i>(<i class="emphasis">z</i>)<i class="emphasis">'s</i> magnitude response%axis([0 0.5 -150 10]);xlabel('Normalized frequency (1\rightarrow f_s)');ylabel('dB');title('NTF Magnitude Response');grid on;[snr_pred,amp] = predictSNR(H,r);[snr,amp] = simulateSNR(H,r);subplot(223);plot(amp,snr_pred,amp,snr,'o'); %Predict the best SNR performance%grid on;figureMagic([-120 0], 10, 1, [0 150], 10, 1);xlabel('Input Level, dB');ylabel('SNR dB');<a name="579"></a><a name="N72433"></a>title('SNR curve');s=sprintf("peak SNR = %4.1fdB\n(OSR=%d)',max(snr),r);text(-49,15,s);[a,g,b,c]=realizeNTF(H,'CIFB') %Realize <i class="emphasis">NTF</i>(<i class="emphasis">z</i>) with the simplifiedDFFIR (or CIFB [68])%b=[b(1) zeros(1,length(b)-1)];ABCD = stuffABCD(a,g,b,c,'CIFB');[H,G]=calculateTF(ABCD);[num2 den2]=tfdata (H,'v') %Check whether the...