《eda課程設計基于VHDL 的智能空調控制器》由會員分享,可在線閱讀,更多相關《eda課程設計基于VHDL 的智能空調控制器(11頁珍藏版)》請在裝配圖網上搜索。
1、 電子科學與技術 專業(yè)課程設計任務書
學生姓名
專業(yè)班級
學號
題 目
智能空調控制器
課題性質
工程設計
課題來源
自擬課題
指導教師
同組姓名
主要內容
1. 可自動調節(jié)溫度
2. 可設定工作時間
3. 可進行模式設置:強,弱,自然,睡眠
4. 可進行溫度的設置
任務要求
1根據設計題目要求編寫相應程序代碼
2對編寫的VHDL程序代碼進行編譯和仿真
3總結設計內容,完成課程設計說明書
參考文獻
[1] 焦素敏.EDA課程設計指導書.鄭州:河南工業(yè)大學,2008
[2] 焦素敏.EDA應用技術.北京:清華學出版社,
2、2005
[3] 朱正偉.EDA技術及應用.北京:北京大學出版社,2005
[4] 曹昕臣,聶春燕EDA技術實驗與課程設計.北京:清華大學出版社,2007
審查意見
指導教師簽字:
教研室主任簽字: 年 月 日
1 設計任務及要求
隨著時間的發(fā)展,家用電器越來越智能化,而定時,模式選擇和智能控溫只是其中最常見的功能。
定時的時間分為30分鐘,一小時,一個半小時和和兩個小時。
溫度設置可由一個計數器實現,由于空調的可調溫度有限制,所以計數器的計數范圍也是有限的,我設定的溫度為10到26攝氏度。
溫度控制是把
3、溫度控制在一定范圍內的功能,當室內溫度高于或低于這個溫度時,控制器都將會給空調一個信號使其工作,當溫度達到這一溫度時,空調停止工作。
模式設置共有四個選擇:強,弱,自然和睡眠。模式的控制可以是一個兩位二進制計數器,四個狀態(tài)與四種模式相對應,而且四個模式循環(huán)顯示
2設計原理及總體框圖
總體框圖
模式選擇模塊
模式選擇模塊由一個選擇模塊和四個控制模塊組成。
選擇模塊是一個二進制計數器和一個二四譯碼器,二四譯碼器控制四個控制模塊??刂颇K的主要功能是控制空調的電動機的工作速度,模式一最大,然后依次減小。
溫度選擇和控制模塊
溫度選擇模塊由一個計數器構成,計數范圍為10到26??刂?/p>
4、模塊的作用是和室溫的比較,若設置的溫度和當前室溫不相同,則空調開始工作,當溫度相同時,空調停止工作。
3 程序設計
Vhdl語言概述
Vhdl是一種硬件描述語言,所謂的硬件描述語言,實際就是一個描述工具,描述的對象是帶設計的電路系統(tǒng)的邏輯功能、實現該功能的算法、選用電路的結構以及其他各種約束條件。與其他的硬件描述語言相比較,vhdl在進行工程設計時有許多的優(yōu)點。如:vhdl的的行為,描述強于其他的硬件描述語言,可以直接從行為邏輯上直接對線路進行描述。
模式選擇器
由一個二進制計數器構成
library ieee;
use ieee.std_logic_1164.all;
use
5、 ieee.std_logic_unsigned.all;
entity xuanzhe is
port( en: in std_logic;
b: out std_logic_vector(1 downto 0));
end entity;
architecture one of xuanzhe is
signal c: std_logic_vector(1 downto 0);
begin
process(en)
begin if en 'event and en='1' then
c<=c
6、+1;
end if;
b<=c;
end process;
end one;
定時器設計如下圖
主要功能設計
在設計計數器時,要特別注意個位的進位時間,當各位計數到8時,同時個位變9,進位產生,在下一個高電平的時候,進位進到十位,個位變成0。
30進制計數器
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity sanshi is
port(clk,clr:in std_logic;
o,t:out std_logic_vector(
7、3 downto 0);
c:out std_logic);
end entity;
architecture arc of sanshi is
signal cin: std_logic;
begin
process(clk,clr)
variable cnt0:std_logic_vector(3 downto 0);
begin
if clr='1' then
cnt0:="0000";
elsif clk 'event and clk='1' then
if cnt0="1000" then
8、cnt0:=cnt0+1;cin<='1';
elsif cnt0="1001" then
cnt0:="0000"; cin<='0';
else cnt0:=cnt0+1;cin<='0';
end if;
end if;
o<=cnt0;
end process;
process(clk,clr,cin)
variable cnt1:std_logic_vector(3 downto 0);
begin
if clr='1' then
cnt1:="0000";
elsif clk 'event and clk='1' then
9、 if cin='1' then
if cnt1="0010" then
cnt1:="0000";c<='1';
else cnt1:=cnt1+1;c<='0';
end if;
end if;
else cnt1:=cnt1;
end if;
t<=cnt1;
end process;
end arc;
仿真波形見圖二
60進制計數器
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity di
10、ngshiqi is
port(clk,clr:in std_logic;
one,ten:out std_logic_vector(3 downto 0);
co:out std_logic);
end entity;
architecture arc of dingshiqi is
signal cin: std_logic;
begin
process(clk,clr)
variable cnt0:std_logic_vector(3 downto 0);
begin
if clr='1' then
11、cnt0:="0000";
elsif clk 'event and clk='1' then
if cnt0="1000" then
cnt0:=cnt0+1;cin<='1';
elsif cnt0="1001" then
cin<='0'; cnt0:="0000"; else cnt0:=cnt0+1;cin<='0';
end if;
end if;
one<=cnt0;
end process;
process(clk,clr,cin)
variable cnt1:std_logic_vector(3 downto 0);
12、begin
if clr='1' then
cnt1:="0000";
elsif clk 'event and clk='1' then
if cin='1' then
if cnt1="0101" then
cnt1:="0000";co<='1';
else cnt1:=cnt1+1;co<='0';
end if;
end if;
else cnt1:=cnt1;
end if;
ten<=cnt1;
end process;
end arc;
仿真波形見圖三
溫度設置
library
13、 ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_arith.all;
use ieee.std_logic_unsigned.all;
entity shezhiqi is
port( inc,clr: in std_logic;
one,ten: out std_logic_vector(3 downto 0));
end entity;
architecture arc of shezhiqi is
signal t10:std_logic_vector(3 downto 0);
signa
14、l o1:std_logic_vector(3 downto 0);
signal cin:std_logic;
begin
ten<=t10;
one<=o1;
process(inc,clr)
begin
if clr='1' then
o1<="0000";
elsif inc 'event and inc='1' then
if(o1="1001") or (t10="0010" and o1="0110") then
o1<="0000";cin<='0';
elsif o1="1000" then
o1<=o1+1;
15、cin<='1';
else o1<=o1+1;cin<='0';
end if;
end if;end process;
process(cin,inc,clr)
begin
if clr='1' then
t10<="0000";
elsif inc 'event and inc='1' then
if(t10="0010" and o1="0110") then
t10<="0001";
end if;
if cin='1' then
t10<=t10+1;
end if;
end if;
end process;
end arc;
仿
16、真波形見圖四
開關控制模塊
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity kaiguan is
port(shuru1,shuru2,ting:in std_logic;
laoban:out std_logic);
end entity;
architecture one of kaiguan is
begin
process(shuru1,shuru2,ting)
begin
if shuru1='1' or shuru2='1' th
17、en
laoban<='1';
elsif ting='1' then
laoban<='0';
end if;
end process;
end one;
仿真波形見圖五
4 編譯及仿真
圖1
圖二
圖三
圖四
圖五
5 硬件調試與結果分析
仿真結果如上圖所示。
當選擇器的電平high為高時,兩個顯示轉速的zhuanshu和
18、zhuansu1分別顯示出60、45、30、15不同的轉速,溫度控制器從10開始一直到26,最后的溫度為25,當室溫為10的時候,空調開關顯示開,當溫度到達25時,空調開關成低電平,空調關閉。
6 參考文獻
[1] 焦素敏.EDA課程設計指導書.鄭州:河南工業(yè)大學,2008
[2] 焦素敏.EDA應用技術.北京:清華學出版社,2005
[3] 朱正偉.EDA技術及應用.北京:北京大學出版社,2005
[4] 曹昕臣,聶春燕EDA技術實驗與課程設計.北京:清華大學出版社,2007
心得體會
經過這次EDA課程設計,我對vhdl有了更深的認識,熟練了max+plus2的使用,而且學會了quartus2的基本使用方法。很多以前沒注意的細節(jié)在這次課程設計的過程中沒少給自己制造麻煩,雖然走了不少彎路,浪費了許多時間,但經過努力,還是完成了這次課程設計。都說實踐才是檢驗真理的唯一標準,在學習的時候馬馬虎虎、眼高手低,到了真正進行設計的時候勢必不會順順利利。
在這次課程設計中我也認識到,在設計之前深思熟慮的重要性,因為在設計的時候實現功能的途徑有很多種,多思考可以避免將簡單的問題復雜化,可以節(jié)省許多時間和精力。