matlab位同步算法实现

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

分享一个在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

同步结果如下图所示:

 

评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值