FPGA攻城狮玩5G通信算法的基本套路

作者:Duoqiang Liu,本文转载自:FPGA算法工程师微信公众号

5G通信的风口虽然经过近3年的洗礼,热度稍减,但不可否认的是,全球5G网络的部署正在持续快速推进,而我国更是部署了占据全球70%左右的5G基站。

随着工业互联网的推进,“5G+工业互联网”的企业融合组网模式,将在未来几年得到广泛应用。

图1 “5G+工业互联网”企业融合组网

干通信这行的朋友一定不会对数字信号处理陌生,当然在我们从事该行业前,都是经过比如《数字电路》、《模拟电路》、《信号与系统》、《数字通信原理》、《数字信号处理》、《现代信号处理》、《电磁场与电磁波》、《信息论与编码》等一系列课程磨练过。历经千帆,我们再来看看,通信系统的设计,套路在哪?从理论到实践,有几条街的距离?

一个完整的通信系统,是十分庞大的,没有几百上千人,在短时间内是做不好的。本文仅仅针对5G NR中的基带算法部分,做一个简单梳理。

对于5G通信系统, 站在基站侧的角度,那么下行方向的整个处理过程,从gNB MAC到终端UE MAC,可以用图2来说明。

图2 5G NR下行物理层处理过程

这张图在此不做过多解读,感兴趣的可以自己去找点资料了解。

我相信,只要你把这张图所包含的知识和技术,都搞明白了,年薪50W不是梦。

当然,与图2相对应地,还有NR上行物理层处理过程,如图3所示。

图3 5G NR上行物理层处理过程

当你把5G NR上下行都搞明白了,年薪100W应该不是梦。

但实际上,真正全部搞明白的人,在全人类来看,也是极少数。

在通信中,我们知道有几个概念,比如频谱搬移、时频域变换、星座映射、信道编解码、上下变频、ADC/DAC等。实际上,通信系统的设计,全是套路。当然,也存在一些特殊通信手段,并不按照国际标准出牌,这里面包含大量打破常规的方式,此处省略500字。

通信一收一发,要想高速率、低延时,上高阶调制,实际上还是有大量的工作需要去做。放眼世界,把5G玩得很6的,也就那几家。

对于5G基站而言,其典型的部署场景如图4所示。

图4 5G NR基站架构部署场景

话说回来,通信发射机的设计,在业界来看,不是主要挑战,核心算法也没几个,当然难点也是有的。各种控制信道、广播信道和数据信道揉在一起,就足够玩一年半载了。我们在比特级做些CRC、信道编码、速率匹配、加扰等手段,就把信号拿去做星座映射。而在符号级,我们做完星座映射后,成了复数信号,再进行层映射和天线端口映射,随后进行虚拟的物理资源映射,经过N点IFFT变换,得到OFDM符号。这里面涉及帧结构等相关知识套路,不展开讲,但也很有意思。最后,我们再通过DUC、 DAC转换、波束赋形、PA等技术手段,把基带信号变成射频信号,从天线发射出去。

下面图5给出了混合波束赋形的架构,这也是目前最实用的波束赋形方式。图6则对三种波束赋形进行了简要分析。

图5 混合波束赋形

图6 波束赋形类型

我们知道,香农老爷子提出的公式,如图7所示,C=Blog2(1+S/N),从理论上表明了在带宽有限的情况下,信道容量也是有限的。为了提高信道容量,我们用多根天线来撑起门面,搞MIMO空间复用和分集技术。MIMO也不是那么好搞,学术界在理论上发了不少文章,然而在产业界,能做到8T8R,都算可以了。

图7 香农公式与香农

发射机倒是完成任务了,接收机才开始。首先得通过天线把信号接收下来,这些信号就是肉眼看不见摸不着的电磁波,以特定的频率和波长,游荡在你我周围,并具有一定的穿透力。

我们用天线接收信号后,经过一系列滤波、ADC、DDC后,终于来到接收机的基带系统。接收机的设计,无疑是重头戏,设计实现的复杂度也要上升一个等级。全球玩家那么多,为啥只有高通、HW等巨头玩得很6,其他都一般的原因,由此可见。

接收机里面,有几个重要处理,直接决定了系统的性能。对于移动通信系统,FPGA工程师,应该怎么玩呢?

同步:如帧同步,符号同步等,常采用匹配滤波,相关运算。

频偏/相位补偿:接收机相干解调,本振非同频同相,以及多普勒频移等引起相位旋转,采用复数乘法CORDIC正余弦计算等手段进行补偿。

定时纠偏:符号定时同步准确与否,将决定能否完美地恢复OFDM符号。时偏极易引起符号间干扰ISI和载波间干扰ICI,并引起相位旋转,如图8所示。采用时域或频域的STO估计技术进行补偿。Gardner环路,插值运算,比较大小等。

图8 时偏造成的相位旋转示意图

信道估计与均衡:估计出各天线信道和符号的信道响应,通过相关和矩阵求逆等手段完成,常用算法有LS、MMSE、ZF等。

信道解码:与信道编码对应,但通常解码更复杂,例如Turbo、Viterbi、LDPC和Polar等。图9显示了各种纠错码的性能。

图9 各种纠错码性能对比

从算法层面讲,一个好的系统算法,的确可以让实现变得更简单,系统性能更优。但在实际工作中,其实也存在纯算法与纯实现的隔阂。主要反映为很多算法工程师熟知算法本身,但并不了解怎么用硬件去实现,思考的维度不够,也许可以设计出性能优异的算法,但是是否有利于硬件实现,也是必须考虑的问题。与此类似,如果ASIC/FPGA工程师不了解算法,只根据算法进行逻辑实现,很有可能会走弯路,多耗硬件资源。

一个再牛的算法,只有落地了,才能发挥出应有的价值。比如LDPC码和Polar码,是由香农的弟子及再传弟子搞出来的。这两个重要的编码技术,一个沉睡了半个世纪才被发掘进行实用化,另一个则是火速上线,一战成名。

一个再复杂的算法,弄清楚了本质,确认在什么样的场景下解决什么样的问题,也就不复杂了,这才是核心所在。

举个例子,比如空间站建设、火星探测器、卫星星座、5G通信等,系统复杂且庞大,任何一点小错误,就足以造成致命损伤。在工程实践中,形成工作闭环和复盘机制,划分风险等级和各种优先级,都是极为重要的。

图10 火星探测器天问一号环绕器与火星合影

虽然本篇文章在讲通信算法的套路,并从FPGA工程师的角度来简述闲扯,但其实背后始基于这样的动因:

逻辑实现和算法设计不分家,千万不要设定自己能力的边界,在术业有专攻的基础上,还应进行边界扩展,打通上下游,实现“架构-算法-实现-调试”有机结合。

当然,任何算法的研究,都是因某件事而生,也占据了人类最顶级的智慧,消耗了几十年如一日的光阴。

毫无疑问,罗马不是一天就能建成,而是聚沙成塔的过程。

话说回来,不论是算法,还是ASIC、FPGA、SOC本身,并没有什么套路,不过是遵循科学规律罢了。

最新文章