5g空分复用技术_5G通信技术原理总结

本文详细介绍了5G通信的基本流程,包括信源编码、信道编码、调制技术、载波调制技术以及关键的5G技术如OFDM、massive MIMO和上下行解耦。内容涵盖了从基带芯片处理到射频调制的全过程,强调了5G在提高频谱效率和覆盖能力方面的创新技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

aec8a62f86ab7feb9be513aae979e4eb.png

5G通信的基本流程框图

如上图,5G智能手机MIC输入的模拟信号会通过基带中的AD数模转换电路,完成采样、量化、编码,变成数字信号。具体过程如下如所示:

信源编码

a0131e6ba70e6c7a11c8b4ef7efb6cb2.png

信源编码

上图中的编码,我们称之为信源编码。

信源编码,说白了,就是把声音、画面变成0和1。在转换的过程中,信源编码还需要进行尽可能地压缩,以便减少“体积”。

对于音频信号,在多媒体中我们常用的是PCM编码。但在移动通信系统中,以3G WCDMA为例,用的是AMR语音编码。4G VoLTE还是沿用了AMR的编码格式,包括宽带声码器AMR-WB共8种编码速率,最高23.65kbps以及窄带声码器AMR-NB,从12.2到4.75kbps。采用那种编码器取决于终端能力和网络侧调度.对于视频信号,常用的是H.264、H.265编码。大家应该也比较熟悉。

除了信源编码之外,基带芯片还要做信道编码,通信协议实现等工作。

基带芯片硬件架构:

手机基带芯片的硬件架构一般采用CPU+DSP+ASIC的形式。硬件是基带芯片的躯体,决定了基带性能的下限;CPU主要用于运行基带协议栈代码,目前主流的基带CPU多采用ARM内核,主要是Cortex A系列和Cortex R系列。另外,为了降低基带芯片功耗,还会额外采用一颗Cortex M作为基带芯片在飞行模式、待机等低功耗场景下的MCU;DSP是基带芯片的核心硬件,用来实现无线通信物理层(L1)核心算法。主要功能有编解码、FFT/iFFT、CRC校验等,DSP决定了基带芯片数据吞吐能力。DSP有自行研发和IP授权两种,高通、MTK、海思采用自研方案,其他厂商采用Ceva公司的IP授权;ASIC:包括基带芯片内部调试接口,外围接口等附属功能的实现,这类芯片复杂度较低,一般采用IP授权的方式。

基带芯片软件架构:

基带芯片软件主要有实时操作系统(RTOS)、驱动程序(Drivers)和协议栈(Protocol Stack),协议栈是基带软件的核心。软件是基带芯片的灵魂,决定了芯片的性能上限。

c588c0ac90459e5096aaac9bd35f0ef6.png

基带芯片硬件架构设计图

424164297b2ef715e6ce5ff401a1c417.png

基带芯片软件架构设计图

信道编码

6240684a8c026b2c939db9ac49c4cc8b.png

编码分为信源编码和信道编码

信道编码和信源编码完全不同。信源编码是减少“体积”。信道编码恰好相反,是增加“体积”。

信道编码通过增加冗余信息,对抗信道中的干扰和衰减,改善链路性能。举个例子,信道编码就像在货物边上填塞保护泡沫。如果路上遇到颠簸,发生碰撞,货物的受损概率会降低。

422c5854380a81a50ad46dc94c31351a.png

 信道编码的作用是通过对数据进行编码,提高数据传输的可靠性,降低数据传输财务导致的重传,间接提升频谱效率

LTE使用的是turbo编码技术,其特点是性能好,但是处理较大的数据时,编解码的功耗会大幅增加

5G NR的业务信道用的是LDPC编码技术,其性能好,复杂度低,通过并行技术,对高速业务支持好,控制信道采用的是polar码技术,其对于小包业务编码性能突出。

ece63a8c035d38084be2c584c1a6d289.png 

调制技术

除了编码之外,基带还要对信号进行加密。接下来的工作,还是基带芯片负责,那就是调制。

调制

### 单片机分时复用的实现与原理 #### 什么是分时复用? 分时复用是一种通过时间分割来共享资源的技术。在单片机系统中,硬件资源有限,而多个任务可能需要同时运行。为了高效利用这些资源,可以采用分时复用技术,让单片机在一个时间段内处理一个任务,再切换到另一个任务,从而模拟出“多任务并行”的效果[^2]。 #### 分时复用的核心机制 分时复用的关键在于精确控制每个任务的执行时间和顺序。这通常依赖于定时器中断或软件计数器来管理时间分配。以下是其实现的主要组成部分: 1. **定时器模块** 定时器用于提供精准的时间基准。例如,在51单片机中,可以通过配置定时器1(T1)或其他定时器来设置固定的溢出周期,进而触发中断服务程序[^2]。每次中断发生时,可以根据当前状态判断下一个任务应该是什么。 2. **任务调度逻辑** 在分时复用中,每项任务都有自己的优先级和执行时间窗口。当某个任务被激活时,它会占用CPU一段时间完成特定操作;之后,系统自动跳转至下一项任务。这种轮询式的任务切换使得看似复杂的多线程工作得以简化[^2]。 3. **上下文保存与恢复** 切换不同任务之前,必须保存当前任务的状态信息(如寄存器值、堆栈指针等)。这样可以在重新回到该任务时继续未完成的工作而不丢失任何数据[^2]。 4. **循环队列结构** 使用环形缓冲区或者数组存储待执行的任务列表及其对应参数。每当完成某次迭代后更新索引位置指向新的目标地址以便启动新进程实例[^2]。 #### 软件层面的具体实现方法 下面给出了一种基于软件计数器的方法描述如何构建简单的实时操作系统框架下的分时多路复用功能: ```c // 初始化全局变量 volatile unsigned int Timer_Count = 0; // 记录自上次重置以来经过了多少个单位时间间隔 volatile unsigned char Task_Number = 0; // 当前正在运行的任务编号 void Init_Timer() { TMOD |= 0x10; // 设置为模式1 (16-bit auto-reload mode) TH1 = -(65536 - BAUD_RATE); // 配置初值以达到所需波特率 TL1 = TH1; EA = 1; // 开启总中断使能 ET1 = 1; // 启动定时/计数器1 中断允许位 } void main(){ Init_Timer(); // 初始化定时器 while(1){ switch(Task_Number){ // 根据任务号调用相应函数 case TASK_A: Do_TaskA(); break; case TASK_B: Do_TaskB(); break; default : ; // 默认情况不做特殊处理 } Delay_Until_Next_Switch(); // 等待直到满足条件才进行下一步切换 } } ISR(TIMER1_ISR) { // 定义定时器1中断服务例程 static unsigned long Last_Ticks[TASK_COUNT]; // 存储各任务最后访问时刻戳 unsigned short Elapsed_Time, i; TR1 = 0; // 关闭定时器防止干扰计算过程准确性 TImer_Count++; // 更新全局计数值 for(i=0;i<TASK_COUNT;i++) { // 对每一个注册过的活动对象逐一检查是否到期需唤醒 Elapsed_Time = Timer_Count - Last_Ticks[i]; if(Elapsed_Time >= Periods[i]){ // 如果已超出规定时限则立即响应请求 Task_Number = i; // 修改标志量指示即将转入的新作业序列号 Last_Ticks[i]=Timer_Count; // 更新最新一次实际出发瞬间作为参照基点 break; // 提前结束遍历流程因为已经找到匹配项目无需再往下查找其他可能性了 } } TF1 = 0; // 清除本次事件产生的标志信号以防重复触发异常状况的发生 TR1 = 1; // 恢复开启定时装置恢复正常运作状态准备迎接新一轮周期到来 } ``` 此代码片段展示了如何利用定时器中断配合软定时算法达成基础版RTOS雏形——即支持若干固定频率独立运转的小型子程序交替执行的效果。 --- ####
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值