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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于VerilogHDL的洗衣机程序.docx

1、基于VerilogHDL的洗衣机程序EDA 嵌入式系统课程设计印刷学院课程设计报告嵌入式系统EDA课程设计名称:EDA 技术课程设计课程设计题目:洗衣机控制电路专业:电子信息工程专业班级:XXXXX学生XX:XXXXXXXXXXXXX XXXXXXXXXXX指导教师:XXXXXXX时间:XXXXXX至XXXXX 年XXXX 月XXXX 日一、设计任务要求3 1、根本要求3二、总体设计方案3 1、系统功能32、系统设计31)系统构造框图32)模块分析31、分频模块32、七段数码管显示模块33、洗衣机主程序模块3三、应用设备及软件介绍31、主要仪器设备实验用的软硬件环境3 2、实验的软件环境4 3

2、、操作方法与实验步骤4四、调试过程分析、遇到的问题及解决方法41、分频模块32、七段数码管显示模块33、洗衣机主程序模块3五、设计结论3六、DE2管脚分配说明 3七、参考文献3八、附录3附录一 分频模块9附录二 七段数码管显示模块9附录三 洗衣机主程序模块9一、设计任务要求1、根本要求:1洗衣机的状态为待机5s正转60s待机5s反转60s,并用3个LED灯和7段显示器分别表示其工作状态和显示相应工作状态下的时间。2)可自行设定洗衣机的循环次数,这里设置最大的循环次数为15次。3)具有紧急情况的处理功能。当发生紧急情况时,立即转入待机状态,紧急情况解除后,继续执行后续步骤。4)洗衣机设定循环次数

3、递减到零时立即报警,以表示洗衣机设定的循环次数已经完毕。二、设计方案1、系统功能根本功能:能够实现洗衣机在设置洗衣次数后待机5s正转60s待机5s反转60s的四种根本状态,并且可显示循环次数,当遇到紧急状态时可翻开紧急开关,暂停洗衣机的工作。当洗衣机循环次数递减到0时洗衣机自动报警。2、系统设计1)系统构造框图,如图1-1所示:通过分频模块得到1Hz clk作为标准时钟输入到洗衣机主程序模块中,rst,en,start,add,四个输入信号作为洗衣机主程序模块的总输入,所得到的led信号分别用三个红灯显示,alarm信号用一个红灯显示,numa信号、numb信号、tim信号用七段数码管显示,最

4、终实现了洗衣机的各项功能。 图1-12)模块分析1、分频模块将系统给定的50MHZ 的频率通过分频模块变成1HZ 的clkclk,我们在这里以50分频为例输入一个50MHz 的信号作clkin,每当clkin 上升沿来时,count 计数加1,且每当count=24 时,clkout 取反一次并且count=0,这样会得到一个1MHz 的信号,然后在进展3次100分频,即可得到1HZclk 作为我们后面所需的标准时钟。其流程图及预制仿真图如以下列图:图2-1.1,图2-1.2,图2-1.3为100分频仿真所示:NY N YY图2-1.1图2-1.2图2-1.32、七段数码管显示模块:运用三个七

5、段数码管显示模块,分别显示倒计时个位numa,倒计时十位numb,循环剩余次数tim,如图2-2.1,图2-2.2,图2-2.3,图2-2.4图2-2.1图2-2.2图2-2.3图2-2.43、洗衣机主程序模块:如图3-1状态转换图与图3-2软件流程图所示,控制模块采用有限状态机实现对洗衣机工作状态的控制。启动start后,控制器首先进入待机s0状态,时间从5秒倒计时,如果没有到0秒那么继续等待,时间自减;当t=0,进入洗衣机正转s1状态,时间从60秒倒计时,如果没有到0秒那么继续等待,时间自减;当t=0,进入洗衣机待机s2状态,同理等待5秒;当t为零后,进入s3洗衣机发转状态,时间从60秒倒

6、计时,如果没有到0秒那么继续等待,时间自减;整个过程依次循环。紧急状态en,当按下紧急停顿按钮后,处于正反转状态中的电机停顿转动,同时紧急报警LED灯亮,因此紧急状态不设定独立状态。图3-1图3-2三、应用设备及软件介绍1:主要仪器设备实验用的软硬件环境1计算机;2 DE2 开发板ALTERA Cyclone22C35;3 电源线一根;4 USB 下载线一根。2:实验的软件环境Quartus II 9.0 软件3:操作方法与实验步骤1利用Quartus II 9.0 软件实现EDA 的根本设计流程:创立工程、编辑文本输设计文件、编译前设置、全程编译、功能仿真。(2)利用Quartus II 9

7、.0 软件实现引脚锁定和编译文件下载。四、调试过程分析、遇到的问题及解决方法1、分频模块的调试:分析:如图 4-1所示,每当 count=24 时,clkout 实现一次翻转,并且 count清零;该模块总体来说思路较为简单,一般都是一次性成功的以50 分频为例,其仿真图如以下列图 4-1图4-12、七段数码管显示模块的调试:洗衣机对七段数码管显示的要求不太高,设计好该模块的程序后,只需将洗衣机主程序模块下的输出numa,numb,tim三个信号分别接入三个七段数码管显示模块即可显示出对应的数字。3、洗衣机主程序模块的调试:在设计洗衣机的时候我们小组大致的步骤如下:1、弄清洗衣机有哪几种按键在

8、编写程序时我们小组决定先由易到难,从按键下手,整个洗衣机应有rst(复位键,add设置循环次数键、start开场键、en紧急暂停键这四个键,并将这四个按键作为输入。2、确立洗衣机有哪几种状态我们小组认为该洗衣机洗衣时应有四种状态:S0:待机5S;S1:正转60S;S2:待机5S;S3:反转60S;S4:待机5秒。计数的十位用numb表示,计数的个位用numa表示。将这四种状态作为一次循环。在编写程序时我们一开场选择从0开场计数到5,切换状态再从0开场计数到60换状态,跑板子的时候总觉得奇怪,后来经过思考,一般洗衣机计时都是倒数的,于是我们才将程序改正过来。在编写程序时,我们把系统紧急状态也归在

9、这四个状态当中,结果每个状态都得判断是否为紧急状态,导致程序变得非常的繁琐,后来经思考才将紧急信号作为按键输入,这样一来程序变得简练了,不必每个状态都加上紧急状态。之后经过我们小组的努力修改和调试,最终完成了洗衣机主程序。洗衣机的仿真如以下列图如图4-1所示,rst置高电平,控制器复位,rst低电平后,add按下两次,设置循环次数为2,按下start后置为高电平,洗衣机开场工作。图4-1洗衣机正常运行的仿真图如图4-2所示,紧急状态发生,en变为高电平,洗衣机暂停工作,电机停顿运转,紧急状态完毕后,恢复原状态。图4-2紧急暂停仿真图如图4-3所示,紧急暂停完毕,en恢复低电平,再次开场工作,进

10、入下一循环。图4-3紧急状态完毕,状态恢复五、设计结论1通过设计,实现了一个能够实现洗衣机在按下add设置洗衣次数后按下start洗衣机开场待机5s待机灯亮正转60s待机灯灭,正转灯亮待机5s正转灯灭,待机灯亮反转60s待机灯灭反转灯亮的四种根本状态,并且可用tim显示循环次数,当遇到紧急状态时可翻开紧急开关en,暂停洗衣机alarm灯亮的工作。当洗衣机循环次数递减到0时洗衣机自动报警,alarm灯亮。2设计体会:通过这次课程设计使我发现了很多自己在EDA学习中被忽略的问题,一些重点。从一次次的程序的调试中发现了自己在程序设计中的弱项,为自己敲了一个警钟。更是我充分的认识到不断学习、不断探索的

11、重要性。通过查阅其它资料丰富了我们的知识,是我们所能学到的。东西不仅仅是局限于课堂上,加强了我们自主学习的积极性。并且从同学的相互交流中弥补了自身的弱点。形成了一种你争我赶的良好学风。因为这次课设题目的新颖,更提高了我们的自主创新能力,大幅的提高了我们的学习效率,快速的实现了学以致用的目的。在整个设计工过程中,尤其是设计之前,一定要有整体的逻辑思路;然后在分块解决。同样在检测的过程中,要学会分模块检测,这一点是很重要的,会起事半功倍的效果。小组成员之间要及时沟通,分享思路及想法,不断改良,成员之间还要互相现任,还要有耐心。总之,通过这次课设我受益匪浅。3)3:系统工程图及洗衣机效果展示图如以下

12、列图:图5-1 至图5-6 所示图5-1六、DE2 管脚分配说明图6-1七、参考文献1 夏宇闻. Verilog数字系统设计教程(第3版) . 航空航天. 2021 .2 夏宇闻. Verilog嵌入式数字系统设计教程. 航空航天. 2021 .八、附录附录1:分频模块此处选取50 分频,其余分频模块省略module fenping50(clockin,clockout);input clockin;output clockout;reg 9:0count;reg clockout;parameter N = 24;/改变N 的值可以显示任意偶分频always (posedge clockin

13、) /clockin 上升沿触发beginif(count = N)begincount = 3b000;clockout = clockout;/counter =24 的时候clockout 实现一次翻转endelsecount = count + 3b001;endEndmodule附录2:七段数码管显示模块module seg7(code,display); input 3:0code; output6:0display; reg 6:0display; always(code) begin case(code) 4b0000: display = 7b1000000; / 0 4b0

14、001: display = 7b1111001; / 1 4b0010: display = 7b0100100; / 2 4b0011: display = 7b0110000; / 3 4b0100: display = 7b0011001; / 4 4b0101: display = 7b0010010; / 5 4b0110: display = 7b0000011; / 6 4b0111: display = 7b1111000; / 7 4b1000: display = 7b0000000; / 8 4b1001: display = 7b0011000; / 9 defaul

15、t : display=7b1000000; /F endcase endEndmodule附录3:洗衣机主程序模块module washer(clk,rst,en,start,add,fore,back,numa,numb,alarm,led,tim); input clk,rst,start,add,en; /en为紧急状态信号 output reg fore,back,alarm; /display led,wait:led0,fore:led1,back:led2 output reg3:0numa,numb,tim; /numa为倒计时个位,numb为倒计时十位 output reg

16、2:0led; reg 3:0state; reg 3:0count; parameter s0=4b0001, s1=4b0010, s2=4b0100, s3=4b1000; always(posedge add or posedge rst) /循环次数count设置 begin if(rst) count=1b0; else begin if(start=0) begin if(count15) count=count+1b1; else count=1b0; end end end always(posedge clk or posedge rst) begin if(rst) /系

17、统复位 begin back=1b0; fore=1b0; numa=4b0000; numb=4b0000; state=s0; led=3b001; alarm=1b0; end else begin if(!en & start) /start为1,en为0那么正常工作 begin alarm0,开场工作 begin case(state) s0:begin if(numb=0 & numa=0) /时间为0,状态转移 begin state=s1; numa=4b0100;/4 numb=4b0000;/0 led=3b001; back=1b0; fore=1b0; end else

18、 begin state=s0; led=3b100; back=1b0; fore=1b0; end end s1:begin if(numb=0&numa=0) begin state=s2; numa=4b1001;/9 numb=4b0101;/5 back=1b0; fore=1b1; led=3b010; end else begin state=s1; led=3b001; back=1b0; fore=1b0; end end s2:begin if(numb=0&numa=0) begin state=s3; numa=4b0100;/4 numb=4b0000;/0 bac

19、k=1b0; fore=1b0; led=3b001; end else begin state=s2; back=1b0; fore=1b0; led=3b010; end end s3:begin if(numb=0&numa=0) begin state=s0; numa=4b1001;/9 numb=4b0101;/5 led=3b100; back=1b1; fore=1b0; end else begin state=s3; back=1b0; fore=1b0; led=3b001; end end default:state0) /倒计时控制局部 begin if(numa=0

20、) /numa为0,那么numa赋值9,numb自减1 begin numa=9;/9 numb=numb-1b1; end else numa=numa-1b1; end else if(numa=0 & numb=0 & state=s0 & !en & led=3b100) begin /一次循环完毕tim自减1 tim=tim-1b1; end end else begin back=1b0; fore=1b0; numa=4b0000; numb=4b0000; alarm=0; state=s0; led=3b001; end end else if(en & start) /en为1,进入紧急状态 begin back=1b0; fore=1b0; alarm=1b1; end else /start为0,给循环次数tim赋值 begin tim=count; numa=0; numb=0; alarm=1b0; end end end endmodule

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

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