《verilog微波炉定时器设计.docx》由会员分享,可在线阅读,更多相关《verilog微波炉定时器设计.docx(12页珍藏版)》请在金锄头文库上搜索。
1、集成电路课程设计报告集成电路课程设计报告课题名称: 微波炉定时器设计 姓名: XXXXXX 学号: 211111111 班级: 电子科学与技术 班 目录第一节 引言.21.1概述.21.2本设计的任务和主要功能.2第二节 系统功能绍.2 2.1系统总述.22.2控制模块.3 2.3数据装入模块.3 2.4计时器模块.4 2.4.1六进制计数块.5 2.4.2十进制计数块.5 2.5各模块top连接.5第三节 modelsim仿真测试.6 3.1测试基准.6 3.2仿真结果.6第四节 课程设计总结.7 附录.8微波炉定时器设计 引言1.1概述 近年来微波炉由于烹饪的时间很短,能很好地保持食物中的
2、维生素和天然风味。随着科技的发展,其已经带给了千家万户以便捷、美味,成为现代家庭必备产品。时至今日,微波炉已有50多年的发展历史,尽管它已经实现了高度工业化的生产,但是主要生产国还是在日本、韩国及欧洲的一些发达国家。就国内而言,中国老百姓已经开始认识和接受微波炉,可预见,中国也开始成为一个巨大的微波炉市场。尽管微波炉发展已经趋于成熟,但是其技术方面还有很多需要创新、改进。微波炉的电磁外溢就是一个例子,他给人的伤害是不能复原的。只有不断改善技术缺陷,才能赢取更大的市场,才能够抵御未知的挑战和风险。基于这些,我们设计了自己的微波炉定时器。 本微波炉定时器的核心系统可由下面3个模块构成:控制器:控制
3、微波炉的工作过程中的状态转换及相应的控制序列;数据装入器:根据控制信号选择定时时间、测试数据或完成信息的装入;定时器部分:负责完成烹调过程中的定时等。通过3大模块最终实现微波炉的复位、开始、测试、定时、结束等功能。1.2本设计的任务和主要功能该微波炉定时器具有复位开关,并且通电处于复位状态,只要复位开关按下,定时器执行复位操作。具有启动和结束开关,控制微波炉开始烹调和结束。微波炉的烹调时间可以由用户自由设定,烹调时间应该能够显示到秒。最终结果能使用ModelSim对设计的程序进行仿真验证。系统功能介绍2.1系统总述微波炉定时器主要由控制块状态机(MICRO_WARE)控制系统的功能状态运行,由
4、装入模块(LOADER)实现人为设定时间的输入,并且由减一计时模块(TIMER)实现最终的减一定时。通电处于复位状态,当按下测试按钮时测试数码管是否损坏,如果数码管显示8888则完好无损,否者不能正常显示。当SET有效时输入需要设定的时间,并显示到数码管上,在需要人为设定时间时即可按下SET输入时间。当按下START按钮者开始计时并cook,计时到0则结束cook。RESET为复位按钮,复位状态电路输出为0。具体系统结构如下: 图1 微波炉控制系统原理图2.2控制模块(如图1 KZQ) 主要完成对整个芯片工作的控制。当L_done有效时,输出烹调结束数据。当L_clk有效时,输出烹调的设置时间
5、数据。当L_8888有效时,输出数码管测试数据包括6个输入信号和4个输出信号。定义以下5个状态:parameter IDLE=3b000, /复位状态输出L_8888、L_clk、L_done全为0 LAMP_TEST=3b001, /TEST有效L_8888=1,L_clk、L_done为0 SET_CLOCK=3b010, /SET有效L_8888、L_done为0,L_clk=1TIMER=3b011, /START有效L_8888为0,L_clk、L_done为1并开始COOK DONE_MSG=3b100; /done有效L_8888、L_clk为0,L_done=1,COOK结束具
6、体程序见附录2.3数据装入模块(如图1 ZZQ)当L_done有效时,输出烹调结束数据。当L_clk有效时,输出烹调的设置时间数据。当L_8888有效时,输出数码管测试数据。load信号为data_val输出有效指示,DATA为人为输入的时间数据输入口。parameter ALLS=16b1000100010001000, /测试数据8888,数码管LED全亮则测试成功 DONE=16b1010101111001101; /结束数据,数码管显示DONE表示cook结束assign LOAD=LD_TEST | LD_DONE | LD_CLK; /三个信号有一个为1,则LOAD控制端有效ass
7、ign TEMP=LD_TEST , LD_DONE , LD_CLK; /case语句用于为不同输入状态装入不同数据always (DATAIN,LD_TEST,LD_CLK,LD_DONE)begin case(TEMP)3b100:DATAOUT=ALLS; 3b010:DATAOUT=DONE; 3b001:DATAOUT=DATAIN;endcase end2.4计时器模块(如图1 JSQ) 其主要功能为计时。Load有效时完成装入功能,down有效时执行减计数。由于微波炉定时器要求显示分和秒共4位,因而定时器至少应有4个计数器。为简化设计过程,我们将4个计数器使用一个通用的计数器以
8、供顶层设计调用,并且这个通用计数器必须有6_10进制选择功能。计数器输出包括0标志信号,当计时结束即输出为0时则zero为1;通过该信号可以反馈给控制模块以达到烹饪结束的效果,其连接如图: 图2 计数器模块内部结构2.4.1六进制计数块(CNT6)如图2中en连接five的两个计数器,因为一小时为60分钟一分钟为60秒,而且分秒的个十位都为十进制。assign Q=TMP;always (LOAD) begin if(LOAD) TMP=DATAIN; end /load有效输入设定数据always (posedge CLK ) beginif(EN) /EN有效并且temp为0装入数据5可实
9、现6借位操作 if (TMP=4b0000) begin TMP=4b0101; CARRY_OUT=1; end else begin TMP=TMP-1; CARRY_OUT=0; end /en无效则实现减一操作 end2.4.2十进制计数块(CNT10) 如图二中连接nine的两个计数器实现分和秒的个十位十进制计数,原理同6进制计数器一样。assign Q=TMP;always (LOAD) begin if(LOAD) TMP=DATAIN; endalways (posedge CLK )begin if(EN)if (TMP=4b0000) begin TMP=4b1001; C
10、ARRY_OUT=1; end /装入数据9可实现借位操作else begin TMP=TMP-1; CARRY_OUT=0; endend2.5各模块top连接 模块连接应用模块例化语句实现各模块的信号传递其硬件电路如图1所示具体程序可见附录测试与仿真3.1测试基准(具体程序见附录) 设定cook时间即DATA为11分钟11秒,时钟周期为20us.测试信号,置数信号复位信号的脉宽都为50us,且都是上升沿触发。initial begin DATA=16b0001000100010001; CLK=0; TEST=0; START =0; SET_T =0; RESET=1; #50 RESE
11、T=0; end /给一个复位信号initial begin TEST=0; #100 TEST=1;#50 TEST=0; end /给一个测试信号initial begin SET_T =0; #150 SET_T =1; #50 SET_T =0;end /给置数信号initial begin START =0; #200 START =1; #100 START =0;end /模拟开始按钮always #10 CLK=CLK; /产生时钟脉冲3.2仿真结果 如图波形设置输入时间为11:11s,开始一个RESET信号输出为000,当给一个SET信号时输出数据为设置的数据00010001
12、00010001。当按下START时COOK变为高电平开始烹饪,计数器开始计数减一,秒的个位减到0则十位减一,当秒减为0向分借位实现6进制借位操作。然后分的个位以十进制向分的十位借位,直到全为0则输出信号DONE,烹饪结束。完美的实现了设计的要求。课程设计总结 在这一个多星期中我和我的队员一起完成了这个课程设计。一个星期的时间挺短,却也学到了很多东西。自从选到这个题目大家都开始了紧张的工作,各论坛、图书馆、中文数据库以及最后设计思路的确立。整个过程现在总结起来也遇到了许多麻烦,也就解决许多麻烦。比如一开始对计时器的进制选择没有设定,导致仿真波形输出结果秒和分的换算都用了16进制。就这一点我们花了整整一天时间才修改并调试成功。不止这些,设计过程中对程序的模块连接,以及程序的改错都