Hello All,<br>  Following is a acript in which CIC block runs at a sampling rate of 1024*1024 and Hiir runs at a rate of 1024. I want to find out the combined effect of two filters (Hcic*Hiir) so that I can  <br>  see the entire spectrum. Is there any way out for that ?<br>
Regards,<br>Sumit<br><br><br><br>// ====================================================================================================== //<br>// Author      : Sumit Adhikari<br>// Contact     : <a href="mailto:sumit.adhikari@gmail.com">sumit.adhikari@gmail.com</a><br>
// Description : Script to find out the Frequency Response of the Droop Correction<br>//             : Filter for a 3rd Order CIC filter with M downsample ratio <br>// ====================================================================================================== //<br>
<br><br>// ------------------------------------ Initial setup --------------------------------------------------- //<br>   clear all ;<br>   funcprot(0);<br>   stacksize('max');<br><br>// ------------------------------------ Function Declarations ------------------------------------------- //<br>
<br>function [hzm,frm] = cic_resp(M,Npoints,SBW,Fact)<br>   z = poly(0,'z');<br>   <br>   Hn = syslin('c',(z^M - 1.0), (z^M));<br>   Hcic_num = Hn*Hn*Hn;   // Hcic_num = Hn^3 --> Is Wrong !<br>   <br>   Hd = syslin('c',(z - 1.0), (z));<br>
   Hcic_den = Hd*Hd*Hd ;  // Hcic_den = Hd^3 --> Is Wrong ! <br>   <br>   Hcic = (Hcic_num / Hcic_den) / Fact ;<br>   <br>   [hzm,fr] = frmag(Hcic,Npoints);<br>   frm = fr*SBW;<br><br>endfunction<br><br>// ------------------------------------- CIC Filter ------------------------------------------------------- //<br>
<br>// Calling cic_resp :<br>   Npoints   = 1024*1024 ;<br>   M         = 1024 ;<br>   SBW       = 1024*1024 ;<br>   Fact      = 2^14*2^16 ; <br>   [hzm,frm] = cic_resp(M,Npoints,SBW,Fact);<br>   clf(0);xset('window',0);plot(frm(1:Npoints),20.0*log10(hzm(1:Npoints)),"red"); mtlb_grid("on");<br>
<br><br>// -------------------------------- CIC Compensation Response --------------------------------------------- //<br>// CIC Compensation (IIR Response):<br>   DSR  = 1024      ;<br>   Nd   = SBW/DSR   ; <br>   fdu  = frm(1:Nd) ;<br>
   fd   = 2*fdu/Nd  ;<br>   hzd  = hzm(1:Nd) ;<br>   hzc  = 1.0./hzd  ;<br>   Fs   = SBW/DSR   ; <br>   f    = Fs*fd/2   ; <br><br>// Extra Edits :<br>   fd(1)            = 0.0 ;<br>   fd(size(fd,"*")) = 1.0 ;<br>
    <br>   Order = 5 ;<br>   Hcomp = yulewalk(Order,fd,hzc);<br>   clf(1);xset('window',1);plot(f(1:Nd),20.0*log10(hzc(1:Nd)),"red"); mtlb_grid("on");<br><br><br><br>// --------------------------------- Low Pass Filter -------------------------------------------------- //<br>
   Hlpf       = iir(5,'lp','ellip',[.3 .5],[.01 .0001]);<br>   [hlpf,fr]  = frmag(Hlpf,1024);<br>   clf(2);xset('window',2);plot(Fs*fr',20*log10(hlpf'),"red"); mtlb_grid("on");<br>
<br><br><br>// --------------------------------- Combined Response of Two Filters --------------------------------- //<br>   Hiir       = Hcomp*Hlpf ;<br>   [hiir,fr]  = frmag(Hiir,1024);<br>   clf(3);xset('window',3);plot(Fs*fr',20*log10(hiir'),"red"); mtlb_grid("on");<br>
<br><br><br><br>// ---------------------------------------- Quantizing Hiir ------------------------------------------ //<br>   Qfact               = 2^12 ;<br>   b_iir               = coeff(numer(Hiir)) ;<br>   a_iir               = coeff(denom(Hiir))<br>
   b_iir_quantized     = int(Qfact*b_iir);<br>   a_iir_quantized     = int(Qfact*a_iir);<br>   Hiir_quantized      = poly(b_iir_quantized,'z','c')/poly(a_iir_quantized,'z','c');<br>   [hiir_quantized,fr] = frmag(Hiir_quantized,1024);<br>
   clf(4);xset('window',4);plot(Fs*fr',20*log10(hiir'),"red");plot(Fs*fr',20*log10(hiir_quantized'),"green"); mtlb_grid("on");<br>   clf(5);xset('window',5);plzr(Hiir_quantized); mtlb_grid("on");<br>
<br><br>// ---------------------------------------- Transient Simulation ------------------------------------------ //<br>   Time = 1.0 ;<br>   Fin  = 50.0 ;<br><br>   t = 0.0:1.0/Fs:Time ;<br>   x = sin(1.0*%pi*Fin*t);<br>
   Xhiir = mtlb_filter(b_iir($:-1:1),a_iir($:-1:1),x);<br>   Xhiir_quantized = mtlb_filter(b_iir_quantized($:-1:1),a_iir_quantized($:-1:1),x);<br>   clf(6);xset('window',6);plot(t,x,"blue");plot(t,Xhiir,"red"); plot(t,Xhiir_quantized,"green") ;mtlb_grid("on");<br>
<br><br><br clear="all"><br>-- <br><br>--------------------------------------------<br>Sumit Adhikari<br>System Design Engineer<br>austriamicrosystems AG<br>Business Unit : Automotive<br>Mob : 00-91-9885271710/00-91-9000161710<br>