基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx

上传人:b****6 文档编号:8430122 上传时间:2023-05-11 格式:DOCX 页数:13 大小:591.78KB
下载 相关 举报
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第1页
第1页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第2页
第2页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第3页
第3页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第4页
第4页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第5页
第5页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第6页
第6页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第7页
第7页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第8页
第8页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第9页
第9页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第10页
第10页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第11页
第11页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第12页
第12页 / 共13页
基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx_第13页
第13页 / 共13页
亲,该文档总共13页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx

《基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx(13页珍藏版)》请在冰点文库上搜索。

基于vhdl语言的智能空调控制器的设计报告Word文档下载推荐.docx

“00”、“01”、“10”、“11”分别代表“强风”、“弱风”、“自然风”、“睡眠状态”。

②时间设置模块:

半个小时即三十分钟,可以用一个三十进制的计数器来实现定时,一个小时即六十分钟,可以用一个六十进制的计数器实现,依此类推即可。

③温度设置模块:

室温与设置温度的比较需要用比较语句来实现,空调温度的增减都需要用计数器来实现,所以这是一个包含比较和计数两种功能的电路。

④开关模块:

我采用的是一个是三输入开关控制器,三个输入分别代表模式选择、时间设置、温度设置,只要其中有一个模块开始工作,那么开关就打开,空调就开始工作。

⑤显示模块:

上述几个模块都需要这个模块来进行显示。

用两个BCD-七段译码器来分别显示显示十位和个位。

就可以看出温度和时间的变化。

二、程序源代码及说明

①模式选择,四选一数据选择器:

仿真见图一

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYxuanzeIS

PORT(a,b,c,d,s1,s2:

INSTD_LOGIC;

---a,b,c,d是数据端口,

s1和s2是选择端口。

y:

OUTSTD_LOGIC);

ENDENTITYxuanze;

ARCHITECTUREoneOFxuanzeIS

SIGNALss:

STD_LOGIC_VECTOR(0TO1);

BEGINss<

=s2&

s1;

---将两个标准逻辑位类型变成一个标准逻辑矢量类型

PROCESS(ss)

BEGIN

CASEssIS---用case语句实现多路选择

WHEN"

00"

=>

y<

=a;

01"

=b;

10"

=c;

11"

=d;

WHENOTHERS=>

NULL;

ENDCASE;

ENDPROCESS;

ENDARCHITECTUREone;

②定时半小时,三十进制计数器:

仿真见图二

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entitythirtyis

port(clk,clr:

instd_logic;

gewei,shiwei:

outstd_logic_vector(3downto0);

---个位和十位

dingshi:

outstd_logic);

---定时脉冲

endentity;

architecturearcofthirtyis

signaljinwei:

std_logic;

---进位

beginprocess(clk,clr)

variablege:

std_logic_vector(3downto0);

begin

ifclr='

1'

thenge:

="

0000"

;

---clr有清零作用

elsifclk'

eventandclk='

thenifge="

1000"

=ge+1;

jinwei<

='

---当个位加到“1000”

即第九个时钟上升

时产生一个进位。

elsifge="

1001"

---个位加到9之后返回0

0'

elsege:

endif;

gewei<

=ge;

endprocess;

process(clk,clr,jinwei)

variableshi:

Begin

thenshi:

elseifclk'

thenifjinwei='

thenifshi="

0010"

---十位从“0000”变成“0010”,

即经过了30个时钟脉冲,然后

返回“0000”。

同时产生一个定

时脉冲。

dingshi<

elseshi:

=shi+1;

endif;

shiwei<

=shi;

endprocess;

endarc;

③定时一小时,六十进制计数器:

仿真见图三

useieee.std_logic_1164.all;

entitysixtyis

dingshi:

---定时脉冲

architecturearcofsixtyis

---进位

begin

process(clk,clr)

---clr有清零作用

jinwei<

---当个位加到“1000”

即第九个时钟产生

一个进位。

elseifge="

thenjinwei<

ge:

---个位加到9之后返回0

gewei<

0101"

---十位从“0000”变成“0101”,

即经过了60个时钟脉冲,然后

endarc;

④温度控制,仿真见图四和图五

entitywenduis---根据室温和设定温度的比较判断温

度是上升还是降低

port(clk,en:

instd_logic;

---clk时钟en开关/使能端

shiwei,gewei,romeshi,romege:

instd_logic_vector(0to3);

---shiwei设置温度的十位;

gewei设置温度的个位;

romeshi设置室温的十位;

romege设置温度的个位。

shiout,geout:

outstd_logic_vector(0to3));

---shiout输出温度的十位geout输出温度的个位

endwendu;

architecturebehaveofwenduis

signalhs,hg:

std_logic_vector(0to3);

begin

process(clk,en,shiwei,gewei,romeshi,romege,hs,hg)

ifen='

then

hs<

=romeshi;

hg<

=romege;

elsifclk'

then

ifhs&

shiwei&

geweithen---室温低于设置的温度,温度上升

ifhg<

"

thenhg<

=hg+1;

elsehg<

=hs+1;

elsifhs&

hg>

geweithen---室温高于设置的温度,温度下降

ifhg>

=hg-1;

=hs-1;

elsehs<

=shiwei;

=gewei;

---判断温度上升或下降到设置的温度,保持温度显示不变

shiout<

=hsanden&

en&

en;

geout<

=hganden&

---输出温度

endbehave;

⑤开关控制器:

仿真见图六

entitykaiguanis

port(shuru1,shuru2,shuru3,stop:

diandongji:

architectureoneofkaiguanis

process(shuru1,shuru2,stop)

ifshuru1='

orshuru2='

orshuru3='

thendiandongji<

---三输入中只要有一个为1,那开关就打开。

elsifstop='

---

endone;

⑥七段译码器:

仿真见图七

useieee.std_logic_arith.all;

entityxianshiis

port(shuzi:

instd_logic_vector(3downto0);

shuchu:

outstd_logic_vector(6downto0));

endxianshi;

architectureaofxianshiis

withshuziselect

shuchu<

1111110"

when"

"

0110000"

0001"

1101101"

1111001"

0011"

0110011"

0100"

1011011"

1011111"

0110"

1110000"

0111"

1111111"

1111011"

0000000"

whenothers;

---将四位二进制数通过七段译码器显示出来

enda;

三、仿真结果及分析

图一

这是一个四选一数据选择器,“s2s1”的“00”、“01”、“10”、“11”分别可以选择a,b,c,d四个模式,即题目中的强风、弱风、自然风、睡眠四种状态。

图二

这是一个三十进制计数器,由仿真波形可以看到,每经过一个时钟脉冲,个位加一,每经过10个时钟脉冲,十位加一,每经过30个时钟脉冲产生一个定时脉冲,同时十位和个位都归零。

图三

这是一个六十进制计数器,由仿真波形可以看到,每经过一个时钟脉冲,个位加一,每经过10个时钟脉冲,十位加一,每经过60个时钟脉冲产生一个定时脉冲,同时十位和个位都归零。

图四

图四中,室温为30度,设置的温度为25度,所以温度下降至25度后并维持在25摄氏度。

图五

图五中,室温为10度,设置的温度为25度,室温低于设置的温度,所以温度上升,并且上升到25度后维持在25度。

图六

这相当于一个三输入或门和另一个非门相与。

三个shuru中只要有一个为1,且stop为0,则开关打开为1;

三个shuru和stop都为0时显示高组态;

其余情况则显示0。

图七

BCD-七段译码显示器,将输入的四位二制数编译成七段数码管的明暗。

4、心得体会

首先,我想分享一下我做这次期末课程设计的体会与感想。

老师给了一个大致的范围,也就是家用电器的控制器的设计。

通过观察思考,我发现各种家电虽然在我们的生活中各司其职,但是它们的控制原理却是极为相似的。

基本都包括:

不同模式选择(强洗弱洗、强风弱风......)、设定工作时间、设置工作功率的大小(高低温度、大小转速......)等等。

这些不同的功能的实现恰好用到了第三章所学的各种逻辑电路,包括组合逻辑电路,如门电路、编码器、译码器、比较器、多路选择器、加法器等;

以及时序逻辑电路,如触发器、寄存器、计数器等。

对作业有了整体的了解之后,我选择了常见的智能空调作为设计题目。

我先根据要实现的不同功能选择合适的电路,再根据电路编写程序,这样按部就班,循序渐进地完成。

在设计第一个电路4路选择器的时候就遇到了麻烦。

编译的时候一直说第一行程序错误,可是我第一行程序只是“libraryieee”而已,我又仔细检查了其他程序,完全没有问题。

这让我一开始就遭遇了瓶颈。

在进行了各种程序的调适之后,我决定用同学的电脑试试,一样的程序,一样的工程名字,然后一下子就编译成功了。

可是换回我的电脑还是不行。

我想这可能就是随机差错了吧。

最后,我重新写了代码,把输入的标准逻辑矢量类型s(0to1)变成输入两个标准逻辑位类型s1和s2,在结构中再用s=s2&

s1变回矢量类型,这样才终于编译成功了。

这几乎耗费了我一半的时间,其余的模块电路的设计几乎都很顺利,出现的错误也很容易被纠正过来。

机器往往比人要更加严格,任何一个小小的错误都逃不出它的法眼,这要求我在编写程序的时候格外认真仔细,很大程度地帮我改正了粗心大意的毛病。

对于数字系统设计与硬件描述语言这门课程,我还是受益颇深的。

相比于C++等软件语言,VHDL这种硬件语言更加简洁直观。

通过对这门课程的学习,我不仅加深了对VHDL语言的了解,而且熟练了对QUARTUS.II软件的使用。

老实讲,我个人非常喜欢张老师。

进入大学以后,很少遇到像张老师这样吐字清晰、声音洪亮,讲课富有激情的老师了。

在VHDL的课上,我更容易专心致志地听讲,聚精会神地思考。

在平时的实验中,我也能切实地感受到自己的一次次进步,毕竟,实践才是检验真理的唯一标准。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

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

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