- 楔子 -
一直跟不上潮流,每年网络上各种流行词都不太会用,除非自己关注的领域也出现某个流行词,比如“虽迟但到”,我是通过看一个梅西的经典过人集锦视频学到该词的一个衍生词才知道:2015年的欧冠半决赛梅西通过假动作轻松晃到博阿滕然后将球打进,让博阿滕和一众拜仁后卫成为背景帝(也是个流行词),但在这个集锦视频里,迟迟未现这一经典场面,直到视频快结束时才看到博阿滕的身影,然后就看到网友纷纷发弹幕“博迟但到”,我发现这些网友太有才了。
回到CSI-RS系列学习笔记,距离上篇已经超过两个月,是因为工作忙到极致,几乎没有时间和精力去看资料写笔记,直到最近过了忙碌的巅峰期,才能零星抽空来学习和写笔记,这篇也算是“博迟但到”了。
- 正文 –
在《5G NR - CSI-RS学习笔记4 - 物理层资源映射》这篇开头提到了CSI序列由如下公式(38.211-7.4.1.5.2)生成:
然而并没有说生成细节,从公式看这里的关键是如何得到c(2m)和c(2m+1).
c(n)值的计算在38.211-5.2.1的如下一段描述:
Generic pseudo-random sequences are definedby a length-31 Gold sequence. The output sequence of length
, where
, is defined by
where and the first m-sequence
shall be initialized with
. The initialization of the second m-sequence,
, is denoted by
with the value depending on the application of the sequence.
但我看完这一段我还是一头雾水,脑袋充满诸多疑问(包括一些关于最基本概念的),比如:
1. Pseudo-random sequence是什么?Gold sequence是什么?m-sequence是什么?
2. length-31 Gold sequence是指sequence长度为31还是指sequence为31阶?
3. Gold sequence如何通过m-sequence得到?
4. 如何通过初始化
?
5. 一些文档/书籍里讲pseudo-random sequences时提到的的seed是什么?跟有什么关系?
试图查阅很多文档/博文或书籍里关于Pseudo-random/Gold/m-sequence部分的讲述,没有哪一篇能解答上面所有疑问,但综合起来,这些疑问就基本得到解决了。不过也只是“基本”解决,“基本”就是说CSI-RS序列生成过程的轮廓清晰了,但是随机序列背后本身涉及到的数学原理(比如本原多项式)的理解对于数学基础太差的我来说却并非朝夕的事,只能等有空再抽专门的时间学习,前缘等待,再续后爱。
1.pseudo-random sequences是什么?
即伪随机序列。
首先,“随机”就是字面意思:没有规律。”伪“”是伪造的,而不是真正意义上的随机,比如通过某些数学公式生成一个看起来像是真正随机的数列。伪随机序列是一个通用的概念,具体讲到CSI-RS序列,就是上面协议提到“Generic pseudo-random sequences are defined by a length-31 Gold sequence. ”,因此需要弄清楚什么叫Gold sequence.
2. Gold sequence是什么?length-31 Gold sequence是指sequence长度为31还是指sequence为31阶?
1) Gold sequence是一种伪随机序列,是二进制(binary)序列。
Gold, 并不是说这个序列像金子一样闪闪发光或值钱(当然这个序列确实为人类创造巨大的价值),而是因为这种序列是由一个叫Robert Gold的人提出。
Gold sequence由两个长度相同的m-sequence相互XOR(异或:按位加然后mod2)而成。
2) length-31 sequence是指31阶sequence,是指用于生成Gold sequence的两个m-sequence由31阶线性反馈移位寄存器(Liner Feedback Shift Registers - LFSR)输出.
3. m-Sequence是什么?
通过一个m阶的线性反馈移位寄存器可以输出周期<=的序列,选择合适的反馈函数可以使序列周期达到
,周期达到最大值的序列称为为m-sequence.(LFSR基本工作原理是给定前一状态的输出,将该输出的线性函数再用作输入的移位寄存器。)
上面协议描述中的和
就是m-sequence:
是第1个m-sequence
是第2个m-sequence
4. Gold sequence如何通过m-sequence得到?
Gold sequence在这里就是指协议提到的output sequence , 那
又是什么呢?单独说
时,它就是一个具体的数,数值∈{0,1},
组成
序列,其中n最大值是
.
就是通过上面协议提到的如下公式得到:
这个公式的计算对应的就是之前提到的“Gold sequence由两个长度相同的m-sequence相互XOR(异或:按位加然后mod2)而成。”,这里的两个m-sequence分别是和
, 其中
.
其中:
- 根据
计算,由
初始化。
- x_{2}(n)根据计算,由
初始化. 那么下一步就是看初始化具体如何完成。
5. 如何初始化
?
1) 首先要知道的值:
由于当前的slot,symbol, 等值都是已知,因此可以通过7.4.1.5.2 公式
得到。
2) 如何初始化?
2.1) 根据可以知道,只要知道
的值,就能得到
的值,从而进一步得到
之后所有的值。
那么如何确定的值呢?根据公式
:
2.2) 的意思是,
对应
的第
个bit的值(从LSB开始算),假设
的值是2,那么2对应的二进制00000000000000000000000000000010,
那么 就是0100000000000000000000000000000:
6. seed是什么?
根据一处 的定义“the initial condition to seed the second m-sequence ”
以及一段根据seed初始化m-sequence 的如下代码可以知道seed就是
--- clip ---
for(n = 0; n < 31; n++) {
x2[n] = (seed >> n) & 0x1; //x2[n]是将seed右移n位, 然后与0x1按位与(将高位清零)
}
--- clip ---
笔者在公众号“协议工程师笔记”定期首发NR/LTE/IMS...学习笔记, 敬请关注、订阅和分享,谢谢!
一起努力,蒸蒸日上