verilog微波炉定时器设计Word格式.docx
- 文档编号:20786927
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:12
- 大小:224.08KB
verilog微波炉定时器设计Word格式.docx
《verilog微波炉定时器设计Word格式.docx》由会员分享,可在线阅读,更多相关《verilog微波炉定时器设计Word格式.docx(12页珍藏版)》请在冰豆网上搜索。
时至今日,微波炉已有50多年的发展历史,尽管它已经实现了高度工业化的生产,但是主要生产国还是在日本、韩国及欧洲的一些发达国家。
就国内而言,中国老百姓已经开始认识和接受微波炉,可预见,中国也开始成为一个巨大的微波炉市场。
尽管微波炉发展已经趋于成熟,但是其技术方面还有很多需要创新、改进。
微波炉的电磁外溢就是一个例子,他给人的伤害是不能复原的。
只有不断改善技术缺陷,才能赢取更大的市场,才能够抵御未知的挑战和风险。
基于这些,我们设计了自己的微波炉定时器。
本微波炉定时器的核心系统可由下面3个模块构成:
控制器:
控制微波炉的工作过程中的状态转换及相应的控制序列;
数据装入器:
根据控制信号选择定时时间、测试数据或完成信息的装入;
定时器部分:
负责完成烹调过程中的定时等。
通过3大模块最终实现微波炉的复位、开始、测试、定时、结束等功能。
1.2本设计的任务和主要功能
该微波炉定时器具有复位开关,并且通电处于复位状态,只要复位开关按下,定时器执行复位操作。
具有启动和结束开关,控制微波炉开始烹调和结束。
微波炉的烹调时间可以由用户自由设定,烹调时间应该能够显示到秒。
最终结果能使用ModelSim对设计的程序进行仿真验证。
系统功能介绍
2.1系统总述
微波炉定时器主要由控制块状态机(MICRO_WARE)控制系统的功能状态运行,由装入模块(LOADER)实现人为设定时间的输入,并且由减一计时模块(TIMER)实现最终的减一定时。
通电处于复位状态,当按下测试按钮时测试数码管是否损坏,如果数码管显示8888则完好无损,否者不能正常显示。
当SET有效时输入需要设定的时间,并显示到数码管上,在需要人为设定时间时即可按下SET输入时间。
当按下START按钮者开始计时并cook,计时到0则结束cook。
RESET为复位按钮,复位状态电路输出为0。
具体系统结构如下:
图1微波炉控制系统原理图
2.2控制模块(如图1KZQ)
主要完成对整个芯片工作的控制。
当L_done有效时,输出烹调结束数据。
当L_clk有效时,输出烹调的设置时间数据。
当L_8888有效时,输出数码管测试数据--包括6个输入信号和4个输出信号。
定义以下5个状态:
parameterIDLE=3'
b000,//复位状态输出L_8888、L_clk、L_done全为0
LAMP_TEST=3’b001,//TEST有效L_8888=1,L_clk、L_done为0
SET_CLOCK=3’b010,//SET有效L_8888、L_done为0,L_clk=1
TIMER=3'
b011,//START有效L_8888为0,L_clk、L_done为1并开始COOK
DONE_MSG=3'
b100;
//done有效L_8888、L_clk为0,L_done=1,COOK结束
具体程序见附录
2.3数据装入模块(如图1ZZQ)
当L_8888有效时,输出数码管测试数据。
load信号为data_val输出有效指示,DATA为人为输入的时间数据输入口。
parameterALLS=16'
b1000100010001000,//测试数据8888,数码管LED全亮则测试成功
DONE=16'
b1010101111001101;
//结束数据,数码管显示DONE表示cook结束
assignLOAD=LD_TEST|LD_DONE|LD_CLK;
//三个信号有一个为1,则LOAD控制端有效
assignTEMP={LD_TEST,LD_DONE,LD_CLK};
//case语句用于为不同输入状态装入不同数据
always@(DATAIN,LD_TEST,LD_CLK,LD_DONE)
begincase(TEMP)
3'
b100:
DATAOUT<
=ALLS;
3'
b010:
=DONE;
b001:
=DATAIN;
endcaseend
2.4计时器模块(如图1JSQ)
其主要功能为计时。
Load有效时完成装入功能,down有效时执行减计数。
由于微波炉定时器要求显示分和秒共4位,因而定时器至少应有4个计数器。
为简化设计过程,我们将4个计数器使用一个通用的计数器以供顶层设计调用,并且这个通用计数器必须有6_10进制选择功能。
计数器输出包括0标志信号,当计时结束即输出为0时则zero为1;
通过该信号可以反馈给控制模块以达到烹饪结束的效果,其连接如图:
图2计数器模块内部结构
2.4.1六进制计数块(CNT6)
如图2中en连接five的两个计数器,因为一小时为60分钟一分钟为60秒,而且分秒的个十位都为十进制。
assignQ=TMP;
always@(LOAD)begin
if(LOAD)TMP<
end//load有效输入设定数据
always@(posedgeCLK)begin
if(EN)//EN有效并且temp为0装入数据5可实现6借位操作
if(TMP==4'
b0000)beginTMP<
=4'
b0101;
CARRY_OUT<
=1;
end
elsebeginTMP<
=TMP-1;
CARRY_OUT<
=0;
end//en无效则实现减一操作
end
2.4.2十进制计数块(CNT10)
如图二中连接nine的两个计数器实现分和秒的个十位十进制计数,原理同6进制计数器一样。
always@(LOAD)begin
always@(posedgeCLK)
beginif(EN)
if(TMP==4'
b1001;
end//装入数据9可实现借位操作
elsebeginTMP<
end
2.5各模块top连接
模块连接应用模块例化语句实现各模块的信号传递其硬件电路如图1所示具体程序可见附录
测试与仿真
3.1测试基准(具体程序见附录)
设定cook时间即DATA为11分钟11秒,时钟周期为20us.测试信号,置数信号复位信号的脉宽都为50us,且都是上升沿触发。
initial
beginDATA=16'
b0001000100010001;
CLK=0;
TEST=0;
START=0;
SET_T=0;
RESET=1;
#50RESET=0;
end//给一个复位信号
beginTEST=0;
#100TEST=1;
#50TEST=0;
end//给一个测试信号
beginSET_T=0;
#150SET_T=1;
#50SET_T=0;
end//给置数信号
beginSTART=0;
#200START=1;
#100START=0;
end//模拟开始按钮
always#10CLK=~CLK;
//产生时钟脉冲
3.2仿真结果
如图波形
设置输入时间为11:
11s,开始一个RESET信号输出为000,当给一个SET信号时输出数据为设置的数据0001000100010001。
当按下START时COOK变为高电平开始烹饪,计数器开始计数减一,秒的个位减到0则十位减一,当秒减为0向分借位实现6进制借位操作。
然后分的个位以十进制向分的十位借位,直到全为0则输出信号DONE,烹饪结束。
完美的实现了设计的要求。
课程设计总结
在这一个多星期中我和我的队员一起完成了这个课程设计。
一个星期的时间挺短,却也学到了很多东西。
自从选到这个题目大家都开始了紧张的工作,各论坛、图书馆、中文数据库以及最后设计思路的确立。
整个过程现在总结起来也遇到了许多麻烦,也就解决许多麻烦。
比如一开始对计时器的进制选择没有设定,导致仿真波形输出结果秒和分的换算都用了16进制。
就这一点我们花了整整一天时间才修改并调试成功。
不止这些,设计过程中对程序的模块连接,以及程序的改错都给我们留下了深刻的影响。
这对于我们来说是一笔宝贵的财富。
当今电子技术飞速发展,而其核心已日趋接近EDA设计,所以学好EDA设计对我们来说非常重要。
这次课程设计给我们一个拓展的平台,值得大家欣慰的是我们遇到了不同种类的问题,我们学会了怎样解决问题。
附录
1.实验完整程序:
//1————————————top————————————————————————
moduleTOP(DATA,RESET,SET_T,START,TEST,CLK,COOK,SEC0,SEC1,MIN0,MIN1);
inputDATA,RESET,SET_T,START,TEST,CLK;
outputCOOK,SEC0,SEC1,MIN0,MIN1;
wire[3:
0]SEC0,SEC1,MIN0,MIN1;
wire[15:
0]DATA;
wireCOOK_TMP,TEST_TMP,CLK_TMP,DONE_TMP,LOAD_TMP,DONE;
0]DATA_TMP;
assignCOOK=COOK_TMP;
KZQTKZQ(RESET,SET_T,START,TEST,CLK,DONE,COOK_TMP,TEST_TMP,CLK_TMP,DONE_TMP);
ZZQTZZQ(DATA,TEST_TMP,CLK_TMP,DONE_TMP,DATA_TMP,LOAD_TMP);
JSQTJSQ(COOK_TMP,LOAD_TMP,CLK,DATA_TMP,SEC0,SEC1,MIN0,MIN1,DONE);
endmodule
//2————————————控制模块状态机-——————————————————
moduleKZQ(RESET,SET_T,START,TEST,CLK,DONE,COOK,LD_TEST,LD_CLK,LD_DONE);
inputRESET,SET_T,START,TEST,CLK,DONE;
outputCOOK,LD_TEST,LD_CLK,LD_DONE;
regCOOK,LD_TEST,LD_CLK,LD_DONE;
parameterIDLE=3'
b000,
LAMP_TEST=3'
b001,
SET_CLOCK=3'
b010,
TIMER=3'
b011,
DONE_MSG=3'
reg[2:
0]NXT,CUR;
always@(posedgeCLKorposedgeRESET)
begin
NXT<
=IDLE;
LD_TEST<
LD_DONE<
LD_CLK<
COOK<
if(RESET)beginCUR<
elsebegin
case(CUR)
LAMP_TEST:
beginLD_TEST<
SET_CLOCK:
beginLD_CLK<
DONE_MSG:
beginLD_DONE<
IDLE:
if(TEST)
beginNXT<
=LAMP_TEST;
elseif(SET_T)
=SET_CLOCK;
elseif(START==1)
=TIMER;
TIMER:
if(DONE)
=DONE_MSG;
else
endcase
CUR<
=NXT;
endend
//3——————————————数据装入块———————————————————
moduleZZQ(DATAIN,LD_TEST,LD_CLK,LD_DONE,DATAOUT,LOAD);
inputDATAIN,LD_TEST,LD_CLK,LD_DONE;
outputDATAOUT,LOAD;
0]DATAIN;
reg[15:
0]DATAOUT;
wire[2:
0]TEMP;
b1000100010001000,//8888
//DONE
begin
case(TEMP)
//4————————————6进制控制—————————————————————
moduleCNT6(CLK,LOAD,EN,DATAIN,Q,CARRY_OUT);
inputCLK,LOAD,EN,DATAIN;
outputQ,CARRY_OUT;
0]DATAIN;
0]Q;
regCARRY_OUT;
reg[3:
0]TMP;
always@(LOAD)
end
if(EN)
b0000)
beginTMP<
else
beginTMP<
//5————————————10进制控制—————————————————————
moduleCNT10(CLK,LOAD,EN,DATAIN,Q,CARRY_OUT);
always@(LOAD)
//6————————————-计时器模块————————————————————
moduleJSQ(COOK,LOAD,CLK,DATA,SEC0,SEC1,MIN0,MIN1,DONE);
inputCOOK,LOAD,CLK,DATA;
outputSEC0,SEC1,MIN0,MIN1,DONE;
wire[3:
wire[15:
wireDONE;
wires0,s1,s2,s3;
assignDONE=s0&
s1&
s2&
s3;
CNT10S0(CLK,LOAD,COOK,DATA[3:
0],SEC0,s0);
CNT6S1(s0,LOAD,COOK,DATA[7:
4],SEC1,s1);
CNT10m0(s1,LOAD,COOK,DATA[11:
8],MIN0,s2);
CNT6m1(s2,LOAD,COOK,DATA[15:
12],MIN1,s3);
2.测试程序:
moduleTOP_tb;
wire[3:
0]MIN0;
0]SEC1;
wireCOOK;
regTEST;
0]MIN1;
regCLK;
regSTART;
reg[15:
0]DATA;
0]SEC0;
regSET_T;
regRESET;
initial
begin
DATA=16'
TEST=0;
START=0;
beginTEST=0;
#50TEST=0;
beginSET_T=0;
always#10CLK=~CLK;
TOP
DUT(
.MIN0(MIN0),
.SEC1(SEC1),
.COOK(COOK),
.TEST(TEST),
.MIN1(MIN1),
.CLK(CLK),
.START(START),
.DATA(DATA),
.SEC0(SEC0),
.SET_T(SET_T),
.RESET(RESET));
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- verilog 微波炉 定时器 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)