上一篇中,介绍了srsLTE 中的一些关键的线程,本篇会从宏观的角度来理解一下srsLTE UE代码中的一些关键的类的实现,这对后面的代码的阅读会有很大的帮助。在讲解这些类之前,先来看一下LTE协议栈的两张架构图。
|
LTE协议栈下行架构 |
|
LTE协议栈上行架构 |
从上下行的架构图中,可以看出上下行有些共同之处,分层上来看,它们都有RRC、PDCP、RLC、MAC、和物理层(UE还有一个NAS层,用来和核心网进行信令交互)。
当然,它们的区别也还是很明显的,主要体现在MAC层和物理层。在LTE中,下行的物理信道多一些,主要包括:PSS、SSS、PBCH、CRS、PDCCH、PCFICH、PHICH、PDSCH、PMCH。上行主要包括,PRACH、PUCCH、PUSCH、SRS。本篇先简单的来介绍一下协议栈中的一些基本概念,详细的内容在后续的代码解读中会再重点介绍。
PSS、SSS:
主辅同步信道,UE通过这两个信道来进行下行同步,和基站取得空口时隙的对齐。
PBCH:
物理广播信道,主要用来广播MIB,主要包含SFN、带宽、PHICH等信息。
CRS:
小区参考信号,主要用来辅助PDSCH的解调,UE上报的CQI也是通过CRS信号进行测量的。
PCFICH:
该信道主要用来指示PDCCH的占用的符号数。
PHICH:
用来对UE发送的PUSCH数据进行反馈确认。
PDCCH:
物理下行控制信道,主要通过不同的DCI格式来只是UE去解调下行数据,或者指示UE发送上行数据。
PDSCH:
物理数据共享信道,主要用来承载UE的下行数据,SIB公共的信息也会再该信道发送。
PRACH:
随机接入信道,UE在PRACH信道中随机选择资源发送随机接入的MSG1,PRACH的相关时频资源在SIB2中指定,也就是说UE至少要解到SIB2才能发起随机接入流程。
PUCCH:
物理上行控制信道,主要用来让UE反馈CQI、RI、PMI、ACK等信息,UE采用什么时频资源来发送相关信息,是有基站在接入过程中动态分配的,PUCCH资源的分配也是基站的一项重要任务。
PUSCH
物理上行共享信道,UE需要发送的业务数据在该信道中发送,当然,UE在什么位置?用什么MCS?这些都是基站通过PDCCH信道(DCI0格式)来通知UE的。
SRS:
该信道也是由基站分配不同的资源给UE,UE可以发送SRS,基站进行测量,可以完成上行频选调度的功能。
总的来说,信道和信道,实际上是一组时频资源的组合,它们使用不同的编码调制方式,它们的解调性能也是不一样的,在LTE协议栈的开发中,对不同的信道进行仿真,是一项很关键的任务。LTE基站的一部分任务是需要对这些资源进行合理的分配和使用。
关于NAS、RRC、PDCP、RLC、MAC这些协议层的概念将放在后面的章节再详细介绍。下面先来看一下srsLTE UE代码中的一些关键的类,整体的了解这些类,对后续的代码阅读有很大的帮助。
代码中的最大的类是class ue这个类,它是最顶层的类,它包含了gw、stack、phy、radio这些类。C++的最基本的特性之一就是面向对象,它可以更好的帮助编程人员进行模块化思考。一个类仅完成一个特定的任务,下图就可以比较好的看出这点。基本上每个协议层都有对应的类,这对于保持代码的逻辑清晰是非常有帮助的。
|
srsLTE UE代码中的关键类 |
这里暂不会展开讲解这个类的具体实现,这个过程是非常冗长的,还是在后续的模块讲解中再逐一介绍。下一篇,我们将重点关注一下,这些类之间的接口是如果定义和实现的。