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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

本文(基于vhdl语言的智能空调控制器的设计报告.docx)为本站会员(b****6)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

基于vhdl语言的智能空调控制器的设计报告.docx

1、基于vhdl语言的智能空调控制器的设计报告数字系统设计与硬件描述语言期末考试作业题目: 智能空调控制器的设计 学院: 电子信息工程学院 专业: 电子信息工程 学号: 3012204273 姓名: 王欢 2015-01-09一、 选题设计描述1. 功能介绍对于这次的期末课程作业,我选择的是智能空调控制器的设计。众所周知,日常使用的空调至少具有定时、控温、模式选择等基本功能。我设计的这个智能空调主要能实现以下几种功能:四种模式选择:强风、弱风、自然风、睡眠状态。工作时间设定:半小时、一小时、一个半小时、两小时。工作温度设置:可以自由设置温度,然后将室温与设置的温度进行比较,当室温低于设置的温度时,

2、空调温度升高;当室温高于设置的温度时,空调温度下降;并且当室温达到设置的温度时,温度就不再变化。 2. 算法简介 按照上述的几种功能介绍,我将分几个模块依次介绍: 模式选择模块:因为有4种模式,所以用一个4路数据选择器就可以实现。“00”、“01”、“10”、“11”分别代表“强风”、“弱风”、“自然风”、“睡眠状态”。 时间设置模块:半个小时即三十分钟,可以用一个三十进制的计数器来实现定时,一个小时即六十分钟,可以用一个六十进制的计数器实现,依此类推即可。 温度设置模块:室温与设置温度的比较需要用比较语句来实现,空调温度的增减都需要用计数器来实现,所以这是一个包含比较和计数两种功能的电路。

3、开关模块:我采用的是一个是三输入开关控制器,三个输入分别代表模式选择、时间设置、温度设置,只要其中有一个模块开始工作,那么开关就打开,空调就开始工作。 显示模块:上述几个模块都需要这个模块来进行显示。用两个BCD-七段译码器来分别显示显示十位和个位。就可以看出温度和时间的变化。二、 程序源代码及说明模式选择,四选一数据选择器:仿真见图一LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;ENTITY xuanze IS PORT(a,b,c,d,s1,s2 : IN STD_LOGIC; -a,b,c,d是数据端口, s1和s2是选择端口。 y : OUT ST

4、D_LOGIC); END ENTITY xuanze; ARCHITECTURE one OF xuanze IS SIGNAL ss : STD_LOGIC_VECTOR (0 TO 1); BEGIN ss y y y y NULL; END CASE; END PROCESS; END ARCHITECTURE one; 定时半小时,三十进制计数器:仿真见图二library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity thirty is port(clk,clr:in std_lo

5、gic; gewei,shiwei:out std_logic_vector(3 downto 0); -个位和十位 dingshi:out std_logic); -定时脉冲end entity; architecture arc of thirty is signal jinwei: std_logic; -进位begin process(clk,clr) variable ge:std_logic_vector(3 downto 0); begin if clr=1 then ge:=0000; -clr有清零作用 elsif clk event and clk=1 then if ge

6、=1000 then ge:=ge+1; jinwei=1; -当个位加到“1000” 即第九个时钟上升 时产生一个进位。 elsif ge=1001 then ge:=0000; -个位加到9之后返回0 jinwei=0; else ge:=ge+1; jinwei=0; end if; end if; gewei=ge; end process; process(clk,clr,jinwei) variable shi:std_logic_vector(3 downto 0); Begin if clr=1 then shi:=0000; else if clk event and clk

7、=1 then if jinwei=1 then if shi=0010 then shi:=0000; -十位从“0000”变成“0010”, 即经过了30 个时钟脉冲,然后 返回“0000”。同时产生一个定 时脉冲。 dingshi=1; else shi:=shi+1;dingshi=0; end if; end if; shiwei=shi; end if; end if; end process; end arc;定时一小时,六十进制计数器:仿真见图三library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsig

8、ned.all; entity sixty is port(clk,clr:in std_logic; gewei,shiwei:out std_logic_vector(3 downto 0); -个位和十位 dingshi:out std_logic); -定时脉冲end entity; architecture arc of sixty is signal jinwei: std_logic; -进位begin process(clk,clr) variable ge:std_logic_vector(3 downto 0); begin if clr=1 then ge:=0000;

9、-clr有清零作用 elsif clk event and clk=1 then if ge=1000 then ge:=ge+1;jinwei=1; -当个位加到“1000” 即第九个时钟产生 一个进位。 else if ge=1001 then jinwei=0;ge:=0000; -个位加到9之后返回0 else ge:=ge+1;jinwei=0; end if; end if; end if; gewei=ge; end process; process(clk,clr,jinwei) variable shi:std_logic_vector(3 downto 0); Begin

10、if clr=1 then shi:=0000; elsif clk event and clk=1 then if jinwei=1 then if shi=0101 then shi:=0000;dingshi=1; -十位从“0000”变成“0101”, 即经过了60 个时钟脉冲,然后 返回“0000”。同时产生一个定 时脉冲。 else shi:=shi+1;dingshi=0; end if; end if; else shi:=shi; end if; shiwei=shi; end process; end arc; 温度控制,仿真见图四和图五library ieee;use i

11、eee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity wendu is -根据室温和设定温度的比较判断温 度是上升还是降低port (clk,en: in std_logic; -clk 时钟 en 开关/使能端 shiwei,gewei,romeshi,romege: in std_logic_vector(0 to 3); -shiwei 设置温度的十位 ; gewei 设置温度的个位; romeshi 设置室温的十位 ; romege 设置温度的个位。 shiout,geout:out std_logic_vector

12、(0 to 3); - shiout输出温度的十位 geout输出温度的个位end wendu;architecture behave of wendu issignal hs,hg:std_logic_vector(0 to 3);beginprocess(clk,en,shiwei,gewei,romeshi,romege,hs,hg)beginif en=0 then hs=romeshi;hg=romege;elsif clkevent and clk=1 thenif hs&hgshiwei&gewei then -室温低于设置的温度,温度上升if hg1001 then hg=hg

13、+1;else hg=0000;hsshiwei&gewei then -室温高于设置的温度,温度下降if hg0000 then hg=hg-1;else hg=1001;hs=hs-1;end if;else hs=shiwei;hg=gewei; -判断温度上升或下降到设置的温度,保持温度显示不变end if;end if;shiout=hs and en&en&en&en;geout=hg and en&en&en&en; -输出温度end process;end behave; 开关控制器:仿真见图六library ieee; use ieee.std_logic_1164.all;

14、 use ieee.std_logic_unsigned.all; entity kaiguan is port(shuru1,shuru2,shuru3,stop:in std_logic; diandongji:out std_logic); end entity; architecture one of kaiguan is begin process(shuru1,shuru2,stop) begin if shuru1=1 or shuru2=1or shuru3=1 then diandongji=1; -三输入中只要有一个为1,那开关就打开。 elsif stop=1 then

15、diandongji=0; - end if; end process; end one;七段译码器:仿真见图七library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity xianshi is port (shuzi:in std_logic_vector(3 downto 0); shuchu:out std_logic_vector(6 downto 0);end xianshi;architecture a of xianshi i

16、sbeginwith shuzi selectshuchu=1111110 when 0000, 0110000 when 0001, 1101101 when 0010, 1111001 when 0011, 0110011 when 0100, 1011011 when 0101, 1011111 when 0110, 1110000 when 0111, 1111111 when 1000, 1111011 when 1001, 0000000 when others; -将四位二进制数通过七段译码器显示出来end a;三、 仿真结果及分析图一这是一个四选一数据选择器,“s2s1”的“0

17、0”、“01”、“10”、“11”分别可以选择a,b,c,d四个模式,即题目中的强风、弱风、自然风、睡眠四种状态。图二 这是一个三十进制计数器,由仿真波形可以看到,每经过一个时钟脉冲,个位加一,每经过10个时钟脉冲,十位加一,每经过30个时钟脉冲产生一个定时脉冲,同时十位和个位都归零。图三 这是一个六十进制计数器,由仿真波形可以看到,每经过一个时钟脉冲,个位加一,每经过10个时钟脉冲,十位加一,每经过60个时钟脉冲产生一个定时脉冲,同时十位和个位都归零。图四图四中,室温为30度,设置的温度为25度,所以温度下降至25度后并维持在25摄氏度。 图五 图五中,室温为10度,设置的温度为25度,室温

18、低于设置的温度,所以温度上升,并且上升到25度后维持在25度。图六 这相当于一个三输入或门和另一个非门相与。三个shuru中只要有一个为1,且stop为0,则开关打开为1;三个shuru和stop都为0时显示高组态;其余情况则显示0。图七 BCD-七段译码显示器,将输入的四位二制数编译成七段数码管的明暗。4、心得体会 首先,我想分享一下我做这次期末课程设计的体会与感想。老师给了一个大致的范围,也就是家用电器的控制器的设计。通过观察思考,我发现各种家电虽然在我们的生活中各司其职,但是它们的控制原理却是极为相似的。基本都包括:不同模式选择(强洗弱洗、强风弱风.)、设定工作时间、设置工作功率的大小(

19、高低温度、大小转速.)等等。这些不同的功能的实现恰好用到了第三章所学的各种逻辑电路,包括组合逻辑电路,如门电路、编码器、译码器、比较器、多路选择器、加法器等;以及时序逻辑电路,如触发器、寄存器、计数器等。对作业有了整体的了解之后,我选择了常见的智能空调作为设计题目。我先根据要实现的不同功能选择合适的电路,再根据电路编写程序,这样按部就班,循序渐进地完成。在设计第一个电路4路选择器的时候就遇到了麻烦。编译的时候一直说第一行程序错误,可是我第一行程序只是“library ieee”而已,我又仔细检查了其他程序,完全没有问题。这让我一开始就遭遇了瓶颈。在进行了各种程序的调适之后,我决定用同学的电脑试

20、试,一样的程序,一样的工程名字,然后一下子就编译成功了。可是换回我的电脑还是不行。我想这可能就是随机差错了吧。最后,我重新写了代码,把输入的标准逻辑矢量类型s(0 to 1) 变成输入两个标准逻辑位类型s1和s2,在结构中再用s=s2&s1变回矢量类型,这样才终于编译成功了。这几乎耗费了我一半的时间,其余的模块电路的设计几乎都很顺利,出现的错误也很容易被纠正过来。机器往往比人要更加严格,任何一个小小的错误都逃不出它的法眼,这要求我在编写程序的时候格外认真仔细,很大程度地帮我改正了粗心大意的毛病。对于数字系统设计与硬件描述语言这门课程,我还是受益颇深的。相比于C+等软件语言,VHDL这种硬件语言更加简洁直观。通过对这门课程的学习,我不仅加深了对VHDL语言的了解,而且熟练了对QUARTUS . II软件的使用。老实讲,我个人非常喜欢张老师。进入大学以后,很少遇到像张老师这样吐字清晰、声音洪亮,讲课富有激情的老师了。在VHDL的课上,我更容易专心致志地听讲,聚精会神地思考。在平时的实验中,我也能切实地感受到自己的一次次进步,毕竟,实践才是检验真理的唯一标准。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2