这次非常幸运,能够参加全国电子设计大赛。能不能拿奖就不去考虑了,最难得的是这些天的经历。从上月18号回校到现在,这半个月来一直呆在学校的创新实验室。本来自己是没资格参加的,因为之前没有参加过学校的选拔。回校后的两三天,呆在寝室看《铁齿铜牙纪晓岗》,后非常幸运的经同寝室的同学介绍到实验室。开始是搞用FPGA来设计信号发生器。还好自己VHDL还懂一点,也用过实际的FPGA板子写过简单的代码, 所在说到了实验室还不至于什么都干不了。
同学和其它一共四个人是一个小组,我去了之后,显然有些不合适,但这毕竟是个难得的机会,只有硬着头皮上了。多亏同学的帮忙,去找了指导老师,也不知道说些啥,大概的谈了下自己懂的一些东西,那个窘劲,不想说了。
比赛前的那些天,一直在做信号发生器。就用自己的那块FPGA板子,去产生方波、三角波、正弦波。用quartus仿真,还算是可行的;但最终因为没有时间去搞DA那部分了,也就这样结束了。
电子设计大赛题刚出来时,我们小组选的是F题,幅频均衡相关的。虽然我懂点VHDL语言,但数字信号处理的理论不懂,没法写代码。那天经过一天的挣扎后,实在是忍不住了,就极力劝说小组的成员换题,做无线环境监测的。虽然这一块也有难度,但至少相比前一题要容易些。
之后就是一些具体的工作了。小组的两位成员主要负责无线模块和传感器等硬件方面实现,我写代码。无线模块那部分确实不好做,队员忙了一两天也没出什么成果。毕竟没学过这方面的东西,我也搞不来。所以,我也代码时,最开始是将两块51用串口直连,进行有线通信。然后就是设计通信协议,包含数据帧格式,主从结点工作的状态变迁过程,以及一些外围电路相关的驱动代码编写了。我的最初想法是,用一组通用的操作接口来屏蔽底层的实现,这样原本运行于串行链路上的代码可以只通过修改这些接口的实现,就可以方便的将无线通信加进来。
软件部分最难的就是通信协议,因为要实现主结点与多个从结点进行通信,其中会涉及到链路层方面的网络配置。我采用的是主结点控制的集中控制方式。主机不断发送命令至从机,从机执行相应的操作并发数据至主机。考虑到无线通信中可能存在的多结点同时发数据时产生的冲突,采用了主从结点间通信采用半双工方式,从结点要发数据必须先得到主结点许可的方式。 这些东西,是我以前在做PC机控制小车时从一本有关数据与网络通信的书上学来的。在那之前,如果仅仅是看书的话,我一定会认为那些这些理论性的东西是毫无用处的。真正的边学边用,或者是为了应用而专门去学某方面的东西,这是非常高效的。有关VHDL语言的学习也是,这十来天的代码编写过程给我的东西远比我几个月自学VHDL收获大得多。
第一天晚上,我们小组回寝室睡觉。之后的两夜都是在实验室过的。记得夜里做到3、4点钟,因了就趴在实验桌上或躺在实验室时。醒来后又马上接着去做。当时那股劲也不知道从哪里来的,也没觉得什么累的。之后就是最后交作品,无线模块那部分没弄来,只实现了个有线通信。不管怎么说,也算是做了那么一点点东西了。
今天去答辨,没戏。无线模块那部分没搞通,没多少分。意料中的事。总的来说,能有这样的一次经历对我,已经是非常幸运的了。所以心里满足的成分要远大于失败带来的沮丧。更让我觉得有兴趣的是,在经历了这次比赛后,能够有机会在创新实验室呆上一段时间,这是我一直以来求之不得的。
这半个月来的经历远比我四年来的更有意思,也是最令我难忘。其中也让我有了一些成就感,终于发现自己还不算什么都不会。以前搞的那些东西,终于还是有点用的。就这一点,我终于可以抬起一点头,有点那么自信,不至于像以前前一年那样有些神经质了。继续加油吧!
tengjingshu_112148725 2009-9-8 09:32