当前位置:网站首页>How does the nr-prach receiver detect the relationship between prembleid and Ta
How does the nr-prach receiver detect the relationship between prembleid and Ta
2022-07-03 09:39:00 【Communication pawn】
PRACH Is to make use of ZC Two characteristics of sequences :
1.ZC The sequence has a constant amplitude , after DFT After that, the amplitude is also constant ,
This limits the influence of peak to average ratio on the boundary and time flatness of other users , In the calculation process, only the phase needs to be considered , There is no need to consider the amplitude , This simplifies the calculation .
2.ZC Sequences have ideal autocorrelation properties , The property of zero cross-correlation , The sequence length is L_RA, The peak value after autocorrelation is L_RA, After cross-correlation, the value is assigned as close 0, This makes it easy to detect .
The first feature ( Mainly for you to know )
%%%%%%test dft Amplitude after %%%%%%%%%%
L_RA =839
for i = 1:1:L_RA
x_u(i) = exp(-1i*pi*26*i*(i+1)/L_RA);
end
DFT_fre = abs(fft(x_u,839));
plot(DFT_fre);
title('ZC Sequence DFT The latter is of constant amplitude ');

The second feature determines how to parse preambleid and TA value
We know prach Maximum support 64 Users access at the same time , Because we have 64 individual preamid have access to .
First of all, our husband became 64 Different preambleid Sequence
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Time :2021.01.16
%%% Briefly :matalb Simulation prach The detection mechanism of , And then introduce ZC Characteristics of sequences
%%% author : Communication pawn
%%% Modify the record :
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
clc
clear all
filename_u ='F:\4G5G\CDSN\nr-prach\table_6_3_3_1_3.xls';
filename_ncs ='F:\4G5G\CDSN\nr-prach\table_6_3_3_1_5.xls';
%TABLE_6_3_3_1_3 =
[TABLE_6_3_3_1_3,txt_u,num_u] = xlsread(filename_u);
[TABLE_6_3_3_1_5,txt_ncs,num_ncs] = xlsread(filename_ncs);
L_RA =839;
ZC_zonecfg = 5;% Subcarrier spacing in unrestricted format 1.25khz For example
N_CS= TABLE_6_3_3_1_5(ZC_zonecfg+1,1);
%%% Find out how many u To satisfy 64 individual preambleid
%%% This example C_v=v*NCS
logic_index_i =50 ;% Take the long sequence as an example , use i Find out u
seq_num =0;
for u_loop = 1:1:64
if(seq_num<64)
seq_num = u_loop.*floor(L_RA/N_CS);
else
u_loop =u_loop -1;
break;
end
end
%%% Get enough u
for u_loop_init = 1:1:u_loop
[row_u ,column_u] = size(TABLE_6_3_3_1_3);
row_u_x =floor( (logic_index_i+u_loop_init)/column_u)+1;
column_u_y = mod(logic_index_i+u_loop_init-(row_u_x-1)*column_u,column_u);
u(1,u_loop_init) = TABLE_6_3_3_1_3(row_u_x,column_u_y);
end
%%%% Generate 64 individual preamble Sequence
%%% Except for the last one u, Use other u obtain preamble Sequence
seq_index =0;
for u_loop_init = 1:1:u_loop-1
%%%% Generate ZC Sequence
for i = 1:1:L_RA
x_u(i) = exp(-1i*pi*u(1,u_loop_init)*i*(i+1)/L_RA);
end
%%% For each u Corresponding preamble Sequence
for seq_index = seq_index :1:(seq_index+floor(L_RA/N_CS)-1)
Cv = N_CS*mod(seq_index+1,floor(L_RA/N_CS));
for n = 0:1:L_RA-1
preamble_seq(seq_index+1,n+1) = x_u(mod((n+Cv),L_RA)+1);
end
end
end
%%% the last one u Generated preamble Sequence
seq_remain = 64-(u_loop-1)*floor(L_RA/N_CS);
for i = 1:1:L_RA
x_u(i) = exp(-1i*pi*u(1,u_loop)*i*(i+1)/L_RA);
end
%%% For each u Corresponding preamble Sequence
for seq_index = seq_index+1 :1:(seq_index+seq_remain)
Cv = N_CS*mod(seq_index+1,floor(L_RA/N_CS));
for n = 0:1:L_RA-1
preamble_seq(seq_index+1,n+1) = x_u(mod((n+Cv),L_RA)+1);
end
end
%%% Generated 64 individual preamble Sequence
Be careful Here I import 211 Two of the agreements excel form
table_6_3_3_1_3 In order to determine u,table_6_3_3_1_5 In order to determine NCS Of
You can go 38.211 Go inside , Easy to find , The picture is too big, it seems excel Can't import , I'll cut a small picture , Let's find it by ourselves .

preable The sequence is autocorrelated
Peak size and location : The peak position is at the first point , The peak is 839( Divide by 839)
%%% Test the same preambleid The position of the peak at the time of autocorrelation %%%
%%% Time domain correlation is equal to frequency domain conjugate multiplication %%%%%%
test_com_id_fre = fft(preamble_seq(1,:),839).*conj(fft(preamble_seq(1,:),839));
test_com_id_time = abs(ifft(test_com_id_fre,839))./L_RA;
figure(1);
plot(test_com_id_time);
title(' The same preamble The sequence autocorrelation detects the originator preambleid');
[y_max,x_max] = max(test_com_id_time);
text(x_max,y_max,['(',num2str(x_max),',',num2str(y_max),')'],'color','r');

Different preamble Sequences are correlated
The beginning preamble id yes 1 For receiving 4 To test
The detected delay should be NCS3 =263=78
%%%%%%%% The same u Different preambleid Detection delay %%%%%%%%%
%%%preambleid 1 and preambleid 3%%%
test_com_id_fre = fft(preamble_seq(1,:),839).*conj(fft(preamble_seq(4,:),839));
test_com_id_time = abs(ifft(test_com_id_fre,839))./L_RA;
figure(2);
plot(test_com_id_time);
title(' The same u Different preambleid Detection delay ');
[y_max,x_max] = max(test_com_id_time);
text(x_max,y_max,['(',num2str(x_max),',',num2str(y_max),')'],'color','r');
[y_min,x_min] = min(test_com_id_time);
text(x_min,y_min,['(',num2str(x_min),',',num2str(y_min),')'],'color','r');

The receiving end uses the same preamble Sequence , But the originator must have a delay
Here we simulate 4 Time delay of points , How much delay does each point represent 839 A point of time and our agreement with format0 For example ,24576K The time taken is consistent , Just push it yourself .
%%%%%%%% testing preamble Internal delay %%%%%%%%%%%%%
preamble_seq_delay =[preamble_seq(1,4:839),[0 0 0]]
test_com_id_fre = fft(preamble_seq(1,:),839).*conj(fft(preamble_seq_delay,839));
test_com_id_time = abs(ifft(test_com_id_fre,839))./L_RA;
figure(4);
plot(test_com_id_time);
title(‘ The same preamble The sequence originator has a delay measurement delay ’);
[y_max,x_max] = max(test_com_id_time);
text(x_max,y_max,[’(’,num2str(x_max),’,’,num2str(y_max),’)’],‘color’,‘r’);
The originator is preambleid yes 4 and 5( Two ue Access at the same time ), For receiving 4 Deconstruction
Can solve the original preamble yes 4, This also shows the difference preamble Sequence superposition does not affect each other .
%%%%%% The originator is preambleid yes 4 and 5( Two ue Access at the same time ), For receiving 4 Deconstruction
%%% Correlation can resolve the corresponding preambleid
for n = 0:1:L_RA-1
send_seq(1,n+1) = preamble_seq(4,n+1)+preamble_seq(5,n+1);
end
test_com_id_fre = fft(send_seq(1,:)).*conj(fft(preamble_seq(4,:),839));
test_com_id_time = abs(ifft(test_com_id_fre,839))./L_RA;
figure(6);
plot(test_com_id_time);
title('preambleid yes 4 and 5( Two ue Access at the same time ), The receiving end detects 4');
[y_max,x_max] = max(test_com_id_time);
text(x_max,y_max,['(',num2str(x_max),',',num2str(y_max),')'],'color','r');
Different one u Corresponding preamble The sequence cannot detect the time delay
%%%%%%%% Different one u Different preambleid Nothing can be detected %%%%%%,
%%%preambleid 1 and preambleid 40%%%
test_com_id_fre = fft(preamble_seq(1,:),839).*conj(fft(preamble_seq(40,:),839));
test_com_id_time = abs(ifft(test_com_id_fre,839))./L_RA;
figure(3);
plot(test_com_id_time);
title(' Different one u Different preambleid Nothing can be detected ');
[y_max,x_max] = max(test_com_id_time);
text(x_max,y_max,['(',num2str(x_max),',',num2str(y_max),')'],'color','r');

Finally, the previous correlation is realized by conjugate multiplication in the frequency domain , Of course, the time domain itself can be directly turned off first
The number of time domain direct correlation points becomes 2N-1, Just look on the right ,865-839=26, Time delay detected .
%%%%%% Time domain correlation %%%%%%%%%%%%%%
test_com_id_time = abs(xcorr(preamble_seq(40,:),preamble_seq(41,:)))./L_RA;
figure(5);
plot(test_com_id_time);
title(' Different preamble Time domain autocorrelation of sequences ');
[y_max,x_max] = max(test_com_id_time);
text(x_max,y_max,['(',num2str(x_max),',',num2str(y_max),')'],'color','r');

边栏推荐
- 解决Editor.md上传图片获取不到图片地址问题
- Win10安装ELK
- ERROR: certificate common name “*.” doesn’t match requested ho
- Electronic product design, MCU development, circuit cloning
- Jetson Nano 自定义启动图标kernel Logo cboot logo
- Difference of EOF
- Nodemcu-esp8266 development board to build Arduino ide development environment
- Spark 概述
- Epollet lessons
- Process communication - semaphore
猜你喜欢

Learning C language from scratch -- installation and configuration of 01 MinGW

Leetcode daily question (2090. K radius subarray averages)

LeetCode每日一题(931. Minimum Falling Path Sum)

Nodemcu-esp8266 development (vscode+platformio+arduino framework): Part 2 --blinker_ Hello_ WiFi (lighting technology - Mobile App control routine)

Flink学习笔记(九)状态编程

numpy. Reshape() and resize() functions

Win10安装ELK

Please tell me how to set vscode

Global KYC service provider advance AI in vivo detection products have passed ISO international safety certification, and the product capability has reached a new level

Flink learning notes (XI) table API and SQL
随机推荐
Flink学习笔记(八)多流转换
Solve the problem of disordered code in vscode development, output Chinese and open source code
[solution to the new version of Flink without bat startup file]
Error output redirection
Shell logic case
Django operates Excel files through openpyxl to import data into the database in batches.
Development of fire power monitoring system
Run flash demo on ECS
Vscode Arduino installation Library
Epollet lessons
LeetCode每日一题(2109. Adding Spaces to a String)
How MySQL modifies null to not null
Learning C language from scratch -- installation and configuration of 01 MinGW
Design and development of biological instruments
Leetcode daily question (2109. adding spaces to a string)
Integrated use of interlij idea and sonarqube
Implementing distributed lock with redis
Intelligent home design and development
LeetCode每日一题(1300. Sum of Mutated Array Closest to Target)
Development of fire evacuation system