📄 test_convencoder.m
字号:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Property of Freescale
% Freescale Confidential Proprietary
% Freescale Copyright (C) 2005 All rights reserved
% ----------------------------------------------------------------------------
% $RCSfile: test_ConvEncoder.m.rca $
% $Revision: 1.8 $
% $Date: Mon Oct 23 06:31:04 2006 $
% Target: Matlab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function status = test_ConvEncoder
addpath('../../../../CM/Utilities/matlab');
status = -1;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
ModuleName = 'ConvEncoder';
disp(['Testing ' ModuleName ' ... ']);
%-- Test vectors, 1st col input, 2nd col reference, 3rd col - punct type,
%<FN>_<ZN>_<BN>_<CBN>
TV = { ...
'TC000/IF1dTX_00_00_00_00.lod' 'TC000/IF1eTX_00_00_00_00.lod' ;
'TC001/IF1dTX_00_00_00_00.lod' 'TC001/IF1eTX_00_00_00_00.lod' ;
'TC001/IF1dTX_00_00_01_00.lod' 'TC001/IF1eTX_00_00_01_00.lod' ;
'TC001/IF1dTX_00_00_02_00.lod' 'TC001/IF1eTX_00_00_02_00.lod' ;
'TC001/IF1dTX_00_00_03_00.lod' 'TC001/IF1eTX_00_00_03_00.lod' ;
'TC001/IF1dTX_00_00_03_01.lod' 'TC001/IF1eTX_00_00_03_01.lod' ;
'TC001/IF1dTX_00_00_03_02.lod' 'TC001/IF1eTX_00_00_03_02.lod' ;
'TC001/IF1dTX_00_00_03_03.lod' 'TC001/IF1eTX_00_00_03_03.lod' ;
'TC001/IF1dTX_00_00_03_04.lod' 'TC001/IF1eTX_00_00_03_04.lod' ;
'TC002/IF1dTX_00_00_00_00.lod' 'TC002/IF1eTX_00_00_00_00.lod' ;
'TC002/IF1dTX_00_00_01_00.lod' 'TC002/IF1eTX_00_00_01_00.lod' ;
'TC002/IF1dTX_00_00_02_00.lod' 'TC002/IF1eTX_00_00_02_00.lod' ;
'TC002/IF1dTX_00_00_03_00.lod' 'TC002/IF1eTX_00_00_03_00.lod' ;
'TC002/IF1dTX_00_00_03_01.lod' 'TC002/IF1eTX_00_00_03_01.lod' ;
'TC002/IF1dTX_00_00_03_02.lod' 'TC002/IF1eTX_00_00_03_02.lod' ;
'TC002/IF1dTX_00_00_03_03.lod' 'TC002/IF1eTX_00_00_03_03.lod' ;
'TC002/IF1dTX_00_00_03_04.lod' 'TC002/IF1eTX_00_00_03_04.lod' ;
'TC002/IF1dTX_00_00_03_05.lod' 'TC002/IF1eTX_00_00_03_05.lod' ;
'TC003/IF1dTX_00_00_00_00.lod' 'TC003/IF1eTX_00_00_00_00.lod' ;
'TC003/IF1dTX_00_00_01_00.lod' 'TC003/IF1eTX_00_00_01_00.lod' ;
'TC003/IF1dTX_00_00_02_00.lod' 'TC003/IF1eTX_00_00_02_00.lod' ;
'TC003/IF1dTX_00_00_03_00.lod' 'TC003/IF1eTX_00_00_03_00.lod' ;
'TC003/IF1dTX_00_00_03_01.lod' 'TC003/IF1eTX_00_00_03_01.lod' ;
'TC003/IF1dTX_00_00_03_02.lod' 'TC003/IF1eTX_00_00_03_02.lod' ;
'TC004/IF1dTX_00_00_00_00.lod' 'TC004/IF1eTX_00_00_00_00.lod' ;
'TC004/IF1dTX_00_00_01_00.lod' 'TC004/IF1eTX_00_00_01_00.lod' ;
'TC004/IF1dTX_00_00_02_00.lod' 'TC004/IF1eTX_00_00_02_00.lod' ;
'TC004/IF1dTX_00_00_03_00.lod' 'TC004/IF1eTX_00_00_03_00.lod' ;
'TC004/IF1dTX_00_00_03_01.lod' 'TC004/IF1eTX_00_00_03_01.lod' ;
'TC004/IF1dTX_00_00_03_02.lod' 'TC004/IF1eTX_00_00_03_02.lod' ;
'TC004/IF1dTX_00_00_03_03.lod' 'TC004/IF1eTX_00_00_03_03.lod' ;
'TC004/IF1dTX_00_00_03_04.lod' 'TC004/IF1eTX_00_00_03_04.lod' ;
'TC005/IF1dTX_00_00_00_00.lod' 'TC005/IF1eTX_00_00_00_00.lod' ;
'TC005/IF1dTX_00_00_01_00.lod' 'TC005/IF1eTX_00_00_01_00.lod' ;
'TC005/IF1dTX_00_00_02_00.lod' 'TC005/IF1eTX_00_00_02_00.lod' ;
'TC005/IF1dTX_00_00_03_00.lod' 'TC005/IF1eTX_00_00_03_00.lod' ;
'TC005/IF1dTX_00_00_03_01.lod' 'TC005/IF1eTX_00_00_03_01.lod' ;
'TC005/IF1dTX_00_00_03_02.lod' 'TC005/IF1eTX_00_00_03_02.lod' ;
'TC005/IF1dTX_00_00_03_03.lod' 'TC005/IF1eTX_00_00_03_03.lod' ;
'TC005/IF1dTX_00_00_03_04.lod' 'TC005/IF1eTX_00_00_03_04.lod' ;
'TC005/IF1dTX_00_00_03_05.lod' 'TC005/IF1eTX_00_00_03_05.lod' ;
'TC006/IF1dTX_00_00_00_00.lod' 'TC006/IF1eTX_00_00_00_00.lod' ;
'TC006/IF1dTX_00_00_01_00.lod' 'TC006/IF1eTX_00_00_01_00.lod' ;
'TC006/IF1dTX_00_00_02_00.lod' 'TC006/IF1eTX_00_00_02_00.lod' ;
'TC006/IF1dTX_00_00_03_00.lod' 'TC006/IF1eTX_00_00_03_00.lod' ;
'TC006/IF1dTX_00_00_03_01.lod' 'TC006/IF1eTX_00_00_03_01.lod' ;
'TC006/IF1dTX_00_00_03_02.lod' 'TC006/IF1eTX_00_00_03_02.lod' ;
'TC006/IF1dTX_00_00_03_03.lod' 'TC006/IF1eTX_00_00_03_03.lod' ;
'TC006/IF1dTX_00_00_03_04.lod' 'TC006/IF1eTX_00_00_03_04.lod' ;
'TC006/IF1dTX_00_00_03_05.lod' 'TC006/IF1eTX_00_00_03_05.lod' ;
'TC007/IF1dTX_00_00_00_00.lod' 'TC007/IF1eTX_00_00_00_00.lod' ;
'TC007/IF1dTX_00_00_01_00.lod' 'TC007/IF1eTX_00_00_01_00.lod' ;
'TC007/IF1dTX_00_00_02_00.lod' 'TC007/IF1eTX_00_00_02_00.lod' ;
'TC007/IF1dTX_00_00_03_00.lod' 'TC007/IF1eTX_00_00_03_00.lod' ;
'TC007/IF1dTX_00_00_03_01.lod' 'TC007/IF1eTX_00_00_03_01.lod' ;
'TC007/IF1dTX_00_00_03_02.lod' 'TC007/IF1eTX_00_00_03_02.lod' ;
'TC007/IF1dTX_00_00_03_03.lod' 'TC007/IF1eTX_00_00_03_03.lod' ;
'TC007/IF1dTX_00_00_03_04.lod' 'TC007/IF1eTX_00_00_03_04.lod' ;
'TC007/IF1dTX_00_00_03_05.lod' 'TC007/IF1eTX_00_00_03_05.lod' ;
'TC007/IF1dTX_00_00_03_06.lod' 'TC007/IF1eTX_00_00_03_06.lod' ;
'TC007/IF1dTX_00_00_03_07.lod' 'TC007/IF1eTX_00_00_03_07.lod' ;
'TC007/IF1dTX_00_00_03_08.lod' 'TC007/IF1eTX_00_00_03_08.lod' ;
'TC007/IF1dTX_00_00_03_09.lod' 'TC007/IF1eTX_00_00_03_09.lod' ;
'TC007/IF1dTX_00_00_03_10.lod' 'TC007/IF1eTX_00_00_03_10.lod' ;
'TC007/IF1dTX_00_00_03_11.lod' 'TC007/IF1eTX_00_00_03_11.lod' ;
'TC008/IF1dTX_00_00_00_00.lod' 'TC008/IF1eTX_00_00_00_00.lod' ;
'TC008/IF1dTX_00_00_01_00.lod' 'TC008/IF1eTX_00_00_01_00.lod' ;
'TC008/IF1dTX_00_00_02_00.lod' 'TC008/IF1eTX_00_00_02_00.lod' ;
'TC008/IF1dTX_00_00_03_00.lod' 'TC008/IF1eTX_00_00_03_00.lod' ;
'TC008/IF1dTX_00_00_03_01.lod' 'TC008/IF1eTX_00_00_03_01.lod' ;
'TC009/IF1dTX_00_00_00_00.lod' 'TC009/IF1eTX_00_00_00_00.lod' ;
'TC009/IF1dTX_00_00_01_00.lod' 'TC009/IF1eTX_00_00_01_00.lod' ;
'TC009/IF1dTX_00_00_02_00.lod' 'TC009/IF1eTX_00_00_02_00.lod' ;
'TC009/IF1dTX_00_00_03_00.lod' 'TC009/IF1eTX_00_00_03_00.lod' ;
'TC009/IF1dTX_00_00_03_01.lod' 'TC009/IF1eTX_00_00_03_01.lod' ;
'TC010/IF1dTX_00_00_00_00.lod' 'TC010/IF1eTX_00_00_00_00.lod' ;
'TC010/IF1dTX_00_00_01_00.lod' 'TC010/IF1eTX_00_00_01_00.lod' ;
'TC010/IF1dTX_00_00_02_00.lod' 'TC010/IF1eTX_00_00_02_00.lod' ;
'TC010/IF1dTX_00_00_03_00.lod' 'TC010/IF1eTX_00_00_03_00.lod' ;
'TC010/IF1dTX_00_00_03_01.lod' 'TC010/IF1eTX_00_00_03_01.lod' ;
'TC13/IF1dTX_00_00_03_00.lod' 'TC13/IF1eTX_00_00_03_00.lod' ;
'TC13/IF1dTX_00_00_03_01.lod' 'TC13/IF1eTX_00_00_03_01.lod' ;
'TC13/IF1dTX_00_00_03_02.lod' 'TC13/IF1eTX_00_00_03_02.lod' ;
'TC99/IF1dTX_00.lod' 'TC99/IF1eTX_00.lod' ;
};
%-- Loop over the TV
result = 1.*ones(1,size(TV,1));
for i=1:size(TV,1)
%-- Load stimuli
In = mGetBin(['../vector/in/' TV{i,1} ],'uint8','R');
Ref = mGetBin(['../vector/ref/' TV{i,2}],'uint8','R');
In_bits = mByteUnpack(In);
Ref_bits = mByteUnpack(Ref);
%-- Call Matlab function
mOut_bits = mConvEncoder(In_bits,length(In_bits),0); %B CC
%-- Compare
if (length(mOut_bits) == length(Ref_bits))
result(i) = any(mOut_bits-Ref_bits);
else
result(i) = 1;
length(mOut_bits)
length(Ref_bits)
end
if any(result(i))
disp(['Error: Matlab function failed for ' TV{i,1} ]);
else
disp(['OK: Matlab function succeeded for ' TV{i,1} ]);
end
end
if any(result)
disp(['Error: Matlab function ' ModuleName ' failed.' ]);
status = -1 ;
else
disp(['OK: Matlab function ' ModuleName ' succeeded.' ]);
status = 1;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%test case from the spec IEEE Std 802.16-2004 Cor1/D4
% 8.4.9.4.4 Example of OFDMA
disp('Testing Convolutional Encoder for OFDMA stndard test case...');
%input
In1_bits = mGetBin('../vector/in/In1_bits.lod','uint8','R');
%reference
Ref1_bits= mGetBin('../vector/ref/Ref1_bits.lod','uint8','R');
%call Matlab function
mOut_bits = mConvEncoder(In1_bits,length(In1_bits),0); %CC
if any(mOut_bits-Ref1_bits)
disp('Error: Matlab function failed.');
else
disp('OK: Matlab function succeeded.');
end
%random Example for OFDMA
disp('Testing Convolutional Encoder for OFDMA random test...');
%input
In2_bits= mGetBin('../vector/in/In2_bits.lod','uint8','R');
%reference
Ref2_bits=mGetBin('../vector/ref/Ref2_bits.lod','uint8','R');
%call Matlab function
mOut_bits = mConvEncoder(In2_bits,length(In2_bits),0); %CC
if any(mOut_bits-Ref2_bits)
disp('Error: Matlab function failed.');
else
disp('OK: Matlab function succeeded.');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -