社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
5G:认识5G关键技术 - Go语言中文社区
Toggle navigation
文章
(current)
Go面试题
热
Go导航
Go教程
官方文档
中文文档
标准库文档
Golang入门指南
Go话题
登录
注册
5G:认识5G关键技术
SDR
定义
软件定义的无线电(Software Defined Radio,SDR) 是一种无线电广播通信技术,它基于软件定义的无线通信协议而非通过硬连线实现。频带、空中接口协议和功能可通过软件下载和更新来升级,而不用完全更换硬件。
所谓软件无线电,其关键思想是构造一个具有开放性、标准化、模块化的通用硬件平台,各种功能,如工作频段、调制解调类型、数据格式、加密模式、通信协议等,用软件来完成,并使宽带A/D和D/A转换器尽可能靠近天线,以研制出具有高度灵活性、开放性的新一代无线通信系统。可以说这种平台是可用软件控制和再定义的平台,选用不同软件模块就可以实现不同的功能,而且软件可以升级更新。其硬件也可以像计算机一样不断地更新模块和升级换代。由于软件无线电的各种功能是用软件实现的,如果要实现新的业务或调制方式只要增加一个新的软件模块即可。同时,由于它能形成各种调制波形和通信协议,故还可以与旧体制的各种电台通信,大大延长了电台的使用周期,也节约了成本开支。
特性
1)具有很强的灵活性。软件无线电可以通过增加软件模块,很容易地增加新的功能。它可以与其它任何电台进行通信,并可以作为其它电台的射频中继。可以通过无线加载来改变软件模块或更新软件。为了减少开支,可以根据所需功能的强弱,取舍选用的软件模块。
2)具有较强的开放性。软件无线电由于采用了标准化、模块化的结构,其硬件可以随着器件和技术的发展而更新或扩展。软件也可以随需要而不断升级。软件无线电不仅能和新体制电台通信,还能与旧式体制电台相兼容。这样,既延长了旧体制电台的使用寿命,也保证了软件无线电本身有很长的生命周期。
简单描述
通用硬件+软件可升级(动态加载新的波形和协议可使用不同的波形和协议操作 )。
MIMO
定义
MIMO:(Multiple-Input Multiple-Output)技术指在发射端和接收端分别使用多个发射天线和接收天线,使信号通过发射端与接收端的多个天线传送和接收,从而改善通信质量。它能充分利用空间资源,通过多个天线实现多发多收,在不增加频谱资源和天线发射功率的情况下,可以成倍的提高系统信道容量,显示出明显的优势、被视为下一代移动通信的核心技术。
特性
1)基本原理
发射端通过空时映射将要发送的数据信号映射到多根天线上发送出去,接收端将各根天线接收到的信号进行空时译码从而恢复出发射端发送的数据信号。
2)分类
A)
空间分集
:每个发送相同的信息,对抗多径干扰。
空间分集是指利用多根发送天线将具有相同信息的信号通过不同的路径发送出去,同时在接收机端获得同一个数据符号的多个独立衰落的信号,从而获得分集提高的接收可靠性。举例来说,在慢瑞利衰落信道中,使用一根 发射天线n 根接收天线,发送信号通过n 个不同的路径。如果各个天线之间的衰落是独立的,可以获得最大的分集增益为n 。对于发射分集技术来说,同样是利用多条路径的增益来提高系统的可靠性。在一个具有m根发射天 线n 根接收天线的系统中,如果天线对之间的路径增益是独立均匀分布的瑞利衰落,可以获得的最大分集增益为mn。目前在MIMO系统中常用的空间分集技术主要有空时分组码(Space Time Block Code,STBC)和波束 成形技术。STBC是基于发送分集的一种重要编码形式,其中最基本的是针对二天线设计的Alamouti方案。
B)
空分复用
:每个天线发送不同信息,提升传输速率,频谱利用率。
(spatial multiplexing)工作在MIMO天线配置下,能够在不增加带宽的条件下,相比SISO系统成倍地提升信息传输速率,从而极大地提高了频谱利用率。在发射端,高速率的数据流被分割为多个较低速率的子数据流,不 同的子数据流在不同的发射天线上在相同频段上发射出去。如果发射端与接收端的天线阵列之间构成的空域子信道足够不同,即能够在时域和频域之外额外提供空域的维度,使得在不同发射天线上传送的信号之间能够相互 区别,因此接收机能够区分出这些并行的子数据流,而不需付出额外的频率或者时间资源。空间复用技术在高信噪比条件下能够极大提高信道容量,并且能够在“开环”,即发射端无法获得信道信息的条件下使用。 Foschini等人提出的“贝尔实验室分层空时”(BLAST)是典型的空间复用技术。
简单介绍
多天线发射、多天线接收+提升信道容量。
CCFD
定义
在空中接口方面,同时同频全双工(CCFD: Co-time Co-frequency Full Duplexing)技术(后面简称“全双工”)能够在相同频率同时收发电磁波信号,相对于现在广泛应用的时分双工和频分双工,频谱效率有望提升一倍。
特性
核心问题是如何在本地接收机中抑制本地设备自己发射的信号(即自干扰)。
抵消方式有三种:
1)天线抵消:被动自干扰消除(Passive Cancellation)
天线端主要采用增大收发天线隔离度的方法,如简单的拉远本地收发天线距离,采用定向天线隔离,在收发天线间增加隔离材料,或采用阵列波束,减弱接收天线处的干扰信号强度等方法。
2)射频抵消
3)基带抵消
对射频和基带部分的干扰消除主要采用主动自干扰消除方式,预先进行自干扰信信号的幅度、相位做精确的估计,再重建自干扰信号并与接收信号反相叠加,实现自干扰消除。
自干扰参数估计越精确,自干扰消除越彻底。
制约全双工自干扰消除能力主要有自干扰估计和重建过程中的误差、放大器非线性等因素。
简单介绍
相同频率同时收发电磁波信号,提高频谱使用效率。
OFDM
定义
OFDM(Orthogonal Frequency Division Multiplexing)即正交频分复用技术,实际上OFDM是MCM(Multi Carrier Modulation),多载波调制的一种。
OFDM主要思想是:将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。正交信号可以通过在接收端采用相关技术来分开,这样可以减少子信道之间的相互干扰(ISI) 。每个子信道上的信号带宽小于信道的相关带宽,因此每个子信道上可以看成平坦性衰落,从而可以消除码间串扰,而且由于每个子信道的带宽仅仅是原信道带宽的一小部分,信道均衡变得相对容易。
特性
1)收发流程
在发射端,首先对比特流进行QAM或QPSK调制,然后依次经过串并变换和IFFT变换,再将并行数据转化为串行数据,加上保护间隔(又称“循环前缀”),形成OFDM码元。在组帧时,须加入同步序列和信道估计序列,以便接收端进行突发检测、同步和信道估计,最后输出正交的基带信号。
在接收端,当接收机检测到信号到达时,首先进行同步和信道估计。当完成时间同步、小数倍频偏估计和纠正后,经过FFT变换,进行整数倍频偏估计和纠正,此时得到的数据是QAM或QPSK的已调数据。对该数据进行相应的解调,就可得到比特流。
2)调制方式
OFDM是正交频分复用,将信道分成若干正交子信道,将高速数据信号转换成并行的低速子数据流,调制到在每个子信道上进行传输。
解调时要用一个有乘积积分功能的滤波器来提取每一路信号,由于各自载波之间的正交性,就可以很好地提取各路信号。
在通信系统中,例如我们用手机打电话的时候,通话数据被采样后,会形成D0、D1、D2、D3、D4、D5……这样连续的数据流。
FDM就是把这个序列中的元素依次地调制到指定的频率后发送出去。
OFDM就是先把序列划分为D0、D4、D8……D1、D5、D9……D2、D6、D10……D3、D7、D11……这样4个子序列(此处子序列个数仅为举例,不代表实际个数),然后将第一个子序列的元素依次调制到频率F1上并发送出去,第二个子序列的元素依次调制到频率F2上并发送出去,第三个子序列的元素依次调制到频率F3上并发送出去,第四个子序列的元素依次调制到频率F4上并发送出去。F1、F2、F3、F4这四个频率满足两两正交的关系,如下图所示。
简单介绍
OFDM:正交频分复用。将原始信道分成若干个子信道传递信号+提高传输速率、克服频率选择性衰落。
版权声明:本文来源CSDN,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_34624951/article/details/78649703
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
发表于 2019-08-26 15:58:34
阅读 ( 1838 )
分类:
0 推荐
收藏
你可能感兴趣的文章
精选的优质文章
也许 Go 开发可以更简单!
10551 浏览
如何使用 Golang 日志监控你的应用程序?
12026 浏览
从Go语言实现模板设计模式浅谈Go的抽象能力
14085 浏览
阿里云基于 Go 的微服务架构分享
23941 浏览
java是否会被取代?Go会否给Java带来冲击?
28474 浏览
千万级规模高性能、高并发的网络架构经验分享
30022 浏览
阿里部分面试题汇总,对想进阿里的同学非常实用
62316 浏览
实用好文:知乎实时数仓架构实践及演进
31338 浏览
支撑马蜂窝「双11」营销大战背后的技术架构
228293 浏览
想进大厂?50个多线程面试题,你会多少?(一)
23072 浏览
0 条评论
请先
登录
后评论
官方社群
关注公众号
—— 加入社区微信群 ——
→
「Go语言教程」
领取
GO教程
1. Go语言简介
1.1 Go语言简介
1.2 Go语言的特性
1.3 Go语言为并发而生
1.4 哪些项目使用Go语言开发?
1.5 哪些大公司正在使用Go语言
1.6 Go语言的性能如何?
1.7 Go语言标准库强大
1.8 Go语言上手简单
1.9 Go语言代码风格清晰、简单
1.10 Go语言工程结构详述
1.11 第一个Go语言程序
1.12 Go语言历史版本
2. Go语言基本语法
2.1 Go语言变量的声明
2.2 Go语言变量的初始化
2.3 Go语言多个变量同时赋值
2.4 Go语言匿名变量
2.5 Go语言变量的作用域
2.6 Go语言整型(整数类型)
2.7 Go语言浮点类型(小数类型)
2.8 Go语言复数
2.9 Go语言bool类型(布尔类型)
2.10 Go语言字符串
2.11 Go语言字符类型(byte和rune)
2.12 Go语言数据类型转换
2.13 Go语言指针
2.14 Go语言变量的生命周期
2.15 Go语言常量
2.16 Go语言类型别名
2.17 Go语言关键字与标识符
2.18 Go语言运算符的优先级
3. Go语言数据结构
3.1 Go语言数组
3.2 Go语言多维数组
3.3 Go语言切片
3.4 使用append()为切片添加元素
3.5 Go语言切片复制
3.6 Go语言从切片中删除元素
3.7 Go语言range关键字
3.8 Go语言多维切片
3.9 Go语言map(映射)
3.10 Go语言遍历map
3.11 map元素的删除和清空
3.12 Go语言sync.Map
3.13 Go语言list(列表)
3.14 Go语言nil:空值/零值
4. Go语言流程控制
4.1 Go语言分支结构
4.2 Go语言循环结构
4.4 Go语言键值循环
4.5 Go语言switch语句
4.6 Go语言goto语句
4.7 Go语言break(跳出循环)
4.8 Go语言continue
5. Go语言函数
5.1 Go语言函数声明
5.2 Go语言函数变量
5.3 Go语言匿名函数
5.4 Go语言函数类型实现接口
5.5 Go语言闭包(Closure)
5.6 Go语言可变参数
5.7 Go语言defer(延迟执行语句)
5.8 Go语言递归函数
5.9 Go语言处理运行时错误
5.10 Go语言宕机(panic)
5.11 Go语言宕机恢复(recover)
5.12 Go语言计算函数执行时间
5.13 Go语言Test功能测试函数
6. Go语言结构体
6.1 Go语言结构体定义
6.2 Go语言实例化结构体
6.3 初始化结构体的成员变量
6.4 Go语言构造函数
6.5 类型内嵌和结构体内嵌
6.6 初始化内嵌结构体
6.7 内嵌结构体成员名字冲突
6.8 Go语言垃圾回收和SetFinalizer
6.9 Go语言链表操作
6.10 Go语言数据I/O对象及操作
7. Go语言接口
7.1 Go语言接口声明(定义)
7.2 Go语言实现接口的条件
7.3 Go语言类型与接口的关系
7.4 Go语言类型断言
7.5 Go语言排序
7.6 Go语言接口的嵌套组合
7.9 Go语言接口和类型之间的转换
7.10 Go语言空接口类型
7.11 Go语言类型分支
7.12 Go语言error接口
8. Go语言包
8.1 包的基本概念
8.2 Go语言封装简介及实现细节
8.3 Go语言GOPATH
8.4 Go语言常用内置包
8.5 Go语言自定义包
8.6 Go语言package
8.7 Go语言导出包中的标识符
8.8 Go语言import导入包
8.9 Go语言sync包与锁
8.10 Go语言big包
8.11 Go语言正则表达式:regexp包
8.12 Go语言time包:时间和日期
8.13 Go语言os包用法简述
8.14 Go语言flag包:命令行参数解析
8.15 Go语言go mod包依赖管理工具
8.16 Go语言runtime包:运行时
9. Go语言并发
9.1 Go语言并发简述
9.2 Go语言轻量级线程
9.3 Go语言并发通信
9.4 Go语言竞争状态
9.5 Go语言调整并发的运行性能
9.6 并发和并行的区别
9.7 goroutine和coroutine的区别
9.8 Go语言通道(chan)
9.9 示例:并发打印
9.10 Go语言单向通道
9.11 Go语言无缓冲的通道
9.12 Go语言带缓冲的通道
9.13 Go语言channel超时机制
9.14 Go语言多核并行化
9.15 互斥锁和读写互斥锁
9.16 Go语言等待组
9.17 死锁、活锁和饥饿概述
9.18 Go语言CSP:通信顺序进程简述
9.19 示例:聊天服务器
10. Go语言反射
10.1 Go语言反射(reflection)
10.2 Go语言反射规则浅析
10.3 通过反射获取类型信息
10.4 通过反射获取指针指向的元素类型
10.5 通过反射获取结构体的成员类型
10.6 Go语言结构体标签
10.7 通过反射获取值信息
10.8 通过反射访问结构体成员的值
10.9 判断反射值的空和有效性
10.10 通过反射修改变量的值
10.11 通过类型信息创建实例
10.12 通过反射调用函数
10.13 Go语言inject库:依赖注入
11. Go语言文件处理
11.1 Go语言自定义数据文件
11.2 Go语言JSON文件的读写操作
11.3 Go语言XML文件的读写操作
11.4 Go语言使用Gob传输数据
11.5 Go语言纯文本文件的读写操作
11.6 Go语言二进制文件的读写操作
11.7 Go语言自定义二进制文件的读写操作
11.8 Go语言zip归档文件的读写操作
11.9 Go语言tar归档文件的读写操作
11.10 Go语言使用buffer读取文件
11.11 Go语言文件的写入、追加、读取、复制操作
11.12 Go语言文件锁操作
12. Go语言编译和工具链
12.1 go build命令
12.2 go clean命令
12.3 go run命令
12.4 go fmt命令
12.5 go install命令
12.6 go get命令
12.7 go generate命令
12.8 go test命令
12.9 go pprof命令
13. Go语言进阶
13.1 Go语言的深拷贝和浅拷贝
13.2 Go语言引用传递和值传递
13.3 Go语言的Socket编程
14. 常见面试题
14.1 Golang Map底层实现
14.2 go语言触发异常的场景有哪些
14.3 Printf()、Sprintf()、Fprintf()函数的区别用法是什么
14.4 详细说说new和make的区别
14.5 详细说说切片和数组的区别
14.6 Golang的内存模型,为什么小对象多了会造成gc压力
14.7 Data Race问题怎么解决?能不能不加锁解决这个问题
14.8 在 range 迭代 slice 时,你怎么修改值的
14.9 select可以用于什么
14.10 go语言编程的好处是什么
14.11 你是否主动关闭过http连接,为啥要这样做
14.12 recover的执行时机
14.13 说出一个避免Goroutine泄露的措施
14.14 如何跳出for select 循环
14.15 如何初始化带嵌套结构的结构体
14.16 Printf()、Sprintf()、Fprintf()函数的区别用法是什么
14.17 go语言中的引用类型包含哪些
14.18 说说go语言的select机制
推荐文章
猜你喜欢
随便看看
golang笔记(1)windows开发环境搭建
精选!15个必备的VSCode插件
VSCode的使用
VSCode 常用插件
让你成功安装vscode中go的相关插件
Windows下构建基于vscode的go语言开发环境
基于Django 文档1.11 自解+补完 学习django ---part1
Vue.js2.0环境配置到你第一个叼大的App!
django 实现web接口 python3模拟Post请求
GoLand 2018.3 Windows版激活教程(已上传激活文件)
×
发送私信
发给:
内容:
×
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!