• 工作总结
  • 工作计划
  • 心得体会
  • 述职报告
  • 思想汇报
  • 发言讲话稿
  • 演讲稿
  • 申请书
  • 读后感
  • 报告材料
  • 策划方案
  • 当前位置: 写作资料库 > 报告材料 > 正文

    [EDA课程设计报告60秒倒计时器MAXII240T]60秒倒计时计时器

    时间:2020-07-21 22:14:46 来源:写作资料库 本文已影响 写作资料库手机站

    EDA课程设计报告 设计题目:基于verilog的倒计时器设计 专业班级:
    姓名学号:
    姓名学号:
    姓名学号:
    指导教师:
    设计时间:
    目 录 摘要 3 关键字 3 前言 3 1 倒计时的功能和设计结构 3 1.1 倒计时器的系统的功能 3 1.2 倒计时器的设计结构 4 2 主要模块程序 4 2.1 分频器 4 2.2 计时器 5 2.3 显示器 7 2.4 指示器 9 3 各模块原理图 10 3.1 顶层模块原理图 10 3.2 计数模块原理图 11 3.3 分频模块原理图 11 3.4 彩灯模块原理图 11 3.5 显示模块原理图 12 4 实际电路运行效果图 12 5 软件介绍和管脚说明 13 5.1 管脚说明 13 5.2 软件介绍 13 6 总结与心得体会 14 7 致谢 14 7 参考文献 15 基于Verilog 的60秒倒计时器设计 ()
    摘 要 本文提出一种基于Verilog HDL语言的60秒倒计时器设计方法。该设计实现有两组输入,具有清零功能和暂停功能,能进行60秒的倒计时器。文中介绍了倒计时器设计架构和控制程序的设计方法。该倒计时器采用Verilog HDL语言模块化和层次化的思想,使设计十分简单,并能在MAX II开发板上实现验证,具有广泛的现实意义。

    关键字 倒计时器;

    Verilog HDL;

    层次化和模块化;

    仿真验证 前言 现行的倒计时器主要有两种,基于小规模数字逻辑芯片设计,另外一种基于单片机设计。小规模数字逻辑电路比较复杂,单片机随着倒计时器功能输入的增加,存在I/O资源不足的情况。本文提出一种方便可行的倒计时器的设计方法,即利用Verilog HDL硬件描述语言来设计倒计时器,并且在MAX II开发板上仿真实现,Verilog HDL语言满足数字系统设计和综合的所有要求,设计中充分利用Verilog HDL层次化和模块化的思想,使得倒计时器的整个设计过程简单,灵活;
    同时,在设计过程中始终运用EDA工具开发板对设计进行验证,使得设计更加可靠。由于开发板的I/O端口比较丰富,可以在本设计基础上稍加修改设计具有更多功能的倒计时。

    1 倒计时器的功能和设计结构 1.1 倒计时器系统的功能 本文设计一个电子倒计时器:可进行60秒倒计时,七段显示译码管显示秒数,循环彩灯显示电路正常工作。

    倒计时器具体功能如下:(1)可进行60秒倒计时,倒计时开始,开发板上7段显示译码管上从60开始进行倒数,直至0,重新返回60重新开始计时,这一过程用七段译码管显示器显示;
    (2)设置了一个复位控制开关reset,可以进行复位清零功能控制,当倒计时正在进行倒数工作时,当按下清零复位开关,倒计时器重新返回60,开始倒计时。(3)设置了一个暂停控制开关stop,可以进行暂停功能控制,当倒计时进行倒数工作,无论倒数进行到哪一步,当按下暂停控制开关stop时,七段显示译码管的数字将保持不变,循环彩灯也将保持不变,说明整个倒计时器停止工作。当松开暂停控制开关,倒计时器重新开始工作,循环彩灯开始闪亮,说明倒计时器正在工作。

    1.2 倒计时器的设计结构 本文以Verilog HDL语言为基础设计的60秒的倒计时器,根据设计功能的要求,该设计主要包括分频器产生时钟信号,倒计时的计数,和清零复位、暂停按键的键入,数码管的显示,以及循坏彩灯的设置。

    分频器产生时钟信号 把50MHZ分频成1HZ 暂停、清零控制开关用来控制倒计时的工作 七段译码管进行数字的显示 计数器用来进行倒计时 循环彩灯用来显示倒计时器的工作状态 2.主要模块程序 2.1 分频器 module div_fre(clk,sec); input clk; output sec; reg sec; reg [ 27:0] count; always @(posedge clk) begin count<=count+1'b1; if(count==28'd24999999) //用于产生1HZ的脉冲 begin count<=0; sec=~sec; end end endmodule 该模块是用以实现把50MHZ的信号转化为1HZ的信号,从而产生一个1秒的时钟信号。

    2.2 计时器 module control(clk,reset,disp,stop); input clk,reset,stop; integer count; output[7:0] disp; reg[5:0] num; always @(negedge clk ) begin if(~reset) count<=1'b0; else if(~stop) // 用于实现计数器的暂停功能 count<=count+1'b0; else if(count==6'b111100)//用于计数器计数到达60,重新置0 count<=1'b0; else count<=count+1'b1; end assign disp[7:4]=num/10,//用于向数码管送显示数据,A方向十位 disp[3:0]=num%10; always @ (negedge clk ) begin if(~reset)//用于倒计时器的清零功能 begin num<=0; end else if (count<7'b1100100) begin num<=6'b111100-(count);//用于实现倒计时 end end endmodule 该模块首先用count进行计数,将倒计时器的初始时间设置为60秒,再用一个条件语句执行倒计时功能。除此以外,该模块还可进行清零复位和暂停功能的实现。

    2.3显示模块 module seg7(clk,dataout,en,datain); input [7:0] datain; input clk; output[6:0] dataout; output [1:0] en;//COM使能输出 reg[6:0] dataout;//各段数据输出 reg[1:0] en; reg[15:0] cnt_scan;//扫描频率计数器 reg [3:0] dataout_buf; always@(posedge clk ) begin cnt_scan<=cnt_scan+1; end always @ (cnt_scan) begin case(cnt_scan[15]) 1'b0 : en = 2'b10; 1'b1 : en = 2'b01; default : en = 2'b11; endcase end always@(en) //对应COM信号给出各段数据 begin case(en) 2'b10: dataout_buf=datain[7:4]; 2'b01: dataout_buf=datain[3:0]; default: dataout_buf=8; endcase end always@(dataout_buf) begin case(dataout_buf) 4'b0000:dataout=7'b0111111; 4'b0001:dataout=7'b0000110; 4'b0010:dataout=7'b1011011; 4'b0011:dataout=7'b1001111; 4'b0100:dataout=7'b1100110; 4'b0101:dataout=7'b1101101; 4'b0110:dataout=7'b1111101; 4'b0111:dataout=7'b0000111; 4'b1000:dataout=7'b1111111; 4'b1001:dataout=7'b1101111; default: dataout=7'b0001_000; endcase end Endmodule 该模块是用以将倒计时器的数字通过七段译码管显示出来。

    2.4指示模块 module led(clock,key,style,light,reset); input clock,key,style,reset; //端口定义 output [3:0]light; reg [3:0] light =4'b1111 ; reg clk = 1; parameter cnt = 24000000; reg [24:0]count; always @ (posedge clk) //LED灯输出 begin if(!reset) light <=4'b0000; else if (!key) //key键被按下 ight = light; //暂停 else begin if (light ==4'b0000) //LED灯全部点亮时,重新熄灭再准备下次循环 light =4'b1111; end end endmodule 该模块是用循环彩灯来指示倒计时器是否处于工作状态。

    3.各模块原理图 顶层模块原理图 计数模块 彩灯模块 分频模块 显示模块 4. 实际电路运行效果图 5.管脚说明和软件介绍 5.1管脚说明 5.2 软件介绍 设计中所使用软件为QuartusⅡ。QuartusⅡ是Altera公司推出的第四代开发软件,提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。能够支持百万门以上逻辑门数的逻辑器件的开发,并且为第三方工具提供了无缝接口。QuartusⅡ软件的设计流程概括为设计输入、设计编译、设计仿真和设计下载等过程。该平台支持一个工作组环境下的设计要求,其中包括支持基于Internet的协作设计。Quartus平台与Cadence、ExemplarLogic、 MentorGraphics、Synopsys和Synplicity等EDA供应商的开发工具相兼容。改进了软件的LogicLock模块设计功能,增添 了FastFit编译选项,推进了网络编辑性能,而且提升了调试能力。

    6.总结与心得体会 这次的EDA课程设计比我想象的要难很多,原本以为一两天就可以搞定的,结果一个倒计时程序写了四五天才写出来,后面下载到硬件的时候又是各种各种的问题,让我很郁闷,曾经甚至想过要放弃!最后在郭老师的耐心指导下重新修改程序才做出来。通过这次EDA课程设计我深深的感知到对Verilog HDL语言编程的缺乏,连一些简单的语法知识都不知道,有编译程序遇到一个错误改半天都改不对,最终通过查看相关书籍和在网上查找相关资料才得以一个个解决。经过这次教训,在以后的学习我应该认真对待每一门学科,扎实理论基础知识,只有这样在以后遇到相关问题才能轻松解决。

    在这次EDA课程设计中,学到很多东西,不仅巩固了以前所学过的基础知识,而且对EDA硬件实验有了进一步的了解。通过这次课程设计使我弄懂了键盘的构造原理以及对它的扫描原理。由于第一次用Verilog语言对这种比较复杂的硬件电路编程,所以有很多地方不懂,因此必须通过查阅大量的相关资料才能弄懂,所以这期间进一步锻炼了自己查阅资料和自学的能力,学习能力得到进一步加强,对以后的学习生活打下根深基础。

    总的来说,这次课程设计痛苦但有收获,虽然遇到很多问题,最后在老师的指导下和资料的指引下下都一一解决,本次课程设计充分锻炼了我们的能力,提高了自己对实践操作和理论研究的兴趣,也为明年的毕业设计做了一定的准备。

    7.致谢 本论文设计在郭老师的悉心指导和严格要求下业已完成,从选题到具体的实训和写作过程,无不凝聚着老师们的心血和汗水。在我们实训期间,老师为我们 提供了种种专业知识上的指导和一些富于创造性的建议,老师严谨求实的态度使我们深受感动,没有这样的帮助和关怀和熏陶,我们不会这么顺利的完成实训任务。在此向老师表示深深的感谢和崇高的敬意!  这次实训还要感谢郭老师的热情帮助,是他让我在短时间内熟Verilog HDL源程序的编写。在硬件调试阶段,也有很多同学给予了帮助,在此谢谢郭老师。

    我还要借此机会向给予我诸多教诲和帮助的各位老师表示由衷的谢意,感谢他们的辛勤栽培。不积跬步何以至千里,各位任课老师认真负责,在他们的悉心帮助和支持下,我能够很好的掌握和运用专业知识,并在实训中得以体现,顺利完成实训任务。

    同时,在论文写作过程中,我还参考了有关的书籍和论文,在这里一并向有关的作者表示谢意。

    我还要感谢同组的各位同学以及我的各位室友,在这段时间里,你们给了我很多的启发,提出了很多宝贵的意见,对于你们帮助和支持,在此我表示深深地感谢! 参考文献 [1] 常晓明. Verilog-HDL讲座 第三讲 Verilog-HDL的基本概念[J]. 今日电子. 2003(10) [2] 祁晓磊,蔡学良,孙德玮. 用Verilog HDL进行FPGA设计的原则与方法[J]. 电子测试. 2008(03) [3] 夏宇闻. Verilog HDL与逻辑系统设计[J]. 电子技术应用. 2007(09) [4] 彭保,吴坚,于春梅,马建国.Verilog HDL语言在FPGA/CPLD开发中的应[J]. 今日电子. 2004(05)