亲,欢迎光临天天书吧!
错缺断章、加书:站内短信
后台有人,会尽快回复!
  • 主题模式:

  • 字体大小:

    -

    18

    +
  • 恢复默认

时间飞快,转眼就到了11月。

昆仑1机的芯片、元器件、机柜均如期交付,板卡也陆续完成设计。

硬件板卡集成小组启动了火车头测试。

红星轧钢厂的防静电车间里,吕辰站在机柜前,手里拿着一个棕色封皮的本子。

他今天负责记录,亲眼看着这台机器活过来。

吴国华手里拿着示波器的探头,蹲在机柜后面,地线夹已经牢牢固定在接地铜排上。

宇文坤德站在配电盒旁边,手里握着一支电笔,大拇指搭在开关上。

旁边的桌子上,摆满了各种工具和元件。

螺丝刀、镊子、万用表、酒精棉签、备用芯片、一小卷细铜线。

昆仑1机的第一块电源板、第一块时钟板和总线背板,已经被小心翼翼地插进了第一台测试机柜的插槽里。

金手指与背板插槽的簧片接触时,发出轻微的“咔嗒”声让人安心,像是骨头归位。

“就这三块。”吕辰看着面前这台孤零零的机柜,“电源、时钟、背板。先让心脏跳起来,其他的等会儿再说。”

吴国华和宇文坤德在做着最后的检查。

示波器的探头点在电源板远端的电源引脚上,屏幕上跳出一条绿色水平线,随后一个方波出现又消失,吴国华微微点了点头。

宇文坤德走到机柜侧面的配电盒前,左手搭在空气开关上,右手拿着电笔点了点几个测试点,确认接线无误。

“上电。”

电磁接触器“嘭”地一声吸合,声音沉闷有力,像一头沉睡的野兽被拍醒。

机柜前面板的几个指示灯相继亮起,绿色的电源正常灯亮得最快,黄色的总线空闲灯闪了两下也稳住了,红色的故障灯没有亮。

示波器屏幕上的波形跳了起来。

先是一个不太干净的尖峰,那是上电瞬间的浪涌,谁家机器都免不了,然后稳定在5伏直流电平上,像一条被拉直的线。

吴国华盯着屏幕看了三秒,然后把时基调大,观察了十几个周期,确认没有异常抖动,才开口:“+5V正常。”

他把探头移到另一根线:“+12V也稳了,纹波在规格内。”

宇文坤德蹲在机柜后面,把万用表的表笔插在电源板的测试点上。

他看表的速度很慢,每一组读数都要默念两遍才往本子上记。

吕辰站在机柜正面,盯着前面板上的指示灯。

电源正常灯亮着,绿色的光在昏暗的车间里显得很踏实。

总线空闲灯也亮着,黄色的,像一盏待机的信号。

故障灯没有亮,这是今天最好的消息。

他从兜里掏出一支烟,点上,吸了一口。

烟雾在洁净室的气流里被迅速抽走,消失得无影无踪,过滤器的嗡鸣声始终没停过。

“行了,先让它跑一个小时。”吕辰看了看手表。

车间里安静下来,只有机柜里散热风扇的低频嗡嗡声,和示波器屏幕上那根稳定的绿色水平线。

宇文坤德蹲在机柜后面,手里的万用表一直没有收起来。

他每隔十分钟测一组数据,记在本子上,字迹工整,每一行都标注了时间和测试点。

他的动作很慢,但很稳,像在给一个病人量体温。

吴国华把探头放在台面上,拧开保温杯喝了一口水,他的眼睛没离开过示波器屏幕。

半个小时过去了,一切正常。

40分钟的时候,宇文坤德忽然开口了。

“吕工,过来看一下。”

语气里,一种“你最好来看看”的意味。

吕辰三步并作两步走到机柜后面。

宇文坤德把万用表的读数转过来给他看。

4.82V。

“这颗芯片离电源入口最远。”宇文坤德用表笔点了点那颗芯片的位置,“标称是5V。跌了将近4%。”

吕辰盯着那行数字看了两秒,没说话。

吴国华已经把示波器探头移了过来。

屏幕上的5V电平线平稳,但仔细看,确实比电源入口处低了大约一格。

“线画细了。”吴国华摇头,语气里带着一种“我就知道”的无奈,“现在的电压还能撑住,指标内。但如果后面加更多芯片,电流再大一点,肯定要跌破4.75伏的红线。”

吕辰翻开本子,用钢笔写了一行字。

他写得很慢,像是在斟酌每一个字:电源板远端压降4%,建议加粗主干道或增加去耦电容。

他在旁边画了一个三角形,表示“需要跟踪,非紧急”。

“先不管。”吕辰合上本子,声音很平静,“能跑就行。继续观察。”

现在不是停下来改板子的时候,火车头测试的目标是让最小系统转起来,证明这条路走得通。

毛病记下来,回头一并改,这是工程,不是实验室里的完美主义。

又过了十几分钟。

示波器的屏幕闪了一下。

吴国华的眼睛猛地瞪大了。

“毛刺!”

他的声音拔高了半度,整个人从靠着的姿态一下子直起来,手指已经搭在了示波器的旋钮上。

吕辰凑过去看。

时钟信号线上,那本该是整齐方波的地方,在正常的边沿旁边,偶尔会出现一个尖锐的毛刺,像一根针扎在波形上。

幅度大约1.8伏,持续时间极短,短到示波器的光标都很难锁住。

“哪来的?”吕辰皱眉。

吴国华把示波器的时基调大,开始扫描更长时间窗口。

屏幕上的波形缓缓移动,像一条缓慢流淌的河。

毛刺出现的频率不高,大约每两三秒一次,间歇性出现,没有规律。

宇文坤德走到机柜前面,弯下腰,凑近时钟板的位置。

这块板子上有一颗KL-cLK时钟分配芯片,旁边围着几只晶体和几个电容。

他看了几秒,又抬起头看了看从背板下来的那几束线缆。

他的眼睛眯了起来。

“线走得太近了。”他指着从背板下来的几条数据线,“时钟线跟数据线在背板上并行走了一段。间距——”

他没有说完,但意思已经很明显了。

吴国华拿起逻辑分析仪的探头,夹在了那条时钟线和最近的一条数据线上。

分析仪的屏幕上一行行数字跳出来,速度很快,但他一眼就捕捉到了规律。

“确认了。串扰。”吴国华把屏幕转向吕辰,用手指点着上面的几行数据,“每当数据线从0翻转到1的时候,时钟线上就会出现一个毛刺。时序刚好卡在那个点上。”

他声音凝重:“这个毛刺幅度1.8伏。ttL电平里,2伏就算高电平了。虽然还没到阈值,但如果再多一点干扰,或者温度升高、芯片老化,它就会变成真正的误触发。”

宇文坤德直起腰,目光从线缆移到吕辰脸上,没有催促,只是在等一个决定。

吕辰盯着屏幕看了几秒。

加屏蔽地线要改板卡设计,加大间距也要改板卡设计,这些都是下一版的事。

现在要做的,是确认这个毛刺会不会让今天的测试跑不下去。

“频率高吗?”他问。

吴国华又看了一眼分析仪:“不高。平均两三秒一次。没有造成实际的逻辑错误,至少目前没有。”

“那就先记着。”

吕辰翻开本子,又写了一行:

时钟与数据线串扰,毛刺1.8V,间距不足,需加地线隔离或加大间距。

旁边画了两个三角形,优先级更高。

他合上本子:“电压和时钟能撑住就继续。今天的任务是让最小系统转起来,毛病先记着,回头一并改。”

吴国华点了点头,把探头的夹子重新夹稳。

宇文坤德把手从万用表上移开,站直了身子,活动了一下有些僵硬的腰。

一个小时跑完了。

电压最低点4.80V。

时钟毛刺最大幅度1.9V。

没有造成实际故障。

吕辰合上本子,伸了个懒腰。

他看着机柜上那些还在亮着的指示灯:“加I/o板。让指令跑起来。”

吴国华从防静电盒里取出一块I/o板。

这块板子比电源板小一圈,正面只有几颗芯片插座和一小排指示灯,背面是一排金手指。

他双手握住板卡边缘,对准抽屉里的插槽导轨,轻轻推了进去。

“咔嗒”。

板卡到位,锁紧机构弹起,声音清脆,让人安心。

吕辰走到工作台前,从抽屉里拿出已经烧录好测试程序的二维卡。

那张浅黄色的卡片不大,打满了密密麻麻的孔,在灯光下看像某种密码本。

他在读卡机前面蹲下来,把卡片塞进读卡槽,推到底,然后按下了启动按钮。

读卡机开始工作,探针矩阵扫描电路,一行行微指令被读入,转化成电信号,沿着数据总线送进板卡。

机柜上的指示灯开始闪烁。

黄色的总线空闲灯灭了,绿色的运行灯亮了起来。

吕辰站起来,盯着前面板。

测试程序很简单,读拨码开关的状态,然后点亮对应的指示灯。

拨码开关就装在I/o板的前面板上,8个拨码,8个指示灯,一一对应。

他拨动了第一个开关。

指示灯没有亮。

等了两秒,还是没有亮。

吴国华已经走到I/o板前面,把示波器探头点在输出引脚上。

屏幕上的波形跳出来,信号有,但幅度只有1.2伏,远低于ttL高电平的2伏阈值。

“输出驱动不够。”吴国华的声音有些发紧,“要么驱动芯片选型不对,要么插座虚接!”

宇文坤德把板卡抽了出来。

翻过来看背面,芯片插座的每一个引脚上,紧固的螺丝闪着银光,他用指甲刮了过去。

一连串清脆的“叮叮”声响起,声音圆润,没有破音。

没有虚焊。!

他又翻回去看正面的芯片插座,一颗一颗检查,手指轻轻按压。

按到第三颗的时候,芯片动了一下。

“没卡到底,虚接!”

把芯片从插座里拔出来,用酒精棉签擦了擦引脚,其实引脚看着不脏,但这是规矩,又重新插进去,用力压到底。

这一次,芯片稳稳地卡在插座里,没有丝毫晃动。

他把I/o板重新插回机柜,锁紧。

动作一气呵成,像是在灶台前颠了一万次勺。

吕辰再次拨动拨码开关。

指示灯亮了。

明亮的绿色,在车间里格外醒目。

吴国华没有笑,但他的肩膀松了下来。

他继续拨动剩下的七个开关,每个开关对应的指示灯都依次亮了起来,没有延迟,没有闪烁,没有迟疑。

“I/o板通了。”

吕辰翻开本子,写:

I/o板输出正常,前期故障为芯片插座虚接。

他想了想,又在后面加了一行:

插座安装后须逐颗按压确认。写入装配规范。

“下一个。加存储板。”

存储板比前面两块板子都大,上面整整齐齐排列着十六颗芯片插座,每个插座周围环绕着几只去耦电容,密密麻麻像列队的士兵。

吴国华双手托着板卡边缘,把它推进了机柜的第四个插槽。

锁紧机构弹起,“咔嗒”一声。

“上电。”

宇文坤德再次推上开关。

这一次,机柜的指示灯亮起来之后,存储板的几个状态灯也亮了,绿色,自检通过。

吕辰换了一张测试卡,塞进读卡机。

这次的测试程序更复杂,向存储器的某一段地址写入一组数据,然后读回来比较。

一致就点亮I/o板的第一个指示灯,不一致就点亮第二个。

读卡机“咔嗒咔嗒”地响了一阵。

程序开始运行。

第一个指示灯亮了。

吕辰没有动。

等了两秒,还是亮的。

“再写一组。”

吴国华在终端上敲了几行命令,换了另一组数据。

读卡机再次启动,第一个指示灯还是亮的。

连续重复了十几组,全部一致。

“存储板基本功能正常。”吴国华的声音里带着一丝自信。

“不急。”吕辰从抽屉里拿出另一张测试卡,“跑一个边界的。”

这张卡的测试程序不是读写正常地址,而是读写地址的边界值,全0地址、全1地址、地址线翻转的临界点。

这些地方最容易暴露出地址译码或数据总线的隐藏问题,正常能跑的不算数,边界能跑才算。

读卡机再次启动。

测试跑了不到半分钟。

第二个指示灯亮了。

车间里的空气又一次安静下来。

吴国华把逻辑分析仪接在存储板的地址线和数据线上,开始抓取数据。

屏幕上的数字飞速跳动。

他盯着看了几秒,然后用手指点住屏幕上两条几乎重合的波形。

“地址线A7和A8的输出波形不对。A8的翻转时刻比A7晚了大约10纳秒。导致在某一个瞬间,地址线组合错误,读到了错误的内存单元。”

宇文坤德从工具箱里拿出一把极细的镊子,在板卡背面测量了两根地址线的走线长度。

他的眼睛眯成一条缝,镊子尖在铜线上轻轻划过。

直起腰,比划了一下长度。

“A8比A7多绕了一段。长了大约15毫米。”

时序问题,硬件工程师的噩梦。

不是说功能错了,功能没错,是信号在路上跑的时间不一样,导致在某个纳秒级的窗口里,逻辑乱了。

那种问题最难复现,最难定位,最磨人。

吕辰在本子上重重地写了一行:

地址线长度不匹配,A8绕远,建议下一版做等长布线。

他画了三个三角形,最高的优先级。

他看着宇文坤德。

“飞线试试!”

宇文坤德从线圈上剪下一根极细的绝缘导线,比头发丝粗不了多少。

用镊子剥开两端的绝缘皮,露出铜芯。

在板卡背面找到了A8信号的起点和终点,不是正式焊盘,而是芯片插座引脚的根部。

他用镊子尖轻轻挑起那条走线的末端,把飞线的一端焊上去,然后沿着板卡边缘把线绕过去,绕开那些电容电阻,在终点处焊好。

动作很轻,呼吸很稳。

他焊完最后一处,用万用表测了测通断,“嘀”一声,通路。

然后把板卡重新插回机柜。

吴国华在看逻辑分析仪的屏幕。

A8的波形提前了大约7纳秒。

虽然没有完全对齐,但已经不在临界区了。

“试试。”

测试程序重新运行。

第二个指示灯没有再亮过。

10组。

20组。

50组。

全部通过。

吴国华吐了一口气:“算过了。”

吕辰看了看表。

从第一块电源板上电到现在,已经过去了五个小时。

外面天早就黑透了,车间里的工人们早已下班。

“还有最后一关。”

他从工具台上拿起热风枪,那把枪不大,出风口可以调温,最高能到150度。

吴国华的眉头皱了起来:“现在就烤?系统才跑通不到一个小时。”

“就是要现在就烤。”

吕辰把热风枪调到80度,对准存储板上的一颗芯片,那颗芯片旁边没有散热片,没有风扇,孤零零地暴露在空气里。

“刚跑通的时候是最脆弱的。热胀冷缩一下,什么毛病都出来了。”

他直接扣下了扳机。

热风枪的扇叶嗡嗡地转着,热风从出风口涌出,打在芯片的陶瓷封装上。

一股微弱的、热烘烘的气流在板卡表面散开。

吴国华盯着示波器和逻辑分析仪,眼睛一眨不眨。

宇文坤德看着万用表和机柜的指示灯,手里的电笔没有放下。

吕辰看着热风枪的温度表,手很稳。

3分钟……

5分钟……

第8分钟,示波器屏幕上的时钟波形开始出现不规则的抖动。

原本干净的方波,边缘开始毛糙,像被什么东西啃过。

毛刺的幅度从1.8伏慢慢往上爬,1.9、2.0、2.1……

到了2.3伏。

吴国华声音发紧:“时序在恶化,高温下芯片内部延迟变大,原来能收敛的时序现在收不住了。”

吕辰把风口移开一点,让热风打在那颗芯片旁边的空地上,继续观察。

宇文坤德把手按在机柜的外壳上,感受了一下温度。

铝型材的外壳已经有些烫手了。

他松开手,走到旁边的物料架上,取下一台小型轴流风扇。

从工具箱里找了两根扎带,三下五除二,风扇固定在机柜的侧板上,电源线插到I/o板的一个闲置插座上。

风扇转了起来,呼呼地吹着,把热风枪吹来的热气吹散了大半。

示波器屏幕上的波形慢慢稳定下来,毛刺幅度降回了1.9伏,时序勉强收住。

宇文坤德把手从机柜上移开:“风扇能顶住,但机柜里那么多抽屉,不可能每个抽屉都加风扇,散热设计要从根上改。”

吕辰关掉热风枪,热风枪的扇叶慢慢停下来。

他把本子翻到新的一页,从头开始写总结。笔尖在纸上沙沙地响:

火车头测试(电源+时钟+背板+I/o+存储)初步通过。

发现问题:

1. 电源远端压降4%(建议加粗主干道/增加去耦电容)

2. 时钟串扰毛刺最大1.9V(建议加大间距/加地线隔离)

3. I/o板芯片插座虚接(已修复,建议写入装配规范)

4. 存储板地址线长度不匹配(飞线临时解决,下一版做等长布线)

5. 高温下时序恶化(散热设计需重新评估)

五类问题,全部记录在案,待下一版设计修正。

他写完最后一个字,把本子递给吴国华。

“签字。”

吴国华接过本子,一页一页地看他记的那些内容。

每一条都有现象描述、根因分析、临时对策和后续建议。

字迹工整,条理清晰。

他从口袋里掏出钢笔,在本子上签了自己的名字。

宇文坤德接着签了。

吕辰把本子合上,他转过头,看着机柜。

绿色的指示灯还在亮着,系统还在跑。

那块被热风枪吹过的芯片,现在温度已经降下来了,波形稳得像什么都没发生过。

他用指关节轻轻敲了敲机柜的铝型材立柱,发出清脆的响声。

“行了。今天就到这儿。明天加运算板。后天加温度循环。”

宇文坤德开始拆风扇、拔板卡、关电源,每一块板卡都用防静电袋装好,封口,放回架子上。

吴国华收拾示波器和逻辑分析仪,把探头一根一根地绕好,放回工具箱。

他把示波器的电源线也拔了,绕着机器缠了两圈。

三个人在防静电车间的门口站了一会儿。

深秋的夜风吹过来,带着轧钢厂冷却塔的水汽和远处烟囱的煤烟味。

车间里的暖气到了门口就被冷风截住了,站在门口能感觉到一股凉意从脚底升起来。

吕辰把本子夹稳,转过头看着吴国华和宇文坤德。

“国华,宇文工。最近你们要多盯着。我家里,晓娥要生了。有时候可能顾不上。”

吴国华拍了拍吕辰的肩膀:“火车头能跑。后面就是修修补补的事。家里的事你放心。”

他顿了顿,又补了一句:“我已经和李娟说好了。等孩子生了,她和明婕去陪晓娥说话。你不用操心那边。”

宇文坤德从兜里掏出三根烟,一人发了一根。

“吕工,恭喜。板卡测试这一关有我守着。出不了问题。等你回来,开始集成冲刺。”

吕辰接过烟,从口袋里摸出打火机,“啪”地点着。

火光照亮了他半张脸,能看见眼角那几条这两年才长出来的细纹。

三团火星在夜色里明灭不定。

远处,轧钢厂高炉的火光把天边映成一片暗红。

那火光很安静,很沉稳,像某种古老的、永远不会熄灭的承诺。