ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:224.08KB ,
资源ID:20786927      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20786927.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(verilog微波炉定时器设计Word格式.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

verilog微波炉定时器设计Word格式.docx

1、时至今日,微波炉已有50多年的发展历史,尽管它已经实现了高度工业化的生产,但是主要生产国还是在日本、韩国及欧洲的一些发达国家。就国内而言,中国老百姓已经开始认识和接受微波炉,可预见,中国也开始成为一个巨大的微波炉市场。尽管微波炉发展已经趋于成熟,但是其技术方面还有很多需要创新、改进。微波炉的电磁外溢就是一个例子,他给人的伤害是不能复原的。只有不断改善技术缺陷,才能赢取更大的市场,才能够抵御未知的挑战和风险。基于这些,我们设计了自己的微波炉定时器。 本微波炉定时器的核心系统可由下面3个模块构成:控制器:控制微波炉的工作过程中的状态转换及相应的控制序列;数据装入器:根据控制信号选择定时时间、测试数

2、据或完成信息的装入;定时器部分:负责完成烹调过程中的定时等。通过3大模块最终实现微波炉的复位、开始、测试、定时、结束等功能。1.2本设计的任务和主要功能该微波炉定时器具有复位开关,并且通电处于复位状态,只要复位开关按下,定时器执行复位操作。具有启动和结束开关,控制微波炉开始烹调和结束。微波炉的烹调时间可以由用户自由设定,烹调时间应该能够显示到秒。最终结果能使用ModelSim对设计的程序进行仿真验证。系统功能介绍2.1系统总述微波炉定时器主要由控制块状态机(MICRO_WARE)控制系统的功能状态运行,由装入模块(LOADER)实现人为设定时间的输入,并且由减一计时模块(TIMER)实现最终的

3、减一定时。通电处于复位状态,当按下测试按钮时测试数码管是否损坏,如果数码管显示8888则完好无损,否者不能正常显示。当SET有效时输入需要设定的时间,并显示到数码管上,在需要人为设定时间时即可按下SET输入时间。当按下START按钮者开始计时并cook,计时到0则结束cook。RESET为复位按钮,复位状态电路输出为0。具体系统结构如下: 图1 微波炉控制系统原理图2.2控制模块(如图1 KZQ) 主要完成对整个芯片工作的控制。当L_done有效时,输出烹调结束数据。当L_clk有效时,输出烹调的设置时间数据。当L_8888有效时,输出数码管测试数据包括6个输入信号和4个输出信号。定义以下5个

4、状态: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结束具体程序见附录2.3数据装入模块(如图1 ZZQ)当L_8888有效时,输出数码管测试数据。

5、load信号为data_val输出有效指示,DATA为人为输入的时间数据输入口。parameter ALLS=16b1000100010001000, /测试数据8888,数码管LED全亮则测试成功 DONE=16b1010101111001101; /结束数据,数码管显示DONE表示cook结束assign LOAD=LD_TEST | LD_DONE | LD_CLK; /三个信号有一个为1,则LOAD控制端有效assign TEMP=LD_TEST , LD_DONE , LD_CLK; /case语句用于为不同输入状态装入不同数据always (DATAIN,LD_TEST,LD_CL

6、K,LD_DONE)begin case(TEMP)3b100:DATAOUT=ALLS; 3b010:=DONE;b001:=DATAIN;endcase end2.4计时器模块(如图1 JSQ) 其主要功能为计时。Load有效时完成装入功能,down有效时执行减计数。由于微波炉定时器要求显示分和秒共4位,因而定时器至少应有4个计数器。为简化设计过程,我们将4个计数器使用一个通用的计数器以供顶层设计调用,并且这个通用计数器必须有6_10进制选择功能。计数器输出包括0标志信号,当计时结束即输出为0时则zero为1;通过该信号可以反馈给控制模块以达到烹饪结束的效果,其连接如图: 图2 计数器模块

7、内部结构2.4.1六进制计数块(CNT6)如图2中en连接five的两个计数器,因为一小时为60分钟一分钟为60秒,而且分秒的个十位都为十进制。assign Q=TMP;always (LOAD) begin if(LOAD) TMP end /load有效输入设定数据always (posedge CLK ) beginif(EN) /EN有效并且temp为0装入数据5可实现6借位操作 if (TMP=4b0000) begin TMP=4b0101; CARRY_OUT=1; end else begin TMP=TMP-1; CARRY_OUT=0; end /en无效则实现减一操作 e

8、nd2.4.2十进制计数块(CNT10) 如图二中连接nine的两个计数器实现分和秒的个十位十进制计数,原理同6进制计数器一样。always (LOAD) beginalways (posedge CLK )begin if(EN)if (TMP=4b1001; end /装入数据9可实现借位操作else begin TMPend2.5各模块top连接 模块连接应用模块例化语句实现各模块的信号传递其硬件电路如图1所示具体程序可见附录测试与仿真3.1测试基准(具体程序见附录) 设定cook时间即DATA为11分钟11秒,时钟周期为20us.测试信号,置数信号复位信号的脉宽都为50us,且都是上升

9、沿触发。initial begin DATA=16b0001000100010001; CLK=0; TEST=0;START =0; SET_T =0; RESET=1; #50 RESET=0; end /给一个复位信号 begin TEST=0; #100 TEST=1;#50 TEST=0; end /给一个测试信号 begin SET_T =0; #150 SET_T =1; #50 SET_T =0;end /给置数信号 begin START =0; #200 START =1; #100 START =0;end /模拟开始按钮always #10 CLK=CLK; /产生时钟

10、脉冲3.2仿真结果 如图波形设置输入时间为11:11s,开始一个RESET信号输出为000,当给一个SET信号时输出数据为设置的数据0001000100010001。当按下START时COOK变为高电平开始烹饪,计数器开始计数减一,秒的个位减到0则十位减一,当秒减为0向分借位实现6进制借位操作。然后分的个位以十进制向分的十位借位,直到全为0则输出信号DONE,烹饪结束。完美的实现了设计的要求。课程设计总结 在这一个多星期中我和我的队员一起完成了这个课程设计。一个星期的时间挺短,却也学到了很多东西。自从选到这个题目大家都开始了紧张的工作,各论坛、图书馆、中文数据库以及最后设计思路的确立。整个过程

11、现在总结起来也遇到了许多麻烦,也就解决许多麻烦。比如一开始对计时器的进制选择没有设定,导致仿真波形输出结果秒和分的换算都用了16进制。就这一点我们花了整整一天时间才修改并调试成功。不止这些,设计过程中对程序的模块连接,以及程序的改错都给我们留下了深刻的影响。这对于我们来说是一笔宝贵的财富。 当今电子技术飞速发展,而其核心已日趋接近EDA设计,所以学好EDA设计对我们来说非常重要。这次课程设计给我们一个拓展的平台,值得大家欣慰的是我们遇到了不同种类的问题,我们学会了怎样解决问题。附录 1.实验完整程序:/1topmodule TOP(DATA,RESET,SET_T,START,TEST,CLK

12、,COOK,SEC0,SEC1,MIN0,MIN1);input DATA,RESET,SET_T,START,TEST,CLK;output COOK,SEC0,SEC1,MIN0,MIN1;wire 3:0 SEC0,SEC1,MIN0,MIN1;wire 15:0 DATA;wire COOK_TMP,TEST_TMP,CLK_TMP,DONE_TMP,LOAD_TMP,DONE;0 DATA_TMP;assign COOK=COOK_TMP;KZQ TKZQ(RESET,SET_T,START,TEST,CLK,DONE,COOK_TMP,TEST_TMP,CLK_TMP,DONE_T

13、MP);ZZQ TZZQ(DATA,TEST_TMP,CLK_TMP,DONE_TMP,DATA_TMP,LOAD_TMP);JSQ TJSQ(COOK_TMP,LOAD_TMP,CLK,DATA_TMP,SEC0,SEC1,MIN0,MIN1,DONE);endmodule/2控制模块状态机-module KZQ(RESET,SET_T,START,TEST,CLK,DONE,COOK,LD_TEST,LD_CLK,LD_DONE);input RESET,SET_T,START,TEST,CLK,DONE;output COOK,LD_TEST,LD_CLK,LD_DONE;reg COO

14、K,LD_TEST,LD_CLK,LD_DONE;parameter IDLE=3b000, LAMP_TEST=3b001, SET_CLOCK=3b010, TIMER=3b011, DONE_MSG=3reg 2:0 NXT,CUR;always (posedge CLK or posedge RESET)beginNXT=IDLE; LD_TEST LD_DONE LD_CLK COOKif(RESET) begin CURelse begin case(CUR) LAMP_TEST:begin LD_TESTSET_CLOCK:begin LD_CLKDONE_MSG:begin L

15、D_DONEIDLE:if(TEST)begin NXT=LAMP_TEST;else if(SET_T)=SET_CLOCK;else if(START=1)=TIMER;TIMER:if(DONE)=DONE_MSG;elseendcaseCUR=NXT;end end/3数据装入块module ZZQ(DATAIN,LD_TEST,LD_CLK,LD_DONE,DATAOUT,LOAD);input DATAIN,LD_TEST,LD_CLK,LD_DONE;output DATAOUT,LOAD;0 DATAIN ;reg 15:0 DATAOUT;wire 2:0 TEMP;b100

16、0100010001000, /8888 /DONEbegin case(TEMP)/46进制控制module CNT6(CLK,LOAD,EN,DATAIN,Q,CARRY_OUT);input CLK,LOAD,EN,DATAIN;output Q,CARRY_OUT;0 DATAIN;0 Q;reg CARRY_OUT;reg 3:0 TMP;always (LOAD) end if(EN)b0000) begin TMP else begin TMP/510进制控制module CNT10(CLK,LOAD,EN,DATAIN,Q,CARRY_OUT);always (LOAD) /6

17、-计时器模块module JSQ(COOK,LOAD,CLK,DATA,SEC0,SEC1,MIN0,MIN1,DONE);input COOK,LOAD,CLK,DATA;output SEC0,SEC1,MIN0,MIN1,DONE;wire 3:wire 15:wire DONE;wire s0,s1,s2,s3;assign DONE=s0&s1&s2&s3;CNT10 S0(CLK,LOAD,COOK,DATA3:0,SEC0,s0);CNT6 S1(s0,LOAD,COOK,DATA7:4,SEC1,s1);CNT10 m0(s1,LOAD,COOK,DATA11:8,MIN0,s

18、2);CNT6 m1(s2,LOAD,COOK,DATA15:12,MIN1,s3);2.测试程序:module TOP_tb ; wire 3:0 MIN0 ;0 SEC1 ; wire COOK ; reg TEST ;0 MIN1 ; reg CLK ; reg START ; reg 15:0 DATA ;0 SEC0 ; reg SET_T ; reg RESET ; initial begin DATA=16 TEST=0; START =0; begin TEST=0; #50 TEST=0; begin SET_T =0; always #10 CLK=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 ) );

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1