您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 述职报告 > FPGA入门系列实验教程――数码管动态显示
艾米电子工作室FPGA入门系列实验教程FPGA入门系列实验教程V1.0前言目前市场销售FPGA开发板的厂商很多,但大多只提供些简单的代码,没有详尽的文档和教程提供给初学者。经验表明,很多学生在学习FPGA设计技术的过程中,虽然刚开始学习热情很高,但真正坚持下来一直到“学会”的却寥寥无几,除了学生个人毅力的因素外,另外一个更主要的原因就是所选的开发板缺少配套的说明文档和手把手系列的入门教程。原本FPGA的学习门槛相对于单片机来说就高了不少,再加上缺少手把手系列教程资料,这就给初学者学习FPGA增添了更多的困难,很多初学者因为找不到入门的方法而渐渐失去了学习FPGA的兴趣和信心。作者从接著到系统学习FPGA有两年多的时间了,学习FPGA的时间不长,期间因为没有专业的老师指导,自己摸索学习FPGA走了很多的弯路。有过问题迎刃而解的快乐,也有过苦苦寻求结果和答案的痛苦历程,回想起自己学习FPGA的历程,从开始的茫然,到后来的疯狂看书,购买开发板,在开发板上练习各种FPGA实例,到最后能独立完成项目,一路走来,感受颇多。发觉学习FPGA只要选择正确的方法是有捷径可走的,有很多人学习FPGA很长时间,因为没有找到正确的方法还是停留在入门阶段。针对现状,作者从初学者的角度出发,结合作者学习FPGA的经验和亲身体会,遵循“宁可啰嗦一点,也不放过细节”的原则编写了详尽的实验教程作为艾米电子工作室开发套件的配套教程使用,主要面向FPGA初学者。FPGA的学习只有通过大量的操作与实践才能很好并快速的掌握。为此本实验教程从点亮LED灯写起,深入浅出,以图文并茂的方式由易到难地列举了很多实例,采用手把手、StepbyStep的方式让初学者以最快的方式掌握FPGA技术的开发流程以及QuartusII软件的使用,从而激起初学者学习FPGA的兴趣。在教程中作者采用“授人以渔”的方式,努力做到不仅讲述怎样进行试验,而且分析为什么这样做,以便初学者深刻理解并快速掌握FPGA的学习方法。本实验教程的所有实例均在艾米电子工作室开发套件上验证通过,本教程虽然简单但编写也花费了作者大量的时间和精力,对于转载需要注明出处:(艾米电子工作室作者:静水流深),并未经艾米电子工作室同意不得用于其他商业用途。FPGA技术是不断发展变化的,要掌握FPGA技术的精髓,需要设计者在实践中不懈地摸索与积累,逐步提高自己的设计水平,本实验教程试图对初学者起到快速入门的作用。但由于作者学习FPGA时间不长,水平有限,错漏和不严谨之处在所难免,欢迎大家批评指正。并请您将阅读中发现的错误或建议发送到作者Email:zhoujie9220@163.com,以使本教程不断地完善。艾米电子工作室—让开发变得更简单入门系列实验教程——数码管动态显示1.实验任务实现开发板上8个数码管动态显示0~7。通过这个实验,掌握采用VerilogHDL语言编程实现7段数码管显示译码器以及数码管动态扫描显示的方法。2.实验环境硬件实验环境为艾米电子工作室型号EP2C8Q208C8增强版开发套件。软件实验环境为QuartusII8.1开发软件。3.实验原理由于LED静态显示需要占用较多的I/O口,且功耗较大,因此在大多数场合通常不采用静态显示,而采用动态扫描的方法来控制LED数码管的显示。动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。点亮数码管采用动态扫描显示。所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,只要扫描显示速度够快,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。动态显示的亮度比静态显示要差一些,所以在选择限流电阻时应略小于静态显示电路中的。动态扫描显示时刷新频率最好大于50HZ,即没显示一轮的时间不超过20ms,每个数码管显示时间不能太长也不能太短,时间太长会影响刷新率,导致总体显示呈现闪烁的现象,时间太短发光二极管的电流导通时间也就短,会影响总体的显示亮度。一般控制在1ms左右最佳。4.实验程序modulescan_led(clk,rst,sm_seg,sm_bit);inputclk,rst;output[7:0]sm_seg;//数码管段选择输出output[7:0]sm_bit;//数码管位选择输出reg[7:0]sm_seg;//数码管段选择输出寄存器reg[7:0]sm_bit;//数码管位选择输出寄存器艾米电子工作室—让开发变得更简单[15:0]cnt_scan;//扫描频率计数器reg[4:0]dataout_buf;always@(posedgeclkornegedgerst)beginif(!rst)begincnt_scan=0;endelsebegincnt_scan=cnt_scan+1'b1;endendalways@(cnt_scan)begincase(cnt_scan[15:13])3'b000:sm_bit=8'b1111_1110;3'b001:sm_bit=8'b1111_1101;3'b010:sm_bit=8'b1111_1011;3'b011:sm_bit=8'b1111_0111;3'b100:sm_bit=8'b1110_1111;3'b101:sm_bit=8'b1101_1111;3'b110:sm_bit=8'b1011_1111;3'b111:sm_bit=8'b0111_1111;default:sm_bit=8'b1111_1110;endcaseend艾米电子工作室—让开发变得更简单@(sm_bit)begincase(sm_bit)8'b1111_1110:dataout_buf=0;8'b1111_1101:dataout_buf=1;8'b1111_1011:dataout_buf=2;8'b1111_0111:dataout_buf=3;8'b1110_1111:dataout_buf=4;8'b1101_1111:dataout_buf=5;8'b1011_1111:dataout_buf=6;8'b0111_1111:dataout_buf=7;default:dataout_buf=8;endcaseendalways@(dataout_buf)begincase(dataout_buf)4'h0:sm_seg=8'hc0;//04'h1:sm_seg=8'hf9;//14'h2:sm_seg=8'ha4;//24'h3:sm_seg=8'hb0;//34'h4:sm_seg=8'h99;//44'h5:sm_seg=8'h92;//54'h6:sm_seg=8'h82;//64'h7:sm_seg=8'hf8;//74'h8:sm_seg=8'h80;//84'h9:sm_seg=8'h90;//94'ha:sm_seg=8'h88;//a4'hb:sm_seg=8'h83;//b4'hc:sm_seg=8'hc6;//c4'hd:sm_seg=8'ha1;//d4'he:sm_seg=8'h86;//e4'hf:sm_seg=8'h8e;//fendcaseendendmodule艾米电子工作室—让开发变得更简单实验步骤(1)建立新工程项目:打开QuartusII软件,进入集成开发环境,点击File→Newprojectwizard建立一个工程项目scan_led。(2)建立文本编辑文件:点击File→New..在该项目下新建VerilogHDL源程序文件scan_led.v,输入试验程序中的源程序代码保存后选择工具栏中的按钮启动编译,若在编译中发现错误,则找出并更正错误,直到编译成功为止。(3)选择器件型号及引脚的其他设置:选择所用的FPGA器件----EP2C8Q208C8,以及进行一些配置。选择配置器件EPCS4,设置不需要使用的IO功能为Asinputs,tri-stated。点击两次ok,回到主界面。(4)配置FPGA引脚:在QuartusII软件主页面下,选择Assignments→Pins或选择工具栏上按钮,配置rst,sm_seg,sm_bit以及clk的引脚。(5)编译工程项目:在QuartusII主页面下,选择Processing→StartCompilation或点击工具栏上的按钮启动编译,直到出现“FullCompilationReport”对话框,点击OK即可。(6)波形仿真:由于本次试验比较简单,波形仿真将在后面实验详细讲解。(7)下载设计程序.sof文件到目标FPGA,下载采用JTAG方式(由于配置芯片擦写次数有限,实验均采用JTAG下载方式)。6.实验现象开发板8个数码管动态显示0~7。大家可以试着改写程序让数码管动态显示其他任意数字。
本文标题:FPGA入门系列实验教程――数码管动态显示
链接地址:https://www.777doc.com/doc-4249501 .html