电子实验室的筹建在艰难中推进,设备依旧简陋,人手依旧短缺。那台拼装的486计算机承担了几乎所有的设计、编程和仿真任务,运行稍大一点的程序就会发出不堪重负的嗡鸣。但陈北玄带领着小张和小李,就在这有限的条件下,向着数字逻辑设计的核心领域发起了冲击——他们瞄准了FPGA。
在九十年代初,FPGA(现场可编程门阵列)技术在国际上也是方兴未艾,它允许工程师通过编程来定义芯片内部的逻辑功能,具有极大的灵活性和并行处理能力,非常适合用于原型验证和特定功能的加速。但在国内,尤其是军工领域,了解并能够应用此项技术的人凤毛麟角。
陈北玄通过一些特殊的渠道(借助了林雪那条线的关系),费尽周折,才弄来了几片Altera公司最早期的FPGA芯片——EPM5064,以及一套极其简陋的下载线和开发软件(MAX+PLUS II基础版)。这些东西在后来看来原始得可笑,但在当时,却是通往硬件可编程世界大门的钥匙。
没有现成的教材,没有可以参考的案例。陈北玄只能依靠自己前世深厚的集成电路知识,从最基础的数字逻辑讲起,带领小张和小李,一步步摸索。
“忘掉你们之前用分离元器件搭逻辑电路的方式。”陈北玄在白板上画着FPGA内部基本逻辑单元(LE)的结构图,“在FPGA里,你们面对的不再是具体的与非门、或非门,而是可配置的逻辑模块、连线和存储单元。你们需要用硬件描述语言,去‘描述’出你们想要实现的电路功能。”
他引入了VHDL语言。从实体(Entity)、结构体(Architecture)的基本结构讲起,到信号(Signal)、变量(Variable)的区别,再到进程(Process)和并发语句。小张和小李听得云里雾水,这完全颠覆了他们之前用汇编语言顺序执行程序的思维模式。
“陈工,这……这感觉像是在用写软件的方式,去设计硬件?”小张挠着头,一脸困惑。
“可以这么理解,但思维模式是并发的,硬件的思维。”陈北玄耐心解释,“你们要时刻想着,这些语句描述的逻辑,是在芯片内部同时发生的。”
学习过程充满了挫折。第一个目标是实现一个简单的4位二进制计数器。在纸上用逻辑门画出来很简单,但用VHDL描述时,却遇到了各种问题:时序不满足导致仿真失败、信号赋值冲突产生锁存器、甚至因为语法错误导致综合(将代码转换为电路网表)都无法通过。
实验室的灯光常常亮到深夜。三个人围在计算机前,盯着屏幕上滚动的错误信息,一遍遍地修改代码,运行仿真,查看生成的RTL(寄存器传输级)电路图,分析时序报告。失败了,就讨论原因;成功了,哪怕只是仿真波形图上出现了正确的计数序列,都会带来一阵短暂的欢呼。
经过近两周的反复尝试和修改,他们终于完成了第一个能够在仿真中正确运行的4位计数器VHDL代码。
接下来是综合、布局布线和生成下载文件。这个过程同样不顺利,古老的软件经常因为资源不足而崩溃,或者给出不合理的布局方案导致时序无法闭合。陈北玄不得不手动添加时序约束,指导布局布线工具进行优化。
当那个最终的、用于下载到FPGA芯片的 .pof 文件终于生成时,三人都松了一口气。
最关键的时刻到来了——硬件测试。他们将那片EPM5064芯片插入一个自制的、布满杜邦线的测试底板,连接好下载线,接通电源。
陈北玄深吸一口气,在开发软件上点击了“Program”按钮。
下载进度条缓慢地移动……100%!编程成功!
他们为计数器设计了简单的输出,通过四个LED灯来显示二进制状态。当按下复位键后,四个LED灯开始随着输入时钟的节拍,规律地闪烁、变化,清晰地展示出0到15的二进制计数循环!
成功了!他们成功地将一段代码,“烧写”进了芯片,让它变成了一个实实在在的、具有特定功能的数字电路!
“我们做到了!陈工!我们真的用代码‘造’出了一个计数器!”小李指着那规律闪烁的LED灯,激动得声音都有些颤抖。这种感觉,与编写软件程序截然不同,这是一种创造硬件的奇妙体验。
小张也兴奋地记录着测试数据,虽然这只是一个再简单不过的功能,但其背后代表的意义却极其重大。这意味着,他们初步掌握了利用FPGA进行数字系统设计的能力,为未来开发更复杂的、诸如总线控制器、信号处理单元、甚至专用协处理器等核心车辆电子部件,迈出了至关重要的第一步。
陈北玄看着那闪烁的灯光,脸上露出了欣慰的笑容。他知道,这小小的第一步,如同在数字世界的荒原上点燃了第一堆篝火。光芒虽弱,却足以照亮前路,给予探索者以方向和勇气。
“这只是开始。”陈北玄对两位年轻人说,“接下来,我们要用FPGA,去实现‘麒麟’所需的第一块拼图——一个简化版的、符合我们自定义协议的车辆内部总线控制器。”
更艰巨的挑战,还在后面。但此刻,电子实验室里弥漫着的,是攻克难关后的喜悦,以及对未来无限可能的憧憬。那颗名为“硬件可编程”的种子,已经在这片贫瘠的土壤中,顽强地生根发芽。
喜欢钢铁雄心从南天门到星辰大海请大家收藏:(m.zjsw.org)钢铁雄心从南天门到星辰大海爪机书屋更新速度全网最快。