第五十二章 破壁
    於颖的tlab代码在当天凌晨发到了左城邮箱里。

    三千多行,注释写得很规范——这是於颖做事的风格,任何交给別人的东西都整理得乾乾净净。左城花了两个小时通读了一遍,把循环平稳特徵检测的数学核心提炼出来。

    核心思想並不复杂——通信信號天然具有周期平稳特性,比如载波频率、符號速率、帧结构都会在信號的二阶统计量中產生周期性的特徵峰。通过计算信號的循环自相关函数,可以在极低信噪比下把目標信號从噪声中分离出来,同时识別出信號的调製类型和占用带宽。

    优雅。左城看完数学推导后在心里给了这个评价。

    但问题也很明显——循环自相关函数的计算量是信號长度的平方级別。於颖的tlab仿真在pc上跑一个频谱感知周期需要四百毫秒,而天穹终端的嵌入式平台算力不到pc的十分之一。直接移植的话,单次感知需要四秒以上,远超实时性要求的五十毫秒。

    差了將近两个数量级。

    左城关掉tlab代码,打开了一个空白文档,开始写自己的方案。

    他不需要复製於颖的实现,他需要的是把这个算法“翻译“成嵌入式平台能跑得动的形態。

    这正是他的融合级叶片“嵌入式智能信道处理“赋予他的能力——三年等效的工程经验,让他对嵌入式平台的每一寸算力都了如指掌。

    第一刀砍在计算精度上。循环自相关的全精度计算需要浮点运算,但嵌入式平台的定点运算单元速度是浮点的八倍。左城推导了一套十六位定点化方案,把关键的乘累加操作全部转为定点,精度损失控制在零点五个db以內,这对频谱感知来说完全可以接受。

    这一刀砍掉了百分之六十的计算量。

    第二刀砍在数据规模上。循环自相关需要对整段信號做二维扫描,但並不是所有的循环频率都有意义——卫星信號的载波频率和符號速率是已知的,可以预先计算出有限个候选循环频率,只在这些频率点上做检测。

    这一刀又砍掉了百分之七十。

    两刀下去,总计算量压缩到了原来的百分之十二。四百毫秒乘以零点一二,等於四十八毫秒。

    卡在五十毫秒的线上,刚好够。

    但“刚好够“不是左城的標准。

    他又看了一遍嵌入式平台的硬体手册,找到了第三个优化点——平台的d控制器支持数据预取,可以在cpu计算当前帧的同时,把下一帧的数据从adc搬到缓衝区。计算和搬运重叠执行,等效处理时间再降百分之二十。

    四十八毫秒乘以零点八——三十八毫秒。

    富余量百分之二十四。够了。

    左城把整套优化方案写成了一份十二页的技术文档,从数学推导到工程实现每一步都写得清清楚楚。写完的时候天已经亮了,窗外能听到早起跑步的人经过的脚步声。

    他没有立刻去睡觉,而是先把文档发给了方泽和刘伟。

    方泽十分钟后回了消息——他也没睡,一直在调仿真平台的参数。

    “方案看了。定点化精度损失零点五db我需要验证一下,给我两天。“

    “好。“

    刘伟的回覆晚了半个小时:“城哥,d预取那个优化我之前在lora项目里试过类似的思路,確认可行。我来写这部分的驱动代码。“

    左城看著这两条消息,嘴角微微弯了一下。

    团队在成长。半年前这些优化方案只能他一个人写,现在每个人都能接住一块。 两天后方泽的仿真验证结果出来了——定点化方案在一百二十路卫星信號的仿真环境下,频谱感知准確率百分之九十一点三,虚警率百分之零点七。准確率超过百分之九十的指標,虚警率远低於百分之五的上限。

    左城看著这个数字,终於允许自己鬆了一口气。

    频谱感知前端的核心算法问题,解决了。

    系统光幕亮了。

    不是新叶片,不是新任务,只是一个被动效果的触发。但左城知道这个百分之二十的效率提升意味著什么——频谱感知前端从最拖后腿的模块,变成了有可能最先完成的模块。

    当天晚上他给於颖打了电话。

    “空空,你的循环平稳方案帮了大忙。核心算法的嵌入式优化方案已经出来了,仿真验证通过,准確率百分之九十一。“

    电话那头安静了两秒。

    “百分之九十一?“於颖的声音有一丝不確定,“我的tlab仿真在理想条件下也只有百分之九十三。你在嵌入式平台上用定点运算跑到了九十一?“

    “定点化精度损失控制在零点五个db,影响不大。主要靠候选循环频率预筛选和d流水线把计算量压下来了。“

    於颖又沉默了几秒。

    “哥,你知道吗

本章未完,请点击下一页继续阅读>>