2011年学生心得体会

发布者:系统管理员发布时间:2013-10-12浏览次数:9

立体式停车场控制系统61009106张益成
课程设计体会
首先说说程序设计中的具体体会。状态机,还是硬件电路中最核心的模块,在经过这样较大规模的程序设计之后,对这一点的体会更加深刻。状态机的把握直接体现了对整个程序流程的把握。这里的状态机已经不仅仅是指程序框架中的一个模块,而可能是对应某一个模块中的很小一部分,只要它的功能是控制其中的具体工作流程,它就是状态机。很多让人苦思不得其解的问题,引入逻辑清晰的状态机之后可以很快很流畅的得以解决。
越是简单的语句,所占用的资源越少,但是代价是其可读性、编程难度会随之上升。当然对于初学者,如果对某一门语言的比较高级复杂的语句还没有完全掌握,使用简单语句是很好的选择,但是必须在编写之前在纸上或者在脑中有对整个程序流程一个很好的框架把握。
再谈谈整个数字系统课程设计中的收获。在知识方面,当然最直接的是收获了一门语言,当然与此同时是对硬件电路和硬件语言的理解上的深入。
个人认为,更大的收获在于能力方面的培养。从对一个系统的构想,设计到最后的实现,其中包含了很多元素,而这些东西靠对书本知识的学习是永远无法掌握的。也就是所谓的在实践中学习。在构思选题上,必须考虑各种因素比如硬件限制,规模限制和个人能力限制,当然在这个过程中是不可能将之后的所有困难都设想到位的,因此就带来了后续编程实现过程中的调整,也就培养了针对非常具体的问题的细微调整。很多时候都是盯着程序很久毫无进展,这就需要我们跳出之前的思维模式进行新的思考。在设计过程中,考验和锻炼的使我们统筹全局,定性分析的能力。将某一个功能划分给某一个模块,将某一个功能划分成几个具体步骤等等。总之,这些能力的培养在以后的各个方面都会有很大的实用性。
在整个实验过程遇到的困难也是相当可观的。卡在一个问题上很久没有进展的时候锻炼的已经不仅仅是一个人的能力,更重要的是在困难面前的心态和素养。这个方面的锻炼更加抽象,当然也更可贵。
 
 
车载GPS导航模拟系统                 学号:61009133              姓名:孙文、
n                                           课程设计体会
数字系统的设计实际上是一次自主学习的过程,这个过程中有过挣扎,有过失望,有时甚至想要放弃;但同时也有成就,快乐和自信,现在回想起来,学到了很多。
课程要求我们用硬件描述语言编写一个相对复杂的系统,而硬件描述语言我们从没接触过,老师上课也不讲述,所以这完全靠我们自学了。这样一个过程,虽然是痛苦的,却毫无疑问,极大地锻炼了我们自主学习、查找资料、发现分析解决问题等的能力,现在想来。如果不是有这门课,我恐怕始终不会相信自己可以靠自学完全掌握这样一门设计语言。
整个设计过程,我选择了Verilog语言,因为它与C语言即极为相似,容易掌握。而这个过程,却也有好多问题:比如Verilog语言中,我多采用了非阻塞赋值,需要在以时钟作用下同步运行;而C++则不是这样,它往往是顺序执行,前一行执行完了才执行下一行;这样两门语言就产生了差距,处理的办法是在Verilog中设计节拍,在节拍的作用下,每次只执行一小段,整体看来就相当于顺序执行。这实际上是自己思考的结果,很好的锻炼了自己独立思考的能力。
在整个设计过程中,我始终注意到了两点,一是多用状态寄存器,因为状态寄存器可以很好的传递信息,而代价却很小,因而用起来很方便,我在程序中设置了许多临时变量,使得整个程序看起来很复杂,实际上确是井然有序;而是避免任何隐患的产生,在程序中我考虑到了诸如输入错误如何处理、如何在闪烁的点亮的时候运行到下一个地方,如何保证正序旋转和反向旋转互不干扰,可以叠加,且每次只执行一次等等,这些考虑,使得系统抗风险能力大幅度提高,拥有着较高稳定性,因而也就能更好的展示出来。
调试程序是整个系统设计的大头,往往耗费的时间比编程还多。同时自己的实践,我总结出了以下几点:一是最好在调试前进行仿真,仿真无误后再进实验室进行调试;二是分模块检验,最好保证每一块都是对的,这样才能级联起来构成系统;三,要对自己的程序十分的熟悉,要经常看,搞清楚哪几个量会影响特定输出,调试时如果发现那个量不正确,只需注意查看其影响因素即可;最后一点,如果实在发现不了错误,而运行结果又不对,就可以了考虑以下是不是硬件的问题了,因为实验室的条件实在不敢恭维了,弄不好花了一天时间没调试出来,却最后发现是硬件不行,那就冤枉了。
整个数字系统的设计,占用了我们很多的时间,尤其是接近考试周的宝贵时间。但我们确实学到了很多东西,它将成为我们一个难忘的记忆,见证着我们不畏困难、勇往直前的学习精神,见证着我们的成功。以后的道路上,即便再有其他困难,有了这样一种历练,我们会更加从容不迫的应对。
 
可即时编写式波形发生器       学号 61009203                 姓名   唐颖思
n                                           课程设计体会
经历无数天的奋战,终于出来了。只有经历过《数字系统课程设计》的同学才能体会这句简单的感慨中包含了什么。
从选题目开始说起。我想了很多题目,跟同学重了一次,被老师毙了两次,最后实在无奈之时,胡老师建议我做一个可即时编写的波形发生器。终于申请书顺利通过了,虽然黄老师再三警告正弦波很难做。
正式开始写程序时才发现这个项目包含了这次几乎数字系统所能包含的全部东西。有状态机,有内部各种模块,有点阵显示,有D/A外设,突然觉得很难去掌控这么多的东西。先是从键盘和状态机入手,由于《计算机结构及逻辑设计》实验课程的期末大实验中已经有所历练,这两部分的编写还是比较顺利的。而接下来的波形产生、频率控制、点阵、外设,都是一串串很头疼的问题,有些甚至没有接触到过。
我从矩形波、三角波波形产生入手,自己想了个计数的方式产生这两种波形,刚开始还觉得很满意,却没想到这直接导致了我后面部分的复杂化。正弦波的产生刚开始没有头绪,查了很多资料,选择了用DDS(直接数字频率合成)的方法即简单又有效。同样的频率控制、点阵显示等等都是一个模块一个模块单独突破,最终完成了程序。
调试的过程也很辛苦,状态乱跳、不响应、波形毛刺……那段时间天天泡在实验室,早上等着开门,晚上关门再走,匆匆去食堂吃饭,又匆匆回实验室……
终于成功验收。虽然有一些瑕疵,但是看得出来老师对做出来的结果也比较满意了。于我来说,莫过于一种天大的肯定和欣慰。成功的实验箱硬是好久都舍不得拆。
虽然很辛苦,但我也深刻记得每天跑实验室调试程序的日子是很快乐的,首先我自己对数字系统设计就有较大的兴趣,编写程序让它完成一个功能,不行就动脑排错,很有意思,也很锻炼人。另外那段时间里大家都热热闹闹地挤在实验室里,相互讨论、相互请教、相互鼓励,也是一种很难得的并肩作战的回忆。
从课程本身而言,的确是有一定的难度。但是这种难度和这种机制真的很能锻炼我们自己动手做出一个完整的工程的能力。项目申请、方案论证、程序代码、调试验收、展示答辩,这样一套完整的过程让我们第一次感受到实际工作中完成一个项目的完整步骤。它引导了我们学会怎么样去做一个完整的工程,需要哪些流程,每个阶段该怎么样安排。而这些对于一个工科生来说是非常必要的,不是等到毕业设计才去一点点学的。而且每名学生课题的不同,也督促了学生的独立思考独立解决问题的能力。
总的来说,数字系统课程设计给了我很多其他课程不能提供的锻炼机会,也收到了良好的效果。相信对于每一位参加课程的同学来说,这都是一段难忘而弥足珍贵的经历。
 
智能联动货梯控制系统         学号 61009204          姓名 张硕闻
(3)课程设计体会
经过选题、项目方案,代码编写,以及后续的调试和验收,基于FPGA的数字系统设计终于画上了一个句号。在这个过程中,我们收获的不仅仅是一门语言,一项调试的技术,更重要的我认为是成熟的心态和坚持的精神。
在选题过程中,我们深切地体会到了“系统”的概念,这个概念有别于我们之前实验中设计的交通灯、洗衣机、微波炉,不是一个功能器件,而包含输入、处理、输出,能够独立运行,实现特定功能,具有极强的完整性。我们学会了自顶向下的设计方法,并且认识到了在设计过程中要局部联系整体地看问题。
在代码编写过程中更是出现了诸多问题。每一个变量、信号定义的失误都可能对整个系统带来很大的影响。我采用了有限状态机的方法,在仿真过程中无论输入信号是什么,总是两个状态之间来回跳转,不能前进到下一个状态,导致那个进程基本上没有运行。经过很长时间的调试,终于发现了问题,是状态和状态之间有一个过渡状态没有定义好,删掉那个过渡状态后终于可以顺畅地运行。
对这门课我最深的感受就是坚持的重要性。无论在编写代码的过程中还是在调试的过程中,都会遇到很多困难,这些困难往往很难解决,而且每个人的题目都是不同的,所以互相获得的帮助都是有限的,这个时候就要完全靠自己的努力来解决问题。坚持把每段程序查完,坚持把每个功能测试完,那么这门课程无论做出了什么成果,都至少收获了一种可贵的精神。
 
 
基于FPGA的点阵板波形显示器           学号 61009212           姓名 邵小强
?    课程设计体会
1.    全面掌握从设计到编程实现、到纠错、到下载调试的全过程。我后来实际做出的系统虽然不如我刚开始想做的频谱分析仪的效果,但是其实本质上也就只是少做了一个FFT模块,只要攻破FFT算法,就可以很轻易地在数字处理模块加进去,从而实现。所以我还是通过这样一次设计体会到了工程上做出一个系统的全过程的。这让我提前体会到了一些工程意识,培养了一些工程素质。
2.    养成按模块划分系统,逐步完成、逐步整合的良好习惯。不仅仅做数字系统如此,做任何一个大型任务都是要分模块、分步骤地依次进行,才能显得井井有条。在刚做数字系统时,一点经验都没有,总着急没有进展。可到后来就觉得把自己心中所设想的东西在眼前通过画电路、搭电路调试出来,是非常有成就感的事情。这是数字系统设计这门课程最后给我非常好的印象。
3.    学会一门语言。其实在学会C++后,我发现学任何编程语言都有触类旁通之效,比如Java, Matlab语言, VHDL等,其实我真正学它们都只是先看个总体描述,然后就可以直接拿一本参考手册开始编程了。通过一次次的编译、纠错,自然掌握了不少语法,更是掌握了不靠死记就能很快上手一门编程语言的能力。通过实现对几个完整程序构架从头到尾理解一遍、通过对参考书的参考、对程序报错信息的搜索、理解等手段,基本可以最快速最有效地学习一门新语言。这在我今后的生活甚至工作中我相信都是非常有用的。
4.    排错的能力。其实我这次编写的程序不是很难,仿真也基本能通过。每个独立模块,我都已经单独试验过,没有问题。但是后来在整合每个模块、实际搭上所有电路后,点阵偶尔会出现一些莫名其妙地移位或全排点亮的错误,这就要求我们要合理排查错误。我所做的办法是按模块检查,由于是数字信号,我把一些关键部分(如ADC转出的数据端)接上了LED灯,通过灯的显示来判断哪几个模块工作正常、哪几个工作不正常。通过分析、重试,很快排查了问题。
 
 
基于FPGA的坦克游戏          学号:61009224          姓名:李柄汝
?    课程设计体会
这次课程设计从一开始的立项到最后的验收,历时一学期,从前期准备到后期的通宵设计每一个环境我都收获良多。
在前三周的理论课教学中,胡老师和黄老师力图把系统的概念传输给我们,让我们学会从整体上理解现代设计中的先进理念。一开始我以为这门课程就是上学期数字电路的简单延伸,但是经历前三周的理论课教学让我了解到虽然名称是数字系统,但是设计思路和方法都不是数字电路课程的简单延伸。首先是方法上,我不需要再用译码器等硬件来实现状态的转换,只需要用vhdl的语言编程就可以实现以前用一大堆电路才可以实现的状态转换。其次是通过老师简单的语言教学,我对于设计数字电路有了新的认识,利用编程也可以控制硬件电路。
在随后的立项中我一开始想法是声控搜索,但是在跟黄老师的交流中发现这个太依赖于外设电路而且比较困难,所以放弃改为了游戏设计。从清明节放假开始我算是正式开始了数字系统的设计,这个过程完全依靠自己学习自己摸索。先是从了解点阵板开始,进而开始对整个设计进行整体规划,而老师一直试图灌输给我们的层次化设计也在这一过程体现。
在设计过程中遇到了很多困难,首先是点阵板,一开始不知道怎么控制两个十六位的输入的点阵板,通过不断的翻书才渐渐学会先用四位矢量再译码的方式控制。另外在设计调试的过程中,一开始是仿真全部正确可是搭起实物电路什么也不显示,这是个很让人受挫的事情,可任务就在面前不得不坚持下来,通过不断地对程序修改对硬件电路检查,终于有一部分电路实现。而这也给困境中的我以很大动力。
不得不说,这次设计虽然学到很多,但还是有一个很大的遗憾,就是一项重要功能没有实现,虽然自己想方设法进行查证但是由于使能模块的复杂时序性,这一功能还是不够稳定或者说没有实现。为了解决这一问题,我放弃了坚持一个月的设计思路,在验收前一晚上临时改变,将所有程序推到重来,通宵重新编写了用矩阵方式做的设计(这一版本的设计附在附件里),显然一个月的调试没有解决的问题不大可能通过一晚上的整体改变而解决,这一版本同样问题出在了子弹模块上。直到最后也没有解决这一问题。
总体来说,在这一课程的学习中最大体会就是坚持,一个小问题就可能让你通宵几天来解决,而如果意志不够的话很容易失望甚至绝望,只有不断地坚持,告诉自己忍一下再调试才有可能解决这一问题。另外从设计本身来说的话我觉得我最大收获是学习了一门新的语言,它跟高级语言不一样,面对的是实际电路,不仅需要考虑算法还需要考虑实际实现的可能性,另一个收获就是将一个理念牢牢记在心中,层次化模块化设计,在利用模块间的信号协议来实现整体系统的功能。
 
汽车租赁系统             61009332   杨康
3)    课程设计体会
这次的课程设计于我来说最大的收获不是更加了解一门语言,更加重要的是在从构思模块框架到独立完成每个模块的语言编写,再到模拟仿真,以及最后的调试过程中我懂得了如何克服恐惧并坚持,朝着自己的目标前进,而不是畏缩不前。我的设计是从第九周开始的,比计划稍微落后了些,最初的编写阶段,由于对VHDL语言相当的陌生,中间纠结了很长一段时间,后来慢慢熟悉了VHDL的特点,看了很多设计的例子,才找到了对这门语言的感觉,随后的编写过程虽没有起初阶段的难熬,但也不轻松。因为VHDL和以往我学过的语言有着本质的区别,它的逻辑执行顺序不是单调的自上而下的,并序,顺序结合,这在一定程度上给我的编写带来了难度,随之产生了对这门课程设计的恐惧,逐渐产生了消极的情绪。
好在我有几个志同道合的朋友一起奋斗在编程的路上,相互探讨探讨,问题也就不再是问题了。
最初遇到的问题现在想来确实很难算是一个问题,譬如当时还为一个进程里设置了两个时钟的上升沿仿真总是出错而懊恼不已,很多当时看似无从下手的逻辑功能现在也觉得非常容易实现,只是需要花写时间把脑袋里的雏形转变为更加具体,缜密的语言框架。
整个过程除去在语言的理解上花了很多的精力外,还让我犹豫了很久的是整个模块框架的构建。最初我想简单的设置三个模块:键盘输出、主控制以及输出译码模块。但在编写主程序的时候发现中间需要考虑的问题很多,逻辑也比较混乱,这无疑增加了出错的可能性。因此我放弃的这种模块框架。随后在修修改改近一个礼拜以后,我最终确定了最后的模块框架,事实也证明了一个好的模块框架的建立对整个编写及调试过程有着非常重要的意义。也验证了那句:好的开头等于成功的一半。
总上所述,我想说的是,较好的完成一件事,技能是可以在完成的过程中学习的,并不是最重要的,想比较而言,良好的心态以及坚持,不放弃的意志力则更为重要。感谢这次的课程设计带给我的这些感悟。