中央空调系统VHDL设计.docx
《中央空调系统VHDL设计.docx》由会员分享,可在线阅读,更多相关《中央空调系统VHDL设计.docx(31页珍藏版)》请在冰点文库上搜索。
![中央空调系统VHDL设计.docx](https://file1.bingdoc.com/fileroot1/2023-5/7/5c8c1db7-0cb3-4f82-8951-fcd843e03833/5c8c1db7-0cb3-4f82-8951-fcd843e038331.gif)
中央空调系统VHDL设计
东南大学
数字系统课程设计
基于VHDL的中央空调控制系统设计报告
学院:
信息科学与工程学院
专业:
信息工程
组长:
付永钦(04211734)
组员:
徐逸涵(04211724)
茆禹(04212738)
目录
1.封面…………………………………………………………………1
目录…………………………………………………………………2
2.导言…………………………………………………………………3
3.正文…………………………………………………………………4
4.仿真结果……………………………………………………………23
5.设计总结……………………………………………………………24
6.分工…………………………………………………………………25
7.参考文献……………………………………………………………25
二、导言
2.1问题的提出
随着民众对舒适家居系统的重视,家用中央空调越来越受到人们的宠爱。
据了解,未来随着空调技术的不断提高,能够同时满足餐厅、客厅和卧室需求的局部中央空调系统将是大量公寓楼业主安装的新亮点。
业内人士预测,未来三至五年内,中央空调整体市场需求平均增幅将超过30%。
中央空调在家用市场的潜力是不可估计的。
感官上的舒适和理念上的匹配只能说是一个奠定基础,而在经济发展中,越来越多的精装房、商业小区、高端住宅的开发,是成就了家用中央空调市场前进的有利因素。
据悉,越来越多企业瞄准了家用中用空调这块市场。
从外观上来说,不同于普通空调室内机室外机一目了然、占据空间的特点,中央空调讲究最大程度的和家居融为一体,隐蔽式的安装让人不见其身,却无处不能感受它的存在。
性能方面,家用中央空调比较灵活,可以根据家庭的使用情况选择最佳的节能方案,完全是根据用户的需求来打造。
舒适度就更不用说了,中央空调因地制宜调节出风和回风,气流稳定,温度均匀,人置身在中央空调开启的环境中,倍感舒适。
中央空调对比普通空调,可以说每一方面都是优势取胜。
人们不断地追求舒适家居生活享受,并不仅仅在感官上,更在于理念上。
现在是崇尚低碳环保、健康科学理念的年代,符合这种理念的家用中央空调,无疑正在逐渐获得人心,进入寻常百姓家。
2.2设计目的及要求
我们小组设计完成的这个系统用于模仿、完成中央空调的核心控制功能。
要求:
设计FPGA模块模拟中央空调控制系统的工作过程,要求如下中央空调控制系统
大楼分为1,2,3号楼,共用某型号中央空调,但是1,2,3号都有独立的2级控制器,大楼另有总控制器1级控制开关。
1,2,3号楼均有一定的房间(假设为3个,001-003)。
每个房间又有自己的控制面板3级控制。
如果总控1级打开,则2级可以使用,而且2级可以控制下一级的设置,意思是如果2级选择了制热模式,则3级所在的房间就只能选择制热,通风,除湿模式,不能设置为制冷方式,如果2级是制冷,3级就不能制热;如果2级是通风,3级就只能是通风或除湿,如果2级是除湿,3级也只能是通风或除湿。
但是2级又本身是每号楼的001号房间的3级控制器。
另外,二级控制器可以选择是否控制温度范围,根据政府的规定,夏天制冷不得低于26度,冬季制冷不得高于20度,可以通过2级控制器设置限制并且控制。
对于3级控制器,根据2级控制器的选择做出相应的动作并提供相应的指示。
三、正文
我们主要采用了VHDL语言和QuartusII9.1软件进行汇编和仿真来实现系统的设计。
3.1总体方案设计
系统共分为三级控制器和一个温度控制设计。
一级控制器较为简单,设计为一
个控制所有楼层房间的总开关。
根据要求,还有二、三级控制器。
情况比一级控制器复杂。
这里分开介绍。
3.11一级控制器的设计
端口
意义
EN_ALL
一级开关
3.11二级控制器的设计
二级循环模块如图所示:
端口
意义
NEXT_MODE_CONTROL2
二级开关
SET_TEMP_CONTROL
二级开关控制是否开启温度控制
TEMP_CONTROL
二级温度控制
MODE_CHANGE
模式转换
3.13三级开关的设计
端口
意义
NEXT_MODE_FLOOR*
三级开关控制
UP_TEMP_FLOOR*
三级升温控制
DOWN_TEMP_FLOOR*
三级降温控制
MODE_FROM_CONTROL2
接受二级开关所选模式控制
state
输出三级控制模式
注:
*代表相应的房间号
(1)当MODE_FROM_CONTROL2=0,state=0
即二级控制关闭,三级控制也关闭。
(2)当MODE_FROM_CONTROL2=1,二级所选模式为制冷,三级控制选择模式循环如下:
(3)当MODE_FROM_CONTROL2=2,二级所选模式为制热,三级控制选择模式循环如下:
(4)当MODE_FROM_CONTROL2=3或4,二级所选模式分别为通风和除湿,三级控制模式循环如下:
3.2全部程序如下(含注释):
(1)Top.vhd
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityTOPis
port(CLK:
INSTD_LOGIC;
RSTN:
INSTD_LOGIC;
EN_ALL:
INSTD_LOGIC;--总的控制开关一级开关
NEXT_MODE_CONTROL2:
INSTD_LOGIC_VECTOR(2DOWNTO0);--二级控制开关每个楼层一个
SET_TEMP_CONTROL:
INSTD_LOGIC_VECTOR(2DOWNTO0);--二级开关控制是否开启温度控制
NEXT_MODE_FLOOR1,NEXT_MODE_FLOOR2,NEXT_MODE_FLOOR3:
INSTD_LOGIC_VECTOR(1DOWNTO0);--三级开关控制每个楼层有三个房间但是房间001直接被二级开关控制其他房间的控制条模式受三级开关控制
UP_TEMP_FLOOR1,UP_TEMP_FLOOR2,UP_TEMP_FLOOR3:
INSTD_LOGIC_VECTOR(2DOWNTO0);--三级开关控制每个楼层有三个房间每个房间进行上下调节温度
DOWN_TEMP_FLOOR1,DOWN_TEMP_FLOOR2,DOWN_TEMP_FLOOR3:
INSTD_LOGIC_VECTOR(2DOWNTO0);--三级开关控制每个楼层有三个房间每个房间进行上下调节温度
--1
FLOOR1_MODE1,FLOOR1_MODE2,FLOOR1_MODE3:
OUTINTEGERRANGE0TO4;--第一楼层每个房间的空调模式和温度设置
FLOOR1_TEMP1,FLOOR1_TEMP2,FLOOR1_TEMP3:
OUTINTEGERRANGE0TO35;
--2
FLOOR2_MODE1,FLOOR2_MODE2,FLOOR2_MODE3:
OUTINTEGERRANGE0TO4;----第2楼层每个房间的空调模式和温度设置?
FLOOR2_TEMP1,FLOOR2_TEMP2,FLOOR2_TEMP3:
OUTINTEGERRANGE0TO35;
--3
FLOOR3_MODE1,FLOOR3_MODE2,FLOOR3_MODE3:
OUTINTEGERRANGE0TO4;--第3楼层每个房间的空调模式和温度设置
FLOOR3_TEMP1,FLOOR3_TEMP2,FLOOR3_TEMP3:
OUTINTEGERRANGE0TO35
);--数据信号输出
endTOP;
architectureONEofTOPis
COMPONENTFLOOR---每个楼层的控制
port(CLK:
INSTD_LOGIC;
RSTN:
INSTD_LOGIC;
EN:
INSTD_LOGIC;
NEXT_MODE_CONTROL2:
INSTD_LOGIC;
SET_TEMP_CONTROL:
INSTD_LOGIC;
NEXT_MODE:
INSTD_LOGIC_VECTOR(2DOWNTO0);
UP_TEMP:
INSTD_LOGIC_VECTOR(2DOWNTO0);
DOWN_TEMP:
INSTD_LOGIC_VECTOR(2DOWNTO0);
MODE1,MODE2,MODE3:
OUTINTEGERRANGE0TO4;
TEMP1,TEMP2,TEMP3:
OUTINTEGERRANGE0TO35
);
ENDCOMPONENT;
BEGIN
----实例化三个层
-------------1
I1:
FLOOR
portMAP(CLK=>CLK,
RSTN=>RSTN,
EN=>EN_ALL,
NEXT_MODE_CONTROL2=>NEXT_MODE_CONTROL2(0),
SET_TEMP_CONTROL=>SET_TEMP_CONTROL(0),
NEXT_MODE=>(NEXT_MODE_FLOOR1&'0'),---因为每个楼层的001房间直接受制NEX_MODE_CONTROL2控制,所以在这里最低位补个0
UP_TEMP=>UP_TEMP_FLOOR1,
DOWN_TEMP=>DOWN_TEMP_FLOOR1,
MODE1=>FLOOR1_MODE1,
MODE2=>FLOOR1_MODE2,
MODE3=>FLOOR1_MODE3,
TEMP1=>FLOOR1_TEMP1,
TEMP2=>FLOOR1_TEMP2,
TEMP3=>FLOOR1_TEMP3
);
--------------2
I2:
FLOOR
portMAP(CLK=>CLK,
RSTN=>RSTN,
EN=>EN_ALL,
NEXT_MODE_CONTROL2=>NEXT_MODE_CONTROL2
(1),
SET_TEMP_CONTROL=>SET_TEMP_CONTROL
(1),
NEXT_MODE=>(NEXT_MODE_FLOOR2&'0'),
UP_TEMP=>UP_TEMP_FLOOR2,
DOWN_TEMP=>DOWN_TEMP_FLOOR2,
MODE1=>FLOOR2_MODE1,
MODE2=>FLOOR2_MODE2,
MODE3=>FLOOR2_MODE3,
TEMP1=>FLOOR2_TEMP1,
TEMP2=>FLOOR2_TEMP2,
TEMP3=>FLOOR2_TEMP3
);
--------------3
I3:
FLOOR
portMAP(CLK=>CLK,
RSTN=>RSTN,
EN=>EN_ALL,
NEXT_MODE_CONTROL2=>NEXT_MODE_CONTROL2
(2),
SET_TEMP_CONTROL=>SET_TEMP_CONTROL
(2),
NEXT_MODE=>(NEXT_MODE_FLOOR3&'0'),
UP_TEMP=>UP_TEMP_FLOOR3,
DOWN_TEMP=>DOWN_TEMP_FLOOR3,
MODE1=>FLOOR3_MODE1,
MODE2=>FLOOR3_MODE2,
MODE3=>FLOOR3_MODE3,
TEMP1=>FLOOR3_TEMP1,
TEMP2=>FLOOR3_TEMP2,
TEMP3=>FLOOR3_TEMP3
);
ENDONE;
(2)CONTROL-STATE2.vhd:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityCONTROL_STATE2is
port(CLK:
INSTD_LOGIC;
RSTN:
INSTD_LOGIC;
ON_OFF:
INSTD_LOGIC;
NEXT_MODE:
INSTD_LOGIC;
SET_TEMP_CONTROL:
INSTD_LOGIC;
MODE:
OUTINTEGERRANGE0TO4;
TEMP_CONTROL:
OUTSTD_LOGIC;
MODE_CHANGE:
OUTSTD_LOGIC
);
endCONTROL_STATE2;
architectureONEofCONTROL_STATE2is
typem_stateis(off_state,cool_state,heat_state,ventilation_state,dehumidification_state);---二级开关总共分为5个状态关闭状态制冷状态制热状态除湿状态通风状态
signalstate:
m_state;
SIGNALEN_DOWN:
STD_LOGIC;
SIGNALNEXT_L1:
STD_LOGIC;
BEGIN
PROCESS(CLK,RSTN)
BEGIN
IFRSTN='0'THEN
NEXT_L1<='1';
ELSIFCLK'EVENTANDCLK='1'THEN
NEXT_L1<=NEXT_MODE;
ENDIF;
ENDPROCESS;
EN_DOWN<='1'WHENNEXT_L1='1'ANDNEXT_MODE='0'--检测外部NEXT_MODE信号有没有改变
ELSE
'0';
PROCESS(CLK,RSTN)
BEGIN
IFRSTN='0'THEN
MODE_CHANGE<='0';
ELSIFCLK'EVENTANDCLK='1'THEN
MODE_CHANGE<=EN_DOWN;--如果改变告诉后面的模块,模式发生了改变
ENDIF;
ENDPROCESS;
process(CLK,RSTN)
BEGIN
IFRSTN='0'THEN
state<=off_state;
elsifCLK'EVENTANDCLK='1'THEN
IFON_OFF='0'THEN
state<=off_state;
elsecasestateis--状态装换关闭状态--》制冷状态--》制热状态--》通风状态--》除湿状态---------》》》制冷状态
whenoff_state=>ifEN_DOWN='1'THEN
state<=cool_state;
endif;
whencool_state=>ifEN_DOWN='1'THEN
state<=heat_state;
endif;
whenheat_state=>ifEN_DOWN='1'then
state<=ventilation_state;
endif;
whenventilation_state=>ifEN_DOWN='1'then
state<=dehumidification_state;
endif;
whendehumidification_state=>ifEN_DOWN='1'then
state<=off_state;
endif;
whenothers=>state<=off_state;
endcase;
endif;
endif;
endprocess;
---MODE标志0:
关闭状态1:
制冷状态2:
制热状态3:
通风状态4:
除湿状态
process(state)
begin
casestateis
whenoff_state=>MODE<=0;
whencool_state=>MODE<=1;
whenheat_state=>MODE<=2;
whenventilation_state=>MODE<=3;
whendehumidification_state=>MODE<=4;
whenothers=>MODE<=0;
endcase;
endprocess;
(3)CONTROL-STATE3.vhd:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityCONTROL_STATE3is
port(CLK:
INSTD_LOGIC;
RSTN:
INSTD_LOGIC;
MODE_FROM_CONTROL2:
ININTEGERRANGE0TO4;
MODE_CHANGE:
INSTD_LOGIC;
NEXT_MODE:
INSTD_LOGIC;
MODE:
OUTINTEGERRANGE0TO4;
MODE_CHANGE_OUT:
OUTSTD_LOGIC
);--数据信号输出
endCONTROL_STATE3;
architectureONEofCONTROL_STATE3is
signalstate:
integerrange0to4;
SIGNALEN_DOWN:
STD_LOGIC;
SIGNALNEXT_L1:
STD_LOGIC;
BEGIN
PROCESS(CLK,RSTN)
BEGIN
IFRSTN='0'THEN
NEXT_L1<='1';
ELSIFCLK'EVENTANDCLK='1'THEN
NEXT_L1<=NEXT_MODE;
ENDIF;
ENDPROCESS;
EN_DOWN<='1'WHENNEXT_L1='1'ANDNEXT_MODE='0'----三级开关中模式按键发生了变化
ELSE
'0';
--标志0:
关闭状态1:
制冷状态2:
制热状态3:
通风状态4:
除湿状态
process(CLK,RSTN)
begin
ifRSTN='0'THEN
state<=0;
elsIFCLK'EVENTANDCLK='1'then
ifMODE_CHANGE='1'THEN
state<=MODE_FROM_CONTROL2;
elsifMODE_FROM_CONTROL2=0THEN
state<=0;
elsifMODE_FROM_CONTROL2=1THEN--如果二级是制冷模式
casestateis
when1=>ifEN_DOWN='1'THEN--三级制冷模式--》通风--》除湿------》制冷模式循环
state<=3;
endif;
when3=>ifEN_DOWN='1'then
state<=4;
endif;
when4=>ifEN_DOWN='1'THEN
state<=1;
endif;
whenothers=>state<=1;
endcase;
elsifMODE_FROM_CONTROL2=2THEN--如果二级市制热模式
casestateis
when2=>ifEN_DOWN='1'then--三级制热模式--》通风--》除湿------》制热模式循环
state<=3;
endif;
when3=>ifEN_DOWN='1'THEN
state<=4;
endif;
when4=>ifEN_DOWN='1'then
state<=2;
endif;
whenothers=>state<=2;
endcase;
elsifMODE_FROM_CONTROL2=3THEN
casestateis
when3=>ifEN_DOWN='1'THEN
state<=4;
endif;
when4=>ifEN_DOWN='1'then
state<=3;
endif;
whenothers=>state<=3;
endcase;
elsifMODE_FROM_CONTROL2=4THEN
casestateis
when4=>ifEN_DOWN='1'then
state<=3;
endif;
when3=>ifEN_DOWN='1'THEN
state<=4;
endif;
whenothers=>state<=4;
endcase;
endif;
endif;
endprocess;
MODE<=state;
PROCESS(CLK,RSTN)
BEGIN
IFRSTN='0'THEN
MODE_CHANGE_OUT<='0';
ELSIFCLK'EVENTANDCLK='1'THEN
MODE_CHANGE_OUT<=EN_DOWNORMODE_CHANGE;
ENDIF;
ENDPROCESS;
ENDONE;
(4)FLOOR.vhd:
libraryIEEE;
useIEEE.STD_LOGIC_1164.ALL;
useIEEE.STD_LOGIC_ARITH.ALL;
useIEEE.STD_LOGIC_UNSIGNED.ALL;
entityFLOORis
port(CLK:
INSTD_LOGIC;
RSTN:
INSTD_LOGIC;
EN:
INSTD_LOGIC;--一级开关总控制
NEXT_MODE_CONTROL2:
INSTD_LOGIC;--二级开关模式选择
SET_TEMP_CONTROL:
INSTD_LOGIC;--二级开关是否开启温度限制
NEXT_MODE:
INSTD_LOGIC_VECTOR(2DOWNTO0);--三级开关控制控制每个房间
UP_TEMP:
INSTD_LOGIC_VECTOR