下冰雹 · 2022年04月29日

SD-FEC硬核在5G-NR中的使用方法

SD-FEC硬核LDPC编解码使用方法

概述

本文主要描述如何应用Xilinx的SD-FEC集成块硬核资源,进行5G-NR 通信系统PDSCH和PUSCH信道编解码开发。主要从SD-FEC集成块硬核特性、配置流程和注意事项等进行说明。由于在实际项目开发过程中,涉及大量技术细节,在此文中将不展开详细讨论。

2 如何获取SD-FEC集成块硬核IP资料?

当你在学习或工作中,可能会使用Xilinx公司的Zynq UltraScale+ RFSoC系列芯片进行项目开发,在某些芯片型号中,自身带有SD-FEC硬核资源,具体查询方式,可在Xilinx官方网站检索DS889手册。

SD-FEC集成块硬核资料可在Xilinx网站下载,PG256便是该IP产品手册,如下图中所示。
3a679c40af3afff052abc18db7ce4557.png

也许细心的你,已经发现了上图中的论坛问答,有我本人的问答记录。这也将载入SD-FEC硬核应用史册,方便全球的5G工程师从中学得一些经验。基于这样的目的,我将这些零碎的心得体会,发布在我个人微信公众号上。

当我们从网站下载了IP手册后,需要结合实际需要进行阅读,并尝试进行开发。

众所周知,5G与4G的一大不同,就是信道编解码技术完全不同,以及可配置的子载波间隔有了更多选项,带宽得到大幅度提高,同时考虑应用到更多新型场景。

在进行开发时,虽然SD-FEC硬核已经集成到芯片中,但依然需要对应的IP license。这一点,也可通过在Xilinx官方网站申请获取。申请需要用户注册,如果您已购买相关的license,或者通过申请获取,需要注意将本地PC主机的MAC地址修改与IP license一致,校验通过方可使用。

3 SD-FEC IP 介绍

当你下载获得该IP的产品手册后,便可进行阅读,获取相关信息,进行相应的开发了。

事实上,当你第一次使用时,有一种懵懵哒的感觉,因为你不知道,怎样在短时间内很好的用起来。

Xilinx的PG256产品手册提供中英文版,看英文比较费力的朋友(不过笔者相信,作为《科学文化人》的读者,英文功底肯定不错),可以尝试去读中文版,或者中英结合。

下面,重点针对IP的特性、应用等进行简单的说明。

e4b8f0f2466e9892ac249a5375262496.png

上图中,包含了非常丰富的信息,当然你也可能说,每一个字我都认识,但是连起来我却一无所知。如果想深入了解,不妨在夜深人静的时候,找笔者交流一下学习心得。

看到这些特性,实质上你应该知道,该IP支撑支持LTE中的Turbo解码以及5G-NR中的LDPC编解码,当然还有更多应用。

本文比较关心LDPC编解码,因此,其余的配置和使用不在讨论之列。

我选取了关于LDPC编解码部分,贴出来,与大家一起讨论。

b24dba91dd0be3e1682f4478be2b244e.png

如果你想看懂上图中的叙述,建议先看看手册,以及5G-NR标准技术报告,了解LDPC码在5G标准中的应用情况。

字越少,事越大,并且也重要。

7d6bd49fd555916f86cfa39bbe467d43.png

98df5c5fad9fe4e4a3dcb7d1e3f17f42.png

这里面涉及到端口的具体使用,因此,还是建议仔细看文档。

13c9efeabc8f84298061960aa15ff0c4.png

整个SD-FEC硬核的架构如下图所示。

7e24c7f2c2f7b5640e37b57e930f9eae.png

上图中,包含的信息也是极为丰富,如果你用FPGA实现了该IP,我想年薪百万不是梦。

上图中给出了IP 的接口和数据流向,整个硬核的框架,十分清晰。重点在于这副牌在你手里,怎么去打。

46c261c2b11b665ac8e8b610156d7dc0.png

4 如何应用SD-FEC进行LDPC编解码开发

当你拿到手册后,读完一遍,长舒一口气,说简单也简单,说不简单,也不简单。

在此,我只提醒两点,敲黑板:

f691b57aca46676a3c54ec19f354654d.png

35d0d54fcd8522306e6e468f81bc5d92.png

只需要注意这两点,足够解决大部分问题,其他当然也很重要,限于篇幅,此处省略5千字。

接下来,我们打开Vivado设计环境,把SD-FEC调出来,看看是不是足够英俊潇洒。

建立一个新工程,选择RFSOC系列器件的芯片,在IP目录里找到Soft-Decision FEC。

33023290cc9d0ef69ede83f0bb459f7b.png

接下来,你可以按照手册中的说明,一步步往下配置。比如,选择5G标准,LDPC Decode模式。
514fb5f8331f1839aad5cd0b8104eea8.png

配置接口,这里我用Initialized,具体差异,自行体会。配置通道数,根据自己的喜好,萝卜青菜,各有所爱。

fb4e1b50a8743f91e409421cba316fab.png

接下来,默认,不想去设置它。

3bec98574659fbaa92ee91c67666108a.png

接下来,是最后一项,假如你想使用例程进行开发,就勾选带处理器。如果你觉得例程不好用,想自己实战一次,施展自己的才华,那么就不勾选例程,自己动手,丰衣足食。

950f2cfbf166a31837b7e60cebbbb922.png

一顿猛操作后,我们把IP实例文件拷贝到工程中,接下来,就任由你发挥了。

230d197c278e5cca09ca380084c4f8e8.png

当你幸幸苦苦写完代码,进行仿真验证,并且解决掉无数个bug后,你终于露出了甜美的笑容。

于是,你迫不及待地想上板调试,证明自己是一个王者,而不是青铜。

这里还是提醒一下,这个硬核的物理位置约束。如果你只是用了一个或两个硬核资源做LDPC编解码,Vivado会自动去布局,一般情况下,也能得到较好的时序效果。

但是,最怕的就是但是这一转折性语句。但是,Xilinx说了,如下总结。

a54d5cb2746a6bc17adab59d55d77f10.png

具体位置怎么约束呢?Xilinx给出了一张表。

724a68a87fcc568e6adbf99c9c072634.png

于是,你照着做了,跑出了完美的bit,就等上板见证奇迹的时刻。

是不是很简单,看到这里,你觉得不过如此嘛,值得你打这么多字,熬那么深的夜?

人穷怪屋基,人笨怪自己。

这里,在多说几句,关于CTRL和status端口。

对于LDPC解码,其CTRL如下:

fd7f8b6dd310713ba48b6a53d0b0d16a.png

对于LDPC编码,其CTRL如下:

481b8d5161ee8bc86d11ba86630a0751.png

端口用的好,可节约开发难度和开发周期。

对于status端口,作为输出端,还是有必要关注一下。

94985495eb36af7fcf520ed4905b5bd4.png

a8adaf544e3496212ccd6d38763956ef.png

也许你会问:这端口描述在手册里有,你还啰嗦什么呢?

笔者担心你没看明白啊,万一没用好,你还得来找笔者交流,那我可要收费了。

俗话说,帮忙修改一行代码,10元;技术指导,一次50元。

知识有时候挺廉价的,有时候却也是救命的。

最终,详细设计就靠自己了,等你调试成功了,记得来报喜。

一分耕耘,一分收获。记得玩转FPGA,千万别从入门到放弃。

今天的SD-FEC技术分享到此结束了,欢迎大家留言,说说你的FPGA开发心得。

来源: FPGA算法工程师
作者: Duoqiang Liu
原文链接:FPGA算法工程师

推荐阅读

更多IC设计技术干货请关注FPGA的逻辑技术专栏。
推荐阅读
关注数
10614
内容数
577
FPGA Logic 二三事
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息