⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 altera_cic_compensate_ip.m

📁 级联积分梳妆滤波器的补偿滤波器
💻 M
字号:
%% ================================================================================%% Legal Notice: Copyright (C) 1991-2007 Altera Corporation%% Any megafunction design, and related net list (encrypted or decrypted),%% support information, device programming or simulation file, and any other%% associated documentation or information provided by Altera or a partner%% under Altera's Megafunction Partnership Program may be used only to%% program PLD devices (but not masked PLD devices) from Altera.  Any other%% use of such megafunction design, net list, support information, device%% programming or simulation file, or any other related documentation or%% information is prohibited for any other purpose, including, but not%% limited to modification, reverse engineering, de-compiling, or use with%% any other silicon devices, unless such use is explicitly licensed under%% a separate agreement with Altera or a megafunction partner.  Title to%% the intellectual property, including patents, copyrights, trademarks,%% trade secrets, or maskworks, embodied in any such megafunction design,%% net list, support information, device programming or simulation file, or%% any other related documentation or information provided by Altera or a%% megafunction partner, remains with Altera, the megafunction partner, or%% their respective licensors.  No other licenses, including any licenses%% needed under any third party's intellectual property, are provided herein.%% ================================================================================%%%% Generated by: CIC 7.2 Build 151 October, 2007%% Generated on: 2008-4-15 17:59:26%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ratechangecic_core_fir_comp_coeff genearats CIC compensation filter coefficients% using frequency sampling method.%%    ratechangecic_core_fir_comp_coeff(L, Fs, Fc, plot, is_fxp, B) calculates compensation%    filter coefficients and saves the coefficients to a file.%%    L      - FIR filter length (= number of taps = number of coefficients)%    Fs     - FIR filter sample rate in Hz before decimation%    Fc     - FIR filter cutoff frequency in Hz%    plot   - True or false to draw filter responses graphically%    is_fxp - Indicating if the coefficients should be saved as fixed point or floating point numbers%    B      - Number of bits to represent the coefficients if is_fxp is true%%    Examples:%    ratechangecic_core_fir_comp_coeff(31,80e6,4e6,true,true,16);%    ratechangecic_core_fir_comp_coeff(31,80e6,4e6,true,false)function ratechangecic_core_fir_comp_coeff(L, Fs, Fc, plot, is_fxp, B)try% Validate number of input argumentserror(nargchk(0, 6, nargin));%%%%%% CIC filter parameters %%%%%%R = 2;     %% Decimation factorM = 1;     %% Differential DelayN = 5;     %% Number of Stages%%%%%% User Parameters %%%%%%% Check if Signal Processing Toolbox is in the Matlab installationif (isempty(which('fir2')))  error('Matlab Signal Processing Toolbox isn''t installed on your machine. Please contact Altera for help.');end%% Get user parameters: B, L, Fs, Fc if they aren't passed as arguments.if(nargin < 1)     %% Filter length: it must be an odd number, otherwise it'll be increased by 1.  L = input('Number of filter coefficients (31 as default): ');  if isempty(L)   L = 12;                               end    endif mod(L,2) == 0  fprintf('FIR filter length must be an odd number. %d is used instead.\n',L+1);  L = L+1;end        if(nargin < 2)     %% FIR filter sample rate in Hz before decimation  Fs = input('FIR filter sample rate in Hz before decimation (80e6 as default): ');  if isempty(Fs)      Fs = 80000;     endend  if(nargin < 3)     %% FIR filter cutoff frequency in Hz  Fc = input('FIR filter cutoff frequency in Hz (4e6 as default): ');  if isempty(Fc)   Fc = 4000;     end    end        if (nargin < 4)     plot_res = input('Do you want to plot filter responses? Y/N [N]:','s');  if isempty(plot_res)   plot_res = 'N';  end  if upper(plot_res) == 'Y'   plot = true;  else   plot = false;  end    end    if(nargin < 5)  fxp_coeff = input('Do you want to write out coefficients as fixed point numbers? Y/N [Y]:','s');  if isempty(fxp_coeff)   fxp_coeff = 'Y';  end  if upper(fxp_coeff) == 'Y'   is_fxp = true;  else   is_fxp = false;  end    endif(is_fxp && nargin < 6)  %% Number of bits to represent fixed point filter coefficients  B = input('Number of bits to represent the filter coefficients (16 as default): ');  if isempty(B)      B = 8;     endend  Fo = R*Fc/Fs;                            %% Normalized Cutoff freq; 0<Fo<=0.5/M;                                           %% Fo should be less than 1/(4M) for good performance                              % Fo = 0.5/M;                            %% use Fo=0.5 if we don't care responses outside passband%%%%%%% CIC Compensator Design using fir2.m %%%%%%p = 2e3;                                 %% Granulatirys = 0.25/p;                              %% Stepsizefp = [0:s:Fo];                           %% Passband frequency samples                                        fs = (Fo+s):s:0.5;                       %% Stopband frequency samplesf = [fp fs]*2;                           %% Noramlized frequency samples; 0<=f<=1; Mp = ones(1,length(fp));                 %% Passband response; Mp(1)=1Mp(2:end) = abs( M*R*sin(pi*fp(2:end)/R)./sin(pi*M*fp(2:end))).^N; %% Inverse sincMf = [Mp zeros(1,length(fs))];f(end) = 1;h = fir2(L-1,f,Mf);                      %% Filter order = filter length (L) - 1h = h/max(h);                            %% Floating point coefficients, scaled it to 1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Output filter coefficients to a file for Altera FIR Compiler           %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%filename = 'ratechangecic_core_fir_comp_coeff.txt';fid = fopen(filename, 'wt');if (fid == -1)  errMsg = sprintf('Can''t Open file %s for writing.\n', FileName);  error(errMsg);end;if (is_fxp) % coefficients are fixed point  hz = fix(h*(2^(B-1)-1));               %% Quantization of filter coefficients  fprintf(fid, '%d\n', hz); %% fixed point coeffelse  fprintf(fid, '%.6f\n',h); %% floating pointendfclose(fid);fprintf('The compensation filter coefficients have been saved to file ''%s''.\n',filename);% Change the following variable to 1 if you would like to plot the filter responsesif (plot)  if (is_fxp)   plot_responses(R,M,N,hz,Fs,is_fxp);  else   plot_responses(R,M,N,h,Fs,is_fxp);  endend;catchrethrow(lasterror);end;%% Function for ploting filter responsesfunction plot_responses(R,M,N,res,Fs,is_fxp)try%%%%%%% Full resolution CIC filter response %%%%%%%%hrec = ones(1,R*M);tmph = hrec;for k=1:N-1     tmph = conv(hrec, tmph);end;hcic = tmph;hcic = hcic/max(hcic);%%%%%%% Total Response %%%%%%%%%%%%%%%resp = upsample(res, R);ht = conv(hcic, resp);              %% Concatenation of CIC and fir2 FIR at high freqencyno_data_points = 4096;              %% Number of data points to plot in the figure[Hcic, wt] = freqz(hcic, 1, no_data_points, Fs);      %% CIC Freq. Response[Hciccomp, wt] = freqz(resp, 1, no_data_points, Fs);  %% CIC Comp. response using fir2[Ht, wt] = freqz(ht, 1, no_data_points, Fs);          %% Total response for CIC + Compensation fir2warning off all;                                      %% Turn the 'Log by zero' warning offMcic = 20*log10(abs(Hcic)/(abs(Hcic(1))));            %% CIC Freq. ResponseMciccomp = 20*log10(abs(Hciccomp)/(abs(Hciccomp(1))));%% CIC Comp. response using fir2Mt = 20*log10(abs(Ht)/(abs(Ht(1))));                  %% Total response for CIC + Compensation fir2warning on;                                           %% Turn warnings onfigure;plot(wt, Mcic, wt, Mciccomp, wt, Mt);if (is_fxp) % coefficients are fixed point  legend('CIC','CIC Comp','Total Response (Fixed Point)');else % floating point  legend('CIC','CIC Comp','Total Response (Floating Point)');endymax = max(Mciccomp)+1;ylim([-100 ymax]);title('CIC and its Compensation Filter Responses');grid;xlabel('Frequency Hz');ylabel('Filter Magnitude Response dB');catchrethrow(lasterror);end;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -