您现在的位置:首页 >> 通信 >> 内容

基于matlab的扩频通信误码率仿真

时间:2023/1/6 20:37:17 点击:

  核心提示:A186,包括程序操作录像...

1.完整项目描述和程序获取

>面包多安全交易平台:https://mbd.pub/o/bread/Y56TlJlv

>如果链接失效,可以直接打开本站店铺搜索相关店铺:

点击店铺

>如果链接失效,程序调试报错或者项目合作可以加微信或者QQ联系。

2.部分仿真图预览


3.算法概述

        扩展频谱通信,简称扩频通信,是一种信息传输方式,其信号所占有的频带宽度远大于所传信息必需的最小带宽;频带的扩展是通过一个独立的码序列(一般是伪随机码)来完成,用编码及调制的方法来实现的,与所传信息数据无关;在接收端则用同样的码进行相关同步接收、解扩及恢复所传信息数据。

4.部分源码

。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

        %成型滤波

        %内插,使数据在调制之前与调制信号采样率相同

        %如果有成型滤波,则内插零;如成型滤波器为矩形,内插相当于采样

        % disp('成型滤波')

        % define filter-related parameters

        rolloff=0.5; % rolloff factor of filter

        rate=nsamp; % rate is the number of points in each input symbol period of length T

        N_T=[-2 2]; % a length-two vector that indicates the number of symbol periods before and after the peak response

        FirCoefNum=4*nsamp;

        % create a square root raised cosine filter

        [rrcfilter,sample_time] = rcosfir(rolloff, N_T, rate, 1,'sqrt');

        % % plot impulse response

        % figure; impz(rrcfilter,1);

        % figure; freqz(rrcfilter,1);

        % upsample and apply square root raised cosine filter

        BW_rrcfilter=10;

        rrcfilter_FixPoint=HSSSim_FixPointFunc(rrcfilter,max(abs(rrcfilter)),BW_rrcfilter);

        

        ShapedDataI= (rcosflt(FrameDataI,1,nsamp,'filter',rrcfilter))';

        ShapedDataQ= (rcosflt(FrameDataQ,1,nsamp,'filter',rrcfilter))';

        

        SendData=ShapedDataI+1i*ShapedDataQ;

        %%

        %通过信道

        %choice1:不加噪声和相偏

%                 ReceivedData=SendData;

        %choice2:通过高斯加性白噪声信道

        ReceivedData=awgn(SendData,EcN0(tt),'measured','db');

%         % %加随机相偏

        ReceivedData=ReceivedData*exp(1i*2*pi*0.33);

%         %         %         % % % %         %加频偏

        fd=53; %频偏为60k

        Rc=3840;%码片速率

        afa=fd/Rc/nsamp;%频偏

        ReceivedData=ReceivedData.*exp(1i*2*pi*afa*[1:length(ReceivedData)]);

        %%

        %AD:满量程为16V 量化为13个比特

        BW_AD=13;

        ReceivedDataI=real(ReceivedData);

        ReceivedDataQ=imag(ReceivedData);

        ReceivedDataI_FixPoint=HSSSim_FixPointFunc(ReceivedDataI,16,BW_AD);

        ReceivedDataQ_FixPoint=HSSSim_FixPointFunc(ReceivedDataQ,16,BW_AD);

        

        %%

        %匹配滤波

        

        MatchedDataI=filter(rrcfilter_FixPoint,1,ReceivedDataI_FixPoint);

        MatchedDataQ=filter(rrcfilter_FixPoint,1,ReceivedDataQ_FixPoint);

        

        Es_BW_MatchedData=ceil(log2(max([abs(MatchedDataI) abs(MatchedDataQ)])))+1; %匹配滤波后数据的有效位长

        

        BW_MatchedDataTrunc=10; %截尾7比特

        MatchedDataI=HSSSim_TruncateFunc(MatchedDataI,BW_MatchedDataTrunc);

        MatchedDataQ=HSSSim_TruncateFunc(MatchedDataQ,BW_MatchedDataTrunc);

        %%

        %码同步

        X=16;

        P=256;

        M=P*X;

        %做码相关

        i=0; %采样点序号

        k=0; %部分相关后的序号

        ChipSynFlag=0;

        FirstSampleChipSyn=0;

        SynLoc=0;

        ChipSynFailNum=0;

        UniqueCodeCorrFailNum=0;

        while ChipSynFlag==0

            i=i+1;

            k=0;

            for ii=1:X*P %一次PMF运算需要的点数

                PMFInputI(ii)=MatchedDataI(i+(ii-1)*nsamp)*SynCodeIni_polar(rem(ii-1,SynCodeLength)+1);

                PMFInputQ(ii)=MatchedDataQ(i+(ii-1)*nsamp)*SynCodeIni_polar(rem(ii-1,SynCodeLength)+1);

                

                if rem(ii,X)==0  %部分相加

                    k=k+1;

                    PMFDataI(k)=sum(PMFInputI(ii-X+1:ii));

                    PMFDataQ(k)=sum(PMFInputQ(ii-X+1:ii));

                end;

            end;

            Es_BW_PMFData=ceil(log2(max([abs(PMFDataI) abs(PMFDataQ)])))+1; %PMF数据的有效位长

            

            PMFData=PMFDataI+1i*PMFDataQ;

            PMF_FFT=floor(fft(PMFData,P));

            

            %对FFT后的数据加窗

            PMF_FFT_W=PMF_FFT(2:end-1)-floor(0.5*PMF_FFT(1:end-2))-floor(0.5*PMF_FFT(3:end));

            

            Es_BW_PMF_FFT_W=ceil(log2(max([abs(real(PMF_FFT_W)) abs(real(PMF_FFT_W))])))+1; %PMF做FFT运算后数据的有效位长

            

            %             Abs_PMF_FFT=abs(PMF_FFT)/M;%归一化FFT

            Abs_Max_PMF_FFT_W=floor(abs(PMF_FFT_W)/M);%归一化FFT

            %             [Max_PMF_FFT Max_loc]=max(Abs_PMF_FFT);

            [Max_PMF_FFT_W(i) Max_loc_W]=max(Abs_Max_PMF_FFT_W);%频偏为afa=Max_loc_W/X/P/nsamp

            

            TH_Max_PMF_FFT_W=2*mean(Max_PMF_FFT_W); %自适应捕获门限

            

            if FirstSampleChipSyn==0

                if Max_PMF_FFT_W(i)>TH_Max_PMF_FFT_W

                    FirstSampleChipSyn=1; %用来寻找最佳采样点

                    SynLoc=i;

                    FreqOffsetLoc=Max_loc_W;

                    Max_PMF_FFT_In3=Max_PMF_FFT_W(i);

                else

                    FirstSampleChipSyn=0;

                end;

            elseif FirstSampleChipSyn==1 %状态判断 %只要超出门限,就继续计算该样点后面两个点的Max_PMF_FFT_W,取3个中的最大点作为同步点。

                FirstSampleChipSyn=2; %状态判断

                if Max_PMF_FFT_W(i)>Max_PMF_FFT_In3

                    Max_PMF_FFT_In3=Max_PMF_FFT_W(i);

                    SynLoc=i;

                    FreqOffsetLoc=Max_loc_W;

                end;

            elseif FirstSampleChipSyn==2

                ChipSynFlag=1;

                FirstSampleChipSyn=0;

                if Max_PMF_FFT_W(i)>Max_PMF_FFT_In3

                    Max_PMF_FFT_In3=Max_PMF_FFT_W(i);

                    SynLoc=i;

                    FreqOffsetLoc=Max_loc_W;

                end;

            end;

        end;

        %%

%         %频偏校正

        if ChipSynFlag==1 %如果完成码同步和频偏估计,则进行频偏校验及独特码同步

            afa_est=Max_loc_W/X/P/nsamp;

            MatchedData=MatchedDataI+1i*MatchedDataQ;

            MatchedData_FdRevised=MatchedData.*exp(-1i*2*pi*afa_est*[1:length(ReceivedData)]);

            MatchedDataI=real(MatchedData_FdRevised);

            MatchedDataQ=imag(MatchedData_FdRevised);

            %%

            %独特码同步

A186

作者:我爱C编程 来源:我爱C编程
本站最新成功开发工程项目案例
相关评论
发表我的评论
  • 大名:
  • 内容:
本类固顶
  • 没有
  • FPGA/MATLAB商业/科研类项目合作(www.store718.com) © 2025 版权所有 All Rights Reserved.
  • Email:1480526168@qq.com 站长QQ: 1480526168