简易电动窗帘 学号:61010102 姓名:倪春花
8、课程设计总结
n 预期的目标与当前实现功能的差异详细注释
① 原来打算用电脑屏幕或者用点阵板显示窗帘的具体工作状态,但是在具体编写调试过程中发现需要显示的工作状态的中间量比较多,用LED灯虽然简单,但是使窗帘的工作过程更清楚明了。
② 原来打算窗帘的速度可变,在设计过程中的确也进行了速度选择模块和总分频模块的设置,仿真也都OK,具体电路调试时,也都能够实现,可是在验收时,可能出于某些非人为原因出现了bug,导致速度可变功能没有实现。仿真正确,硬件也曾经很稳定的实现过,最后出了bug,真的觉得很遗憾。
n 可以进一步发挥提高的部分
①我觉得要具体运用到实际中的话,可能光控模式需要做一个真实的A/D转换,通过实际测定,设定最强的弱光和最弱的强光,并保证前者低于后者一定程度(容限,提高系统稳健性,防止出现光强临界处的误操作)
②显示其实可以做的更好一点,将微机课所学到的有关知识运用上来,将窗帘的状态实时显示在电脑屏上并通过计算机智能控制。
n 课程设计体会
开学伊始,就接到了数字系统课程设计的“噩耗”,开学时心情一度很急躁很担心。找灵感、立项、写项目申请书、通过答辩正式立项、上交具体方案设计……这些都是在纠结中一步步走过来的,当然这些都在第六周左右纠结结束。然后忙了两星期期中考试,以及上学期的大系统的语言验收,平时又忙理论课和模电实验。直到12周才正式开始编写程序。时间很紧,任务很重,觉得很迷茫。每天背着电脑,拖线板,书包的日子真的不好过。终于,在一个多星期的努力后,基本程序编完了,编译通过了。为此还高兴了很久!可是第二天下午再实验室八个小时调试状态机模块未果的现实让我又回到了现实,开始担心着急。接下来的一个礼拜(利用我开门的便利有了自己在实验室的固定据点)十三周周四周五的晚上,周六周日整整两天,完全泡在实验室,没有出去吃一顿饭!总算功夫不负有心人,每个模块的硬件调试都成功了(我是把每一个主要模块分别建立工程,烧进FPGA进行硬件调试的,可能这样比较繁琐,因为每一个模块要分配不同的引脚,观察不同的输入输出)。接下来的周一周二就是把所有的模块拼接起来,局部都正确不代表整合起来很容易成功,又一次把我打回了现实,内心又一次失望和着急!自己实在觉得没有错误,不知道该如何改进了,就去和同学讨论,讨论过后有了思路再修改终于对了。
回顾这次数字系统设计,真的觉得学到了很多。首先不敢说学会了VHDL语言,但是至少基本理解了VHDL语言的编程思想和程序结构,以后应该也可以看懂VHDL语言编写的代码。其次,心理上我也长大了很多。我一开始真的一直在怕,一直觉得自己不可能完成这样的任务,觉得不知道期末验收的时候该怎么过。但是其实在自己全身心投入,努力过,真的做出来一点东西后,哪怕在别人看来简单的不行,哪怕最后的实现形式没有预期的那么高端,但是我可以大声的说,这是我自己做出来的系统,每一个字符,每一串逻辑,每一个模块每一条连线每一次编译每一次改错都有我自己的努力和汗水,好久没有过这样子美好的感受了!这一次的系统设计让我明白了很多事情不是不可能,是我自以为不可能。还有我觉得当自己遇到超出自己理解范围的问题时主动地去和别人交流讨论是很有帮助的。总之,很感谢这一次课让我学到了很多!
I SEE YOU敏捷性游戏 学号:61010104 姓名:肖薇
n 课程设计体会
本次课程设计收获很多,主要有以下几点:
1、 自学了VHDL语言。虽然这门语言其实并不是很难,或者也许它很博大精深我们也只涉及了其中的一小部分。但是至少我体会了一种自学的过程,最初抱一本不感兴趣的书从头看起,毕竟是一门语言,还是有他的抽象之处的,所以凡是开始总是有些难很忧伤的。后来书上的东西并没有多少真正记住了,就开始上手quartus,先看看别人的程序,慢慢的熟悉了这门语言,在逐渐地自己编一些小东西小模块,看到编译成功,虽然都算不上成就,但也是很开心的一件事情。再后来运用一种语言成为了自己一种并不熟练地习惯,虽然还时常翻书,但总是比最初的生涩好了不知多少倍,直到现在跌跌撞撞的做出来点小玩意,这个过程和这门语言不会忘记了。
2、 不享受这个过程,但是享受回忆这个过程。这个过程当然是无比纠结的,语言不熟悉,一本书不知道翻了多少遍,这里面的语法有很多类似却不同还十分严苛的地方,看了一遍书,下次有弄混了再看一遍,不断重复。好不容易基本语法过了,可是编译还有一堆形形色色的问题,求各路大神,终于也解决的差不多了,后来搭上线,上了点,烧进去,乱七八糟什么也没出来,后来问同学问出来点阵的另一种方法,想到自己编了半天功亏一篑,就觉得眼前除了黑还是黑,再之后,重编。这是一个心酸的过程却也是一个历练的过程,想做出来什么总是要吃苦的,现在想想,没什么不好。
3、 调试的时候查错是一个极需耐心的活,一遍两遍三遍,各种问题就是出不来,每次从实验室出来都会想进展虽有但前路依旧茫茫,睡觉前都各种不爽。但是最终成功后突然觉得一切还是值得的,其实那种烦躁的心情每次都只存在与过程中,所以今后遇到时,我也更加会坚定地坚持下去的。
幼儿练琴师 学号 61010108 姓名 袁晓娇
a) 课程设计体会
这一次的数字系统课程设计,我感觉是我大二下学期众多实验课程里面的一次宝贵的体验。上学期的大系统设计,因为准备不充分,时间安排不合理等问题,最终只是把原理图设计出来了,实际程序调试成果一点都不好,这次的数字系统设计准备时间更充分,而且因为每个人都是不同的题目,所以更有挑战性。
在刚刚开始的一段时间里,首先做的是自学并熟悉硬件描述语言。尽管很多人推荐使用Verilog语言,写起来简洁方便,但我还是选择了VHDL语言。我感觉VHDL语言比verilog语言更有调理性,结构清晰,和C++语言很相似,相对简单易懂。虽然可能编程的时候比较啰嗦,但是随着后来进一步的了解两种语言,我发现VHDL的“啰嗦”还是有好处的,因为它比较严谨,很小的错都能指出来,这样就不容易出错,很多时候往往能够一遍编译仿真通过。
然后是选题,万事开头难嘛,我觉得选题这一块,我是费了很大力气的。想要做出来的东西有很好的感官效果,我基本打消了做管理系统之类的想法。这类题目比较泛滥,而且难度在状态控制方面,整体做出来的效果不是很明显。然后,要体现好的视觉效果,必须对点阵、VGA有很好的应用,而这两样应用还是比较麻烦的,如果不投入较多精力,做出的显示效果就会很粗陋,这就没有意义了。除了视觉,还可以从听觉方面着手。我想到利用FPGA的硬件条件做一个电子琴。硬件方面没有太多要求,只要一个扬声器就可以了,这样我就可以把重点放到编写代码上。查找了很多书籍资料,发现电子琴这类的资料还是挺多的。但如果仅仅做一个普通的电子琴,则显得简单而没有新意了。查找的资料中电子琴只有播放和弹奏两种基本功能,我就想在这基础上再增加一些功能,做一个针对幼儿练习的电子琴陪练系统,加上密码锁,录音、时间管理、练习比对等功能,使电子琴更加智能,更加人性化,这是我设计的亮点所在。由此,项目题目就确定为“幼儿练琴师”。
基础部分进行较顺利,在中期检查时已经完成弹奏和播放音乐的功能。完成后面部分,显然要比前面部分费力的多。录音需要用到RAM, 以前从没用过,需要自己一步步摸索着学习去用。在编写VHDL代码方面,我最大的体会就是基础必须扎实,对常用语句的用法特性要足够熟悉。很多时候,自己认为逻辑完全没有错,可是仿真出来结果就是不正确,原因就是不够细致严谨,程序中常常存在细微的漏洞,容易使程序陷入死循环。比如说,在VHDL中常用的信号定义与变量定义是我最常出错的地方。信号总是在进程结束后才赋值的,所以在进程中间信号是一个不确定值或上一次进程结束时的值,而变量是在进程中间立即赋值的,但有效范围只在进程之内。我一开始不注意这些细小差别,结果出现了很多差错。
到了调试部分,因为模块较多,状态机涉及输入输出变量较复杂,所以调试过程并不是一帆风顺,有时候一个模块里面的信号变量处理不好,便会影响状态的跳变,就像上面说的,使状态机陷入死循环。经过不断调试,不断检查错误,终于能够排除各种问题,基本实现了预期功能。
经历了完整的设计调试过程,我感觉我的收获还是挺多的。只要认真对待,就一定能够得到有价值的体验,这是最值得高兴的。
下台阶小游戏学号:61010112姓名:郭爱文
n 课程设计体会
这次的课程设计较上学期的有了很大的提升,不仅是相关知识应用方面的提升(从图形设计到语言设计),也是个人创造力的体现(自拟课题、自主创新)。这对刚接触VHDL语言的我来说是一个挑战,也是一个很好地锻炼机会。
VHDL语言其实较之其他的软件语言还是比较易于理解的,只是在语言编排的规范上要十分小心注意。由于VHDL语言的逻辑性相当重要,对语法的编译能否成功尚在其次,更重要的是烧入FPGA后的功能实现,很容易出现编译仿真大体正确却无法实现的问题。
我选择的是小游戏的设计,关键点在于点阵板的应用。方案设计时我认为点阵板多看看就能很好理解,只需注意小游戏内部逻辑关联即可。但实际上花费时间更多,纠结更久的是在点阵板的显示上。基本接线的注意点,扫面信号的合理选择,矩阵的运用等等都是需要好好研究的方面。只有充分的理解点阵板的工作机制,才能灵活的运用好它的显示功能达到相关的实验效果。
这一次的实验,对我数字系统硬件设计能力有着很明显的帮助。我也明白了只有多实践,多参与大型系统的设计才能刚好的了解到自己的不足以及更快更有效地提高自己的相关能力。在做系统设计时,也需要本着对自己负责任的态度,踏踏实实,一步一步的搭建程序系统结构,才能最终实现预期目标。
猜数字游戏 学号61010119 姓名卢旭
n 课程设计体会
回头看本次数字系统课程设计,我觉得我设计的比较好的是以下两方面,
1.状态机的编程。由于是用语言写,比起用原理图来搭电路实现状态的顺序和非顺序跳转要方便很多。因此我坚定地使用type语句定义了含十几个状态的状态变量表,看似比较多,但实际上为我的编程带来了极大的方便,因为我只需要写清楚在哪个状态下对哪些信号和变量赋什么值、满足什么条件时跳转到哪一个状态就可以了。为了正确简明地实现状态跳转以及当前状态下赋值,我把这两块写在了两个进程中,让他们能同时进行。另外结构体中我用shared variable类型代替了signal类型,避免信号赋值的延时可能带来的错误。
2.总线思想的使用。一开始设计的时候我发现需要用到14个数码管,2个用来倒计时,4个用来输入数字,4个用来给出提示,四个用来显示答案。这样十分浪费资源,而且必须使用三个个实验箱。后来在学习微机接口原理课程中了解到了总线的思想,我就想到将总线技术用到我的设计中。我选择使用6个数码管,分为AB两组,A组2个,用来显示倒计时B组4个用来输入数字,显示提示和显示答案。将控制机与每组数码管之间分别通过一条总线相连,由控制机发出总线控制信号来控制总线的使用权(详细参见程序清单中相应代码的注释)。这样节省了数码管以及芯片的管脚,而且让我更深一层地体会了总线接口技术的作用。
整个设计过程如下:
学期刚刚开始,数字系统课程设计这门课便引起了我的兴趣。这是我第一次独立地设计出一整套数字系统。虽然设计的很是简单,但还是给我很深的体会。
从刚开始定下题目开始,我便开始着手准备起来,我到图书馆查看了许多书,主要是想宏观地把握设计一个数字系统的步骤和方法。经过第五周整整一周的准备,我对我的题目基本上有了清晰地思路。我的项目最核心的部分在于比较输入的数与答案,我想到了写一个RAM对所有数据进行随机存取。这个方案有了初步眉目后,我先从外围电路开始下手。第七周我顺利地写出了键盘电路以及倒计时电路,并在实验室实际电路上通过。由于之后要期中考试,我便暂时停下了我的设计。第九周期中考试一结束我便重拾任务,当我要编程时我重新审视了我的项目。我发现用RAM实在是小题大做,而且对于RAM时序上的控制也难以准确把握。因此我果断的放弃了RAM,改用简单的赋值。此时我又遇到了新的问题。我一开始的计划中要用到12个数码管,我发现这不合理。好在接下来的微机接口原理课程中学到了总线接口技术,我便将总线技术用到了我的设计中。
一开始我对VHDL语言不甚了解,当时我总是用C语言风格的思想来考虑VHDL编程,于是遇到了不少算法上的矛盾。后来静下心来翻阅了黄正瑾老师编的《计算机结构与逻辑设计》一书附录中的VHDL简明教程以及一些EDA设计实例,我才对VHDL的思想渐渐有了了解。从数据类型、基本运算符、到时序电路、状态机设计,我将从书本中学到的应用到具体代码的设计中。
这次为期一个学期的数字系统设计的实践,让我经历了一个项目从申请到实施、中途经历的学习、解决问题、等等诸多环节,我感觉我解决实际问题的能力得到了训练。总而言之,这次的设计过程让我受益匪浅。
模拟智能扫地机的设计学号:61010122姓名:吴细老
n 课程设计体会
这次数字系统的用VHDL语言设计因工作量较以前的小系统以及大系统的设计难度都大得多,故在将近半个学期的设计中,自己的体会非常深。
在刚拿到题目时,不能像设计大系统样立即就有思路,一开始想到的只有先将键盘上的16个键的信号给“译”出来,这样就能分别实现接下来的功能。在第一个星期,每天用一点琐碎的时间设计每一个小模块程序,几乎每个小模块程序的每个细节都需要认真考虑,不然会影响整个电路程序的结果。因智能扫地机需要实现的功能太多,故需要经常对几个信号输入和输出进行画状态机分析用什么程序代码实现。在考虑某几个信号作用效果时,时常能分析到功能相同的信号类似的代码。对于比较小的模块用波形比较容易分析结果,而对于扫描键盘最好是亲自到实验室将接线调试出来。其实在做该数字系统中,得到一个教训就是每做完一个模块都应该尽量用软件波形仿真测试,而不是到实验室全部烧制完后测试,那样的话,一旦有点小错误是需要查很久才能查到错误和不足的,所以得先用波形仿真再电路调试,来达到时间效率最大化。通过这次设计,自己对常用的集成块的功能用法已非常熟练。
另外一点就是心理上的,做VHDL程序设计特别是比较大的程序,必须沉着冷静,不然容易范粗心大意的错误,再找错误就可能重新调理思路会浪费很多时间。
就这次VHDL设计智能扫地机的程序设计,我觉得这是我数电设计水平发生质的飞跃,让自己无论碰到多难的电路设计都能游刃有余,心里非常有底。
无敌防空兵 学号61010218 姓名姚顺
n 课程设计体会
这算是大学里的第三次课程设计,但与前两次十分不一样,前两次都是老师定的题目,自己没有选择性,这一次我们基本上是实现了完全的独立自主吧!所以收获颇大。
从最初的第一次课程辅导,我就知道这条路上必将充满“艰辛”,首先自己在开始时候对这门语言一窍不通,一切都是从零开始,而且是完全的自学,我很喜欢这样的感觉,我觉得大学就要这样,自由的学习,找自己感兴趣的去做,这样才有动力,看了学长的许多优秀作品后,真的压力山大啊!再过选题这一关时就遇到了许多困难,说实话老师把关真的蛮严的哦!要么太简单要么太难,关键是还不能重复,的那个是算是绞尽脑汁吧!不过,不后悔,因为选题真的很重要,这直接关系到我们这一学的课程设计的各个方面,我也觉得自己选题还行,至少是一个自己蛮喜欢的游戏!
通过这次课程实践爱你,我收获最大的就是初步掌握了VHDL这门新的语言吧!而且是完全的自学,蛮有成就感的,呵呵!刚开始觉得做这样一个系统几乎是不可能的,但在看过一些指导书后,有了些眉目,顿时觉得豁然开朗,其实到最后我们整个程序中用的也就是那么几个语句,很多时候关键的往往就那么几个,抓住重点真的很重要 啊!这也算一种收获吧!
在整个设计过程中最烦的就是调试了,程序编好了,仿真什么的都没有问题,但到实物电路中就是问题频出,很让人头疼,特别是在最后的几天时间赶得特别紧,以后一定要吸取教训不能再纵容自己拖沓的性格了!
从完全不了解这么语言,完全不知道点阵板,到最后勉强完成任务,我总结了以下收获:
1、 无论什么事,只要花了功夫去做,我们都可以做成,不放弃不抛弃
2、 永远不能拖沓,永远记住“早起的鸟儿有虫吃”,早准备吃准备,最终都是要过那一关的,不要把所有的事都压到最后
3、 善于向他人请教,老师同学都是很好的资源
打砖块之双人对战 61010220 李少冉
n 课程设计体会
我用Verilog,学习的很快,原来的计算器1天就搞定。最后的大系统拖到最后是由于思路的错误。一开始总是想着置数读数,就用了RAM。RAM带来的时钟麻烦让我头昏脑乱,非常难处理。就因为处理RAM搞了一个月,最后实在没办法改用数组。不过这次大的思想转变让我牢牢的记住了2种方案的特点
两个方式的编译结果:
RAM法:
数组法:
可以看到RAM方法是用逻辑门少,编译速度较快。但是外部模块多,更大的问题是时钟非常难处理,尤其是本项目需要不停的读数据,写数据,还有点阵的扫描。这也是我最后改为数组的原因。
由于本项目是4色(无色,红色,绿色,橙色)显示,需要数组十分庞大,为512位一维数组。所以每次编译耗时是RAM法的5倍甚至更多。有时候编译20分钟在Fitter时提示错误,实在是浪费时间。除此,数组消耗逻辑门,导致许多状态无法加入,这是一个硬伤。
从编译报告看,FPGA中的存储部分非常多,但逻辑门元件是十分宝贵的。
本次系统设计让我更加清楚了数字系统的特点。虽然最后效果不甚理想,但是自己也付出了许多。我明白以后做一件事要事先想清楚再开始干。就好比我那1个月的RAM调试,白白浪费时间。还有一点,这次数字系统设计我全部自己设计,自己编写。我的参考资料只有一本书里的几页纸。许多人说网上的代码多得是,CSDN是一个“神奇”的地方。我觉得本课程就是让大家学习语言设计的,直接“拿来主义”与课程的目的相悖。这个课拿别人的东西验收糊弄老师非常之简单,也有许多人这么做。虽然这样很省事儿,但是我不想,我不甘心就这么否定自己。我坚信自己能做出来。从某一方面说就是坚持,不抛弃,不放弃。坦白的说,数字系统设计,我问心无愧。
基于FPGA的偷地盘游戏61010221 黄尔平
1.1. 课程体会
由于经历过之前短学期的MFC程序设计,这对于这次的课题设计经有一定程度上的了解和帮助。但是,毕竟C++这种高级语言与verilog这种硬件语言是有所不同的,所以由于一开始还在用C++的思维去考虑问题,所以也在一定程度增加了遇到的麻烦。导致系统占用较多的资源。
通过这次课程设计,我对硬件设计语言verilog有好的掌握,同时对较复杂系统的设计有了更全面和系统的认识。回顾整个设计过程,我深刻体会到编程其实并不困难,真正难的是调试功能,就我本人的设计来说,整个程序从设计到编写,只花了不到两个星期的时间,而调试、修改程序却花了整整四个星期!虽然过程比较艰难,中间遇到了各种难题和错误,但很欣慰的是,所有这些障碍最终都一一被跨越,最后看着自己花了那么大力气做好的系统能够正常运行,真的感觉很开心。相信这次课程设计,会对我们的数字电路技术的学习和掌握大有裨益。
学号:61010321 姓名:张鹿
课程设计体会
本次花了一学期的时间做一份数字系统,虽然投入了相当多的时间与精力,但我觉得这些都是值得的,上学期学数字电路时,即使做了实验,依然觉得它停留在理论层面上还是多一些,并没有完整的感受到它的实用性。这学期,通过自己独立系统地设计一个系统,我真正地感受到了数字系统带给我的乐趣。从一开始艰难地立题到后来为了这个系统在实验室通宵,从硬件的设计到软件编写到最后在实验室反复地调试,我深深感受到了数字系统设计的乐趣。最后由于软硬件两方面的原因,以及我没有听进去指导老师给我的意见,最终系统最初设想功能未完全实现,但通过这次设计,我深入了解了系统设计的科学过程,学会了一门语言,并在硬件调试中学到了宝贵的电子线路实践经验,我觉得这些都是弥足珍贵的。谢谢老师这学期给我的指导,相信有了这学期的磨练,接下来的电子设计之旅我会走得更好。
基于FPGA的小型超声波定位系统 61010323 夏厚燃
n 课程设计体会
数字系统设计这门课是十分有趣的!
在学期初老师对这门课进行介绍后就开始想自己要做什么。首先就告诉自己,要做实用的东西。因此把许多看起来很有趣但实际应用价值不大的课题排除了。
通过不断搜集资料进行筛选,决定做这一个超声波定位系统,最初只是认为这个课题可能会比较难,但是没想到在后期实际进行起来是那么的困难。
第一,模电部分想得太简单了。最初一位只要设计好电路,并且焊接好就不会有太大的问题。但是现实却给我上了残酷的一课,自己拿着焊接好的超声波发射和接收电路,却不知道该如何调试。正常情况下应该是发射模块发射一组超声波脉冲信号,接收模块接收到信号后则输入一个低电平给FPGA。但是当进行硬件检测时,发现无论如何都得不到一个稳定的低电平,要么一直是高,要么就是在示波器上检测到为知信号。花了几天的时间来进行硬件调试,却没有任何有效进展。只能不甘的放弃,这种感觉真的很难受。
第二,因为受到硬件部分的影响,软件部分的调试则只能进行分模块进行调试。其中的痛苦更是许多,仿真和实际烧程序进行测试是有很大差距的,要么是测了半天发现板子是坏的,要么是发现整个定位算法纯在逻辑错误,一切都要重新开始。因为是分模块测试,所以当所有模块组合在一起后,难以进行有效测试。最担心的同步时钟问题虽然用了自认十分可行的方法,但是无法最总检验。
第三,时间过于紧张。整个课程设计,是前松后紧的,对时间的安排十分不合理。越是临近验收整个人越是紧张,为了赶进度一次又一次的通宵调试电路,修改程序,整天整天的蹲在实验室里。这是十分不科学的,在以后的课程学习和工作中绝对不能这样,一定要按照一定的计划来工作。
在学习过程中,老师提供的帮助对我的帮助也是很大的,对于一些困惑自己数日的问题,经过老师的点播,换一种思维,问题总是能够迎刃而解。刚开始自己还是比较木讷,好多问题埋头自己研究而不主动去问,现在想想真是不应该。
回头看看这学期的课程设计,虽然很累很辛苦,但自己内心是十分快乐的。看着自己用了那么多时间做出的成果,虽然有很多不足的地方,内心的成就之感是高的。而我的超声波定位系统并不会随着课程的结束而结束,我会继续研究下去,除了用FPGA以外试着用单片机来进行系统的开发,来弥补FPGA在复杂函数处理方面的不足。