5G 调制与解调
调制,就是将原始信号转换为适合在信道中传输的形式的一种过程,在无线通信中,调制一般均指载波调制,而解调则是调制的逆过程,即将原始信号从已调信号中恢复出来。
进行载波调制,主要为实现以下目标:
1)在无线传输中,信号是以电磁波的形式通过天线辐射到空间的。为了获得较高的辐射效率,天线的尺寸必须与发射信号波长相匹配。因此,需要通过调制将基带信号的频谱搬迁至较高的频带,使得已调信号的频域与信道的带通特性相匹配,这样就可以以较小的发送功率和较短的天线来辐射电磁波。
2)将多个基带信号的频谱搬移至不同的频点,从而实现频分复用,提高频谱利用效率。
3)扩展信号带宽,提高系统抗干扰、抗衰落能力
在5G NR中,主要使用正交振幅调制(Quadrature Amplitude Modulation, QAM),包括BSPK,QPSK,16QAM, 64QAM, 256QAM等;它是一种振幅和相位联合键控的调制方式,由于其矢量图看似星座,故又称为星座(Constellation)调制。在3GPP 38.211协议中,对物理层各信道的调制以及解调方式进行说明。
在π/2-BPSK中,二进制比特b(i)映射至复值调制符号d(i)
在BPSK中,二进制比特b(i)映射至复值调制符号d(i)
在QPSK中,二进制比特b(2i)和b(2i+1)映射至复值调制符号d(i)
在16QAM中,二进制比特b(4i), b(4i+1), b(4i+2), b(4i+3)映射至复值调制符号d(i)
在64QAM中,二进制比特b(6i), b(6i+1),b(6i+2),b(6i+3),b(6i+4),b(6i+5)映射至复值调制符号d(i)
在256QAM中,二进制比特b(8i), b(8i+1),b(8i+2),b(8i+3),b(8i+4),b(8i+5),b(8i+6),b(8i+7)映射至复值调制符号d(i)
下面是通过python实现的调制和硬解调的代码:
# -*- coding: utf-8 -*-
# @Time : 2019/11/24 10:24
# @Author : Administrator
# @File : modulator.py
# @Software : PyCharm import numpy as np class ModulateTable(): def __init__(self, **kwargs):
self._bpsk_cor = np.sqrt(1/2)
self._qpsk_cor = np.sqrt(1/2)
self._16qam_cor = np.sqrt(1/10)
self._64qam_cor = np.sqrt(1/42)
self._256qam_cor = np.sqrt(1/170) self.const_bit = {'BPSK': 1, 'QPSK': 2, '16QAM': 4}
self.bit_table = {'BPSK': np.array( [0, 1] ),
'QPSK': np.array([[0, 0], [0, 1], [1, 0], [1, 1]]),
'16QAM': np.array([[0, 0, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [0, 0, 1, 1],
[0, 1, 0, 0], [0, 1, 0, 1], [0, 1, 1, 0], [0, 1, 1, 1],
[1, 0, 0, 0], [1, 0, 0, 1], [1, 0, 1, 0], [1, 0, 1, 1],
[1, 1, 0, 0], [1, 1, 0, 1], [1, 1, 1, 0], [1, 1, 1, 1]])} def _bpsk_table(self):
return np.array([1+1j, 1-1j]) def _qpsk_table(self):
return np.array([1+1j, 1-1j, -1+1j, -1-1j]) def _16qam_table(self):
return np.array([ 3+3j, 1+3j, -1+3j, -3+3j,
-3+1j, -1+1j, 1+1j, 3+1j,
3-1j, 1-1j, -1-1j, -3-1j,
-3-3j, -1-3j, 1-3j, 3-3j]) class Modulator(ModulateTable): def __init__(self, **kwargs):
super().__init__(**kwargs)
self.mod_type = kwargs.get('mod_type', '') def modulate(self, input): self._get_symbol_table()
const_bit_num = self.const_bit[self.mod_type]
bit_table = self._get_bit_table(const_bit_num) input = input.reshape((-1, const_bit_num))
order = np.dot(input, bit_table)
ouput = self.symbol_table[order] return ouput def demodu_hard(self, input): self._get_symbol_table()
bit_table = self.bit_table[self.mod_type]
min_loc = list(map(self.cal_distance, input))
output = bit_table[min_loc].flatten() return output def demodu_soft(self, input):
pass def cal_distance(self, rec_symbol):
return np.argmin(abs(rec_symbol - self.symbol_table)) def _get_symbol_table(self): if self.mod_type == 'BPSK':
self.symbol_table = self._bpsk_table() * self._bpsk_cor
elif self.mod_type == 'QPSK':
self.symbol_table = self._qpsk_table() * self._qpsk_cor
elif self.mod_type == '16QAM':
self.symbol_table = self._16qam_table() * self._16qam_cor
else:
raise ValueError("Only support BPSK, QPSK, 16QAM in modulate!") def _get_bit_table(self, bit_num):
return np.logspace((bit_num - 1), 0, bit_num, endpoint=True, base=2).astype(np.int) if __name__ == '__main__': input = np.random.randint(0, 2, 1024) modu = Modulator(mod_type='16QAM')
demodu_in = modu.modulate(input)
demodu_ou = modu.demodu_hard(demodu_in)
print(demodu_in)
print(demodu_ou) if (input == demodu_ou).all():
print("right")
else:
print("error")
5G 调制与解调的更多相关文章
- DVB-C系统中QAM调制与解调仿真
本文简单记录一下自己学习<通信原理>的时候调试的一个仿真DVB-C(Cable,数字有线电视)系统中QAM调制和解调的程序.自己一直是研究"信源"方面的东西,所以对&q ...
- 【Matlab】BFSK的调制与解调仿真
写在前面 本篇是[Matlab]BASK的调制与解调仿真的下篇,考虑到阅读体验,故另开一篇分享将BFSK的调制与解调仿真. 索引 写在前面 一.BFSK的调制 1.1 异频载波生成 1.2 信号合并 ...
- <转载>调制与解调电路详解
原文链接:http://www.elecfans.com/analog/20120509270848_4.html 调幅和检波电路 广播和无线电通信是利用调制技术把低频声音信号加到高频信号上发射出去的 ...
- matalb 产生信号源 AM调制解调 FM调制解调
%%%%%%%%%%%%%%%%%%%%%%%%%%% %AM调制解调系统 %%%%%%%%%%%%%%%%%%%%%%%%%%% clear; clf; close all Fs=800000;%采 ...
- 解读:20大5G关键技术
解读:20大5G关键技术 5G网络技术主要分为三类:核心网.回传和前传网络.无线接入网. 核心网 核心网关键技术主要包括:网络功能虚拟化(NFV).软件定义网络(SDN).网络切片和多接入边缘计算(M ...
- 小小知识点(二十七)20大5G关键技术
5G网络技术主要分为三类:核心网.回传和前传网络.无线接入网. 核心网 核心网关键技术主要包括:网络功能虚拟化(NFV).软件定义网络(SDN).网络切片和多接入边缘计算(MEC). 1 网络功能虚拟 ...
- 计算机网络模型与5G协议
计算机网络模型与5G协议 目录 计算机网络模型与5G协议 一.分层思想 1.什么是分层思想 2.分层思想的优势 二.osi七层参考模型 1.国际标准化组织(ios) 2.七层模型及对应功能和硬件 3. ...
- 通信原理实践(二)——幅度调制
一.幅度调制,并画出时域和频域波形 1.代码如下: function [ p_n ] = AM_func( N,fs,fm,Am,fc,Ac,Ma ) %UNTITLED 此处显示有关此函数的摘要 % ...
- GaN助力运营商和基站OEM实现5G sub-6GHz和mmWave大规模MIMO
到2021年,估计全球会有更多的人拥有移动电话(55亿),将超过用上自来水的人数(53亿).与此同时,带宽紧张的视频应用将进一步增加对移动网络的需求,其会占移动流量的78%.使用大规模多输入多输出(M ...
随机推荐
- oracle使用parallel并行,多线程查询
insert into tmp (select /*parallel (a, 4)*/ * from plsuer.as_cdrindex_info_h partition(P_20170430) w ...
- SecureCRT 多个会话显示在同一窗口
- Ubuntu改坏sudoers后无法使用sudo的解决办法
练习安装odoo的时候,创建了一个odoo用户,想把它赋予sudo权限,然而,编辑的时候不留意,改坏了,导致sudo无法使用,无法编辑sudoers文件修改回来. 总提示如下信息: >>& ...
- Install Elastic stack
1. 安装环境 系统版本:centos 6.9 java版本:1.8.0_181 程序版本:6.6 (整个stack需保持相同的版本) 2. 安装顺序 1 Elasticsearch 2 Kibana ...
- day20191205笔记
Tips: 1.课堂效率 2.每天回顾昨天学习内容,趁热打铁+查漏补缺.(上课笔记,回去补充.) 默写: 1.请说出(访问修饰符)作用域public,private,protected,以及不写时的区 ...
- day20191012笔记
课程默写笔记: 1.程序架构 C/S 客户端/服务器端 B/S 浏览器/服务器端 2.Tomcat应用服务器 tomcat默认端口号是80:tomcat配置文件中通常端口的定义是8080: 3.使用开 ...
- vim介绍、颜色显示和移动光标、一般模式下移动光标及复制、剪切和粘贴
第4周第4次课(4月12日) 课程内容: 5.1 vim介绍5.2 vim颜色显示和移动光标5.3 vim一般模式下移动光标5.4 vim一般模式下复制.剪切和粘贴 5.1 vim介绍 centos7 ...
- Linux下利用nginx实现负载均衡
linux下利用nginx实现负载均衡 前提条件: 1,安装好jdk 2,安装好tomcat和nginx(可以参考我前两篇文章) 满足前提条件后,要用nginx实现负载均衡,主要是靠配置nginx的配 ...
- 转战C#_001
---------------尽量用最少的语言描述 C# 世界里的所有事物------------------- 1. C#(pronounced "C-sharp") is an ...
- 西瓜哥:公有云也“All-Flash”?
本文转载自 高端存储知识 Gartner在2018年Market Insight: Preparing for the SSD Rise and HDD Demise一文中指出:当闪存介质降到HDD每 ...