晋江文学城
下一章 上一章  目录  设置

7、省赛 赛题公布: ...

  •   赛题公布的那一刻,三个人同时安静了。

      "基于180nm工艺的低功耗关键词唤醒芯片设计。目标功耗:≤50mW。面积:≤2.5mm?。唤醒词数量:5个中文词。"

      葛家瑾第一个放下手机:"关键词唤醒。"

      "我们没做过。"吴越说。

      "但读过。"金复来说。

      他打开了一个文件夹,里面存着十几篇论文。大部分是备赛期间吴越搜集来的,关于低功耗关键词唤醒的文献——有人用MFCC加神经网络,有人用频域能量检测加模板匹配,还有人直接用脉冲神经网络做低功耗唤醒。金复来没看完所有,但他读了摘要和结论部分,知道大致有哪些方法。够用了。

      "五个关键词是什么?"葛家瑾问。

      吴越在赛题页面截了图:"开灯、关灯、音量加、音量减、静音。"

      "华科那边也报名了。"吴越盯着手机,忽然说,"光电学院的,领队叫陈朔,去年全国赛拿过奖。"

      "他们什么思路?"葛家瑾问。

      "有人说他们要做能认十五个词的,准确率奔着九十五往上。"吴越把手机转过来,是一张论坛截图,"说是要给特等奖加码。"

      "十五个词?"葛家瑾皱眉,"赛题只要五个。"

      金复来没说话。过了一会儿,他才开口:"我们做五个。"

      "五个够吗?"吴越问。

      "够。赛题要几个,就做几个。"金复来说,"多的,是要还的。"

      "还什么?"

      "功耗。"

      "先把架构定下来。"他说,"输入是MIC录的语音,经过ADC变成数字信号,进芯片。芯片做完唤醒判决,输出结果从串口发出来。中间不需要其他外围电路。"

      "只要一个MIC和一个ADC?"葛家瑾问。

      "对。"金复来在纸上画了一条线,"前端模拟部分最小化,数字处理全部在芯片内部完成。"

      葛家瑾看着那张纸想了想:"那测试板很简单。MIC接口接ADC,ADC接芯片的输入引脚,芯片的串口引脚外接一个USB转串口模块,连到电脑上看输出。"

      "就是这个思路。"

      "特征提取用什么方法?"吴越问。

      "频域能量。"金复来说,"把输入信号的频谱压缩成五个频段,每一帧计算一次能量值,和预存的五个关键词模板做匹配。计算量低,适合180nm下的低功耗设计。"

      "不用MFCC?"

      "MFCC计算量大,功耗高。频域能量只算几个频段的功率值,足够区分五个中文词了。"

      "准确率够吗?"

      "去年有一篇论文做了对比,MFCC比频域能量准确率高百分之四,但功耗高百分之三十七。"金复来说,"在180纳米下,我们扛不住那百分之三十七。"

      吴越翻到了那篇论文,确认了金复来说的数字,然后在笔记本上记了一笔:"特征提取:频域能量,原因——功耗优先。"

      "模板怎么来?"葛家瑾问。

      "我们已经知道了五个词,"金复来说,"用一段预录的语音训练模板,固化在芯片里。"

      "提前训练算不算违规?"

      "不算。所有队都会这么做。"

      上午十点,金复来开始写代码。他没有直接用AI生成完整模块,而是先让AI补了标准接口定义——时钟域划分、跨时钟域同步、串口收发。剩下的核心逻辑再逐一强调:特征提取、能量计算、模板匹配、判决输出。

      "不能全部交给AI写吗?"吴越问。

      金复来敲了一行代码才回答:"AI跑过仿真,没流过片。"

      "什么意思?"

      "AI生成的代码功能仿真全过,但流片回来不一定跑得起来。反馈周期太长了,AI没见过真正坏掉的芯片长什么样。"

      他把光标停在某个模块的端口定义上:“去年有一队,全文交给AI写,回来之后两个模块的电源域隔离出了问题。AI以为它们各自用各自的电源,但后端工具为了省面积把它们连在了一起。流片回来,静态功耗直接翻了两倍。”

      吴越的笔在纸上停了一下,然后继续写。

      葛家瑾打开PCB设计软件,开始画测试板。结构极简:一个MEMS麦克风接ADC,ADC输出接入芯片的输入引脚,芯片的串口输出接排针,连到电脑上观察识别结果。没有多余的分支,没有复杂的电源管理,干净得像一条直线。

      "模拟部分越少越好,"他说,"省得干扰。"

      下午四点,金复来跑完第一版功能仿真。波形正常,模板匹配准确率百分之八十七,超过指标要求的百分之八十。功耗评估跳出来:五十三毫瓦。

      "压。"金复来说。

      他把特征提取模块从并行改成时分复用——用一组乘法器轮流算五个频段的功率值。算力降了,但功耗也降了。跑到五十一点五。

      "再压。"

      他把串口波特率从115200降到9600,串口模块需要的工作时钟频率也跟着降下来了。时钟一降,整个模块的信号翻转次数就少了,动态功耗自然就能省下来。功耗掉到四十九点八。

      "过了。"吴越说。

      "过了。"金复来重复。

      六点半,金复来导出GDSII文件。葛家瑾确认测试板文件无误。吴越整理完第一版文档。金复来检查了三遍工艺参数:180nm,2.42mm?,QFN32,配送地址9号楼247室。

      "提交吧。"葛家瑾说。

      金复来点了"确认下单"。页面跳转:"订单已提交,正在排入极速版队列。预计直写开始时间:15分钟后。"

      “走吧。”葛家瑾说,“明天早上八点收货,你今天先回去休息。测试板我也差不多了。”

      吴越把手册合上,装进书包里。金复来保存了最后一次功耗报告,关了电脑。

      “明天早上八点,247见。”

      金复来点了一下头。他走上楼梯的时候口袋里的手机屏幕朝外,没有新消息。

      那天晚上他睡得不算早,十一点多才躺下。他躺在床上看着天花板,脑子里过了一遍今天写的代码、跑的仿真、出的结果。明天早上芯片就到了。如果一切顺利,第一次就过。

      他不喜欢“如果”。

      他翻了个身,窗外的蝉还在叫。武汉七月的夜没有完全静下来,虫鸣和远处偶尔的车声混在一起,成了一层细密的底噪。他在那层底噪里慢慢睡着了。

      第二天早上七点半,金复来推开247室的门。

      吴越已经到了,坐在靠墙的位置,面前摊着佳立创的下单手册——虽然他已经翻过很多遍了,但他还是在等收货前又看了一遍。葛家瑾推门进来的时候手里拎着三份早餐,放在桌上,没说话。

      三个人坐在各自的位置上,没有人开电脑。窗户开着一条缝,早晨的风从外面灌进来,带着梧桐叶和泥土的气味。

      八点零三分,无人机的声音从远处传来。葛家瑾站起来走到窗边,推开窗户,取下密封舱,撕开静电袋,取出芯片,放进测试座。

      “上电。”

      吴越打开电源。金复来对着MIC说:“开灯。”

      终端没有任何输出。

      他又说了一遍:"开灯。"

      没有输出。

      "关灯。"

      没有输出。

      金复来把五个词全部说了一遍。终端屏幕上只有一行"开始测试"的提示符,后面什么都没有。

      葛家瑾第一个动作是检查测试座。他把芯片取出来重新放了一次,压杆按到底,确认引脚接触良好。"座子没问题。"

      "串口呢?"吴越问。

      他把探头接到串口引脚上,示波器有信号跳变。"芯片在往外发东西,但终端收不到有效数据。"

      "波特率对不对?"金复来说。

      吴越检查了终端的串口配置:115200,8N1,和代码里写的一样。"对的。"

      "那就不是串口的问题。"

      葛家瑾把测试板上的电源线重新插了一遍,用万用表测了一遍供电电压。3.3V,稳定。"电源没问题。"

      "时钟呢?"金复来问。

      葛家瑾把示波器探头移到时钟引脚上。25MHz晶振起振正常,波形干净,频率稳定。"时钟好的。"

      三个人互相看了一眼。电源、时钟、串口、物理连接,都正常。芯片在工作,但输出不对。

      "把输入端接上示波器。"金复来说。

      葛家瑾把探头移到MIC输入引脚。金复来对着MIC说:"开灯。"

      屏幕上出现了一段波形。看起来是语音信号,有起伏,有节奏,但和仿真时见过的完全不一样。

      "波形是有的。"葛家瑾说。

      "但不对。"金复来盯着屏幕,"你放大看看。"

      葛家瑾调整了示波器的时基,把波形展开。金复来凑近了看,指着其中一个上升沿:"这个斜率不对。仿真里这个沿应该是陡的,现在是圆的。"

      "什么意思?"

      "输入信号的形状变了。"

      金复来打开电脑,调出备赛期间跑仿真时用的测试激励文件。那是他从训练集里提取的一段"开灯"语音,经过量化后变成的数字波形。他把那段波形调出来,和现在示波器上看到的波形放在一起对比。

      "你看这里。"他指着两段波形上相同的位置,"仿真的信号在300Hz附近有一个很强的能量尖峰,实际信号这个尖峰不见了,变成了一团平的东西。"

      "能量被衰减了?"葛家瑾说。

      "不是衰减,是被淹没了。"金复来把示波器切换到FFT模式,显示频谱。"你看高频段。训练信号的高频几乎是干净的,实际信号高频段全是噪底。"

      "底噪从哪里来的?"

      金复来没有马上回答。他拿起手机看了一眼——刚才录的走廊环境音还停在录音软件的播放列表里。他点开那段录音,看了一下波形,又关了。

      他拿起另一个手机——用来录训练集的那台,型号旧一些。他在宿舍里录过五组关键词,每组十遍,一共五十个文件。

      "我们训练的时候用的是这台手机。"他说。

      "对。"

      "手机录音默认开了AI降噪。"

      吴越愣住了。他打开手机设置,翻到录音应用的功能说明,看了一会儿,抬起头:"……默认开启。自动处理语音,优化清晰度,降低背景噪音。"

      "所以训练集里的'开灯',是经过降噪的版本。高频被切掉了,背景被过滤了,只剩人声。芯片学到的是那个版本。"

      他让示波器同时显示两段波形。训练集的波形在高频段是干净的,像被刀切过一样利落。实际麦克风采集到的原始波形,高频段布满了细碎的毛刺——走廊里的声音、窗外蝉鸣的泛音、墙壁反射的回声。芯片不认识这些毛刺。

      "芯片没有收到它学过的那个信号。"金复来说。

      三个人安静了很久。示波器屏幕上两段波形叠在一起,一个是干净的,一个是嘈杂的。看起来像同一句话,但频谱上差了一个滤波器的距离。

      "能解决吗?"葛家瑾问。

      "能。"

      金复来打开代码编辑器,新建了一个模块:"在特征提取之前加一个低通滤波器。把1kHz以上的东西切掉,把训练集里没有的那些噪声滤掉,只剩下人声。"

      "功耗会增加。"吴越说。

      "会。"

      "先加。"葛家瑾说。

      金复来开始写代码。窗外有蝉在叫,声音从梧桐叶之间穿进来,在247室的空气里微微震动。他没有抬头。

      显示器上的代码一行一行地长出来,像一条正在被铺设的电路。
note 作者有话说
第7章 省赛

  • 昵称:
  • 评分: 2分|鲜花一捧 1分|一朵小花 0分|交流灌水 0分|别字捉虫 -1分|一块小砖 -2分|砖头一堆
  • 内容:
  •             注:1.评论时输入br/即可换行分段。
  •                 2.发布负分评论消耗的月石并不会给作者。
  •             查看评论规则>>