基于FPGA的UWB通信/定位系统的开发的详细版欢迎订阅本博:https://blog.youkuaiyun.com/ccsss22/article/details/115290774
1.问题描述:
超宽带[技术是一种高速率、低成本和低功耗的新型无线通信技术。通过FPGA实现的结构如图所示:
2.部分程序:
kkk = 0;
for EbN0 = EbN0_sub
kkk
kkk = kkk + 1;
for jj1 = 1:Tag_Num
jj1
rng(jj1);
for jj = 1:num_bits
%TAG to BS1
delay_1 = round(time_bs_tag(1,jj1)/ts);
xx1 = zeros(1,delay_1);
%传播时延
delay_1_1(jj,:) = [xx1 sig(1:end-length(xx1))];
%UWB
h_4 = uwb_channel(dist_bs_tag(1,jj1));
%信号经过信道
conv_data1 = conv(delay_1_1(jj,:),h_4);
UWB_chan1(jj,:) = conv_data1(1:length(sig));
%TAG to BS2
delay_2 = round(time_bs_tag(2,jj1)/ts);
xx2 = zeros(1,delay_2);
%传播时延
delay_2_1(jj,:) = [xx2 sig(1:end-length(xx2))];
h_2 = uwb_channel(dist_bs_tag(2,jj1));
conv_data2 = conv(delay_2_1(jj,:),h_2);
UWB_chan2(jj,:) = conv_data2(1:length(sig));
%TAG to BS3
delay_3 = round(time_bs_tag(3,jj1)/ts);
xx3 = zeros(1,delay_3);
%传播时延
delay_3_1(jj,:) = [xx3 sig(1:end-length(xx3))];
h_3 = uwb_channel(dist_bs_tag(3,jj1));
conv_data3 = conv(delay_3_1(jj,:),h_3);
UWB_chan3(jj,:) = conv_data3(1:length(sig));
%TAG to BS4
delay_4 = round(time_bs_tag(4,jj1)/ts);
xx4 = zeros(1,delay_4);
%传播时延
delay_4_1(jj,:) = [xx4 sig(1:end-length(xx4))];
h_4 = uwb_channel(dist_bs_tag(4,jj1));
conv_data4 = conv(delay_4_1(jj,:), h_4);
UWB_chan4(jj,:) = conv_data4(1:length(sig));
end
for jj = 1:num_bits
UWB_chan1n(jj,:) = awgn(UWB_chan1(jj,:)/max(UWB_chan1(jj,:)),EbN0,'measured');
UWB_chan2n(jj,:) = awgn(UWB_chan2(jj,:)/max(UWB_chan2(jj,:)),EbN0,'measured');
UWB_chan3n(jj,:) = awgn(UWB_chan3(jj,:)/max(UWB_chan3(jj,:)),EbN0,'measured');
UWB_chan4n(jj,:) = awgn(UWB_chan4(jj,:)/max(UWB_chan4(jj,:)),EbN0,'measured');
end
%BS1接收机
Rec_bs1 = sum(UWB_chan1n)/num_bits;
xc1 = xcorr(y,Rec_bs1);
[a,delay1] = max(xc1);
Toa1 = (length(sig) - delay1) * ts;
%BS2接收机
Rec_bs2 = sum(UWB_chan2n)/num_bits;
xc2 = xcorr(y,Rec_bs2);
[a,delay2] = max(xc2);
Toa2 = (length(sig) - delay2) * ts;
%BS3接收机
Rec_bs3 = sum(UWB_chan3n)/num_bits;
xc3 = xcorr(y,Rec_bs3);
[a,delay3] = max(xc3);
Toa3 = (length(sig) - delay3) * ts;
%BS4接收机
Rec_bs4 = sum(UWB_chan4n)/num_bits;
xc4 = xcorr(y, Rec_bs4);
[a,delay4] = max(xc4);
Toa4 = (length(sig) - delay4) * ts;
[x_est0(jj1),y_est0(jj1),z_est0(jj1)] = func_TOA(BS_pos,[Toa1,Toa2,Toa3,Toa4],C_laser);
x_est1(jj1) = x_est0(jj1);
y_est1(jj1) = y_est0(jj1);
z_est1(jj1) = z_est0(jj1);
toa_error0(1,jj1) = sqrt((Tag(jj1,1) - x_est0(jj1))^2 + (Tag(jj1,2) - y_est0(jj1))^2+ (Tag(jj1,3) - z_est0(jj1))^2);
toa_error1(1,jj1) = sqrt((Tag(jj1,1) - x_est1(jj1))^2 + (Tag(jj1,2) - y_est1(jj1))^2+ (Tag(jj1,3) - z_est1(jj1))^2);
end
end
P_est0 = [x_est0',y_est0',z_est0'];
P_est1 = [x_est1',y_est1',z_est1'];
3.仿真结论:
PGA定位仿真输出结果是:247,118,77
MATLAB的定位结果如下:
A-036:03