X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=fhi_lib%2Fapp%2Fgen_test.m;h=179a5b41bca562079ffe3029f5c71ce3fad870a1;hb=2de97529a4c5a1922214ba0e6f0fb84cacbd0bc7;hp=1154c9240a8e6c13a6ce860183a2d9c3c452f7e6;hpb=2fbf70096f64af622da983e88c5a64e90ad9bdbd;p=o-du%2Fphy.git diff --git a/fhi_lib/app/gen_test.m b/fhi_lib/app/gen_test.m index 1154c92..179a5b4 100644 --- a/fhi_lib/app/gen_test.m +++ b/fhi_lib/app/gen_test.m @@ -1,6 +1,19 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% +% Copyright (c) 2021 Intel. +% +% Licensed under the Apache License, Version 2.0 (the "License"); +% you may not use this file except in compliance with the License. +% You may obtain a copy of the License at +% +% http://www.apache.org/licenses/LICENSE-2.0 +% +% Unless required by applicable law or agreed to in writing, software +% distributed under the License is distributed on an "AS IS" BASIS, +% WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +% See the License for the specific language governing permissions and +% limitations under the License. +% % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -9,6 +22,13 @@ close all; clear all; + % 5MHz 10MHz 15MHz 20 MHz +nLteNumRbsPerSymF1 = ... +[ + % 5MHz 10MHz 15MHz 20 MHz + [25, 50, 75, 100] % Numerology 0 (15KHz) +]; + % 5MHz 10MHz 15MHz 20 MHz 25 MHz 30 MHz 40 MHz 50MHz 60 MHz 70 MHz 80 MHz 90 MHz 100 MHz nNumRbsPerSymF1 = ... [ @@ -26,56 +46,68 @@ nNumRbsPerSymF2 = ... ]; % total number of tests -tests_total = 6 +tests_total = 12 +tech_all = ... % 0 - NR 1- LTE + [ + 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1 + ] + sub6_all = ... [ - true, true, true, true, false, true, + true, true, true, true, false, true, true, true, true, true, true, true ] mu_all = ... [ - 0, 0, 0, 1, 3, 1 + 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 0 ] bw_all = ... [ - 5, 10, 20, 100, 100, 100 + 5, 10, 20, 100, 100, 100, 20, 10, 5, 20, 10, 5 ] ant_num_all = ... [ - 4, 4, 4, 4, 4, 8 + 4, 4, 4, 4, 4, 8, 4, 4, 4, 8, 8, 8 ] bfw_gen_all = ... [ - false, false, false, false, false, true + false, false, false, false, false, true, false, false, false, true, true, true, ] trx_all = ... [ - 32, 32, 32, 32, 32, 32 + 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32 ] path_to_usecase_all = ... [ - "./usecase/mu0_5mhz/"; - "./usecase/mu0_10mhz/"; - "./usecase/mu0_20mhz/"; - "./usecase/mu1_100mhz/"; - "./usecase/mu3_100mhz/"; + "./usecase/cat_a/mu0_5mhz/"; + "./usecase/cat_a/mu0_10mhz/"; + "./usecase/cat_a/mu0_20mhz/"; + "./usecase/cat_a/mu1_100mhz/"; + "./usecase/cat_a/mu3_100mhz/"; "./usecase/cat_b/mu1_100mhz/"; + "./usecase/lte_a/mu0_20mhz/"; + "./usecase/lte_a/mu0_10mhz/"; + "./usecase/lte_a/mu0_5mhz/"; + "./usecase/lte_b/mu0_20mhz/"; + "./usecase/lte_b/mu0_10mhz/"; + "./usecase/lte_b/mu0_5mhz/"; ] path_to_usecase_all = cellstr(path_to_usecase_all) nSlots_all = ... [ - 40,40,40,40,40,10 + 20,20,20,20,20,20,20,20,20,10,10,10 ] %select mu and bw to generate test files for test_num =(1:1:tests_total) test_num + isLte=tech_all(test_num) %false sub6=sub6_all(test_num) %false mu=mu_all(test_num) % 0,1, or 3 bw=bw_all(test_num) %5,10,20,100 MHz @@ -87,60 +119,76 @@ for test_num =(1:1:tests_total) nSlots=nSlots_all(test_num) % any 40 and 160 - if sub6 - disp('Sub6') + if isLte + disp('LTE') if mu < 3 nNumerology = mu+1; switch (bw) case {5} - numRBs = nNumRbsPerSymF1(nNumerology,0+1); + numRBs = nLteNumRbsPerSymF1(nNumerology,0+1); case {10} - numRBs = nNumRbsPerSymF1(nNumerology,1+1); + numRBs = nLteNumRbsPerSymF1(nNumerology,1+1); case {15} - numRBs = nNumRbsPerSymF1(nNumerology,2+1); + numRBs = nLteNumRbsPerSymF1(nNumerology,2+1); case {20} - numRBs = nNumRbsPerSymF1(nNumerology,3+1); - case {25} - numRBs = nNumRbsPerSymF1(nNumerology,4+1); - case {30} - numRBs = nNumRbsPerSymF1(nNumerology,5+1); - case {40} - numRBs = nNumRbsPerSymF1(nNumerology,6+1); - case {50} - numRBs = nNumRbsPerSymF1(nNumerology,7+1); - case {60} - numRBs = nNumRbsPerSymF1(nNumerology,8+1); - case {70} - numRBs = nNumRbsPerSymF1(nNumerology,9+1); - case {80} - numRBs = nNumRbsPerSymF1(nNumerology,10+1); - case {90} - numRBs = nNumRbsPerSymF1(nNumerology,11+1); - case {100} - numRBs = nNumRbsPerSymF1(nNumerology,12+1); - otherwise - disp('Unknown BW && mu') + numRBs = nLteNumRbsPerSymF1(nNumerology,3+1); end end else - disp('mmWave') - if (mu >=2) && (mu <= 3) - nNumerology = mu; - switch (bw) - case {50} - numRBs = nNumRbsPerSymF2(nNumerology-1,0+1); - case {100} - numRBs = nNumRbsPerSymF2(nNumerology-1,1+1); - case {200} - numRBs = nNumRbsPerSymF2(nNumerology-1,2+1); - case {400} - numRBs = nNumRbsPerSymF2(nNumerology-1,3+1); - otherwise - disp('Unknown BW && mu') + if sub6 + disp('Sub6') + if mu < 3 + nNumerology = mu+1; + switch (bw) + case {5} + numRBs = nNumRbsPerSymF1(nNumerology,0+1); + case {10} + numRBs = nNumRbsPerSymF1(nNumerology,1+1); + case {15} + numRBs = nNumRbsPerSymF1(nNumerology,2+1); + case {20} + numRBs = nNumRbsPerSymF1(nNumerology,3+1); + case {25} + numRBs = nNumRbsPerSymF1(nNumerology,4+1); + case {30} + numRBs = nNumRbsPerSymF1(nNumerology,5+1); + case {40} + numRBs = nNumRbsPerSymF1(nNumerology,6+1); + case {50} + numRBs = nNumRbsPerSymF1(nNumerology,7+1); + case {60} + numRBs = nNumRbsPerSymF1(nNumerology,8+1); + case {70} + numRBs = nNumRbsPerSymF1(nNumerology,9+1); + case {80} + numRBs = nNumRbsPerSymF1(nNumerology,10+1); + case {90} + numRBs = nNumRbsPerSymF1(nNumerology,11+1); + case {100} + numRBs = nNumRbsPerSymF1(nNumerology,12+1); + otherwise + disp('Unknown BW && mu') + end + end + else + disp('mmWave') + if (mu >=2) && (mu <= 3) + nNumerology = mu; + switch (bw) + case {50} + numRBs = nNumRbsPerSymF2(nNumerology-1,0+1); + case {100} + numRBs = nNumRbsPerSymF2(nNumerology-1,1+1); + case {200} + numRBs = nNumRbsPerSymF2(nNumerology-1,2+1); + case {400} + numRBs = nNumRbsPerSymF2(nNumerology-1,3+1); + otherwise + disp('Unknown BW && mu') + end end end end - if numRBs ==0 disp('Incorrect Numerology and BW combination.') return @@ -243,3 +291,51 @@ for test_num =(1:1:tests_total) end end end + +%% generate IQ file with valid constellation, for DL modulation compression +% only in mu1_100mhz +%constellation = [4096, -4096]; +%constellation = [2590, 7770, -7770, -2590]; +%constellation = [633, 1897, 3161, 4425, -4424, -3160, -1897, -633]; +constellation_all = [628, 1885, 3141, 4398, 5654, 6911, 8167, 9424, -9424, -8167, -6911, -5654, -4398, -3141, -1885, -628; + 633, 1897, 3161, 4425, -4424, -3160, -1897, -633, 633, 1897, 3161, 4425, -4424, -3160, -1897, -633; + 2590, 7770, -7770, -2590, 2590, 7770, -7770, -2590, 2590, 7770, -7770, -2590, 2590, 7770, -7770, -2590; + 4096, -4096, 4096, -4096, 4096, -4096, 4096, -4096, 4096, -4096, 4096, -4096, 4096, -4096, 4096, -4096; + ]; + +numRBs = 273 +nSlots = 20 +path_all = ... + [ + "./usecase/cat_a/mu1_100mhz/"; + "./usecase/cat_b/mu1_100mhz/"; + "./usecase/cat_b/mu1_100mhz/"; + "./usecase/cat_b/mu1_100mhz/"; + ] +path_all = cellstr(path_all) +modtype_all = ... + [ + "256qam_ant_"; + "64qam_ant_"; + "16qam_ant_"; + "qpsk_ant_"; + ] +modtype_all = cellstr(modtype_all) + +for test_num = 1:4 + path = path_all(test_num); + constellation=constellation_all(test_num,:); + modtype = modtype_all(test_num); + for ant = 1:4 + ant_in = rand(2*12*numRBs*14*nSlots,1); % random constellation + ant_in = 1+round(15 * ant_in); + ant_out = constellation(ant_in); + file_name = strcat(path,modtype, num2str(ant-1),".bin"); + disp(file_name) + fileID = fopen(file_name,'w'); + fwrite(fileID, ant_out, 'int16'); + fclose(fileID); + end +end + +