




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数字系统设计与硬件描述语言期末考试作业题目: 空调控制器的设计 学院: 电子信息工程学院 专业: 物联网工程 学号: 3014204328 姓名: 刘涵凯 2016-12-14一、 选题设计描述1. 功能介绍设计内容为空调控制器,可实现空调的开关、模式切换、温度控制、风速控制、定时设置。模式默认为制冷,可切换为制热、除湿。温度默认为26度,可按“温度+”、“温度-”调节,每次调节1度,最高30度,最低16度。风速默认为中挡,可按“风速+”、“风速-”切换为低挡、高挡、睡眠模式。睡眠模式中,在低挡与停止间循环。定时设置默认关闭,开启时默认30分钟,可按“定时+”、“定时-”调节,每次调节30分钟
2、,最高24小时,最低30分钟。定时倒计时结束时,关闭空调。定时开启时,可按“取消定时”关闭定时。空调控制器模拟界面如下:2. 算法简介1)空调控制器 其输入与输出在主程序kt中已标明,在此不做介绍。2)单脉冲模块这是非常重要以及核心的模块。当a产生一个上升沿时,输出一个单脉冲,脉冲将持续到经过一个clk上升沿后的clk下降沿。3)开关模块a连接空调的开关,b连接开关控制模块的输出,c为空调各工作模块的开关信号,d连接数码管显示开关状况。当定时时间结束,b输入一个单脉冲,空调关闭。4)开关控制模块此模块的作用是保证开关模块能够正常工作。开关打开时,a输入一个单脉冲,重置c。b连接定时模块,当定时
3、结束,b输入一个单脉冲,使c输出1,使开关模块输出05)温度模块a连接开关模块,b为温度+1,c为温度-1,输出为温度的十位和个位。6)风速模块a连接开关模块,b为风速+1,c为风速-1。di,zhong,gao为抵挡、中挡、高挡的状态(无睡眠模式,因为睡眠模式是抵挡-停止模式)。其他连接数码管,显示睡眠模式、抵挡、中挡、高挡的状态。7)模式模块b连接开关模块,c为切换模式,输出类似于模式模块。8)定时模块a连接开关模块,b为定时模块开启,c为取消定时,up、down为定时时间+、-。clk1为空调时钟,clk2为模拟的倒计时时钟(周期1分钟)。clk2周期远大于clk1。当时间倒计时结束时,
4、sw1输出1,使开关控制模块控制开关关闭。其他输出连接倒计时模块。9)倒计时模块a连接开关模块,clk连接定时模块的clk2,输入时间发生变化时,重新倒计时。倒计时结束时,finish输出1,使定时模块的sw1输出1。10)数码管模块a连接开关模块,此为7段译码器。11)计数器模块此为六位计数器。a连接睡眠模式开关,rst为睡眠模式打开时的重置信号,每6次输出一次1。二、 程序源代码及说明1)空调控制器LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY kt IS PORT(swit
5、chin,modeset,fanup,fandown,tempup,tempdown,timerop,timercancel,timerup,timerdown,clk1,clk2: IN STD_LOGIC; -电源开关、模式切换、风速+、风速-、温度+、温度-、定时、取消定时、定时+、定时-、时钟信号、倒计时时钟信号 cools,heats,drys,dis,zhongs,gaos: OUT STD_LOGIC; -通向空调内部的制冷、制热、除湿、抵挡、中挡、高挡状态输出 switchstate,tempd,temps,coolstate,heatstate,drystate,distat
6、e,zhongstate,gaostate,sleepstate,hdstate,hsstate,tdstate,tsstate: OUT STD_LOGIC_VECTOR(6 DOWNTO 0); -由数码管显示的开关、温度、制冷、制热、除湿、抵挡、中挡、高挡、睡眠状态和倒计时剩余时间END ENTITY kt;ARCHITECTURE behave OF kt ISCOMPONENT switch -开关模块 PORT(a,b,clk: IN STD_LOGIC; -b受定时模块的控制,时间减为0时,关闭开关 c: OUT STD_LOGIC; d: OUT STD_LOGIC_VECTO
7、R(3 DOWNTO 0); -输送给数码管 END COMPONENT switch; COMPONENT control -开关控制模块 PORT(a,b,clk: IN STD_LOGIC; c: OUT STD_LOGIC); END COMPONENT control; COMPONENT fan -风速模块 PORT(a,b,c,clk: IN STD_LOGIC; di,zhong,gao: OUT STD_LOGIC; -由于high和low是敏感词汇,所以此处用拼音,可以看到此处没有睡眠模式,是因为睡眠模式其实是抵挡-停止模式 ssleep,sdi,szhong,sgao:
8、OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -不同于发给空调内部的信号,睡眠模式的状态应显示在外 END COMPONENT fan; COMPONENT BCD7 -数码管模块 PORT(a: IN STD_LOGIC; b: IN STD_LOGIC_VECTOR(3 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(0 TO 6) ); END COMPONENT BCD7; COMPONENT pulse -单脉冲模块 PORT(a,clk: IN STD_LOGIC; b: OUT STD_LOGIC); END COMPONENT pu
9、lse; COMPONENT temp -温度模块 PORT(a,b,c,clk: IN STD_LOGIC; -a控制开关,b提高1度,c降低1度 temp1,temp2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT temp; COMPONENT timer -定时模块 PORT(a,b,c,up,down,clk1,clk2: IN STD_LOGIC; sw1: OUT STD_LOGIC; -总开关关闭信号 oh1,oh2,ot1,ot2: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -输送给数码管显示剩余时
10、间 END COMPONENT timer; COMPONENT mode PORT(b,c,clk: IN STD_LOGIC; cool,heat,dry: OUT STD_LOGIC; cool1,heat1,dry1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0); END COMPONENT mode;SIGNAL swa,swb,swc:STD_LOGIC;SIGNAL sigBCD7_1,sigBCD7_2,sigBCD7_3,sigBCD7_4,sigBCD7_5,sigBCD7_6,sigBCD7_7,sigBCD7_8,sigBCD7_9,sigBCD7
11、_10,sigBCD7_11,sigBCD7_12,sigBCD7_13,sigBCD7_14:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINU1: switch PORT MAP(a=switchin,b=swb,c=swa,clk=clk1,d=sigBCD7_1); U2: control PORT MAP(a=switchin,b=swc,clk=clk1,c=swb);U3: fan PORT MAP(a=swa,b=fanup,c=fandown,clk=clk1,di=dis,zhong=zhongs,gao=gaos,ssleep=sigBCD7_2,sd
12、i=sigBCD7_3,szhong=sigBCD7_4,sgao=sigBCD7_5); U4: temp PORT MAP(a=swa,b=tempup,c=tempdown,clk=clk1,temp1=sigBCD7_6,temp2=sigBCD7_7); U5: timer PORT MAP(a=swa,clk1=clk1,clk2=clk2,b=timerop,c=timercancel,up=timerup,down=timerdown,sw1=swc,oh1=sigBCD7_8,oh2=sigBCD7_9,ot1=sigBCD7_10,ot2=sigBCD7_11); U6:
13、mode PORT MAP(b=swa,c=modeset,clk=clk1,cool=cools,heat=heats,dry=drys,cool1=sigBCD7_12,heat1=sigBCD7_13,dry1=sigBCD7_14); U7: BCD7 PORT MAP(a=swa,b=sigBCD7_1,q=switchstate); U8: BCD7 PORT MAP(a=swa,b=sigBCD7_2,q=sleepstate); U9: BCD7 PORT MAP(a=swa,b=sigBCD7_3,q=distate); U10: BCD7 PORT MAP(a=swa,b=
14、sigBCD7_4,q=zhongstate); U11: BCD7 PORT MAP(a=swa,b=sigBCD7_5,q=gaostate);U12: BCD7 PORT MAP(a=swa,b=sigBCD7_6,q=tempd); U13: BCD7 PORT MAP(a=swa,b=sigBCD7_7,q=temps); U14: BCD7 PORT MAP(a=swa,b=sigBCD7_8,q=hdstate); U15: BCD7 PORT MAP(a=swa,b=sigBCD7_9,q=hsstate); U16: BCD7 PORT MAP(a=swa,b=sigBCD7
15、_10,q=tdstate);U17: BCD7 PORT MAP(a=swa,b=sigBCD7_11,q=tsstate); U18: BCD7 PORT MAP(a=swa,b=sigBCD7_12,q=coolstate); U19: BCD7 PORT MAP(a=swa,b=sigBCD7_13,q=heatstate); U20: BCD7 PORT MAP(a=swa,b=sigBCD7_14,q=drystate); PROCESS(clk1)BEGINEND PROCESS;END ARCHITECTURE behave;2)单脉冲模块LIBRARY IEEE ;USE I
16、EEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY pulse IS -单脉冲模块 PORT(a,clk: IN STD_LOGIC; b: OUT STD_LOGIC);END ENTITY pulse;ARCHITECTURE behave OF pulse ISSIGNAL d:STD_LOGIC:=0;SIGNAL f:STD_LOGIC:=0;SIGNAL g:STD_LOGIC:=0; -确保经过第一个clk上升沿时输出1SIGNAL h:STD_LOGIC:=0; -同上BEGINPROCESS(a,clk
17、) BEGINIF(clkEVENT AND clk=1)THENIF(f=1)THENg=1;ELSE g=0;END IF;END IF;END PROCESS;PROCESS(a,clk) BEGINIF(clkEVENT AND clk=0)THENIF(a=1)THENIF(f=1)THENIF(g=1)THEN d=1;ELSE d=0;END IF;ELSE d=1;END IF;ELSE d=0; -a为0时,重置此单脉冲发生器END IF;END IF;END PROCESS;PROCESS(d) BEGINIF(a=1)THENIF(d=1)THENf=0; ELSE f=
18、1;END IF;ELSE f=0;END IF;ba,b=p1,clk=clk); U2: pulse PORT MAP(a=b,b=p2,clk=clk); PROCESS(a,b,clk) BEGIN IF(clkEVENT AND clk=1)THEN IF(p1=1)THEN -空调开关打开 c=1;d=0001; END IF; IF(p2=1)THEN -时间减为0时,定时模块返回1,关闭开关 c=0;da,b=p1,clk=clk); U2: pulse PORT MAP(a=b,b=p2,clk=clk); PROCESS(a,b,clk) BEGIN IF(clkEVENT
19、 AND clk=1)THEN IF(p1=1)THEN -空调开关打开 c=0; END IF; IF(p2=1)THEN -时间减为0时,定时模块返回1,关闭开关 cb,b=p1,clk=clk); U2: pulse PORT MAP(a=c,b=p2,clk=clk); U3: pulse PORT MAP(a=a,b=p3,clk=clk); PROCESS(a,clk)BEGIN IF(clkEVENT AND clk=1)THEN IF(p3=1)THEN -开关打开时,默认26度 t1=0010;t2=0110;ELSIF(a=0)THEN t1=0000;t2=0000;EN
20、D IF; IF(a=1)THENIF(p1=1)THEN -判断温度+按键按下IF(t1=0011)THEN t1=0011;t2=0000; ELSIF(t2=1001)THENt1=t1+1; t2=0000; ELSE t2=t2+1; END IF; END IF; IF(p2=1)THEN -判断温度-按键按下 IF(t1=0001)THEN IF(t2=0110)THEN t1=0001;t2=0110;ELSE t2=t2-1; END IF; ELSIF(t2=0000)THEN t1=t1-1; t2=1001; ELSE t2=t2-1; END IF; END IF;E
21、LSE t1=0000;t2=0000;END IF; END IF;temp1=t1;temp2b,b=p1,clk=clk); U2: pulse PORT MAP(a=c,b=p2,clk=clk); U3: pulse PORT MAP(a=a,b=p3,clk=clk); U4: pulse PORT MAP(a=rst1,b=rst2,clk=clk); U5: count6 PORT MAP(a=op,rst=rst2,clk=clk,o=change); PROCESS(a,clk)BEGIN IF(clkEVENT AND clk=1)THEN op1=op2;IF(p3=1
22、)THEN -开关打开时,默认中挡 e=011;ELSIF(a=0)THEN e=000;END IF; IF(a=1)THENIF(p1=1)THEN -判断风速+按键按下IF(e=100)THEN -高挡时按下,则切换为睡眠 e=001;op1=1; ELSE e=e+1;op1=0; END IF; END IF; IF(p2=1)THEN -判断风速-按键按下 IF(e=001)THEN -睡眠时按下,则切换为高挡 e=100;op1=0;ELSIF(e=010)THENe=e-1;op1=1;ELSE e=e-1;op1=0; END IF; END IF;ELSE e=000;EN
23、D IF; END IF;END PROCESS;PROCESS(change)BEGINIF(changeEVENT AND change=1)THENIF(m=1)THENm=0;ELSE m=1;END IF;END IF;END PROCESS; PROCESS(e)BEGINop2=op1;IF(e=001)THEN -睡眠时的低挡-停止循环IF(op2EVENT AND op2=1)THENop=1;rst1=1;END IF;op di=1;zhong=0;gao=0;ssleep=0001;sdi=0000;szhong=0000;sgao di=0;zhong=0;gao=0
24、;ssleep=0001;sdi=0000;szhong=0000;sgao=0000; END CASE;ELSEop=0;-关闭睡眠模式 IF(e=010)THEN di=1;zhong=0;gao=0;ssleep=0000;sdi=0001;szhong=0000;sgao=0000; ELSIF(e=011)THEN di=0;zhong=1;gao=0;ssleep=0000;sdi=0000;szhong=0001;sgao=0000; ELSIF(e=100)THEN di=0;zhong=0;gao=1;ssleep=0000;sdi=0000;szhong=0000;sga
25、o=0001; ELSIF(e=000)THEN di=0;zhong=0;gao=0;ssleep=0000;sdi=0000;szhong=0000;sgaob,b=p1,clk=clk); U2: pulse PORT MAP(a=c,b=p2,clk=clk); PROCESS(b,c,p1,p2,clk) -按键选择模式BEGINIF(clkEVENT AND clk=1)THENIF(b=1)THENIF(p1=1)THEN -默认制冷模式e=01;END IF;IF(p2=1)THENIF(e=11)THENe=01;ELSE e=e+1;END IF;END IF;ELSE e
26、 cool=1;heat=0;dry=0;cool1=0001;heat1=0000;dry1 cool=0;heat=1;dry=0;cool1=0000;heat1=0001;dry1 cool=0;heat=0;dry=1;cool1=0000;heat1=0000;dry1 cool=0;heat=0;dry=0;cool1=0000;heat1=0000;dry1b,b=op,clk=clk1); U2: pulse PORT MAP(a=c,b=cl,clk=clk1); U3: pulse PORT MAP(a=up,b=p1,clk=clk1); U4: pulse PORT
27、MAP(a=down,b=p2,clk=clk1); U5: pulse PORT MAP(a=sw,b=p3,clk=clk1); U6: cd PORT MAP(a=sw,clk=clk2,time1=h1,time2=h2,time3=t1,time4=t2,finish=sw1,outtime1=oh1,outtime2=oh2,outtime3=ot1,outtime4=ot2); PROCESS(a,op,cl)BEGINIF(a=1)THENIF(op=1)THEN sw=1;END IF;IF(cl=1)THEN sw=0;END IF;ELSE sw=0;END IF;END
28、 PROCESS;PROCESS(sw,clk1)BEGINIF(clk1EVENT AND clk1=1)THEN IF(p3=1)THEN -定时开启时,默认30分钟 h11=0000;h22=0000;t11=0011;t22=0000;ELSIF(sw=0)THEN h11=0000;h22=0000;t11=0000;t22=0000;END IF; IF(sw=1)THENIF(p1=1)THEN -判断时间+按键按下IF(h11=0010)THENIF(h22=0100)THENh11=0010;h22=0100;t11=0000;t22=0000;ELSIF(t11=0000)
29、THENt11=0011;ELSE h22=h22+1;t11=0000;END IF;ELSIF(h22=1001)THENIF(t11=0000)THENt11=0011;ELSE h11=h11+1;h22=0000;t11=0000;END IF;ELSIF (t11=0011)THENh22=h22+1;t11=0000;ELSE t11=0011;END IF;END IF; IF(p2=1)THEN -判断时间-按键按下 IF(h11=0000)THEN IF(h22=0000)THENh11=0000;h22=0000;t11=0011;t22=0000;ELSIF(t11=0
30、011)THENt11=0000;ELSE h22=h22-1;t11=0011;END IF;ELSIF(h22=0000)THENIF(t11=0011)THENt11=0000;ELSE h11=h11-1;h22=1001;t11=0011;END IF;ELSIF (t11=0011)THENt11=0000;ELSE h22=h22-1;t11=0011;END IF;END IF;END IF;END IF;h1=h11;h2=h22;t1=t11;t2a,b=s,clk=clk); PROCESS(time1,time2,time3,time4,clk) -为当定时时间更改时,令变量重新赋值 BEGIN IF(clkEVENT AND clk=1)THENIF(s=1)THENintime5=11; ELSIF(a=1)THEN IF(stime1/=time1 OR stime2/=time2 OR stime3/=time3 OR stime4/=time4)THEN stime1=time1; stime2=time2; stime3=time3; stime4=time4; IF(intime5=01)THEN intime5=10;ELSE intime5=01; END IF; END IF; ELSE intime5=00;END IF;E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年扳金酒罐行业深度研究报告
- 2025年低醛固色剂项目可行性研究报告
- 整体装修施工合同
- 2025-2030年全球及中国电动自行车分享行业市场现状供需分析及投资评估规划分析研究报告
- 电视购物节目制作委托合同
- 游戏周边产品代理销售合同
- 民间物品抵押借款合同与民间的个人借款合同
- 机械租赁合同合同
- 房产股权共有协议书
- 房屋道路共用协议书
- 商务标评审表
- 2021版《安全生产法》培训课件
- 英美文学选读教材翻译
- 大学语文说课课件
- 古建筑施工合同
- 大连理工大学画法几何自学片段课件
- 慢性心功能不全护理查房
- 双新转常规申请表
- 公司企业接收证明
- 毕业设计论文小型风力发电机毕业设计
- 区域急救及医院急诊信息系统建设方案
评论
0/150
提交评论