EDA简易洗衣机设计_第1页
EDA简易洗衣机设计_第2页
EDA简易洗衣机设计_第3页
EDA简易洗衣机设计_第4页
EDA简易洗衣机设计_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、目录摘要3绪论4第一章 设计的总体构思51、1 设计的基本原理51、1、1 模块方框图51、2 总体的原理图及其解析61、2、1 原理图61、2、2 原理图解析71、3 总体设计的源代码讲解7第二章 设计的分立模块解析82、1 定时输入模块82、1、1 定时输入模块源代码讲解82、1、2 定时输入模块框图82、2 洗衣机时间控制模块82、2、1 洗衣机时间控制模块源代码讲解92、2、2 洗衣机时间控制模块框图92、3 倒计时模块92、3、1 倒计时模块源代码讲解92、3、2 倒计时模块框图92、4 洗衣机状态控制模块102、4、1 洗衣机状态控制模块源代码讲解102、4、2 洗衣机状态控制模块

2、框图102、5 数码管显示模块102、5、1 数码管显示模块源代码讲解102、5、2 数码管显示模块框图112、6 报警模块112、6、1 报警模块源代码讲解112、6、2 报警模块框图11第三章 仿真结果123、1 定时输入模块仿真结果123、2 洗衣机时间控制模块仿真结果123、3 倒计时模块仿真结果133、4 洗衣机状态控制模块仿真结果133、5 数码管显示模块仿真结果143、6 总体设计仿真结果14小结15谢辞16附录17附录1 定时输入模块源代码17附录2 洗衣机时间控制模块源代码18附录3 倒计时模块模块源代码18附录4 洗衣机状态控制模块源代码20附录5 数码管显示模块源代码21

3、附录6 报警模块源代码22附录7 总体设计源代码:22摘要此次的课程设计的题目是简易洗衣机控制器设计,这次的eda课程设计主要就是掌握eda技术在一些方面的运用。掌握eda技术及cpld/fpga的开发流程、自顶向下的设计思想和系统设计的分析方法,以及洗衣机控制器的工作原理。本次的设计已基本完成要求,待机5s 正转10s 待机5s 反转10s ,如此循环。并用3个led灯和7段数码管分别表示其工作状态和显示相应工作状态下的时间,能够自行设定洗衣机的循环次数,利用循环语句来实现。到达所设定的循环次数后报警提示,报警就是将敏感变量赋给报警输出量。虽然对于设计的东西不是很了解,不过,大致的思路已经了

4、解。此篇课程设计报告大致包括对于此次设计的总体的原理和思路,以及设计的每个模块分析,电路图,源程序的描述,仿真结果的展示。能够将所学知识运用到此次的课程设计当中,对于之前的一些理论知识也是一种深刻认识。绪论随着电子技术获得了飞快的发展,在其推动下,现代电子产品几乎渗透了社会的各个领域,有力地推动了社会生产力的发展和社会信息化程度的提高,同时也使现代电子产品性能进一步提高,产品更新换代的节奏也越来越快。eda,这个以大规模可编程逻辑器件为设计载体,以硬件描述语言为系统逻辑描述的主要表达方式,以计算机、大规模可编程逻辑器件的可开发软件及实验开发系统为设计工具,通过有关的开发软件,自动完成用软件的方

5、式设计的电子系统到硬件系统的逻辑编译、逻辑化简、逻辑分割、逻辑综合及优化、逻辑布局布线、逻辑仿真,直至完成对于特定目标芯片的适配编译、逻辑映射、编程下载等工作,最终形成集成电子系统或专用集成芯片的一门新技术在现代生活中也越发的重要。面对当今飞速发展的电子产品市场,电子设计人员需要更加实用、快捷的eda工具,实用统一的集成设计环境,改变传统设计思路,即优先考虑具体物理实现方式,而将精力集中到设计构思、方案比较和寻找最优化设计等方面,以最快的速度开发出性能优良、质量一流的电子产品。今天的eda工具将向着功能强大、简单易学、使用方便的方向发展。本次设计所用到的硬件描述语言是vhdl语言。硬件描述语言

6、vhdl是eda技术技术的重要组成部分。vhdl是very high speed integrated circuit hard description language的简称,作为一个规范语言和建模语言,随着vhdl的标准化,出现一些支持该语言的行为仿真器。不过,vhdl不仅可以作为系统模拟的建模工具,而且可以作为电路系统的设计工具,可以利用软件工具将vhdl源码自动地转化为文本方法表达的基本逻辑元件连接图,即网表文件。此次的课程设计正是利用eda技术及其运用来实现一个简易的洗衣机控制器的设计。将eda技术拓展,将理论联系实际。为了更好地运用eda知识,也为了掌握vhdl语言的。此次的课程设

7、计以eda技术为基础,以vhdl语言为硬件语言,编写一段程序来实现简易洗衣机的控制。第一章 设计的总体构思1、1 设计的基本原理此次制作的的简易洗衣机控制器设计用三只led灯来显示洗衣机正转、反转、待机的三种状态。然后用电子定时器控制洗衣机设定的工作时间,以及正传、反转以及待机运行时间的控制。同时用两个数码管显示洗涤的预置时间(按秒数计数),按倒计时方式对洗涤过程作计时显示,待机5s 正转10s 待机5s 反转10s ,如此循环,直到时间到,循环结束;洗涤过程由“开始”信号开始;最后定时到则停止,同时用蜂鸣器发出提示音(不过,此次的设计图中并没有画出蜂鸣器的部分)。然后是通过各种开关组成控制电

8、路,使洗衣机实现程序运转。直至结束为止(也即循环次数到了)。包括定时输入模块、电机时间控制模块、倒计时模块、电机状态控制模块、数码管显示模块、报警模块。1、1、1 模块方框图 核心控制电路按键控制模块电机控制模块数字显示模块 报警电路定时输入模块 倒计时模块图 1 设计方框图1、2 总体的原理图及其解析1、2、1 原理图1、2、2 原理图解析首先,是有五个输入的。shu和hshu是设置时间的,pinname18是相当于是允许输入的,timemiao是脉冲的设置,而另一个开关kaiguan就是本设计的开关。输出也是有五个的。gewei和shiwei是一个数码管显示时间的十位,一个数码管显示个位。

9、虽然本次的设计只有5s和10s两种显示的时间,也用两个数码管来显示时间。deng是显示是正转、反转、待机的状态,dianji是显示当下处于什么状态的(00代表正转,01代表待机,11代表反转)。ct用来检测是否时间达到零,达到零则为1,否则则为0。对于shuru这个模块来说,dout和dout1的输出是由shu和hshu的上升沿来控制的,同时dout和dout1又是hui和hui1的一个输入。而washmachine的输入是一个脉冲,输出c和d又分别是hui和dianji的输入。而kaiguan是hui和hui1的输入,控制倒计时的模块,用来随时停止计时。1、3 总体设计的源代码讲解此次设计的

10、总体的源代码是将各个模块加进来,联合定时输入模块、电机时间设置模块、倒计时模块、电机状态控制模块、数码管显示模块,设计出一个简易洗衣机控制器,为了不让那些输入输出量重名,将一些本来要重名的变量设置了一下。同时对于,信号量,也是集齐所有模块的所有的的信号量来集中的。本次的源代码是将各个模块的源代码集中到一起的。是对那些模块的调用,用component来实现调用的。然后对于实现简易洗衣机的循环,用一个循环语句来实现,用clk来当做信号变量贯穿始终。对于源代码中的信号量都是各个模块中的信号量。count都是分得很清楚,以免有所重复。所用的循环语句是loop语句,loop语句就是循环语句,它可以使所包

11、含的一组顺序语句被执行,其执行次数可由设定的循环参数决定。loop语句的常用表达方式有两种,此次所用的是单个loop语句,其语法如下:loop 标号: loop 顺序语句end loop loop 标号这种循环方式是一种最简单的语句形式,它的循环方式需引入其他控制语句(如exit语句)后才能确定;“loop标号”可以任意选。此次的源代码中,用a来当变量,每执行一次,a就加1,当a大于15时就跳出循环,这也是使得本次设计的简易洗衣机能够循环的次数不超过15次,这也是设计任务书要求,所以说,源代码在功能上基本可以实现要求,包括待机,接着正转,再是待机,又是反转,以此循环15次。第二章 设计的分立模

12、块解析讲解的依次是定时输入模块、电机时间控制模块、倒计时模块、电机状态控制模块、数码管显示模块。以及顺带介绍一下要事先报警应如何操作。2、1 定时输入模块此模块是为了实现洗衣机能够定时输入的功能,保证洗衣机能够正常运行。当din为1的时候是无效时刻,而且shu是上升沿时dout加1,hshu是上升沿时dout1加1。2、1、1 定时输入模块源代码讲解首先,是定义输入输出量,有三个输入量,shu和hshu以及din,输出量有两个,分别是dout和dout1,信号量有两个,分别是count和count1。信号量在在源代码中充当中间量。最后是要把count和count1分别赋值给dout和dout1

13、的。输入量shu和hshu分别决定count和count1,当shu和hshu是上升沿时,count和count1加1,count是从0到9,接着又是到0开始循环,而count1是从0到6,接着是到0继续循环。不过,当din为1时count和count1都是“1111”,也就是说,当din为1时相当于阻止此模块运行。2、1、2 定时输入模块框图2、2 洗衣机时间控制模块此模块由一个累加器和一个命令控制器组成,用来实现预置洗涤时间的功能,洗涤时间以分钟数为单位,用户可根据自己的需求来设定洗涤时间的长短。一开始是想说,在时间设置模块设置15次的循环时间,这样也就避免让时间设置方面那样麻烦,不过,此

14、次的源代码是将此模块算在当中的。2、2、1 洗衣机时间控制模块源代码讲解 首先来说,就是此模块的输入输出量都是很简单的,有一个输入,两个输出,clk输入,也即脉冲输入,d和c输出。信号量count2(有三位)和shi。而clk是上升沿时shi则加1,shi是从0到60的,当shi为60时,c为1,否则,c则为0.count2也是从0到5的,当count2为5时,d为1,否则d则为0.2、2、2 洗衣机时间控制模块框图 2、3 倒计时模块由于洗衣机有工作时间,必须要一模块来控制它的工作时间范围,当洗衣机开始工作后,减法计数器即会实现减数功能,直到时间减到零,洗衣机便停止工作。2、3、1 倒计时模

15、块源代码讲解首先此模块是有两部分的,有十位的还有个位的表示。对于这两部分,模式基本一致。输入量有三个,jian、reset和din3,0,din3,0为定时输入模块的输出dout3,0。信号量有count3,0。jian就是控制倒计时的量,当jian的上升沿到来,则count3,0开始减1,count3,0从9开始减到0,然后再循环,不过这是对于个位输入来说,对于十位来说,则不用考虑。reset是有开关来控制的。当reset为1时,此模块是不能工作的,就是复位。2、3、2 倒计时模块框图2、4 洗衣机状态控制模块此模块是为了实现能够控制洗衣机电机时间达到正转、反转、待机的功能。让观看者在外部能

16、够观察到洗衣机当下正处于什么状态,而且,此外还有灯的部分,所以,通过灯也可以辨认出洗衣机的工作状态。2、4、1 洗衣机状态控制模块源代码讲解此模块的输入量只有一个,就是cc,输出量有两个,dd和dneg,信号量为count、dian和deng1,dd=dian,而deng=deng1。当cc的上升沿到来时,count则加1,count是从0到5循环的。count的变化也就是会决定待机、正转、反转的时间,dian的值则是代表待机、正转、反转的,01代表正转,此时deng为100,也即亮灯表示正转;00代表待机,此时deng为010,也即亮灯代表待机;11代表反转,此时deng为001,也即亮灯代

17、表反转。2、4、2 洗衣机状态控制模块框图2、5 数码管显示模块根据课程设计要求,必须将洗衣机的工作状态及工作时间在数码管和指示灯上显示出来,此模块是用来控制洗衣机的工作状态及工作的频率,并把工作状态及工作时间显示出来。2、5、1 数码管显示模块源代码讲解对于此模块没有很多该讲的地方,它就是,一个输入,一个输出,输入是由倒计时模块的输出来充当数码管模块的输入的。输出直接接到数码管上显示。此次用的是七个引脚的数码管。而且有两个数码管。一个显示十位,一个显示个位。对于数码管的编码,是按照数码管显示的规律来实现的。2、5、2 数码管显示模块框图2、6 报警模块当洗涤时间结束时,洗衣机就会自动发出警报

18、声,以此提醒用户洗涤工作完成,此模块就是实现此功能。2、6、1 报警模块源代码讲解此模块有两个输入,一个输出,输入是脉冲和一个量。当finishc按下时,也就是提吃报警,然后就响应报警,接着,输出warning就连接到clk,也就是脉冲上面,主要提出了报警,则只要此时clk还在输入,那就会驱动蜂鸣器来发出警报声,此时也就实现了报警。当没有警报时,也即洗衣机正常工作的情况,warning就为0,也就不会驱动蜂鸣器,也不会报警。报警模块就是这样实现的。不过,此次的设计并没有将蜂鸣器考虑在内,而且,总体的程序也没有将报警模块加入,只是最后陈述一下该如何实现报警。2、6、2 报警模块框图报警模块输出-

19、蜂鸣器第三章 仿真结果3、1 定时输入模块仿真结果3、2 洗衣机时间控制模块仿真结果3、3 倒计时模块仿真结果3、4 洗衣机状态控制模块仿真结果3、5 数码管显示模块仿真结果3、6 总体设计仿真结果小结此次的课程设计是做简易洗衣机控制器,对于此次的设计我不能说完成得有多好,只能说也算是尽力了。对于一些功能的实现,也完成得不是很好,虽然说如果能顺利实现的话是基本可以达到目标,但是把程序,也就是源代码输入到quartus ii后发现在软件上不能编译,经过一系列的检查,我本人认为是选择芯片上出现得问题最大,所以此次的源代码基本上在软件上不能实现。不过,虽然此次的设计把仿真图和结果附上,是借鉴了别的论

20、文的一些资料。对于此次的课程设计,我最大的收获就是能够基本理解那些源代码的意思,至少那些源代码我都能看懂,而且我还对于那些源代码我都有认真地学习以及思考,我对于这次的课程设计我是报以很认真的态度。而且,就是对于那款软件我都有尽我所能地去学习,包括查资料,看视频来学习。对于我的课程设计结果,不能说是很好,但是我认为只要认真地学习了就不会辜负这次难得的机会,这个学期学习eda技术及其运用,我虽说不是掌握得很好,但是我有学会关于它的基本知识,对于硬件描述语言vhdl语言也有所掌握,加上这次的课程设计所用的就是vhdl语言,就对vhdl语言更进一步的了解。总的来说,此次的课程设计完成算是还行的,而且也

21、基本懂得了这次的课程设计的意义,也收获了不少,不仅是理论知识的长进,而且对于将理论联系实际的了解也更深刻了。通过这次课程设计,自己也懂得了不少。也给自己提了个醒,以后的学业路上也要更加努力,只要真的去努力做一件事情,才会有所收获。谢辞这一次的课程设计最终完成了,首先要感谢老师对我们的耐心地辅导,以及讲解一些专业知识,跟感谢朱路老师在上eda课程设计课上仔细地讲解vhdl语言,以及对于各种习题的讲解,才使得我们对于eda这门课程掌握的那么深刻,对于硬件语言vhdl有了个更深的了解,以致于这次课程设计成功。还有就是要感谢同学的帮助,对于quartus ii的运用刚开始一点都不了解,但是,经过有些同

22、学的帮助,对于这个软件的掌握基本算是入门了,特别要感谢一个同学上传一个学习quartus ii的视频,看过那个视频后对于quartus ii的掌握有多加了一份。所以,此次的课程设计,正是由于同学们和老师的帮助,才会使得这次的课程设计这么顺利,对于你们,我表示深深的感谢,谢谢你们!附录附录1 定时输入模块源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity shuru is port ( shu, hshu, din : in

23、std_logic; dout3,0 : out std_logic_vector (3 downto 0); dout13,0 : out std_logic_vector (3 downto 0); );end shuru;architecture behave of shuru issignal count, count1 :std_logic_vector (3 downto 0); begin process (shu,hshu,din) begin dout=count; dout1=count1; if din=1 then dout=1111;dout1=1111; elsif

24、 rising_edge(shu) then if count=1001 then count=0000; else count=count+1; end if; end if; if rising_edge(hshu) then if count1=0110 then count1=0000; else count1=count1+1; end if; end if; end process;end behave;附录2 洗衣机时间控制模块源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use

25、ieee.std_logic_unsigned.all;entity washmachine is port (clk : in std_logic; c: out std_logic; d : out std_logic; );end washmachine;architecture miao20 of washmachine is signal count2: std_logic_vector (3 downto 0); signal shi: integer range 0 to60; begin process(clk)begin if rising_edge(clk) then if

26、 shi=60 then shi=0;c=1; else shi=shi+1;c=0; end if; if count2=101 then count2=000; d=1; else count2=count2+1; d=0; end if; end if; end process;end miao20;附录3 倒计时模块模块源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity hui is port (jian1 : in

27、 std_logic; reset1 : in std_logic; din3,01 :in std_logic_vector (3 downto 0); dout3,01 : out std_logic_vector (3 downto 0); c1 : out std_logic; );end hui;architecture behave of hui issignal count 3: std_logic_vector (3 downto 0); begin dout3,0 1= count3;process(jian1,reset1,din3,01) begin if reset1=

28、1 then count 3= din 3,01; c1=0; elsif rising_edge(jian1) then if count3 = 0000 then count 3= 1001; c1=1; else count 3= count3-1; c1=0; end if; end if; end process;end behave;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity hui is port (jian

29、2 : in std_logic; reset2 : in std_logic; din3,02 :in std_logic_vector (3 downto 0); dout3,02 : out std_logic_vector (3 downto 0); c2 : out std_logic; );end hui1;architecture behave of hui1 issignal count 4: std_logic_vector (3 downto 0); begin dout3,0 2= count4;process(jian2,reset2,din3,02) begin if

30、 reset2=1 then count 4= din 3,02;c2=0; elsif rising_edge(jian2) then if count4 = 0000 then count 4= 1001; c2=1; else count 4= count4-1; c2=0; end if; end if; end process;end behave;附录4 洗衣机状态控制模块源代码library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;useieee.std_logic_unsigned.all;en

31、tity dianji is port (cc : out std_logic; dd : out std_logic_vector (1 downto 0); deng : out std_logic_vector (2 downto 0); );end dianji;architecture behave of dianji is signal count 5: std_logic_vector (2 downto 0); signal dian : std_logic_vector (1 downto 0); signal deng1 : std_logic_vector (2 down

32、to 0);begin dd = dian; deng=deng1;process(cc)begin if rising_edge(cc) tnen if count5= 101 then count5 = 000; else count 5= count5+1; end if; if count5=000 then dian=01;deng1=100; elsif count5=010 then dian=00;deng1=010; elsif count5=011 then dian=11 ;deng1 dout6,0 dout6,0 dout6,0 dout6,0 dout6,0 dou

33、t6,0 dout6,0 dout6,0 dout6,0 dout6,0 dout6,0=1111111;end case;end process;end behave;附录6 报警模块源代码library ieee; use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity warning is port(clk: in std_logic; finishc: in std_logic; warn: out std_logic);end warming;arc

34、hitecture six of warming is begin process (clk) begin if finishc=1then warn=clk; else warn=0;end if;end process;end;附录7 总体设计源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity washer isport ( shuin, hshuin, pin : in std_logic; time : in st

35、d_logic; kaiguan : in std_logic; gewei : out std_logic; shiwei : out std_logic; ct : out std_logic; dianji : out std_logic; deng2,0 : out std_logic; );end entity washer;architecture behave of washer is component shuru port ( shu, hshu, din : in std_logic; dout3,0 : out std_logic_vector (3 downto 0);

36、 dout13,0 : out std_logic_vector (3 downto 0); ); end component; component washmachine port (clk : in std_logic; c: out std_logic; d : out std_logic; ); end component; component hui port (jian1 : in std_logic; reset1 : in std_logic; din3,01 :in std_logic_vector (3 downto 0); dout3,01 : out std_logic_vector (3 downto 0); c1 : out std_logic; ); end component; component hui1 port (jian2 : in std_logic; reset : in std_logic; d

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论