“西门子的S7系列PLC做不到微秒级响应,是因为他们的底层是循环扫描机制。”
小刘停止敲击键盘。
“盾构机刀盘遇到地质突变时,需要在零点五秒内算出十二组推进油缸的最优反向补偿压力。
这不是一个单变量计算,这是一个包含三百个传感器数据的雅可比矩阵。”
小刘用笔尖在方块内画出数百个网格。
“如果用CPU排队计算这个矩阵,至少需要五十毫秒。”
王磊站在工作站旁,手里拿着一沓打印出来的时序分析报告。
他的眉头紧锁。
在过去的几天里,他亲眼看着这个年轻的电机厂技术员,生生将一套庞大的姿态控制算法,全部转译成了底层的门电路逻辑。
“所以必须切碎它。”小刘在白板上写下数字300。
“将雅可比矩阵直接分解为300个独立的乘加运算单元,在FPGA芯片内部,直接调用300个DSP硬核。
不要操作系统,不要任务调度,让这300个运算单元在物理层面上完全并行。
传感器数据一到,一个时钟周期内,300个结果同时输出。”
王磊翻开手中的报告,指着上面的一项参数提出致命质疑。
“理论上可行,但这违背了电子工程的基础物理特性。”
王磊走到白板前,用红笔在小刘画的网格之间画了几条波浪线。
“芯片内部的布线长度存在微小的物理差异,三百个运算单元分布在硅片的不同物理区域。
时钟信号从主引脚传递到这三百个单元,经过的铜线长度不一致。”
王磊给出一个具体的工程数据。
“这就导致内部时钟树产生偏斜,有些单元早到了一纳秒,有些单元晚到了一纳秒。
在微秒级并行计算中,这种数据到达时间的不一致,会直接引发数据竞争。
锁存器会抓取到错误的状态,整个控制系统会瞬间死锁。”
实验室安静下来,其余九名学员停止动作。
王磊提出了芯片底层设计的核心痛点,硬件并行计算极其暴力,但同步机制极难控制。
小刘陷入短暂的沉默,他的视线在白板上的波浪线上停留,大脑快速检索这几天来学到的所有底层技术数据。
“不走普通的信号走线网络。”
小刘猛地转身,快步走回操作台,他在键盘上快速调出芯片的底层架构平面图。
“不用常规的I/O引脚分配时钟信号,启用芯片内部隐藏的全局时钟网络。”
小刘指着屏幕上芯片中央的四个特殊引脚。
“利用倪总工教的PLL锁相环倍频技术,在内部构建一个独立的全局同步时钟树,配置专用的全局时钟缓冲器。
这种缓冲器的布线结构是完全对称的树状网络,到达芯片上任何一个物理位置的阻抗完全相同。”
小刘给出一个极端的约束参数。
“在代码编译的约束文件中强制规定,将三百个运算单元的时钟偏斜,死死压制在50皮秒以内。
只要偏差不超过50皮秒,触发器就能稳定抓取数据,绝不会产生竞争。”
王磊的目光锁定在屏幕上的架构图上,他在脑海中推演这个方案的可行性。
几秒钟后,王磊重重点头。
“分配任务。”小刘没有任何废话,直接下达执行指令。
“我负责顶层模块的例化设计和时钟树配置。
王磊,你接手矩阵乘法器的流水线优化,把乘法和加法拆成两个节拍。
老夏,你带着剩下的人,分工编写外部传感器接口的协议转换模块,把雷达数据转化为硬件能识别的原始二进制码。”
十一人全速投入最后的编码工作。
四小时后,所有模块代码整合完毕。
小刘点击EDA开发工具上的“综合与实现”按钮。
编译器开始将他们编写的代码转换为真实的硅片电路布线网表。
进度条缓慢推进,内存占用率持续走高。
十分钟后,工作站主板发出一声尖锐的蜂鸣声,屏幕上的绿色进度条变成刺眼的红色。
综合报错!
无法生成最终的比特流下载文件。
“看资源利用率报告!”王磊指着屏幕左下角的红色警告字体。
小刘点开报告。
页面显示,芯片内部的查找表和寄存器资源已被彻底耗尽。
逻辑单元使用率达到了百分之一百零三。
硬件资源不足,这是嵌入式开发中最绝望的死局。
代码没有错误,逻辑完全正确,但现实中的物理硅片装不下他们庞大的设计。
“这块FPGA容量不够。”老夏站起身,有些沮丧。
“包含了三百个乘加运算单元,还有复杂的接口协议,超过了芯片的物理承载极限。
除非换一块容量大一倍的顶级芯片,否则装不进去。”
倪光楠并没有给他们提供启航研制出的芯片,只有有限的资源,再能压榨出无限的开发潜力。
换芯片意味着修改所有底层引脚约束,还要重新设计外部电路板。
在只剩下不到十个小时的考核节点前,这等于宣告任务失败。
小刘盯着那个103%的红色数字,他的大脑处于高速运转状态。
“不换芯片。”小刘握住鼠标,点开顶层代码文件。
“在现有的物理空间里砍资源。”
小刘的动作极快。
他选中代码区中多达几百行的调试接口逻辑和状态指示灯控制模块,直接按下删除键。
“你在干什么?”老夏一惊。
“删了调试接口,等会儿上板测试如果出问题,我们根本抓取不到内部信号,变成瞎子了。”
“不用调试,逻辑已经在仿真里跑通了,直接上真机盲测。”小刘没有任何犹豫。
删除辅助代码后,小刘再次点击综合。
五分钟后,报错依旧,占用率降到了百分之一百零一。
只差百分之一,依然无法生成比特流。
小刘将鼠标移动到核心的雅可比矩阵运算模块上。
“王磊,浮点运算核设定的精度是多少?”小刘出声询问。
“标准的IEEE 754双精度浮点数,六十四位带宽。”王磊立刻回答。
“保证姿态控制在十二米直径的刀盘上,误差不超过一微米。”
小刘点开浮点运算核的配置界面,将六十四位双精度下拉菜单,直接修改为三十二位单精度。
王磊立刻伸手按住小刘的手腕。
“小刘,不能降精度!
单精度浮点数的尾数只有二十三位,经过三百次连续的乘加运算,截断误差会不断累积。
输出给液压比例阀的压力控制信号会出现漂移,盾构机会在地下走曲线!”
“工程设计是妥协的艺术,不是完美的乌托邦。”小刘甩开王磊的手,眼神冷硬。