他依旧认真上课,备考,但所有的课馀时间,包括晚上熄灯后打手电的时间,几乎都投入到了这份寒假作业中。
他先反复研读那叠材料,吃透系统须求、硬件约束和内核难点。
然后在笔记本上,开始自己的纸上设计。
没有实际的Z80单板机,他就根据TP801的手册(张老师又帮他找了一份更详细的),在笔记本上画出系统内存映射、IO口分配、中断矢量表。
他设计了一个极简的、基于定时器中断的调度内核,用来协调数据采集、处理和通信任务。
数据滤波算法,他放弃了材料中提到的几种复杂但耗时的方案,结合自己前世的经验,选择了一种改进型的递推平均滤波结合简单限幅滤波的方法,在保证一定效果的前提下,极大减少了计算量。
为了对抗工频干扰,他设计了一个简单的自适应陷波器思路,虽然以Z80的性能实现完整的自适应不现实,但他简化了参数调整逻辑,使其能在初始化时根据缺省工频进行一次性配置。
每一个设计,他都要反复推敲时序是否冲突,计算量是否超限,内存是否够用。
他在草稿纸上写满伪代码,画满时序图。
遇到卡住的地方,就去查资料,翻看那本《微型计算机原理》,或者去图书馆的旧纸堆里查找灵感。
有时也会带着提炼后的问题,去请教张老师,但只问原理和思路,不涉及具体设计细节。
他还真的用苹果II的BASIC,写了一些小程序,来仿真验证算法效果。
比如用随机数仿真带噪声的采样数据,验证他的滤波算法效果;用简单循环仿真多任务调度,看会不会出现优先级反转或死锁。
虽然运行环境天差地别,但能帮助他理清逻辑。
这个过程是孤独的,也是充实的。
常常为了一个中断服务程序里如何既完成操作又快速退出而苦思冥想,也为了找到一种节省内存的数据结构而欣喜。
他仿佛又回到了前世,在实验室里攻克某个技术难点时的状态,只是工具从强大的工作站和仿真器,变成了纸笔和一台苹果II。
他的投入没有逃过室友的眼睛。
陈浩发现陆沉晚上打手电的时间更长了,看的不是课本,而是一些画满奇怪框图和符号的笔记。
孙鹏则好奇陆沉为什么老在苹果II上运行一些看不懂的、光打印数字的程序。
刘宇隐约猜到陆沉可能在研究什么深奥的东西,但陆沉不说,他也不多问。
期末考试如期而至,又波澜不惊地结束。
陆沉再次以接近满分的总成绩,稳居年级第一。
实验班的同学们对这个结果已经麻木了,仿佛那是天经地义的事情。
考完试的下午,陆沉没有象其他同学一样急着放松或收拾行李回家。
他抱着那份已经翻阅得有些卷边、写满批注的寒假作业材料,以及自己那本厚厚的设计笔记,敲响了张老师办公室的门。
“进来。”张老师正在整理东西,看到陆沉和他怀里那摞东西,眼中闪过一丝了然和期待。
“张老师,材料我看完了,也……试着想了想。”陆沉把材料和笔记本放在桌上。
“哦?有什么收获?随便说说。”张老师坐直身体,尽量让自己的语气显得随意。
陆沉没有直接摊开笔记,而是整理了一下思路,开始陈述。
他从系统总体框架说起,讲了自己设想的基于优先级中断的简单任务调度模型,讲了在内存限制下的数据缓冲区设计,重点阐述了他对滤波算法的改进思路和简化策略,详细解释了如何平衡实时性和精度,以及对抗工频干扰的简化方案。
他语气平稳,逻辑清淅,没有引用任何高深术语,都是用最直白的语言,配合着手势在桌上比划,仿佛在描述一台正在他脑海中运行的机器。
张老师起初只是听着,不时点头。
但随着陆沉越讲越深,越讲越细,他的表情渐渐变了。
惊讶,思索,恍然,再到难以掩饰的震动。
陆沉讲的许多思路,特别是对算法计算量的极致压缩和对中断响应的精细化设计,完全不象是一个中学生(甚至比大学生还要强得多)的思维深度。
这已经不仅仅是有点悟性,这简直象是一个有丰富嵌入式系统开发经验的人,在苛刻条件下做出的优化设计!更关键的是,陆沉的整个设计,紧紧围绕着Z80单板机的实际限制展开,没有不切实际的空想,每一步都考虑到了可行性和代价。
“……大概就是这样。还有一些细节,比如看门狗定时器的使用、通信协议里的差错校验,我笔记里