学校项目

基于C#的数字通信系统模拟器

把「文本 → 二进制 → 调制 → 信道 → 解调 → 还原」的完整数字通信链路做成交互式模拟器。每个环节可以单独演示,也可以一键跑通端到端流程。

项目速览

项目以课程指导书中「信号的调制与解调」综合项目为骨架,整合了信源编码、数据结构与算法等多个阶段的实践内容。整套系统用纯 .NET 基础类库实现,不引入任何第三方依赖,配合固定随机种子的单元测试,任何机器上都能复现同样的结果。

关于这个项目

它要解决什么

通信原理课上讲授的调制解调流程通常是抽象的框图,这个项目把它拆成可以逐段运行、逐段观察的代码,让每个环节的输入输出都变得具体。

怎么组织

程序以控制台菜单驱动,每个编号对应一个可独立演示的模块;另提供端到端一键模拟,把各环节串起来跑完整链路。信源部分实现霍夫曼编码,数据结构部分手写链表队列。

用到什么

C# 与 .NET(目标框架 .NET 10),仅使用基础类库,无第三方 NuGet 依赖;测试使用 xUnit,固定随机种子为 42。

边界

面向课程教学与演示,重点在把原理讲清楚、把步骤跑通;不涉及真实信道噪声建模或硬件收发。

覆盖的环节

每一环都可以单独运行,观察它的输入与输出。

信源编码

实现霍夫曼编码:统计字符频率、构建前缀码表、计算压缩率,并验证解码可还原原文。

自定义数据结构

手写链表队列,观察入队出队过程与计数变化,并验证空队列出队的异常处理。

信号调制

把二进制序列映射为可传输的信号形式,是整条链路的核心环节。

信道模拟

模拟信号在信道中的传递过程,作为调制与解调之间的过渡。

解调与还原

从接收到的信号恢复二进制序列,再还原为原始文本,与输入对照验证。

可复现测试

固定随机种子下的端到端断言,保证同样的输入在任何机器上得到同样的输出。

为什么用纯基础类库

项目在依赖上做了刻意的限制,让每个环节的实现都留在代码里,而不是藏在框架背后。

零第三方依赖

除测试项目引用 xUnit 外不引入任何 NuGet 包,克隆下来装好 .NET SDK 即可运行。

原理可见

编码、调制与解调的实现全部写在项目内,可以直接对照课程讲义阅读。

控制台交互

以菜单编号选择演示项,不需要图形界面,跨 macOS、Windows 与 Linux 一致。

返回项目列表