1、EDA课程设计报告60秒倒计时器MAXII240T 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
2、实际电路运行效果图 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;层次化和模块化;仿真
3、验证 前言 现行的倒计时器主要有两种,基于小规模数字逻辑芯片设计,另外一种基于单片机设计。小规模数字逻辑电路比拟复杂,单片机随着倒计时器功能输入的增加,存在I/O资源缺乏的情况。本文提出一种方便可行的倒计时器的设计方法,即利用Verilog HDL硬件描述语言来设计倒计时器,并且在MAX II开发板上仿真实现,Verilog HDL语言满足数字系统设计和综合的所有要求,设计中充分利用Verilog HDL层次化和模块化的思想,使得倒计时器的整个设计过程简单,灵活;同时,在设计过程中始终运用EDA工具开发板对设计进行验证,使得设计更加可靠。由于开发板的I/O端口比拟丰富,可以在本设计根底上稍加修
4、改设计具有更多功能的倒计时。 1 倒计时器的功能和设计结构 1.1 倒计时器系统的功能 本文设计一个电子倒计时器:可进行60秒倒计时,七段显示译码管显示秒数,循环彩灯显示电路正常工作。 倒计时器具体功能如下:1可进行60秒倒计时,倒计时开始,开发板上7段显示译码管上从60开始进行倒数,直至0,重新返回60重新开始计时,这一过程用七段译码管显示器显示;2设置了一个复位控制开关reset,可以进行复位清零功能控制,当倒计时正在进行倒数工作时,当按下清零复位开关,倒计时器重新返回60,开始倒计时。(3)设置了一个暂停控制开关stop,可以进行暂停功能控制,当倒计时进行倒数工作,无论倒数进行到哪一步,
5、当按下暂停控制开关stop时,七段显示译码管的数字将保持不变,循环彩灯也将保持不变,说明整个倒计时器停止工作。当松开暂停控制开关,倒计时器重新开始工作,循环彩灯开始闪亮,说明倒计时器正在工作。 1.2 倒计时器的设计结构 本文以Verilog HDL语言为根底设计的60秒的倒计时器,根据设计功能的要求,该设计主要包括分频器产生时钟信号,倒计时的计数,和清零复位、暂停按键的键入,数码管的显示,以及循坏彩灯的设置。 分频器产生时钟信号 把50MHZ分频成1HZ 暂停、清零控制开关用来控制倒计时的工作 七段译码管进行数字的显示 计数器用来进行倒计时 循环彩灯用来显示倒计时器的工作状态 2.主要模块程
6、序 2.1 分频器 module div_fre(clk,sec); input clk; output sec; reg sec; reg 27:0 count; always (posedge clk) begin count=count+1b1; if(count=28d24999999) /用于产生1HZ的脉冲 begin count=0; sec=sec; end end endmodule 该模块是用以实现把50MHZ的信号转化为1HZ的信号,从而产生一个1秒的时钟信号。 2.2 计时器 module control(clk,reset,disp,stop); input clk,
7、reset,stop; integer count; output7:0 disp; reg5:0 num; always (negedge clk ) begin if(reset) count=1b0; else if(stop) / 用于实现计数器的暂停功能 count=count+1b0; else if(count=6b111100)/用于计数器计数到达60,重新置0 count=1b0; else count=count+1b1; end assign disp7:4=num/10,/用于向数码管送显示数据,A方向十位 disp3:0=num%10; always (negedge
8、 clk ) begin if(reset)/用于倒计时器的清零功能 begin num=0; end else if (count7b1100100) begin num=6b111100-(count);/用于实现倒计时 end end endmodule 该模块首先用count进行计数,将倒计时器的初始时间设置为60秒,再用一个条件语句执行倒计时功能。除此以外,该模块还可进行清零复位和暂停功能的实现。 2.3显示模块 module seg7(clk,dataout,en,datain); input 7:0 datain; input clk; output6:0 dataout; ou
9、tput 1:0 en;/COM使能输出 reg6:0 dataout;/各段数据输出 reg1:0 en; reg15:0 cnt_scan;/扫描频率计数器 reg 3:0 dataout_buf; always(posedge clk ) begin cnt_scan=cnt_scan+1; end always (cnt_scan) begin case(cnt_scan15) 1b0 : en = 2b10; 1b1 : en = 2b01; default : en = 2b11; endcase end always(en) /对应COM信号给出各段数据 begin case(e
10、n) 2b10: dataout_buf=datain7:4; 2b01: dataout_buf=datain3:0; default: dataout_buf=8; endcase end always(dataout_buf) begin case(dataout_buf) 4b0000:dataout=7b0111111; 4b0001:dataout=7b0000110; 4b0010:dataout=7b1011011; 4b0011:dataout=7b1001111; 4b0100:dataout=7b1100110; 4b0101:dataout=7b1101101; 4b0
11、110:dataout=7b1111101; 4b0111:dataout=7b0000111; 4b1000:dataout=7b1111111; 4b1001:dataout=7b1101111; default: dataout=7b0001_000; endcase end Endmodule 该模块是用以将倒计时器的数字通过七段译码管显示出来。 2.4指示模块 module led(clock,key,style,light,reset); input clock,key,style,reset; /端口定义 output 3:0light; reg 3:0 light =4b111
12、1 ; reg clk = 1; parameter cnt = 24000000; reg 24:0count; always (posedge clk) /LED灯输出 begin if(!reset) light =4b0000; else if (!key) /key键被按下 ight = light; /暂停 else begin if (light =4b0000) /LED灯全部点亮时,重新熄灭再准备下次循环 light =4b1111; end end endmodule 该模块是用循环彩灯来指示倒计时器是否处于工作状态。 3.各模块原理图 顶层模块原理图 计数模块 彩灯模块 分频模块 显示模块 4. 实际电路运行效果图 5.管脚说明和软件介绍 5.1管脚说明 5.2 软件介绍 设计中所使用软件为Quartus。Quartus是Altera公司推出的第四代开发软件,提供了方便的设计输入方式、快速的编译和直接易懂的器件编程。能够支持百万门以上逻辑门数的逻辑