当前位置: 首页 > news >正文

【通信基础知识】完整通信系统的流程图及各模块功能详解

2024.2.29 抱歉最近在写毕设大论文,因此没有太多时间更新。然而,在写论文的过程中,发现自己对通信系统的了解还不够全明白,因此差了一些硕博论文总结了一个完整的通信系统流程图。若有不对的地方请多多指正//部分内容有参考ChatGPT 4.0。

【通信基础知识补充1】完整通信系统的流程图及各模块功能详解

    • 一、通信系统流程图
      • 1.1 一般系统
      • 1.2 OTFS系统模型
    • 二、如何理解信源编码与信道编码?
      • 2.1 信源编码(Source Coding)
        • 代表性的信源编码方式
      • 2.2 信道编码(Channel Coding)
        • 代表性的信道编码方式
      • 2.3 总结
    • 三、为什么交织后需要加扰?
      • 3.1 交织的目的
      • 3.2 加扰的目的
      • 3.3 为什么交织后需要加扰
    • 四、如何交织?
      • 4.1 块交织(Block Interleaving)
      • 4.2 卷积交织(Convolutional Interleaving)
      • 4.3 随机交织(Random Interleaving)
      • 4.4 交织的实现示例
    • 五、ADC和DAC的作用是什么?为什么需要加这些变换
      • 5.1 ADC的作用和必要性:
      • 5.2 DAC的作用和必要性:
    • 六、关于同步
      • 6.1 定时同步(Timing Synchronization)
        • 实现定时同步的方法包括:
      • 6.2 载波同步(Carrier Synchronization)
        • 实现载波同步的方法包括:
      • 6.3 同步的位置
      • 6.4 总结

一、通信系统流程图

1.1 一般系统

在这里插入图片描述

1.2 OTFS系统模型

在这里插入图片描述(上图参考:Z. Q. Zhang, H. Liu, Q. L. Wang, et al.,“A survey on low complexity detectors for OTFS systems,”ZTE Commu⁃nications, vol. 19, no. 4, pp. 03–15, Dec. 2021. doi: 10.12142/ZTECOM.202104002.)

二、如何理解信源编码与信道编码?

信源编码和信道编码是数字通信系统中的两个基本概念,它们服务于不同的目的并使用不同的技术。

2.1 信源编码(Source Coding)

信源编码的目的是减少待传输数据的冗余度,以便更有效地利用通信信道。通过信源编码,可以在不丢失信息的前提下,减少表示信息所需的比特数,从而提高数据传输的效率。

代表性的信源编码方式
  1. 霍夫曼编码(Huffman Coding):一种变长编码方法,根据信源符号出现的概率来分配不同长度的编码。出现概率高的符号分配较短的编码,概率低的分配较长的编码。这种方法可以最小化编码长度的期望值。
  2. 游程编码(Run-Length Encoding, RLE):对连续重复的数据进行压缩的简单方法。例如,字符串"AAAABBBCCDAA"可以被编码为"4A3B2C1D2A",有效减少数据量。
  3. Lempel-Ziv-Welch (LZW) 编码:一种无损数据压缩算法,广泛用于文件压缩。LZW通过建立一个字符串到编码的字典来压缩数据,有效处理各种类型的数据。

2.2 信道编码(Channel Coding)

信道编码的目的是增加额外的冗余度来保护信息免受传输过程中的错误影响。通过在数据中加入校验位,即使在信号传输过程中出现错误,接收端也能检测并在一定程度上纠正这些错误,从而提高通信的font color=red>可靠性。

代表性的信道编码方式
  1. 奇偶校验位:最简单的错误检测编码,通过添加一个额外的位来使得整个数据单元(包括校验位)的位数为奇数或偶数,从而进行错误检测。
  2. 循环冗余校验(Cyclic Redundancy Check, CRC):一种根据数据生成固定长度校验码的方法,广泛用于检测数据传输或存储中的错误。
  3. 卷积编码:一种流式的信道编码技术,通过卷积运算为数据流添加冗余位。它能够连续处理数据位,适用于实时或高速通信。
  4. 低密度奇偶校验(LDPC)码和Turbo 码(Turbo Codes):这两种是高效的纠错编码,能够接近香农极限。它们通过复杂的编解码算法实现高度的错误纠正能力,广泛应用于卫星通信、深空通信和无线通信等领域。
  5. Polar码(Polar Codes):Polar码是一种前沿的信道编码方法,由Erdal Arıkan教授于2009年提出。它是第一个被证明能够在一些信道上达到香农极限的编码,尤其是在二元对称信道(Binary Symmetric Channel, BSC)和加性高斯白噪声信道(Additive White Gaussian Noise, AWGN)上。Polar码的核心思想是通过特定的变换将一组独立同分布(i.i.d.)的信道转换成一组极化信道,其中一些信道的容量接近1(可靠信道),而另一些信道的容量接近0(不可靠信道)。通过这种极化效应,Polar码可以选择在可靠信道上发送信息比特,在不可靠信道上发送固定的冗余比特或者不使用这些信道。这种策略使得Polar码能够高效地利用信道资源,达到接近信道容量的通信效率。因此,Polar码在理论和实践中都引起了极大的兴趣,被认为是下一代无线通信标准(如5G)中的关键技术之一。

2.3 总结

信源编码和信道编码在通信系统中扮演着互补的角色。信源编码通过减少数据的冗余度来提高传输效率,而信道编码通过增加冗余度来提高传输的可靠性。选择合适的编码方法可以显著提高通信系统的性能,包括传输效率和错误恢复能力。

三、为什么交织后需要加扰?

在数字通信系统中,交织(Interleaving)和加扰(Scrambling)都是重要的处理步骤,但它们服务于不同的目的:

3.1 交织的目的

交织是一种用于改善信道引起的错误特性的技术。它通过重新排列发送的符号序列(比如比特或符号),使得原本连续的错误在经过交织后在时间序列上被分散。这样,即使信道产生了一串连续的错误,这些错误在经过解交织后也会被分散开来,减少了因连续错误而导致的数据包完全丢失的风险。交织能够提高纠错编码(如前向纠错编码)的效率,因为这些编码更擅长处理随机分布的错误而不是连续的错误。

3.2 加扰的目的

加扰的主要目的是为了随机化传输的数据,确保数据流具有良好的统计特性,如避免长序列的重复模式和保持频谱的均匀分布。这在多种情况下是必要的:

  1. 避免信号干扰:在某些信道中,特定模式的重复可能导致信道的非线性特性引起干扰,加扰可以减少这种干扰。
  2. 确保加密安全:加扰可以作为一种简单的加密手段,使得截获的数据不易被未授权的接收者理解。
  3. 频谱效率:通过随机化数据,加扰有助于保持传输信号的频谱分布均匀,避免因为数据模式重复而导致的频谱集中,这对于频谱利用和避免信道干扰十分重要。

3.3 为什么交织后需要加扰

尽管交织可以有效地分散连续错误,但它并不改变数据本身的统计特性。交织后的数据仍可能包含重复模式或不利于信道传输的特性。因此,在交织之后进行加扰,可以进一步优化数据的传输效果,提高通信系统的整体性能和效率。加扰确保数据在传输过程中的随机性,有利于提高信号的抗干扰能力和保障数据的安全性。

四、如何交织?

交织是通过重新排列数据序列中的元素来实现的,以此来分散信道中可能出现的连续错误。存在多种交织技术,每种技术都有其特定的应用场景和优势。以下是几种常见的交织方法:

4.1 块交织(Block Interleaving)

块交织是最简单的交织形式之一。在这种方法中,数据被分成等大小的块,然后按照某种模式重新排列。具体来说,可以将数据写入一个二维矩阵(行和列),然后按列(或某种不同的顺序)读出,以实现交织。

4.2 卷积交织(Convolutional Interleaving)

卷积交织是一种更为复杂的交织技术,它使用多个先进先出(FIFO)缓存,每个缓存的延迟长度不同。数据序列被分成多个分支,每个分支通过一个不同的延迟缓存。这种方法可以更有效地分散连续的错误。

4.3 随机交织(Random Interleaving)

随机交织通过随机排列数据序列中的元素来实现交织。这种方法可以提供很好的错误分散效果,但可能需要较大的计算资源来生成随机序列,并在接收端恢复原始数据顺序。

4.4 交织的实现示例

以块交织为例,假设有一个数据序列,我们想要通过块交织进行重新排列。我们可以将数据填充到一个具有R行和C列的矩阵中,然后按列而不是按行来读取数据,以实现交织。这里给出一个简化的实现示例:

假设有一个数据块:

1 2 3 4 5 6 7 8 9 10 11 12

我们可以将其排列成一个3x4的矩阵:

1  2  3  4
5  6  7  8
9 10 11 12

按列读取,得到交织后的序列:

1 5 9 2 6 10 3 7 11 4 8 12

这种方法可以有效地将连续的数据分散开来,减少连续错误的影响。在实际应用中,选择哪种交织方法取决于特定的应用需求和系统设计。

五、ADC和DAC的作用是什么?为什么需要加这些变换

ADC(Analog-to-Digital Converter,模数转换器)和DAC(Digital-to-Analog Converter,数模转换器)是信号处理中的基本组件,它们在数字信号处理(DSP)系统中扮演着至关重要的角色。这两种转换器连接模拟世界和数字世界,使得模拟信号可以通过数字方法进行处理,以及将处理后的数字信号转换回模拟信号。下面详细解释它们的作用及其必要性:

5.1 ADC的作用和必要性:

  1. 作用:ADC将连续的模拟信号转换成离散的数字信号。这个过程涉及采样(确定信号在特定时刻的值)、量化(将采样值映射到有限的数值级别)、编码(将量化的数值转换为二进制表示)三个步骤。

  2. 必要性

    • 数字信号处理:数字信号相对于模拟信号更容易处理,可以使用算法进行过滤、增强、压缩等处理,而这在模拟域中要复杂得多。
    • 噪声抗扰性:数字信号对噪声和干扰的抵抗能力更强,有助于保持信号质量。
    • 存储和传输:数字信号更易于存储和传输,尤其是在现代通信系统中,数字数据可以通过网络高效传输。

5.2 DAC的作用和必要性:

  1. 作用:DAC执行相反的过程,将数字信号转换回模拟信号。这包括解码(将二进制数转换为对应的模拟级别)和重构(生成连续的模拟信号)。

  2. 必要性

    • 与模拟世界的接口:很多设备和传感器工作在模拟域,如扬声器、显示器和各类传感器,因此需要将处理后的数字信号转换回模拟信号,以便于这些设备使用。
    • 信号还原:在某些应用中,如音频和视频播放,数字信号需要转换为模拟信号,以便人们可以通过扬声器和显示器等设备感知。

总的来说,ADC和DAC是信号处理系统中连接模拟和数字世界的桥梁。它们使得信号可以在数字领域中被高效、准确地处理,同时保证了与现实世界中模拟设备的兼容性和互操作性。

六、关于同步

在数字通信系统中,定时同步(Timing Synchronization)和载波同步(Carrier Synchronization)是确保信号正确接收和解码的两个基本而重要的步骤。它们分别解决了不同的同步问题,通常需要在接收信号的早期阶段完成。

6.1 定时同步(Timing Synchronization)

定时同步,也称为符号同步,是确保接收机正确采样接收信号的过程。在数字通信中,发送的信息是以一系列离散的符号形式传输的,每个符号代表了一定数量的比特。定时同步的目的是确保接收机在正确的时间点采样这些符号,从而最小化符号之间的干扰(例如码间串扰)和误差。

实现定时同步的方法包括:
  • 使用同步序列:发送特定的序列(如导频信号),使接收机能够通过这些已知序列调整其采样时钟。
  • 自适应算法:如早晚门算法(Early-Late Gate algorithm),通过持续调整采样时刻来最大化接收信号的信噪比。

6.2 载波同步(Carrier Synchronization)

载波同步是确保接收机的本地振荡器与接收信号的载波频率和相位对齐的过程。在调制过程中,基带信号被上转换(或调制)到一个高频的载波上以进行传输。在接收端,为了正确解调信号,接收机需要准确地恢复出这个载波的频率和相位。

实现载波同步的方法包括:
  • 相位锁定环(Phase-Locked Loop, PLL):通过比较接收信号的相位与本地振荡器产生的相位,并调整本地振荡器,直到两者相位一致。
  • 代数算法:如代数成本函数最小化,通过处理接收到的信号以估计并补偿频率和相位偏差。

6.3 同步的位置

  • 定时同步载波同步通常需要在信号的接收和解调过程的早期阶段完成。具体来说,它们通常位于下列步骤之后:
    • 信号的初步放大和滤波。
    • 下变频(如果信号是在射频传输的)。
  • 在这些步骤之后,进行定时和载波同步是必要的,因为只有正确同步后,接收机才能准确地解调和进一步处理信号。
  • 载波同步通常在定时同步之前或同时进行,因为载波的频率和相位对于确定采样时刻是关键的。

6.4 总结

定时同步和载波同步是数字通信系统中不可或缺的组成部分,它们确保了信号可以被正确接收和解码。这两个同步过程解决了不同的问题,但都是为了达到同一目标:最大化接收信号的质量并准确恢复出发送的信息。它们通常在接收链路的前端完成,是信号解码和进一步处理之前的关键步骤。

相关文章:

【通信基础知识】完整通信系统的流程图及各模块功能详解

2024.2.29 抱歉最近在写毕设大论文,因此没有太多时间更新。然而,在写论文的过程中,发现自己对通信系统的了解还不够全明白,因此差了一些硕博论文总结了一个完整的通信系统流程图。若有不对的地方请多多指正//部分内容有参考ChatGP…...

k8s-项目测试环境部署

部署规划 概述 项目开发好后,我们需要部署,我们接下来就基于 阿里云云效 阿里云容器镜像服务 k8s 搭建部署环境 阿里云云效 : 放代码,可以做cicd(https://www.aliyun.com/product/yunxiao) 阿里云容器镜像服务 :…...

【Elasticsearch管理】缓存机制

文章目录 缓存Field data cache(字段数据缓存)Node query cache(节点查询缓存)Indexing buffer(索引缓冲区)Shard request cache(分片请求缓存)缓存失败启用/禁用缓存根据请求启用/禁…...

JS api基础初学

轮播图随机版 需求:当我们刷新页面,页面中的轮播图会显示不同图片以及样式 分析:①:准备一个数组对象,里面包含详细信息(素材包含) ②:随机选择一个数字,选出数组对应…...

uniapp实战:父子组件传参之子组件数量动态变化

需求说明 现有的设置单元列表,每个带有虚线加号的可以看做是一组设置单元,点击加号可以添加一组设置单元.点击设置单元右上角可以删除对应的设置单元. 实现思路说明 利用数组元素添加或是删除的方式实现页面数量动态变化.由于每个设置单元内容都相同所以单独封装了一个子组件.…...

Ubuntu绑定USB接口到固定端口

绑定端口 打开终端,输入以下命令查看USB端口信息: udevadm info -a -n /dev/ttyUSB0执行后,可以看到部分输出如下: 找到第一个,a-b:c格式的KERNELS,记住这个值,后面会用到。 linlin-B660M-D2H-DDR4:~$ u…...

解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题

解决gogs勾选“使用选定的文件和模板初始化仓库”报错500,gogs邮件发送失败,gogs邮件配置不生效,gogs自定义模板等问题 前几天出了教程本地部署gogs,在后期运行时发现两个问题: 第一:邮件明明配置了,后台显示未配置,…...

数字后端——DEF文件格式

文章目录 MACRO的不同orientationDEF中在macro orientation定义前需要留空格 MACRO的不同orientation DEF中在macro orientation定义前需要留空格 像下图中这种方向和分号之间没有空格的情况,就是有问题的格式。...

【可做课设、附完整技术文档】流式、异步、实时的Django聊天室!(需进一步定制可联系本人)

介绍 完整源码以及完整项目文档请看源码链接。 此Django项目实现了一个精致易扩展的实时聊天室,可直接作为网页开发的课程设计提交,也可二次开发,比如添加更好看的样式,或者更多更酷炫的功能。 实现了如下功能: 流…...

网络编程:基于TCP和UDP的服务器、客户端

1.基于TCP通信服务器 程序代码&#xff1a; 1 #include<myhead.h>2 #define SER_IP "192.168.126.121"//服务器IP3 #define SER_PORT 8888//服务器端口号4 int main(int argc, const char *argv[])5 {6 //1.创建用于监听的套接字7 int sfd-1;8 sf…...

kubectl 命令行管理K8S(上)

目录 陈述式资源管理方式 介绍 命令 项目的生命周期 创建 kubectl create命令 发布 kubectl expose命令 更新 kubectl set 回滚 kubectl rollout 删除 kubectl delete 应用发布策略 金丝雀发布 陈述式资源管理方式 介绍 1.kubernetes 集群管理集群资源…...

Redis 之四:Redis 事务和乐观锁

事务特点 Redis 事务可以一次执行多个命令&#xff0c; 并且带有以下三个重要的保证&#xff1a; 批量操作在发送 EXEC 命令前被放入队列缓存。 收到 EXEC 命令后进入事务执行&#xff0c;事务中任意命令执行失败&#xff0c;其余的命令依然被执行。不具备原子性。 在事务执…...

C# WPF编程-创建项目

1.创建新项目 选择“WPF应用程序”》“下一步” 设置项目 设置项目名称&#xff0c;保存位置等参数>下一步 3.选择框架 4.项目创建成功 5.运行项目...

密码学及其应用(应用篇15)——0/1背包问题

1 问题背景 背包问题是一个经典的优化问题&#xff0c;在计算机科学和运筹学中有着广泛的应用。具体到你提到的这个问题&#xff0c;它是背包问题中的一个特例&#xff0c;通常被称为0/1背包问题。这里&#xff0c;我们有一系列的正整数 &#xff0c;以及一个正整数&#xff0c…...

基于springboot+vue的实验室管理系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…...

华为OD技术面试案例5-2024年

背景 985本计算机专业&#xff0c;目标院校。 1.15 投递 在某BOSS上投递的简历&#xff0c;HR人很nice&#xff0c;非常负责任。 1.19 收到机试通知 第一题是一个哈夫曼编码&#xff0c;第三题是一个动态规划&#xff0c;机试整体难度不算高&#xff0c;刷leetcode hot100…...

【QT+QGIS跨平台编译】之五十五:【QGIS_CORE跨平台编译】—【qgsmeshcalcparser.cpp生成】

文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…...

Unity(第二十部)效果 粒子、线条和拖尾

1、粒子系统 粒子系统介绍 Unity 粒子系统是 Unity 引擎中用于创建和控制粒子效果的工具。它可以模拟各种自然现象&#xff0c;如火焰、烟雾、雨滴等&#xff0c;也可以用于创建特效&#xff0c;如魔法光芒、爆炸效果等。 粒子系统组成 在 Unity 中&#xff0c;粒子系统由发射…...

全量知识系统问题及SmartChat给出的答复 之6 三套工具之1

Q15. 提出想法和问题 前面说过&#xff0c;DDD在我要设计的全量知识系统中位于中间层&#xff0c;是专门用来解决“知识汤”问题的。 解决的思路就是以将为在特定领域中的公司经营提供一个责任-权限平面为目的&#xff0c;帮助他们调整商业模式以及组建恰当的组织&#xff0c…...

[RoarCTF 2019]Easy Calc

这题考查的是: 字符串解析特性目录读取文件内容读取 字符串解析特性详解&#xff1a;PHP字符串解析特性 &#xff08;$GET/$POST参数绕过&#xff09;&#xff08;含例题 buuctf easycalc&#xff09;_参数解析 绕过-CSDN博客 ascii码查询表&#xff1a;ASCII 表 | 菜鸟工具 …...

HTML 语义化

目录 HTML 语义化HTML5 新特性HTML 语义化的好处语义化标签的使用场景最佳实践 HTML 语义化 HTML5 新特性 标准答案&#xff1a; 语义化标签&#xff1a; <header>&#xff1a;页头<nav>&#xff1a;导航<main>&#xff1a;主要内容<article>&#x…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

Frozen-Flask :将 Flask 应用“冻结”为静态文件

Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是&#xff1a;将一个 Flask Web 应用生成成纯静态 HTML 文件&#xff0c;从而可以部署到静态网站托管服务上&#xff0c;如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...

【论文笔记】若干矿井粉尘检测算法概述

总的来说&#xff0c;传统机器学习、传统机器学习与深度学习的结合、LSTM等算法所需要的数据集来源于矿井传感器测量的粉尘浓度&#xff0c;通过建立回归模型来预测未来矿井的粉尘浓度。传统机器学习算法性能易受数据中极端值的影响。YOLO等计算机视觉算法所需要的数据集来源于…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...