
1. 项目概述1.1 做这个平台的初衷干过专网通信这行的人都清楚传统PMR系统专业移动无线电Professional Mobile Radio最让人头疼的就是“一个萝卜一个坑”的捆绑模式。TETRA是TETRA的板卡DMR是DMR的设备模拟常规是一套独立的硬件不同厂家之间的基站设备甚至不能共用同一个机房机柜。维护人员每次升级制式或者扩容信道都得重新采购硬件、重新布线、重新调试这种碎片化的局面从设备商到运营商层面都被迫接受了很多年。New PMR Common Platform Processor这个项目核心就一句话把原本属于多套独立硬件的“大脑”集中到一块通用处理器平台上用软件去定义它到底跑TETRA、DMR还是模拟常规。我这里说的不是简单地在同一块板子上印两种芯片而是从硬件架构、操作系统、协议栈部署到射频接口都做到共用真正让不同制式跑在同一套底层平台上。这个项目适合谁参考如果你是做专网基站研发的硬件工程师、系统架构师或者正在为下一代PMR产品做技术选型的产品经理这篇文章应该能给你一些有价值的参考。我会把整体架构、芯片选型的思路、软件分层设计、遇到的实际问题和排查过程都摊开来讲尽量还原整个项目从立项到落地的全貌。1.2 平台要解决的核心问题专网通信的项目需求不像公网那么“单一流量大爆发”它的特点我总结下来是多制式、多频段、多场景、长生命周期。多制式很好理解TETRA、DMR、P25、模拟FM甚至现在慢慢冒头的专用LTE/5G各有各的用户群。多频段更麻烦同一个制式在VHF136-174MHz、UHF400-470MHz都有部署部分地区还有800MHz的TETRA频段。多场景指的是固定基站、车载基站、背负式基站形态完全不同。长生命周期则是说一套专网系统服役十年以上是常事硬件平台不能随随便便就被淘汰。这些需求叠加在一起传统架构几乎无解。所以New PMR Common Platform Processor的设计目标就定成四个一套硬件兼容多制式通过软件加载不同的协议栈和信号处理算法而不是更换物理板卡。统一承载与传输接口不管跑什么制式回传接口、网管接口、天馈接口都保持一致现场安装的人不用学第二套接线方法。算力留有冗余未来如果有新的制式出现比如宽带专网可以只升级软件模块不动硬件平台。降低维护与备件成本运营商只需要备一种主控板不用按制式和频段各备几种板卡。这四个目标看起来不算复杂但真正落到硬件设计和软件架构上牵扯出的问题比想象中多得多。接下来的内容我会从硬件架构选择、核心算力模块设计、软件分层、性能调优、问题排查几个维度把这个平台从无到有的过程讲完整。2. 硬件架构与算力方案选型2.1 通用硬件平台 vs 专用ASIC方案项目刚启动时团队内部其实有过一次大讨论到底是用一颗大而全的ASIC把所有制式的物理层处理全部固化还是走通用处理器加FPGA的软件无线电SDRSoftware Defined Radio路线ASIC方案的优势很明显功耗低、处理时延极小、量产成本摊薄后芯片单价也低。但它有个致命问题——灵活性几乎没有。PMR行业的标准还在缓慢演进DMR的新特性、TETRA的增强功能甚至未来可能加入的专网宽带能力都需要在硬件上留出升级空间。ASIC一版定死后续任何一个协议栈改动都可能意味着芯片重新流片时间和钱都烧不起。我们最后选择的是“高性能多核处理器 FPGA 宽带射频收发器”的SDR路线。多核处理器负责协议栈上层、信令处理、IP传输和系统管理FPGA承担物理层的实时信号处理包括调制解调、信道编解码、数字滤波等宽带射频前端完成从模拟信号到数字中频的转换再通过JESD204B接口和FPGA对接。这样的组合既保证了物理层需要的硬实时处理能力又给协议栈和上层应用保留了足够的软件弹性。从成本角度看第一版通用平台的物料成本确实比单一ASIC方案高一些但考虑到一个平台可以覆盖TETRA/DMR/模拟三种制式、六个以上频段的型号组合摊到每个型号上的研发成本反而大幅下降。而且后续软件升级带来的新收入完全覆盖了硬件上多出来的那部分开销。2.2 处理器选型的核心逻辑处理器是整个平台的中枢负责Linux操作系统、容器运行环境、协议栈L2/L3、SNMP网管代理、信令处理等任务。这颗处理器选得好不好直接决定了系统能不能稳健地跑起来。我们评估过几个方向专用DSP阵列、普通ARM应用处理器、网络处理器、以及目前选择的基于ARM架构的高端SoC。DSP阵列最早被排除原因是通用性太差跑Linux、跑容器、跑TCP/IP协议栈都费劲开发效率太低。普通ARM处理器又怕性能不够因为PMR基站除了协议栈之外还要做语音编解码、加密解密、GPS同步处理这些任务加在一起对CPU的多核并行能力要求并不低。最终选型锁定在具备以下特征的SoC上至少4核主频不低于1.5GHz保证多制式叠加时还有余量。内置硬件加密引擎支持AES、Snow 3G等算法不然语音加密会吃掉大量CPU。支持虚拟化或至少是容器隔离后续要在同一套平台上跑多个制式实例。丰富的外设接口PCIe、USB、SGMII、UART、I2C、GPIO不能有短板。工业级温度范围PMR基站很多是室外机柜部署-40℃到70℃是硬指标。这颗SoC在平台里的角色就好比一个项目经理FPGA是那种干活极快的执行者两者通过PCIe总线通信控制面走SoC到FPGA的寄存器映射通道数据面走DMA直接内存访问批量搬运。PCIe通道的带宽在实测中轻松跑满千兆级配合Linux内核的vfio驱动数据搬运时延控制在微秒级完全没有瓶颈。2.3 FPGA和射频前端的搭配细节FPGA的选择同样关键。我们评估了多家主流器件最后选择的是中高端逻辑容量的FPGA布上完整的TETRA DMO/TMO物理层算法后还剩约30%的逻辑资源冗余这部分冗余被我们用来做了调试观测逻辑比如实时抓取解调信号的星座图、误码率统计等对后期联调帮助非常大。FPGA承担的工作包括数字下变频DDC和数字上变频DUC把中频信号搬到基带。匹配滤波、符号同步、载波同步这是解调的基础。TETRA的π/4-DQPSK调制解调、DMR的4FSK调制解调以及模拟FM的调制解调。前向纠错编译码TETRA里用的RS码和卷积码DMR里用的RS码和汉明码。预失真处理抵消射频功放的非线性提升邻道泄漏比指标。射频前端用的是宽带零中频收发器方案单颗芯片覆盖70MHz到6GHz的频段范围。好处是不同频段的型号不需要改硬件只改前端滤波器和软件配置就能切换。零中频架构省掉了中频SAW滤波器减少了器件数量和对版图面积的压力。但它也有个臭名昭著的麻烦——直流偏置和IQ不平衡这些得靠FPGA里的校正算法来处理软件上多做一步硬件上省一大块。3. 系统软件架构与多制式承载设计3.1 分层解耦的操作系统环境硬件平台搭好之后软件架构的成败决定了这块板子到底是“能点亮的开发板”还是“能商用的基站主控”。我们软件层的核心思路是层次化解耦每一层只对下层做标准接口调用互相之间不感知具体实现。整体从上到下分为四层第一层是应用层包括TETRA协议栈进程、DMR协议栈进程、模拟常规控制进程、网管代理、日志服务、远程诊断服务。每个制式的协议栈都封装成独立进程跑在容器里互不干扰。第二层是平台服务层提供资源调度、定时同步、载波管理、语言编解码、加密服务等公共能力。由于多个制式可能共享同一套射频资源和同一块FPGA这一层的载波管理模块是关键它负责决定某一块频谱资源当前分配给哪种制式使用。第三层是操作系统层采用Linux内核加实时性优化补丁配合内核态的FPGA驱动和DMA驱动。之所以不用完整实时操作系统RTOS是因为PMR基站的控制面任务不是强实时类型的而物理层实时处理已经被FPGA抢走了控制面用Linux加RT补丁就足够应付。最底层就是FPGA固件和硬件抽象层软件通过内存映射寄存器控制FPGA、通过DMA搬运IQ数据硬件细节完全对上层屏蔽。这套分层架构还有个额外好处开发人员可以并行开工。协议栈团队不用关心底层硬件细节只需要基于平台服务层提供的API搞开发硬件驱动团队也不用关心协议栈逻辑专注把FPGA和SoC之间那条数据通路磨顺。项目后期我们确实体会到这种解耦让新制式的接入变得非常快新的制式协议栈只要适配好了平台层接口就能像装app一样部署上去。3.2 多制式共存的资源调度机制多个制式同时跑在一套硬件上最麻烦的问题就是资源冲突。以单载波TETRA基站为例一个25kHz载波占用4个时隙这4个时隙的物理层数据处理在FPGA里是固定节奏的同时另一个DMR载波在另一段频谱上以双时隙的节奏跑着FPGA的DSP资源如何分配就成了关键。我们把FPGA里的逻辑资源按“载波块”来做物理分区设计。每个载波块是一个独立的处理单元包含完整的调制解调链路和编解码链路。这样TETRA载波和DMR载波各自“承包”一块逻辑区域互相不抢占资源。FPGA内部的动态调度只发生在不同载波块之间的公共资源上比如JESD204B接口的BANK、DDR控制器带宽等。SoC侧的任务调度也类似。Linux的CFS完全公平调度器天然适合我们这种“多个独立进程共享CPU”的场景但为了避免某个制式的突发任务饿死其他制式我们给不同制式的协议栈进程设置了不同的CPU亲和性TETRA信令进程绑定到CPU0DMR的绑定到CPU1网管和日志进程绑定到CPU2CPU3留作动态负载均衡。时隙中断的处理是另一个容易出问题的点。TETRA的时隙周期是大概14.17msDMR时隙周期30ms当多个载波同时产生中断时如果都用普通中断模式Linux中断上下文会被频繁打断导致处理时延抖动。后来我们统一改成了中断合并加虚拟中断机制在FPGA内部先把时隙边界对齐标记好SoC侧用一个高精度定时器统一读取所有载波的中断状态一次性轮询处理。这个改造把系统整体的时延抖动从几百微秒降到了几十微秒级别。3.3 软件加载与热切换设计通用平台最大的卖点就是换制式不需要换硬件。但“改软件就能换制式”这种说法听上去轻松真正实现起来需要考虑很多东西。我们把启动流程做了两级加载设计。BootLoader启动后首先加载的是一个微型引导系统它只做一件事从本地Flash或远程服务器获取制式配置清单。如果配置清单里写的是TETRA模式引导系统就从镜像仓库拉取TETRA协议栈容器、TETRA物理层FPGA位流文件分别加载到SoC和FPGA如果是DMR模式就拉取DMR对应的那套东西。FPGA的位流文件支持部分动态重配置也就是说在系统运行中我们可以只重配置某一个载波块的逻辑其他载波块照常工作。这个特性被我们用在了“平滑模式切换”场景中一个设备正在跑TETRA的话某个DMR载波块的逻辑可以实时加载上去新分配的频谱资源马上就能用DMR制式工作。不过这里有个坑得提醒一下部分重配置期间的电源和时钟稳定性要求比较高如果供电纹波大或者时钟源抖动超标配置过程中可能出现CRC错误导致FPGA该区域逻辑失效。我们的解决方案是在硬件设计阶段就给FPGA的不同配置区域加独立的电源LDO和去耦电容软件上每次重配置前先读一次片上温度传感器温度超过85℃就暂时拒绝重配置请求等温度回落再执行。这类细节规格书上是查不到的完全靠实测踩坑踩出来。4. 关键性能指标与实测调优4.1 启动速度全程实测数据基站设备的启动时间是一个容易被低估却非常影响运维体验的指标。现场停电再来电如果一套基站要三五分钟才能恢复正常服务指挥中心调度员肯定是要骂人的。我们对平台启动流程做了全链路测量从加电到射频口实际发出载波信号的完整过程如下0-8秒BootLoader启动DDR初始化加载Linux内核。8-18秒Linux系统启动加载驱动挂载根文件系统启动容器运行时。18-25秒根据配置加载对应的FPGA位流文件FPGA完成DCM/PLL锁定。25-32秒协议栈容器启动协议栈完成初始化和核心网建立链路。32-38秒射频收发器完成校准本振锁定、发射链路增益校正FPGA开始输出基带信号。38-45秒射频口检测到稳定的载波输出基站进入可服务状态。45秒这个数字在第一版其实不算理想瞄准的商用目标是30秒以内。后续优化主要做了三件事第一精简了内核和文件系统去掉用不到的驱动和工具启动时间省了大概5秒第二FPGA位流文件从只读Flash搬到高性能Nor Flash并启用双平面并行读取重配置时间从7秒压缩到3秒第三把协议栈的初始化步骤并行化原先需要按顺序等待的流程改成了依赖解耦后的并行执行。实测优化后整套系统从加电到载波输出稳定在28秒左右达到了商用目标。4.2 多制式并发处理性能压测我们搭建了一个专门的压力测试环境把平台配置成四条TETRA载波加两条DMR载波同时工作的混合模式并在每条载波上都施加满负荷业务流量包括语音呼叫、短数据、分组数据。测试结果里最值得关注的是两个指标。第一个是SoC的CPU占用率六条载波全部处于满负荷时CPU总占用率大概在55%-65%之间波动。其中语音编解码占了大概20%协议栈L2/L3处理占了25%容器和系统开销占了15%剩下的是余量。这个余量水平让我们有底气说就算再加两条模拟常规信道或者未来扩展一个宽带载波性能上不会有压力。第二个是数据面端到端时延。用网络测试仪打IP数据包从外部业务终端发出到核心网收到端到端单程时延在15-25毫秒之间完全满足PMR业务对时延的要求。对比传统的TETRA基站芯片方案这个数字略高几毫秒主要在SoC和FPGA之间的数据搬运、协议栈容器化带来的进程间通信开销上但属于可接受范围。稳定性方面我们做过一个长达14天的连续运行测试六载波混合模式每天自动跑预设的呼叫脚本14天里没有出现死机、内存泄漏、载波异常掉线的情况。内存使用曲线稳定在初始值的正负2%范围内这说明容器的内存回收机制是可靠的。4.3 功耗与散热实测记录室外基站最怕的就是功耗超标和散热跟不上。我们在同样配置下对比了通用平台和旧式单制式专用平台。旧式TETRA基站主控板典型的功耗在25W到35W之间DMR基站大约20W如果站点同时部署两套设备合计功耗常超过50W。通用平台完整开机并且四条TETRA载波加两条DMR载波全负荷运行整板实测功耗是38W左右。单板替换两套旧设备功耗反而降低了约25%。散热设计上我们做的是被动散热加机箱热设计。板子的主要发热器件是SoC、FPGA和射频收发器三颗芯片通过导热垫和均热板连接到机箱外壳完全不需要风扇。在55℃高温箱里做满载测试时SoC的结温稳定在88℃左右FPGA结温在82℃左右都在器件允许的结温范围之内。低温测试做到-40℃冷启动后系统完全正常这个结果让团队松了一口气因为低温环境下DDR初始化、FPGA配置、本振锁定这几个环节都比较容易翻车。5. 调试过程中的典型问题与排查实录5.1 开机偶发无法锁定GPS时钟源项目联调阶段遇到一个很恼人的问题设备在冷启动时偶尔出现GPS模块无法锁定时钟源的情况系统一直处于“等待同步”状态射频载波无法正常发射。不是每次都复现大概十次里有两三次重启一次大概率能恢复。排查过程我按老套路来先看日志发现GPS模块的串口输出在启动阶段出现过字符乱码。怀疑是串口波特率不匹配但查了配置完全正确。继续深挖发现乱码只出现在SoC刚完成DDR训练、系统负载瞬间飙升的那几百毫秒里。这提示我们问题很可能不是GPS模块本身而是系统启动期间SoC对串口数据的处理不及时UART FIFO溢出导致字节丢失。解决方案分两步硬件上把GPS模块的串口从普通UART改成带硬件流控的UART使能RTS/CTS软件上在GPS驱动里加一个启动期间的缓冲区数据过来先缓存再解析不丢字节。改完以后做了上百次冷启动验证再没出现过锁不住时钟源的问题。5.2 发射频谱出现杂散信号有一版FPGA代码优化之后DMR载波在4FSK调制时频谱出现了一个较明显的杂散分量位置在偏离载波约9kHz的地方强度比标准允许值高出约6dB。这个杂散如果流到天线口轻则干扰邻道重则过不了型号核准测试。我们用频谱仪加近场探头顺着射频链路逐级排查。一开始怀疑是FPGA内部数字本振的相位截断误差在优化时被放大了回退到上一版代码杂散却仍然存在说明问题不在算法优化而可能在模拟链路。继续查发现是零中频收发器的发射本振打到FPGA的数字电源平面耦合形成了杂散。数字电源平面噪声通过PCB叠层耦合到了射频输出端的差分走线上。解决办法是调整PCB布局把射频输出差分对走线远离数字电源平面同时在走线区域增加地孔隔离。硬件改版后杂散分量的幅度直接降到了比限值低15dB以上余量充足。老话说得好“频谱问题大概率不只是算法问题很可能是物理问题”。这个案例给团队提了个醒高速数字电路和射频链路共板设计时每一个电源平面分割、每一条敏感走线的间距都要认真走心不然现场调试的时候付出的是数倍的劳动。5.3 协议栈容器在长时间运行后文件句柄泄漏这个问题是在30天老化测试时暴露的。系统连续运行到大概第18天时网管上报“文件句柄数量达到上限”的告警协议栈进程虽然还没有崩溃但已经出现了轻微的信令响应变慢。第一时间怀疑对象就是容器的日志驱动因为协议栈进程持续输出日志到标准输出由容器运行时负责收集和写盘长期运行后如果日志文件没有正确轮转文件句柄就会不断累积。我们在容器启动参数里加了日志大小限制和轮转策略确保单个日志文件不超过50MB、最多保留5个历史文件。同时又从代码层排查了一遍协议栈是否存在文件句柄泄漏结果还真发现一个TETRA短数据业务在处理大分组时偶发地没有关闭临时文件描述符。修复之后又跑了一轮30天老化测试文件句柄数量始终稳定在一个范围内问题解决。这件事给我的感受是通用平台由于引入了容器层和虚拟化暴露出来的故障点比老式单板固件更多调试时要静下心一层一层排查不能想当然。6. 平台能力评估与行业应用展望6.1 从信号处理到业务承载的全方位优势和传统PMR基站平台对比New PMR Common Platform Processor这种“一颗主控跑多制式”的方案在项目交付和运维环节带来的好处是非常直观的。首先是备件库存在整个网络里的通用性现场人员只需要背一块通用主控板不管坏的站点是TETRA还是DMR系统走到现场都有一块板子能立刻换上。其次是扩容和升级变得简单一个网点的业务需求从模拟常规升级到数字集群不需要更换基站硬件只需要通过网管加载新制式的软件许可和位流文件。在信号处理层面通用平台的软件定义能力让一些“旧设备做不了的事情”变成了现实。比如多载波动态功率分配可以根据不同载波的实时业务量在总功率预算内动态调整各载波的发射功率这对大话务量场景的覆盖优化特别有用。而传统的固定功率分配平台一旦各载波业务量不均衡就会造成频谱资源和能源的浪费。6.2 向宽带融合演进的可能性PMR行业现在一个不可回避的趋势是宽带化。越来越多的专网用户希望在同一张网络上同时跑集群语音和宽带数据业务下一代平台的考量也需要提前布局。通用平台的设计在这方面天然有优势。SoC上预留的PCIe接口和高速网络接口可以直连宽带基带板或小基站处理单元FPGA的动态重配置能力还可以在窄带制式和宽带制式之间实现在线切换。如果要进一步融合SoC上还跑得动轻量级的核心网网元在应急通信场景下一台背负式设备就能同时提供窄带集群和宽带接入的能力。这个演进路径我们在项目规划阶段就已经考虑进去硬件上预留了扩展接口和算力余量软件上平台层已经能够容纳未来可能的宽带基带处理任务。6.3 新平台带来的工程开发模式变化最后想说一点通用平台对研发团队的组织方式也有影响。传统模式下TETRA团队和DMR团队各自维护一套从硬件到软件的完整产品线两者之间技术交集很少开发和维护成本是双份的。而通用平台出现后硬件团队只需要维护一个平台版本软件团队则从“写固件”变成“写应用”工作重心转移到协议栈开发和平台API优化上。这种变化在招聘上也有直观体现懂特定制式物理层的人才难找但懂Linux、懂容器、懂SDR架构的工程师相对好招得多。从长期来看通用平台让专网设备研发更像互联网软件开发迭代更快试错成本更低对行业整体人才供给也是件好事。项目做到现在这个阶段我个人最深的体会是所谓“通用平台”真正的价值并不在于那块电路板本身而在于它把“换制式就要换硬件”的行业惯性打破了让设备从交付那一刻起就具备了未来演进的能力。如果你也在考虑类似方向的平台设计我建议一开始就把制式切换、动态资源分配这些需求写进架构设计文档里别等到硬件定型了再回头补那时候的代价会大得多。