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

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 总结

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/266276.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

TeXiFy IDEA 编译后文献引用为 “[?]“

文章目录 1. 问题描述2. 原因分析3. 解决方案3.1 添加自动化脚本3.2 附录——配置一览表 1. 问题描述 在 IDEA 中使用 TeXiFy IDEA 编译后的文章文献引用是 [?] 2. 原因分析 根据网上教程所生成的目录结构如下: 报错日志: 根据 /out 目录结构&#x…

Qt注册类对象单例与单类型区别

1.实现类型SingletonTypeExample #ifndef SINGLETONTYPEEXAMPLE_H #define SINGLETONTYPEEXAMPLE_H#include <QObject>class SingletonTypeExample : public QObject {Q_OBJECT public://只能显示构造类对象explicit SingletonTypeExample(QObject *parent nullptr);//…

Linux Shell脚本练习(三)

1、测试用户名与密码是否正确。 2、输出1-1000内的素数。 3、对 100 以内的所有正整数相加求和(1234...100)。 4、输出9*9 乘法表。 5、编写脚本,显示进度条。 、 6、输入三个数并进行升序排序

金融帝国实验室(CapLab)官方更新_V9.1.65版本(2024年第13次)

〖金融帝国实验室〗&#xff08;Capitalism Lab&#xff09;游戏更新记录&#xff08;2024年度&#xff09; ————————————— ◎游戏开发&#xff1a;Enlight Software Ltd.&#xff08;微启软件有限公司&#xff09; ◎官方网站&#xff1a;https://www.capitalism…

鸿蒙Harmony应用开发—ArkTS声明式开发(鼠标事件)

在鼠标的单个动作触发多个事件时&#xff0c;事件的顺序是固定的&#xff0c;鼠标事件默认透传。 说明&#xff1a; 从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。目前仅支持通过外接鼠标触发。 onHover onHover(event: …

Oracle中序列

1. Sequence 定义 在Oracle中可以用SEQUENCE生成自增字段。Sequence序列是Oracle中用于生成数字序列的对象&#xff0c;可以创建一个唯一的数字作为主键。 2. 为什么要用 Sequence 你可能有疑问为什么要使用序列&#xff1f; 不能使用一个存储主键的表并每次递增吗&#xf…

亿道信息新三防平板EM-I10J,性能和价格成最大亮点

亿道信息近期推出了一款新三防平板电脑名为EM-I10J&#xff0c;这款设备上市的初衷是为了在满足客户作业需求的同时为其提供更合适的价格选择&#xff0c;但这并不意味着EM-I10J的实力可以被小觑。 外观上I10J与之前的I10U并无不同之处&#xff0c;同样是10.1英寸高清电容式触…

编写科技项目验收测试报告需要注意什么?第三方验收测试多少钱?

科技项目验收测试是一个非常重要的环节&#xff0c;它对于确保科技项目的质量和可用性起着至关重要的作用。在项目完成后&#xff0c;进行科技项目验收测试可以评估项目的功能、性能和可靠性等方面&#xff0c;并生成科技项目验收测试报告&#xff0c;以提供给项目的相关方参考…

XUbuntu22.04之如何定制:已经绑定的快捷键?(二百一十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【免费】两阶段鲁棒优化matlab实现——CCG和benders

目录 1 主要内容 2 部分代码 3 程序结果 4 下载链接 1 主要内容 程序采用matlab复现经典论文《Solving two-stage robust optimization problems using a column-and-constraint generation method》算例&#xff0c;实现了C&CG和benders算法两部分内容&#xff0c;通过…

2024-02-29(Flink)

1.Flink原理&#xff08;角色分工&#xff09; 2.Flink执行流程 on yarn版&#xff1a; 3.相关概念 1&#xff09;DataFlow&#xff1a;Flink程序在执行的时候会被映射成一个数据流模型&#xff1b; 2&#xff09;Operator&#xff1a;数据流模型中的每一个操作被称作Operat…

1.1 创建第一个vue项目

cmd命令窗口运行 vue init webpack hellovue 注意&#xff0c;hellovue是项目名称&#xff0c;项目名称不能保存大写字母否者会报错 Sorry, name can no longer contain capital letters. 运行设个命令的时候可能会报错&#xff0c;根据提示先运行 npm i -g vue/cli-init …

Python中的os库

一.OS库简介 OS是Operating System的简写&#xff0c;即操作系统。 OS库是一个操作系统接口模块&#xff0c;提供一些方便使用操作系统相关功能的函数。 二.OS库常用函数 2.1文件和目录 2.1.1&#xff1a;os.getcwd() 作用&#xff1a;返回当前工作目录&#xff0c;结果是…

机器学习|决策树

左图的点是一种线性不可分的情况&#xff0c;无法拿一条直线去将进行分开。 每一个节点都代表一个决策&#xff0c;从而导致节点的分流。 最终的目标肯定是要达到分类。 但取得目标的过程是有所谓的好坏。 而这个好坏用熵/信息增益来衡量。 熵是一种用于反映系统混乱程度的物理…

力扣-H指数

问题 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数” &#xff0c;一名科研人员的 h 指数 是指他&#xff08;她&#xff09…

Linux - 基本指令

1、ls 指令 语法&#xff1a;ls [选项][目录或文件] 功能&#xff1a;对于目录&#xff0c;该命令列出该目录下的所有子目录与文件。对于文件&#xff0c;将列出文件名以及其他信息。 常用选项&#xff1a; -a 列出目录下的所有文件&#xff0c;包括以 . 开头的隐含文件-l …

【OJ比赛日历】快周末了,不来一场比赛吗? #03.02-03.08 #11场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…&#xff09;比赛。本账号会推送最新的比赛消息&#xff0c;欢迎关注&#xff01; 以下信息仅供参考&#xff0c;以比赛官网为准 目录 2024-03-02&#xff08;周六&#xff09; #4场比赛2024-03-03…

解决VSCode 不能拖拽文件问题

给【以管理员身份运行次程序】关掉&#xff0c;不要打勾 至于为什么开启了管理员就不能拖拽了&#xff0c;我也不知道&#xff0c;我猜的&#xff1a; 这可能是因为在VSCode中&#xff0c;管理员权限可能会限制用户对文件的操作权限。管理员权限对于一些操作可能会有更严格的限…

服务器主机,云主机日常安全加固需要注意的几点

服务器加固是指通过一系列安全措施和配置来提升服务器的安全性&#xff0c;从而减少服务器面临的安全威胁和攻击的可能性。 服务器加固方案通常包括以下一些常见的措施&#xff1a; 更新和升级操作系统和软件&#xff1a;定期更新和升级操作系统、服务器软件、数据库等&#…

Axure导入使用ElementUI组件库

在使用Axure进行UI设计时&#xff0c;我们可能导入ElementUI组件库或者一些其他的元件库&#xff0c;其实非常简单&#xff0c;如果你还没有装好Axure可以先安装好AxureRP9汉化版&#xff0c;接下来&#xff0c;我们以AxureRP9汉化版来演示如何导入ElementUI组件库。 第一步&a…