原创 大三项目总结

2009-11-29 14:09 2951 5 5 分类: FPGA/CPLD

    前面所做的两个项目中,《千兆网转换卡》项目另我印象尤其深刻,在此项目中,我结识了优秀的学长,学到了高深的技术,在项目中,更夹杂着酸甜苦辣。下面就以此项目为代表,介绍自己大三一年的项目情况。


1.         项目背景


    与武汉某公司合作,设计一种 CameraLink 转千兆网的接口转换卡,这种转换卡能使 Camera Link 接口设备直接接入网络而无需其它复杂设备干预,大大降低系统复杂度和成本,同时拓展了其应用领域。


2.         项目进展


i)         “立项”时期( 12 月至 1 月)


 本项目应是在 11 月便已由团队导师组与甲方签订合同并立项,因而 12 月至 1 月事实上是方案调研阶段,甲方给的需求并不具体,事实上在后期对需求作了一些变动,给项目的开发带来困难并导致项目的延期。


    项目初期项目成员为司徒、小宝、严牧西、张潇雨、李耀栋和我共 6 人,此段时间项目处于调研阶段,同时由于项目所用主芯片为 FPGA ,而之前大家并没有太多的 FPGA 的开发经验,因此大家在此期间也一直在学习 FPGA 的有关知识。


    在此期间我所负责的是在 DE2 开发板上跑通通过 DM9000A 芯片的网络发送与接收程序,以为下位机与上位机的通信作好铺垫,另外还有研究 SG-DMA 这一核心接收模块的使用方法。


    这段时间其实投入的时间并不是很多,主要是由于当时是学期末了,课程相继到了备考阶段,课设—— RFID 系统又占据了我们很多的时间,再加上团队年终茶话会到了,项目组和种子班都要准备节目。


ii)       输入评审( 2 月至 3 月)


    春节结束后,大家整装待发,全心投入到了项目,在此阶段我们的目标是做出一个 demo ,以验证我们的方案的可行性。另外,这阶段我们将第一版电路图基本完成。在此阶段我主要负责的是 Nios 系统的定制和维护,另外,还有伴随我至项目结束的 SG-DMA 模块,嗯,关于这个 SG-DMA 模块,其实还有很多话要说,这个后面再详细说吧。


    在此阶段,我们经过与公司方面负责人的交流,修改和增加了一些需求,同时我们的方案基本得到了 公司 方面负责人的认可。


iii)      输出评审( 4 月至 6 月)


    此阶段我们调通了第一版部分电路,由于第一版电路部分有严重问题,我们在发现问题后迅速改版投出了第二版。我在这一阶段主要负责了 FPGA 最小系统的调试工作,由于之前没有调试过 FPGA 电路板,不知道从何入手,只能通过自己的探索,调试过程中遇到了很多的问题,具体可见喻信 DianDSP (我们的内部版面) 4507 帖。经过此阶段,下位机的初步框架已成功搭建,基本调通网络传输功能,但还需要完善,还存在的问题有:数据传输速率低和接收模块存在缺陷等问题;上位机已实现图像显示功能,但是更改图像大小和帧速率等还需完善。其中大部分工作都是在 4 5 月份完成的,因为 6 月份处于学期末,李耀栋、江滔和胡晓虎需要时间来复习功能以便考试,而种子班由于《批判性思维》和《 EMC 》课程, 6 月份的时间已经没有空余,司徒由于要写毕业论文能够投入的时间也十分有限,那么就只剩下小宝一个人了,哎,难为小宝了,呵呵。


iv)      结题


        7 月份和 8 月初是我们项目的冲刺阶段,在此期间,由于各方面的压力,我们的神经都绷得很紧。


    进入暑假后的第一次例会,我们确定了后期几个人的分工。我主要负责从数据进入 FPGA 至将数据交给下位机程序封包的过程。之前我们的老组长司徒已经将这部分的框架设计好了,但是还存在一些问题:图像头部解析错误、帧间出现错乱等问题。这部分包括设计接收数据的 IP 核和控制 SG-DMA 进行接收并交由封包模块进行处理等部分。


    为了解决上述存在的一问题,我用逻辑分析仪(包括真实的和虚拟的)进行分析,将输入 FPGA 16 路数据接入逻辑分析仪以分析其波形,结果发现其数据的时钟与我们预想的并不相同,是我们设计时考虑的时钟的 4 倍,那么我们读入的数据只有真实数据的四分之一,结果当然不对。改正上述错误后我们发现接收到的数据问题有 0X7FFF 0X8000 等“诡异”数据,无论怎么改都存在,迫不得已最后我们又动用了逻辑分析仪,结果原来数据源里就有这些数据,经与 公司 方面确认后,这些数据是每帧图像前公司的私有数据,之前我们只知道每帧图像前会多送一行的数据,但是并不知道这些数据具体是什么。


    帧间出现错乱的问题当时真的让我近乎绝望,自己分析了很久对于出错原因也不得而知,后面将小虎爷爷(他是做上位机的)拉来我给他一点一点地讲,目的是让我在讲的过程中自己能够发现问题,而他的提问也促使我对一些问题深入地思考。最后发现是 SG-DMA 写内存与封包模块读内存出现冲突,有可能封包模块在读内存时我这边 SG-DMA 将内存的内容改变了,导致读入的是两幅图像混叠的数据,然后我们只改动了一行代码就将问题解决了。


    后面在进行系统测试时,发现 SG-DMA oh my god ,又是它)经常会死掉,这个问题改起来很耗时,因此它死掉有可能是系统运行 5 分钟就挂,也有可能是 4 5 个小时后才挂掉。因此我们经常做通宵测试(呵呵,这个是针对我们的系统的,不是针对人的),第二天早上来后再看它是不是挂了。引起这个问题的原因是我们的网络发送模块速率太低了,导致 SG-DMA 的写指针追上了封包模块的读指针,待我们的速率提高并经过 SG-DMA 模块的一些处理后就可以了。


    最终,我们的项目于 2009-8-17 结题。


3.         项目体会


i)         由于这个项目,有机会接触了团队的大牛——司徒学长。在项目过程中,也得到了他很多的关心和帮助,他乐于探索的精神更是令我印象深刻。


ii)       此项目之前我们项组的成员对于 FPGA 项目都并不是很有经验,大家都是边干边学,“干中学”。我觉得其它项目应该也是这样,这是我们团队的一个特色,大家的起点可能并不高,而在做项目时遇到问题并解决问题的过程正是我们学习提高的过程。


iii)      对于做工程项目,什么是最重要的?我觉得是分析问题与解决问题的能力。而知识的储备不是不重要,但是可以在遇到问题时进行再学习,而这种学习方式的效果也才是最好的。


iv)      在此项目中,项目组成员间的感情无形中更深了。还记得 7 月份的时候我们因为速度提高了几 M 而欣喜;还记得有次去公司调试后进展并不顺利,大家很郁闷地中午在公司附件的一家小餐馆吃了顿“郁闷餐”;还记得小虎爷爷去了趟公司后人生观和价值观等发生地重大转变,等等。我想这就是所谓的“战友之间的友谊”。


v)       7 8 月份项目进展不顺利的时候,小宝同学乐观的精神给了我们希望,指引着我们走完了当时认为很艰难的历程。



    最后向经历过此项目的所有人——司徒加旻、孙静超、严牧西、张潇雨、李耀栋、江滔和胡晓虎同学表示感谢与敬意。

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条