ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

TCM网格编码调制研究:从子集分割到Viterbi译码仿真

TCM网格编码调制研究:从子集分割到Viterbi译码仿真 简介《TCM网格编码调制技术的研究报告》面向通信工程、电子信息类专业学生及从事数字通信系统设计与优化的技术人员针对带宽有限且有干扰信道下提升系统可靠性与传输速率的问题系统梳理了网格编码调制TCM的核心原理与应用方法。报告完整涵盖TCM概念、子集分割原理、编码增益计算方法并对软判决Viterbi译码算法做了专门介绍还结合计算机仿真分析误码率性能有助于读者理解编码调制联合设计相比传统分开设计带来的增益与实现要点。资源为单个docx文档压缩包整体约67KB内容结构包含摘要、关键词、目录及正文阅读时可快速定位理论推导、算法讨论和仿真分析等部分。该文档已有208人学习/下载适合作为TCM技术入门学习或课程报告撰写的参考资料。1. TCM 网格编码调制这份 docx 研究报告到底能帮你解决什么问题TCM 网格编码调制是带宽受限信道里少数不用增加带宽就能拿到编码增益的调制编码联合方案这份 docx 研究报告把从原理推导到软判决 Viterbi 译码仿真验证整条链路都整理出来了。报告核心结论很明确把码率 2/3 的卷积码和 8PSK 星座映射联合设计在带宽效率和未编码 4PSK 相同的前提下用四状态到十六状态的格状结构多拿 3~4 dB 增益。适合三类人正在写通信原理或课程设计的学生、需要评估 TCM 作为备选编码方案的链路工程师、想快速搞懂子集分割和加比选细节然后自己上手仿真的人。2. 从分离到联合子集分割如何把欧氏距离逐级拉大2.1 传统编码调制分离设计的问题在哪里老式数字通信系统里信道编码器和数字调制器是两个独立模块。信道编码的任务是在时域给码字加冗余让码字之间的汉明距离变大调制器则把码字映射成星座图上的点。问题在于汉明距离度量的是码字层面的差异而译码真正依赖的是信号层面的欧氏距离两者之间没有单调对应关系。一个汉明距离很大的码字映射到星座图上可能落在相邻的相位点附近抗噪能力反而更差。Massey 在 1974 年就从信息论角度证明过编码和调制联合设计比分开设计有本质优势Ungerboeck 在 1982 年把这条思路工程化提出 TCM。它的做法不是简单地给调制信号加保护比特而是让卷积码的输出直接决定星座子集的选取把欧氏距离作为编码设计的度量。这个思路在当年是个不小的突破因为在此之前没人把调制星座当作编码约束的一部分来设计。2.2 8PSK 子集分割从 0.765 到 2.0 的三级递进子集分割说起来不复杂把 8PSK 的八个星座点按“两两合并”的方式逐级划分每划分一层子集内信号点的最小欧氏距离就变大一层。报告用 8PSK 举例初始八个点之间的最小欧氏距离是 Δ0≈0.765。第一次划分得到两个子集 B0 和 B1每个子集四个点这四个点之间的最小距离是 Δ1≈1.414。第二次划分把每个 B 子集再拆成两个 C 子集共四个子集 C0~C3每个子集两个点这两个点之间的距离是 Δ22.0。划分层级子集个数每子集点数子集内最小欧氏距离第 0 级原始 8PSK18Δ0 ≈ 0.765第 1 级B 子集24Δ1 ≈ 1.414第 2 级C 子集42Δ2 2.0这个递进关系 Δ0Δ1Δ2 是 TCM 能拿到编码增益的几何基础。编码器输出比特选择子集时并行转移同一状态下不同输入导致的转移落在同一个 C 子集内两个信号点距离有 2.0而不同状态的转移路径被约束在 B 子集层距离至少 1.414。这样卷积码的分支度量天然和星座距离绑定比先编码再单独调制的方案在欧氏距离上更可控。2.3 编码器结构m 个比特进卷积码剩下的比特选信号报告里给出的 TCM 通用编码器结构是每个符号周期输入 n 个信息比特其中 m≤n 个通过码率 m/(m1) 的二进制卷积编码器扩展成 m1 比特这 m1 比特用来选择 2^(m1) 个调制信号子集中的一个剩下 n-m 个未编码比特用于在选定的子集内挑具体信号点。以 8PSK 为例m2码率 2/3卷积码输出 3 比特对应 8 个星座点剩余的 n-m 比特是并行自由度。写成公式很容易真正麻烦的是选卷积码的规则。报告里的三条约束是经验值也是设计准则 1并行转移取决于同一 C 子集 2从同一状态出发的转移取自同一 B 子集 3终止于同一状态的转移取自同一 B 子集。这三条保证了格状图上“从一个状态出发又回到这个状态”的任何闭合路径其信号点之间的最小欧氏距离都能被星座划分的层级结构约束住。报告用 (3,2,2) 四状态卷积码结合 8PSK 给实例格状图上每个状态两个输出分支分支值按照 8PSK 星座映射填充配合子集规则实现最大自由欧氏距离。为什么选 8PSK 而不是 QAM因为在功率受限且带宽受限的场景下8PSK 的包络恒定、等距分布子集划分的几何关系直观而且 4PSK 到 8PSK 的扩展不增加符号速率。TCM 的设计空间从这一点切入最容易理解报告后续所有增益计算也都是在这个星座上展开的。3. 编码增益计算四、八、十六状态 TCM-8PSK 差多少3.1 先对齐定义最大自由欧氏距离与编码增益公式TCM 的性能不能拿汉明距离评估要用最大自由欧氏距离 d_free。定义是编码器从同一状态出发、又回到该状态时所有可能路径对之间欧氏距离的最小值。符号速率和平均功率归一化设为 1。编码增益的定义是G 10 × lg( (d_free²/P)_TCM / (d_free²/P)_未编码 )因为平均功率 P 相同分母就是未编码 4PSK 的 d_free²2相邻信号点距离平方编码增益等于两个系统的自由欧氏距离平方之比再取对数。这个公式看着简单里面有两个容易错的地方d_free 要找的是路径对的差值距离不是单条路径长度噪声方差和信号功率归一化要一致否则增益数值会整体平移。3.2 未编码 4PSK 的基准报告用未编码 4PSK 作为参照两路正交载波各带 1 bit每符号 2 bit带宽效率和 TCM-8PSK 相同。4PSK 的星座点以 0、2、4、6 编号相邻两点距离平方就是 2.0。所以基准 d_free²2.00 dB 增益线就是 4PSK 的水平。TCM 系统用 8PSK 同时保持 2 bit/T 的带宽效率靠的就是那一个额外星座点维度换来的距离冗余。3.3 四、八、十六状态的自由欧氏距离验算报告正文给到公式 2-4 到 2-9没有直接列出最终数值。按常见 UB 码格状图逐条路径核对三个状态的典型结果如下。四状态 (3,2,2) UB 码的 d_free²4.000相对 4PSK 编码增益为 10lg(4/2)≈3.0 dB八状态 (3,2,3) UB 码的 d_free²≈4.586增益约 3.6 dB十六状态 (3,2,4) UB 码的 d_free²≈5.172增益约 4.1 dB。编码器约束长度d_free²相对 4PSK 增益未编码 4PSK-2.0000 dB四状态 TCM-8PSK24.0003.0 dB八状态 TCM-8PSK34.5863.6 dB十六状态 TCM-8PSK45.1724.1 dB状态数翻倍增益只增加 0.5~0.6 dB这是 TCM 的典型边际递减规律。到了十六状态之后光靠增加状态数很难再往上走工程上要么转多维 TCM要么和 Turbo/LDPC 级联。仿真里想验证这几组数值最直接的办法是把每个状态数对应的误码率曲线画在一起看高信噪比段的斜率是否随状态数变陡。3.4 为什么同样的码率TCM 能比传统卷积码多拿增益传统方式在 8PSK 上做卷积编码要提升纠错能力只能增加冗余比特要么降码率要么加带宽。TCM 不增加符号速率靠的是把冗余信息“藏”在星座子集的选取上卷积码输出的那一比特不再直接对应信号点而是决定划分层级上选哪个子集让编码约束和星座距离同时作用。所以编码增益来自联合设计不是来自额外的传输开销。这正是报告开头强调“编码和调制分离会损失信息”的落点。4. 软判决 Viterbi 译码加比选每一步的度量含义与仿真实现4.1 为什么要用软判决而不是硬判决报告里明确说收方采用基于欧氏距离的 Viterbi 译码。为什么强调欧氏距离硬判决先把接收信号拍成 0/1等于在译码前把连续相位幅度信息量化成两个值丢失了置信度。噪声影响下落在星座边界附近的接收点硬判结果可能是对的但可靠性很低硬判决不保留这个信息。软判决直接拿接收复信号和候选星座点做差求模方保留“到底差多少”的度量。TCM 的编码增益靠的是星座距离这部分信息必须在度量里原样保留。4.2 加比选四步走第一步算分支度量当前时刻收到 r_N对每个状态 k 的每个候选前驱状态 k*计算 BM_N(k*,k)|r_N - a_N(k*,k)|²a_N 是该分支对应的 8PSK 星座点。第二步累加用 N-1 时刻 k* 状态的幸存累加度量加上当前分支度量得到候选累加度量。第三步比较选择对状态 k 的所有候选累加度量取最小值作为 k 状态 N 时刻的新幸存度量并记录前驱状态 k*。第四步回溯到达译码深度后从全局最小累加度量的状态出发沿记录的前驱状态一路回退逐级输出对应输入比特。第 2、3 步合称加比选几乎所有 Viterbi 实现都是这四步的循环。码率 2/3、四状态时每个状态有两条入支总共 8 条分支度量的计算量很小延迟瓶颈反而在回溯深度。4.3 仿真框架一份可以落地的 MATLAB 核心逻辑报告提到对 TCM 误码率做了计算机仿真但正文没给代码。按常见做法仿真链路是随机比特 → 卷积编码 → 8PSK 映射 → AWGN 信道 → 软判决 Viterbi → 比特对照。核心的软判决 Viterbi 循环可以写成下面的框架% TCM-8PSK 软判决 Viterbi 译码核心循环四状态示例框架 % branch_tbl(state, input1)下一状态 % label_tbl(state, input1)分支输出 8PSK 星座点编号 0~7 % tx_points8PSK 归一化星座点单位平均功率 % rx接收复信号序列长度 N num_states 4; L 12; % 回溯深度取约束长度 4 倍 metric zeros(num_states,1); trace zeros(num_states, L); for n 1:N metric_new ones(num_states,1) * 1e9; for k 1:num_states for b 0:1 pre branch_tbl(k, b1); bm abs(rx(n) - tx_points(label_tbl(pre, b1)1))^2; cand metric(pre) bm; if cand metric_new(k) metric_new(k) cand; trace(k, mod(n-1, L)1) pre; end end end metric metric_new; % 每攒满 L 符号从最小度量的状态回溯一次 % 按 label_tbl 反查输入比特并输出 end逻辑说明metric 是上一时刻各状态的幸存累加度量metric_new 是当前时刻刷新结果内层循环遍历每个状态的 0/1 两条入支pre 是前驱状态bm 是软判决分支度量。cand 等于 pre 状态历史度量加当前分支欧氏距离平方这就是“累加”。候选值比当前状态已有值更小就更新这是“比较选择”。trace 只存前驱状态长度 L 的环形缓冲用来回溯。参数说明N2000 是一次仿真的符号数跑 BER 要反复换 Eb/N0 重复足够帧L12 是四状态约束深度 3 的 4 倍满足 3~5 倍经验公式太小会出现路径误合并太大浪费内存。tx_points 的归一化要按平均功率 1 来否则分支度量整体放大缩小最后幸存路径可能选错。注意 branch_tbl 和 label_tbl 必须来自你选定的 UB 码格状图表填错任何一处仿真结果都会对不上理论增益。注意表填错是仿真的头号翻车原因先把 branch_tbl 和 label_tbl 手工逐条对完再跑循环。5. 踩坑实录从文档复现到 TCM 仿真最常见的五个翻车点5.1 误码率曲线在高信噪比出现平台现象Eb/N0 到 8~10 dB 附近后误码率不再下降维持在 1e-3 左右的平线。原因最常见是并行转移对应的未编码比特没有卷积保护它的错误由子集内最小距离决定也可能是用的星座映射里并行转移的两个点恰好不在同一个 C 子集距离只有 Δ1 甚至 Δ0。解决把格状图每条并行转移放到 8PSK 星座图上看确认距离是 2.0 的配对若并行转移没问题再把回溯深度加大验证平台是否由路径剪枝引起。5.2 编码增益复算对不上文档数值现象按报告里的公式 2-4 到 2-9 自己算四状态只算出 2 dB 出头。原因增益公式里的 d_free 是路径对的最小欧氏距离差值不是单条路径和零路径的最小值还有人误用汉明距离代替欧氏距离。解决老老实实把格状图展开到四到五个符号周期把所有与零路径收敛的路径逐点累加欧氏距离平方开根号后取最小值。四、八、十六状态的经典验算值就是第三章那张表。5.3 星座相位旋转导致性能跳变现象同一套代码换一种 8PSK 编号方式仿真 BER 完全变了甚至出现不收敛。原因TCM 里卷积码输出到星座映射的规则是整体设计的一部分旋转编号会把格状图约束和星座距离的对应关系打乱相当于换了一个差码。解决固定一份映射表按报告规则核对同一状态出发的分支是否同 B 子集、同一 C 子集内的并行转移是否成对要抗相位模糊参考报告提到的 L.F.Wei 差分编码思路在 TCM 前加差分编码。5.4 回溯深度不足导致低信噪比崩溃现象1~2 dB 时仿真误码率比理论差一个数量级或者低信噪比段曲线根本起不来。原因回溯深度 L 只有四五拍幸存路径还没收敛就被斩断格状图上真正的最小距离路径根本来不及合并。解决L 取 3~5 倍约束长度四状态至少取 12八状态取 15~20。调参时固定其他条件只改 L画一组 L 从 8 到 20 的曲线看到误码率不再变化就说明收敛了。5.5 docx 文档在 Windows 搜索里搜不到公式内容现象在资源管理器搜索框搜“子集分割”“Viterbi”能命中正文搜 Δ1 或 d_free² 这类公式符号一无所获。原因docx 里的公式是 OMML 对象或者 MathType 嵌入域Windows 索引器只对普通文本建索引公式内部字符不参与索引。解决想定位公式相关结论用 WPS 或 Office 打开后按 CtrlF 搜正文文字公式编号和正文混排时优先搜“式 2-4”“编码增益”这样以普通文本形式出现在正文里的词。这是文档复现里容易忽略的一步搜关键词时稍不注意就会以为文档缺页。6. 拿到 TCM 报告先查这三处快速验证结论是否站得住6.1 星座划分层级是否满足递进关系第一处看 8PSK 划分表。原始最小距离 Δ0≈0.765一级划分后 Δ1≈1.414二级划分后 Δ22.0。如果报告里的星座图尺寸或编号方式不同距离数值会变但递进关系必须保持。只要出现某一级划分后子集内距离比上一级还小这组码就不可能是最优 UB 码后续增益计算也就不用看了。我一般会把这三个数直接抄在格状图旁边方便对照。6.2 格状图三条规则是否逐条核对过并行转移用同一 C 子集、同出发状态同 B 子集、同到达状态同 B 子集。这三条只要有一条被违反编码增益就会缩水表上 3.0 dB 无从谈起。快速核对方法把格状图展开标出每个出发状态的所有分支属于哪个 B 子集再看每个目标状态的所有入支属于哪个 B 子集最后检查并行转移是否严格限制在 C 子集内。6.3 仿真曲线上是否能看到状态数带来的斜率变化四状态到八状态增益只差 0.6 dB这个差距在误码率曲线上体现为高信噪比段的斜率提升而不是整条曲线平移。如果两种状态的曲线几乎重合大概率是映射表或回溯深度没调对。斜率提升是 TCM 仿真是否跑对的直观信号比只看 BER 绝对值可靠得多。我自己的习惯是把这三处做成一个核对清单每拿到一份 TCM 相关研究报告就先过一遍再决定要不要把它的参数搬进链路设计。从那以后我每次拿到这类文档都强制走一遍这个流程省掉了不少仿真白跑的冤枉时间。希望帮到你。本文还有配套的精品资源点击获取
返回列表