欢迎来到天天文库
浏览记录
ID:61459154
大小:408.50 KB
页数:8页
时间:2021-02-01
《cpld彩灯实验报告.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、信息科学与工程学院FPGA设计及应用实验报告专业班级通信工程1202姓名沈佳曼学号指导老师马玲实验一:彩灯实验报告一.实验目的1通过实验初步了解EDA的基本概念。2能理解用VHDL语言实现硬件设计的思路。3能熟练掌握EDA开发软件的使用。二.实验原理实验中,八个彩灯共阴接地,阳极分别为FPGA的八个I/O相连,I/O输出变化的电平来控制彩灯的点亮。三.实验现象利用light和pin1hz两个模块源程序,成功导入后看的的现象如下:(1).点阵从左至右按次序渐亮,全亮后逆次序熄灭;(2).从中间到两边对称的渐亮,全亮后仍由中间向两边逐次渐灭;(3).奇偶位
2、循环点亮;(4).从新开始,依次循环。四.实验中遇到的问题及解决方法这是第一次实验,前面的内容与之前学习的大同小异,但是在利用两个模块源程序生成元器件,画完原理图并成功编译后,还需要导入机箱中。遇到的问题有:1).在对子项目进行管脚绑定时,可供选择的管脚只有两个,clkin和LED,没有LED的八个灯,经检查发现是之前的源程序置顶编译后生成的原理图没有置顶编译,后来解决后成功绑定管脚;(下图为成功绑定后的照片)2).JTAG模式中,addfile时,将后缀为sof的文件加入后,点击start,灯全灭后全亮,并保持这个状态,后来发现是程序中的频率设置出问
3、题,我的第二个模块源程序pin1hz中设置的频率太低导致彩灯闪烁出现问题,在同学建议下我把本来的integerrangeoto49中49改为了就很好地观察到了上述现象。五.改进内容在完成了课本上的基本内容后,老师进一步要求我们自己看懂主要程序自己来改变彩灯点亮和熄灭的方式。研究后我把第三种从中间往两边点的方式覆盖到第二种,并且将从中间向两边点改为从中间往两边熄,程序如下:elsifflag="001"thenlight(lendownto4)<=light(len-1downto4)&'0';light(len-4downto0)<='0'&light
4、(len-4downto1);iflight(1)='0'thenflag:="010";endif;elsifflag="010"thenlight(lendownto4)<=light(len-1downto4)&'1';light(len-4downto0)<='1'&light(len-4downto1);iflight(1)='1'thenflag:="011";endif;并且将频率换成了,换成了,则频率变成了5M和25M,5M对应10Hz和0.1s,25M对应5HZ和0.2s,将原有的分频放大了10倍,有同学讲其放大了100倍,但灯跑的过
5、快,我觉得还是10倍最直观。(下图为将程序导入机箱时的页面图)六.实验总结这次的花样彩灯,让我学会了使用状态机编程,清楚了状态机编程的特点,同时对于点阵的了解也更进了一步。懂得了在程序编译出错的时候要细心并耐心地改正,基本的程序问题应该尽可能的避免,并且要耐心的更正,对于程序必须要弄懂,了解每一次实验的实验原理,不然无法进行相应的程序更改,应付老师的检查并没有多大的意义,更重要的是要在每一次实验中更熟练的操作这些仪器,完善我们的实践能力。另外程序编译成功了不能忘记生成元器件,否则后面画原理图的时候又得重新生成不方便查找,并且每一步都不要忘了先置顶再编译
6、,再生成symbol,不然对后续的实验会有极大的影响。像这样的彩灯实验频率就是其程序很关键的一点,频率影响时间,模式的更改更是其中一项奇妙的设计。最后一点,在实验中一定要细心,不能因为实验现象错误就急躁,问题都是一步一步检查出来的。七.实验程序1.“light”libraryieee;useieee.std_logic_1164.all;useieee.std_logic_unsigned.all;entitylightisport(clk1:instd_logic;light:bufferstd_logic_vector(7downto0));end
7、light;architecturebehvoflightisconstantlen:integer:=7;signalbanner:std_logic:='0';signalclk,clk2:std_logic;beginclk<=(clk1andbanner)or(clk2andnotbanner);process(clk1)beginifclk1'eventandclk1='1'thenclk2<=notclk2;endif;endprocess;process(clk)variableflag:bit_vector(2downto0):="00
8、0";beginifclk'eventandclk='1'thenifflag="000"th
此文档下载收益归作者所有