主要内容

Depuncture和解码流样品

这个例子展示了如何使用hardware-friendly Depuncturer块和维特比解码器解码编码样本在WLAN代码块率。

生成输入样本编码随机数据,在MATLAB®BPSK-modulating样品,应用信道模型中,解调样品,并创建收到不痒的决定。然后,不痒的决定位导入仿真软件®depuncture和解码样本模型。金宝app出口回到MATLAB仿真软件模拟的结果和比较它与原金宝app始输入样本。

示例模型支持高密度脂蛋白HDL De金宝apppuncture和解码子系统的代码生成。

modelname =“ltehdlViterbiDecoderModel”;open_system (modelname);

设置编码速率参数

设置工作空间变量描述编码速率。维特比译码器块支持约束长度范围内(3、9)和多项式长金宝app度范围内(2、7)。

选择一个回溯深度范围[3128]。non-punctured样品,推荐的深度是5倍constraintLength。穿刺样本,推荐的深度是10倍constraintLength

从代码的1/2,IEEE 802.11 WLAN指定三个刺穿模式生成三个额外的代码。选择其中一个代码,然后设置帧大小和刺穿模式基于率。你也可以选择不代码的1/2。

IEEE 802.11 WLAN指定不同的调制类型不同的代码并使用“终止”模式。这个示例使用BPSK调制率和运行“终止”“截断”操作模式。块也支持金宝app“连续”模式,但它不包括在这个例子。

constraintLength = 7;codeGenerator = (133 - 171);opMode =“终止”;tracebackDepth = 10 * constraintLength;格子= poly2trellis (constraintLength,codeGenerator);% IEEE 802.11 n - 2009 WLAN 1/2 (7, 171 [133])%的速度穿刺模式最大帧大小% 1/2 [1;1;1;1]2592% 2/3 (1;1;1,0)1728% 3/4 [1,1,1,0,0,1]1944(5/6 % 1;1;1,0,0,1,1,0,0,1]2160codeRate = 3/4;如果(codeRate = = 2/3) puncVector =逻辑([1;1;1。0]);frameSize = 1728;elseif(codeRate = = 3/4) puncVector =逻辑([1;1;1;0,0,1]);frameSize = 1944;elseif(codeRate = = 5/6) puncVector =逻辑([1,1,1,0,0,1,1,0,0,1]);frameSize = 2160;其他的% codeRate = = 1/2puncVector =逻辑([1;1;1;1]);frameSize = 2592;结束如果strcmpi (opMode“终止”)%终止状态的框架tailLen = constraintLength-1;其他的%截断模式tailLen = 0;结束

为解码生成样本

使用通信工具箱™函数和系统对象生成编码信道噪声样本和适用。解调接收到的样品,并创建不痒的决定为每个样本值。

EbNo = 10;EcNo = EbNo - 10 * log10(元素个数(codeGenerator));numFrames = 5;numSoftBits = 4;txMessages =细胞(1、numFrames);rxSoftMessages =细胞(1、numFrames);没有= 10 ^ ((-EcNo) / 10);quantStepSize =√No / 2 ^ numSoftBits);调制器= comm.BPSKModulator;频道= comm.AWGNChannel (“EbNo”,EcNo);解调器= comm.BPSKDemodulator (“DecisionMethod”,的“对数似然比);2 = 1:numFrames txMessages {2} = [randn (frameSize tailLen, 1) 0 (tailLen, 1)) > 0;%卷积编码和刺穿txCodeword = convenc (txMessages{2},格子,puncVector);%调制modOut = modulator.step (txCodeword);%的通道chanOut = channel.step (modOut);%解调demodOut = -demodulator.step (chanOut) / 4;%转换为不痒的决定值rxSoftMessagesDouble = demodOut. / quantStepSize;rxSoftMessages {2} = fi (rxSoftMessagesDouble 1 numSoftBits 0);结束

设置仿真软件仿真的变量金宝app

仿真软件金宝app模型需要与相应控制信号流样品。使用whdlFramesToSamples函数转换框架rxSoftMessages流样品和生成匹配的控制信号。

计算所需的仿真时间的延迟depuncture和译码器块。

samplesizeIn = 1;idlecyclesbetweensamples = 0;idlecyclesbetweenframes = 0;如果strcmpi (opMode“截断”)%截断模式需要一个至少constraintLength-1帧之间的差距idlecyclesbetweenframes = constraintLength - 1;结束[sampleIn, ctrlIn] = whdlFramesToSamples (rxSoftMessages,idlecyclesbetweensamples、idlecyclesbetweenframes samplesizeIn);depunLatency = 6;vitLatency = 4 * tracebackDepth + constraintLength + 13;延迟= vitLatency + depunLatency;simTime =大小(ctrlIn 1) +延迟;sampletime = 1;

运行仿真软件模型金宝app

叫depunctu金宝appre和解码的仿真软件模型样本。模型出口解码样本MATLAB工作区。Depuncture和维特比译码器块参数配置使用工作空间变量。因为操作模式是一个参数列表,使用set_param分配工作的价值。

把流样品回去给陷害数据进行比较。

set_param ([modelname' / HDL Depuncture和解码的),“开放”,“上”);set_param ([modelname/ HDL Depuncture和解码/维特比译码器的),“TerminationMethod”,opMode);sim (modelname);sampleOut =挤压(sampleOutTS.Data);ctrlOut =[挤压(ctrlOutTS.start.Data)挤压(ctrlOutTS.end.Data)挤压(ctrlOutTS.valid.Data)];rxMessages = whdlSamplesToFrames (sampleOut ctrlOut);
最大帧大小计算1944个样本。

验证结果

比较输出样本对生成的输入样本。

流(“\ n \ nDecoded样本”);2 = 1:numFrames numBitsErr =总和(xor (txMessages {2}, rxMessages {2}));流(“帧# % d: \ n % d位不匹配的第二,numBitsErr);结束
解码框架样品# 1:0位不匹配框架# 2:0位不匹配框架# 3:0位不匹配框架# 4:0位不匹配框架# 5:0位不匹配

另请参阅