分享一个在matlab上实现的无线通信过程中的相对简单点的位同步算法,该方法类似于超前滞后门实现bit同步,比较适合在FPGA中实现,代码如下,后续有时间再做详细解释;
clear all
rolloff = 0.25; % Filter rolloff
span = 4; % Filter span
sps = 16; % Samples per symbol
rrcFilter = rcosdesign(rolloff, span, sps);
data = randi([0 1],20,1)*2-1;
Sn = upfirdn(data, rrcFilter, sps);
sym=bit_sync(Sn,sps);
err_rate=symerr(sym,data);
function sync_sig=bit_sync(sig,sps)
i=sps;
j=0;
old_sysbol = 1;
while(i<length(sig)-sps)
m=abs(sig(i-1));
n=abs(sig(i));
p=abs(sig(i+1));
j=j+1;
new_sysmbol=sig(i);
if new_sysmbol*old_sysbol>0
i=i+sps;
else
if n>m && n>p
i=i+sps;
elseif m>n && m>p
i=i+sps-2;
elseif p>n && p>m
i=i+sps+2;
else
i=i+sps;
end
end
old_sysbol=new_sysmbol;
sync_sig(j)=sig(i);
index(j)=i;
end
stem(sig);
hold on;
stem(index,sync_sig,'linewidth',1.5);
hold off;
end
同步结果如下图所示:

这篇博客分享了一个使用Matlab编写的位同步算法,通过超前滞后门原理实现在FPGA中的位同步。作者提供了简洁的代码并展示了同步结果。这个方法适合初学者理解无线通信中基本的位同步技术。
3665





