主要内容

Correct Symbol Timing and Doppler Offsets

正确的符号正时和频率偏移错误通过使用comm.symbolsynchronizerComm.Carriersynchronizer系统对象。

配置

初始化仿真参数。

M = 16;%调制顺序nsym = 2000;数据包中的符号数量sps = 2;每个符号样本%spsfilt = 8;每个符号样本%为了filters and channelspssync = 2;同步器的每个符号样本%Lenfilt = 10;%RRC滤波器长度

为发射器和接收器创建一对匹配的根凸起余弦(RRC)滤波器系统对象。

txfilter = Comm。'FilterSpanInSymbols',Lenfilt,...“输出采样符号”,spsfilt,'获得',sqrt(spsfilt));rxfilter = Comm.RAISEDCOSINERECEIVEFILTER('FilterSpanInSymbols',Lenfilt,...“ Inputsmplespersymbol”,spsfilt,“取理”,spsfilt/2,'获得',sqrt(1/spsfilt));

创建一个相频率偏移系统对象,以引入100 Hz多普勒移位。

多普勒= comm.phasefrequencyOffset(“频率offset”,100,...“阶段”,45,'采样率',1E6);

创建一个可变延迟系统对象以引入正时偏移。

varDelay = dsp.VariableFractionalDelay;

创建载体和符号同步系统对象分别校正多普勒偏移和计时偏移。

carriersync = comm.carriersynchronizer(“ Samplespersymbol”,spssync);符号= comm .symbolsynchronizer(...“ TimingErrordetector”,,,,“早期(非DATA)”,,,,...“ Samplespersymbol”,spssync);

创建星座图系统对象以查看结果。

refConst = Qammod(0:M-1,M,“ Unitaverage Powers”,真的);cdreceive = comm.constellationdiagram(“参考结构化”,refconst,...“ Samplespersymbol”,spsfilt,'标题',,,,“收到的信号”);cddoppler = comm.constellationdiagram(“参考结构化”,refconst,...“ Samplespersymbol”,spssync,'标题',,,,'Frequency Corrected Signal');cdtiming = comm.constellationdiagram(“参考结构化”,refconst,...“ Samplespersymbol”,spssync,'标题',,,,'Frequency and Timing Synchronized Signal');

主处理循环

主要处理循环:

  • 生成随机符号并应用QAM调制。

  • 过滤调制信号。

  • 应用频率和正时偏移。

  • 通过AWGN通道传递传输信号。

  • 过滤接收的信号。

  • 纠正多普勒移位。

  • 更正正时偏移。

为了k = 1:15 data = randi([0 m-1],nsym,1);modsig = qammod(数据,m,“ Unitaverage Powers”,真的);txsig = txfilter(modsig);txdoppler =多普勒(txsig);txdelay = vardelay(txdoppler,k/15);rxsig = awgn(txdelay,25);rxfiltsig = rxfilter(rxsig);rxcorr = carriersync(rxfiltsig);rxData =符号(rxcorr);结尾

可视化

情节的星座图收到了signal, frequency corrected signal, and frequency and timing synchronized signal. Specific constellation points cannot be identified in the received signal and can be only partially identified in the frequency corrected signal. However, the timing and frequency synchronized signal aligns with the expected QAM constellation points.

cdreceive(rxsig)

CDDOPPLER(RXCORR)

CDTiming(RXDATA)

也可以看看

|