您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > FPGA课程设计报告
FPGA课程设计报告学部:信息科学与技术学部专业:通信工程班级:10级1班学号:100103011125姓名:万洁指导老师:祝宏合作伙伴:张紫君2012.12.13一.《任务书》:实验一100进制的可逆计数器(11——12周)实验二交通灯控制系统(15周)实验三多功能数字钟系统(14-15周)二.实验书写格式:一:题目要求二:程序代码三:操作步骤及运行结果截图四:心得体会三.实验附录:一:老师提供的资源二:关于实验所用EP4CE115F29板的简介实验一100进制的可逆计数器一、设计一个可控的100进制可逆计数器,要求用实验箱下载。(1)计数器的时钟输入信号周期为200ns。(2)以十进制形式显示。(3)有一个复位端clr和两个控制端plus和minus,在这些控制信号的作用下,计数器具有复位、增或减计数、暂停功能。clrplusminus功能0××复位为0110递增计数101递减计数111暂停计数二、程序如下:modulekeni100(CLR,CLK,PLUS,MINUS,OUT);//100进制的可逆计数器inputCLR,PLUS,MINUS,CLK;output[7:0]OUT;reg[7:0]OUT;always@(posedgeCLK)beginif(!CLR)//如果CLR为零,输出为零;反之,运行else程序OUT[7:0]=0;elsebeginif(PLUS==0&&MINUS==1)//100进制的递减计数beginif(OUT[3:0]==0)beginOUT[3:0]=9;if(OUT[7:4]==0)OUT[7:4]=9;elseOUT[7:4]=OUT[7:4]-1;endelseOUT[3:0]=OUT[3:0]-1;endif(PLUS==1&&MINUS==0)//100进制的递增计数beginif(OUT[3:0]==9)beginOUT[3:0]=0;if(OUT[7:4]==9)OUT[7:4]=0;elseOUT[7:4]=OUT[7:4]+1;endelseOUT[3:0]=OUT[3:0]+1;endif(PLUS==1&&MINUS==1)OUT=OUT;//若PLUS和MINUS都为1,暂停计数if(PLUS==0&&MINUS==0)OUT=0;//若都为零,输出为零endendendmodule三、运行程序1、在quartersII9.1输入程序打开quartersII界面,点击file→New,在出现的对话框,如图1.1所示,选择TextFile,点击OK.——图1.1在出现的输入界面内输入程序,点击file→saveas,在出现的对话框中点击Yes,然后在出现的newprojectWizard对话框中点击next,在Family&DeviceSettings对话框中选择如下图1.2所示的选项,在选择第三方软件的对话框中的选项选为none后点击next,在随后出现的对话框中,点击finish。设置完成。——图1.22、点击project→SetasTop-LevelEntity,指向所输入的文件。3、点击Processing→Start→StartAnalysis&Synthesis。——图1.34、点击File→New出现上面第一步时出现的对话框,如图1.1,选择VectorWaveformFile。5、点击View→UtilityWindows→NodeFinder,在出现的对话框中点击List,如下图1.4所示——图1.4选择所需要的节点,将其拉到后面的Name栏中,并设置输入数据6、选择EndTime:点击Edit→EndTime,设置参数,如下图1.5所示——图1.57、输入参数的数据设置完成后,保存,仿真图形如下图1.6所示:——图1.68.点击Assigment→Settings,在出现的对话框(如图1.7所示)中,选择SimulatorSettings,在Simulationmode中选择Functional,进行功能编译。——图1.78、点击Processing→GenerateFunctionalSimulationNetlist9、点击Processing→StartSimulation,进行仿真。四、仿真结果:——图1.8如上图1.8所示,当CLR为0时,OUT清零;当CLR为1时,OUT开始输出,当PLUS=1,MINUS=0时,OUT开始递加;——图1.9如图1.9所示,当PLUS=1,MINUS=1时,OUT暂停计数;当PLUS=0,MINUS=1时,OUT开始递减。五、封装在quartusII11.0中点击file→openproject,在弹出的对话框中选择counter100文件,单击右键选择CreatSymbolFileforCurrentFile——图1.10上图1.10为counter100的封装图,在quartus中打开此图,双击,将会看到counter100的程序.六、试验箱下载将编好的程序应用于硬件上进行验证,所用的电路板子是:EP4CE115F29C7外观如下图1.11所示:——图1.111.安装硬件在安装向导中选择如下图1.12所示的安装路径,点击确定。——图1.122、硬件安装完毕后,在quartus11.0中封装图连接,如下图图1.13——图1.13封装模块div和decode4_7是辅助模块,div是分频模块,decode4_7是译码部分。(相关程序在报告后面的附件)3、图形连接完毕后,单击File→Saveas,确定,修改设置,如下图图1.14所示:——图1.144、单击Processing→StartCompilation,进行编译,没有错误后进行下一步。编译结果如下图1.15所示。——图1.155、单击Tools→Programmer,在弹出的对话框中,单击Hardware弹出一个对话框,选择USB-Blaster[USB-0],如下图1.16所示6、点击Start,开始运行。——图1.16七、硬件部分照片截图——图1.17如图1.17所示Clk(sw[3])与Clr(sw[0])置为1时,将Plus(sw[1])置为1,Minus(sw[2])置为0,开始从0递增,图为到99时,将Plus与Minus都置为1,暂停计数为99;——图1.18如图1.18,1.19所示,下一时刻,数码管显示为0,重新开始递增计数;——图.1.19将Plus(sw[1])置为0,Minus(sw[2])置为1,开始从99递减计数。八.实验总结:此次实验,花费的时间有些长,主要是因为代码的编写方面以及封装及连接图方面的不太的熟练,在他人的指导及自己的反复操作练习下,终于完整的完成了第一个实验,很开心。这次实验,我收获的是对FPGA软件的运用和熟练,也收获了代码编写的积累与熟悉,充分感受到了代码与软件运用,与硬件器件所展现的知识与实践的相统一,体味到了实验的趣味性。实验二交通灯控制系统一、交通灯控制系统,要求用实验箱下载。(1)设计一个十字路口交通信号灯的定时控制电路。要求红、绿灯按一定的规律亮和灭,绿灯亮时,表示该车道允许通行;红灯亮时,该车道禁止通行。并在亮灯期间进行倒计时,并将运行时间用数码管显示出来。(2)要求主干道每次通行时间为40秒,支干道每次通行时间为30秒。每次变换运行车道前绿灯闪烁,持续时间为5秒。即车道要由主干道转换为支干道时,主干道在通行时间只剩5秒钟时,绿灯闪烁5秒显示,支干道仍为红灯,以便主干道上已过停车线的车继续通行,未过停车线的车停止通行。同理,当车道由支干道转换为主干道时,支干道绿灯闪烁显示5秒钟,主干道仍为红灯。(3)定时器要求采用递减计时方式进行计时。两个定时时间:绿灯闪烁和绿灯停止闪烁4个状态:S0:主干道绿灯亮,支干道红灯亮。S1:主干道绿灯闪烁,支干道红灯亮。S2:支干道绿灯亮,主干道红灯亮。S3:支干道绿灯闪烁,主干道红灯亮。二.程序如下:moduletraffic00(clk,en,lampar,fag,lampbr,fbg,numa,numb);inputclk,en;output[7:0]numa,numb;reg[7:0]numa,numb;//计时显示outputfag,fbg,lampar,lampbr;//fag:flashagreenreglampar,lampag,lampbr,lampbg;//表示主路?路共四个灯regtempa,tempb;//装入计数reg[2:0]counta,countb;//灯亮的顺序reg[7:0]ared,agreen,bred,bgreen;always@(en)if(!en)begin//设置各种灯的预置数ared=8'b00110000;agreen=8'b01000000;bred=8'b01000000;bgreen=8'b00110000;endalways@(posedgeclk)beginif(en)beginif(!tempa)begintempa=1;case(counta)//控制灯亮的顺序0:beginnuma=agreen;lampag=1;lampar=0;counta=1;end1:beginnuma=ared;lampag=0;lampar=1;counta=0;enddefault:lampar=1;endcaseendelsebegin//倒计时if(numa8'b00000001)beginif(numa[3:0]==0)beginnuma[3:0]=4'b1001;numa[7:4]=numa[7:4]-1;endelsenuma[3:0]=numa[3:0]-1;endif(numa==8'b0000010)tempa=0;endendelsebeginlampar=1;lampag=0;counta=0;tempa=0;endEnd三.运行程序步骤与实验一的步骤基本相同,可参照实验一的步骤。四、仿真结果截图——图2.1从上图2.1可以看出,在前35秒,主干道绿灯亮,次干道红灯亮;在最后5秒,主干道绿灯闪烁,次干道红灯亮;下一时刻,开始30进制的递减。——图2.2如图2.2所示,在前25秒,次干道绿灯亮,主干道红灯亮;在最后5秒,次干道绿灯闪烁,主干道红灯亮;下一时刻,开始40进制的递减五、封装在quartusII11.0中点击file→openproject,在弹出的对话框中选择traffic00文件,单击右键选择CreatSymbolFileforCurrentFile封装图如下2.3所示。traffic00的封装图——图2.3六、试验箱下载所用的硬件与实验一是同一个板子,步骤可参考实验一的步骤。封装图连接如下图2.4所示:——图2.4七、硬件部分照片截图——图2.5当将en(sw[17])和ncR(sw[16])均置为1时,如图2.5所示,开始40进制的递减计数,主干道绿灯亮,次干道红灯亮。为零后,开始30进制递减计数,如下图2.6所示此时开始30进制递减计数,主干道红灯亮,次干道绿灯亮;——图2.6——图2.7如图2.7所示,最后五秒绿灯闪烁,为零后,开始40进制递减计数。八:实验总结:此次实验,花费了较长时间在最后的编译上,因为中途出现了很多问题,出现了PC板上,数码管不亮,灯亮,以及数码管显示错误,或是灯显示不亮等问题,以致于在代码上做了几次的改写,但最后还是终于完成了。总是在把文件置顶,修改硬件参数,封装,连接图上出现一些小错误。记得最后一次出现的错误竟然是忘了封装管脚,以至于每次都编译运行无错误,可总是下载失败。在同学的指点下,发现错误,改正后,终于运行成功。可见,在实验上需要一定的细心与耐心,在每一步中都要一丝不苟的完成好。实验三多功能数字钟系统一、多功能数字钟系统(层次化设计),要求用实验箱下载。(1)基本功能:60秒—60分—24小时。(2)扩展功能:①报时;每小时59分51,53,55
本文标题:FPGA课程设计报告
链接地址:https://www.777doc.com/doc-6502636 .html