我有一段matlab程序,意思就是信号同步,希望能转到fpga上,用verilog编写
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我有一段matlab程序,意思就是信号同步,希望能转到fpga上,用verilog编写相关的知识,希望对你有一定的参考价值。
程序意思是发送端利用ID号产生一序列,接受端也是根据ID号产生一序列,ID只可能取0,1,2,根据相关值大小确定ID号。
N_ID1=2;
N_subframe=0;%0 or 5
PSS = pss_gen(N_ID1);
N_FFT=2048;% FFT points number, i.e. 2048 16QAM symbols
N_symbol=1;% 1 OFDM symbols
%generate signal
S_T=zeros(N_FFT,1);
S_T( (N_FFT/2 -31+1):(N_FFT/2) )= PSS(1:31);
S_T( (N_FFT/2+2):(N_FFT/2 +32) ) = PSS(32:end);
%OFDM symbol
S_IFFT=ifft(S_T).*sqrt(N_FFT);%sqrt(2048)?
S_IFFT(:) = S_IFFT(:)*sqrt(N_FFT/62); %功率增加,保证接收端在抽取后各个符号功率不变
s_tr = conj(S_IFFT'); %简单的列到行的变换
%--------------------------------------------------------------------------
%multipath channel
%--------------------------------------------------------------------------
r_tr=s_tr;
snr_dB=5;
snr=10^(snr_dB/10);
Eav = std(r_tr);
sgma=1/sqrt(2) * sqrt(Eav/(snr));
noise=sgma.*(randn(1,N_FFT)+j.*randn(1,N_FFT));
y_re=r_tr+noise;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%下面这段是时间同步的获得,将其反键,点uncomment可以运行得到图形
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%本地序列产生
PSS_save = pss_gen( 0 );%0 , 1, 2
save_temp=zeros(N_FFT,1);
save_temp( (N_FFT/2 -31+1):(N_FFT/2) )= PSS_save(1:31);
save_temp( (N_FFT/2+2):(N_FFT/2 +32) ) = PSS_save(32:end);
S_save=ifft(save_temp).*sqrt(N_FFT);
%时域相关
%前后加入随机的数据
head_data = y_re(round(rand(1,1024)*2048)+1);
back_data = y_re(round(rand(1,1024)*2048)+1);
y_re2 = [head_data , y_re, back_data];
%2048 采样点内做滑动相关
for i = 1:2048
Corr(i) = abs ( sum ( y_re2(i:i+2048-1) * conj(S_save) ) );
end
figure;
plot(Corr);
里面用到的函数为:(作用是产生某一序列)
function output = pss_gen(N_ID2)
if N_ID2 == 0
u=25;
else if N_ID2 == 1
u=29;
else if N_ID2 == 2
u=34;
end
end
end
PSS_seq = [];
for n = 1:1:31
PSS_seq(n) = exp(-j * pi * u * (n-1) * n / 63);
end
for n = 32:1:62
PSS_seq(n) = exp(-j * pi * u * n * (n+1) / 63);
end
output = PSS_seq;
对这个程序不清楚的可以问我,希望大家能帮上忙,qq 656970745
to 搞吓米飞机,
kid, learn english and then speak :) 参考技术B 刚刚写完4K 8K的FFT的RTL代码,楼主是做国标的?用到OFDM帧结构。本回答被提问者采纳
用matlab算最小方差
假设我有一堆方差x=[0 0 0 0 0 2.5 2.45 2.45 2.53 2.51 2.6 2.64 2.64 2.64 0]怎么用matlab算最小方差?求程序 (PS:如果我把这些方差做成图,希望代表最小方差那个数据点也显示在这个图里,程序怎么编就能显示了呢?)
参考技术A a = min(x);%a即为最小方差plot(x);
hold on
plot(a,'ro');本回答被提问者采纳
以上是关于我有一段matlab程序,意思就是信号同步,希望能转到fpga上,用verilog编写的主要内容,如果未能解决你的问题,请参考以下文章