📄 outputcheck_c.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% file : outputcheck_c.m
%
% Description : Check if cyclic prefix insertion is correct. Use Altera FFT MegaCore C Model
% to generate IFFT results. Use the C model output as source to cyclic
% prefix. Compare with ModelSim simulation output to test bit reversal operation and CP insertion.
% 2001-2007 Altera Corporation, All Rights Reserved
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clear all
close all
DOUTWIDTH = 16;
DFFTOUTWIDTH = 31;
fft_tb;
fidnps = fopen('blksize_report.txt','r');
nps=fscanf(fidnps,'%d');
inverse=fscanf(fidinv,'%d');
fclose(fidnps);
fclose(fidinv);
P = length(nps);
fidcps = fopen('cpsize_report.txt','r');
cps=fscanf(fidcps,'%d');
fclose(fidcps);
% fft input data
fidr = fopen('real_input.txt','r');
fidi = fopen('imag_input.txt','r');
xreali=fscanf(fidr,'%d');
ximagi=fscanf(fidi,'%d');
fclose(fidi);
fclose(fidr);
% fft c model output data
fidro = fopen('real_output_c_model.txt','r');
fidio = fopen('imag_output_c_model.txt','r');
xrealo=fscanf(fidro,'%d');
ximago=fscanf(fidio,'%d');
xo = xrealo + j*ximago;
fclose(fidro);
fclose(fidio);
% % fft core output data
% fini = fopen('fft_imag_output_vhd.txt','r');
% finr = fopen('fft_real_output_vhd.txt','r');
%
% dini = fscanf(fini, '%d');
% dinr = fscanf(finr, '%d');
%
% din = dinr + j*dini;
%
% fclose(fini);
% fclose(finr);
% % compare fft c model and fft core
% a = din - xo;
% if length(find(a))
% disp('fft mismatch');
% pause;
% else
% disp('MATCH')
% pause
% end
% cp output data
fouti = fopen('imag_output_vhd.txt','r');
foutr = fopen('real_output_vhd.txt','r');
douti = fscanf(fouti,'%d');
doutr = fscanf(foutr,'%d');
dout = doutr + j*douti;
xind = 1; % start of current input packet index
yind = 1; % start of current output packet index
for k = 1:P
x = xo(xind: xind + nps(k)-1); % current fft output packet in bit reversed order
y = dout(yind: yind + cps(k) + nps(k)-1); % current cyclic prefix appended output packet
xind = xind + nps(k);
yind = yind + cps(k) + nps(k);
% bit reversal
s = zeros(nps(k),1);
Bsize = log2(nps(k));
for ii = 1:nps(k)
B = dec2bin(ii - 1, Bsize);
new_ii = bin2dec(flipud(B.').');
s(new_ii+1) = x(ii); % s is in natural order, of 1 FFT packet
end;
cp = y(1:cps(k)); % cp symbols
a = s(nps(k) - cps(k) + 1: end) - cp; %is cps correct? a: the last L(k) symbols of a packet
b = s - y(cps(k) + 1:end); % are the main packet symbols correct?
if length(find(a)) | length(find(b))
disp('wrong cp insertion');
pause;
else
disp('cyclic prefix insertion is correct')
pause
end
clear a b cp s y x;
end
fclose(fouti);
fclose(foutr);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -