版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p> SOPC/EDA綜合課程設(shè)計報告</p><p> 設(shè)計題目: 微波爐控制與設(shè)計</p><p> 設(shè) 計 者: </p><p> 學(xué) 號: </p><p> 班 級: </p><p> 指導(dǎo)老師:
2、 </p><p> 完成時間: </p><p> 設(shè)計報告綜合測試總評</p><p> 格式(10)內(nèi)容(40)圖表(10)答辯(20)平時(20)</p><p><b> 目錄</b></p><p> 第一章 微波爐定時控制器的設(shè)計方案分析3</p>
3、;<p> 1.1 系統(tǒng)設(shè)計的要求3</p><p> 1.2 系統(tǒng)總體功能描述3</p><p> 1.3 各模塊的功能實現(xiàn)4</p><p> 第二章 微波爐定時控制器的設(shè)計步驟6</p><p> 2.1狀態(tài)控制器的設(shè)計6</p><p> 2.1.1 controllor狀
4、態(tài)換圖及端口圖6</p><p> 2.2數(shù)據(jù)裝載器loader的設(shè)計7</p><p> 2.3烹調(diào)計時器counter的設(shè)計7</p><p> 2.3.1烹調(diào)計時器的內(nèi)部組成原理圖8</p><p> 2.4顯示譯碼器YMQ47的設(shè)計8</p><p> 2.5鎖存器的設(shè)計9</p&g
5、t;<p> 第三章 微波爐控制器的VHDL源程序10</p><p> 3.1各模塊的VHDL源程序10</p><p> 第四章 總體原理圖21</p><p> 4.1 總體功能的頂層原理圖21</p><p> 第五章 系統(tǒng)功能的仿真驗證22</p><p> 5.1
6、狀態(tài)控制電路仿真波形圖22</p><p> 5.2數(shù)據(jù)裝載電路的仿真22</p><p> 5.3 計時電路仿真23</p><p> 5.4微波爐控制器顯示仿真24</p><p> 5.5SCQ的仿真圖24</p><p> 5.6總體功能的仿真分析25</p><p&g
7、t;<b> 結(jié)束語26</b></p><p><b> 參考文獻27</b></p><p> 第一章 微波爐定時控制器的設(shè)計方案分析</p><p> 1.1 系統(tǒng)設(shè)計的要求</p><p> 現(xiàn)需設(shè)計一個微波爐控制器WBLCONTROLLOR,其外部接口如下圖所示。通過該控制
8、器再配以4個七段數(shù)碼二極管完成微波爐的定時及信息顯示。各信號的功能及要求如下:</p><p> CLK是秒時鐘脈沖輸入,它接收每秒一個時鐘脈沖的節(jié)拍信號。RESET為復(fù)位信號,高電平有效,用于芯片的復(fù)位功能。TEST為測試信號,高電平有效,用于測試4個七段數(shù)碼二極管工作是否正常。Start為開始加熱信號,高電平有效,SET_T信號為定時設(shè)置信號,高電平時可以設(shè)置定時時間,DATA為定時的時間,cook為 加熱
9、輸出(用指示燈代替),另外四個輸出分別表示顯示的定時時間的分和秒。</p><p> 其他功能自行擴展并設(shè)計。</p><p> 1.2 系統(tǒng)總體功能描述</p><p> 現(xiàn)需設(shè)計的微波爐控制器WBLCONTROLLOR的外部接口如圖1-1所示,通過該控制器,再配以七段數(shù)碼二極管完成微波爐的定時信息和信息的顯示。</p><p>
10、圖1-1 WBLCONTROLLOR的端口圖 </p><p> 各信號功能及要求如下:</p><p> CLK是秒時鐘脈沖輸入,它接收每秒一個時鐘脈沖的節(jié)拍信號。RESET為復(fù)位信號,高電平有效,用于芯片的復(fù)位功能。TEST信號是測試信號,高電平有效,用于測試七段數(shù)碼管工作是否正常。SET_T是烹調(diào)時間設(shè)置控制信號,高電平有效。DATA0是一個16為總線輸入信號,輸入所設(shè)置的時間長
11、短,它由高到低分為4組,每一組是BCD碼輸入,分別表示分、秒十位、個位的數(shù)字,如12分59秒。START是烹調(diào)開始的控制信號,高電平有效。COOK是烹調(diào)進行信號,外接用于控制烹調(diào)的繼電器開關(guān),高電平時表明烹調(diào)已經(jīng)開始或正在進行,低電平表示烹調(diào)結(jié)束或沒有進行。MIN_0,MIN_1,SEC_0,SEC_1是四組七位總線信號,分別接4個七段數(shù)碼管,動態(tài)的顯示完成烹調(diào)所剩的時間及測試狀態(tài)信息“0000”,烹調(diào)完畢的狀態(tài)信息“DONE”.<
12、;/p><p> 該微波爐控制器WBLCONTROLLOR的具體功能要求如下[9]:上電后系統(tǒng)首先處于復(fù)位狀態(tài)。在工作是首先按SET_T鍵設(shè)置烹調(diào)時間,此時系統(tǒng)輸入DATA0的數(shù)據(jù)作為烹調(diào)所需的時間,然后系統(tǒng)自動回到復(fù)位狀態(tài),同時4個七段數(shù)碼管顯示時間信息。在按START鍵后系統(tǒng)進入烹調(diào)狀態(tài)。COOK信號開始為高電平,此時4個七段數(shù)碼管每隔一秒鐘變化一次,用以刷新還剩剩余多少時間結(jié)束烹調(diào)。烹調(diào)結(jié)束后,COOK信號變
13、為低電平,同時4個七段數(shù)碼管組合在一起顯示“DONE”的信息,然后系統(tǒng)回到復(fù)位狀態(tài)。系統(tǒng)可以通過按RESET鍵隨時回到復(fù)位狀態(tài)。在復(fù)位狀態(tài)下,按TEST鍵在4個數(shù)碼管上會顯示“0000”的信息,它可以測試4個七段數(shù)碼管工作是否正常。</p><p> 1.3 各模塊的功能實現(xiàn)</p><p> 根據(jù)該微波爐定時控制器的設(shè)計要求,本系統(tǒng)有四個模塊:狀態(tài)控制模塊controllor,數(shù)據(jù)裝
14、載模塊loader,烹調(diào)計時模塊counter,顯示譯碼模塊YMQ47,鎖存器模塊SCQ。 </p><p> ?。?)狀態(tài)控制器模塊是控制微波爐工作過程中的狀態(tài)轉(zhuǎn)換,并發(fā)出有關(guān)的控制信息,輸入信號為CLK,TEST,SET_T,START,TESET,DONE和SEL.輸出信號為LD_DONE,LD_test,LD_CLK,PT,WB等。根據(jù)輸入的控制信號來完成完成狀態(tài)轉(zhuǎn)換;LD_DONE指示LOADER裝入烹
15、調(diào)完畢的狀態(tài)信息“DONE”的顯示驅(qū)動信息數(shù)據(jù);LD_CLK指示LOADER裝入設(shè)置的烹飪時間數(shù)據(jù);LD_test指示LOADER裝入用于測試的數(shù)據(jù)“0000”以顯示驅(qū)動信息數(shù)據(jù);COOK指示烹調(diào)正在進行中,并提示計數(shù)器進行減計數(shù),PT和WB是兩種狀態(tài)的選擇顯示信息。</p><p> ?。?)數(shù)據(jù)裝載器LOADER的功能是根據(jù)CONTROLLOR發(fā)出的控制信號選擇定時時間,測試數(shù)據(jù)或烹調(diào)完成信息的裝入。當(dāng)LD_
16、DONE為高電平時,輸出烹調(diào)完畢的信息數(shù)據(jù);LD_CLK為高電平時,輸出設(shè)置的烹飪時間數(shù)據(jù);LD_test為高電平是,輸出測試的數(shù)據(jù)。輸出信號LOAD用于指示counter將處于數(shù)據(jù)裝入狀態(tài)。</p><p> ?。?)計時器counter的功能是負責(zé)烹調(diào)過程中的時間遞減計數(shù),并提供烹調(diào)完成時的狀態(tài)信號供CONTROLLOR產(chǎn)生烹調(diào)完成信號。LOAD為高電平時完成裝入功能,COOK為高電平時執(zhí)行逆計數(shù)功能。輸出D
17、ONE指示烹調(diào)完成。MIN_1,MIN_0,SEC_1,SEC_0為完成烹調(diào)所剩的時間及測試狀信息“0000”,烹調(diào)完畢的狀態(tài)信息“DONE”的BCD碼信息。</p><p> (4)顯示譯碼器YMQ47的功能是負責(zé)將各種顯示信息的BCD碼轉(zhuǎn)換成七段數(shù)碼管顯示的驅(qū)動信息編碼。需要譯碼的信息有:數(shù)字0-9,字母D,O,N,E。</p><p> 1-2 YMQ47原理圖</p>
18、;<p> 第二章 微波爐定時控制器的設(shè)計步驟</p><p> 2.1狀態(tài)控制器的設(shè)計</p><p> 狀態(tài)控制器的功能是控制微波爐工作過程中的狀態(tài)轉(zhuǎn)換,并發(fā)出有關(guān)的控制信息,因此可以用一個狀態(tài)機來實現(xiàn)。經(jīng)過對微波爐工作過程中的狀態(tài)轉(zhuǎn)換條件及輸出信號進行分析,我們可以得到其狀態(tài)轉(zhuǎn)換圖如圖2-1所示。</p><p> 2.1.1 cont
19、rollor狀態(tài)換圖及端口圖 </p><p> 圖2-1 CONTROLLOR的狀態(tài)轉(zhuǎn)換圖</p><p> 說明:SET_T烹調(diào)時間設(shè)置狀態(tài),LAMP_TEST數(shù)碼管測試狀態(tài);DONE_MSG完成信息顯示狀態(tài),TIMER減數(shù)定時狀態(tài)。</p><p> CONTROLLOR的端口圖如下圖所示: </p><p> 圖2-2 CO
20、NTROLLOR的端口圖</p><p> 2.2數(shù)據(jù)裝載器loader的設(shè)計</p><p> LOADER的輸入、輸出端口如圖2-3所示,根據(jù)其應(yīng)完成的邏輯功能,它本質(zhì)上就是一個三選一數(shù)據(jù)選擇器。數(shù)據(jù)選擇是指經(jīng)過選擇,把多個通道的數(shù)據(jù)傳送到唯一的公共數(shù)據(jù)通道上去。實現(xiàn)數(shù)據(jù)選擇功能的邏輯電路稱為數(shù)據(jù)選擇器。它的作用相當(dāng)于多個輸入的單刀多擲開關(guān)。數(shù)據(jù)選擇器的電路結(jié)構(gòu)一般由與或門陣列組成
21、,也有用傳輸門開關(guān)和門電路混合而成的。</p><p> 數(shù)據(jù)選擇器的應(yīng)用很廣,它可以作二進制比較器、二進制發(fā)生器、圖形發(fā)生電路、順序選擇電路。本設(shè)計采用一個進程來完成,但由于三個被選擇的數(shù)據(jù)只有一個來自輸入端口,因此另兩個被選擇的數(shù)據(jù)則通過在進程的說明部分定義兩個常數(shù)來產(chǎn)生。由于用于顯示“8888”的常數(shù)ALL 8需分解成4個8,分別經(jīng)過四個4-7譯碼器譯碼后才是真正的顯示驅(qū)動信息編碼,因此該常數(shù)應(yīng)是4個分段
22、的4位BCD碼,故應(yīng)設(shè)為“1000100010001000”。同理,顯示“donE”的常數(shù)DONE可設(shè)為“1010101111001101”,其中D,O,N,E的BCD碼分別為:“1010”、“1011”、“1100”、“1101”。 該模塊主要實現(xiàn)對狀態(tài)控制器發(fā)出的狀態(tài)信息的相應(yīng)數(shù)據(jù)的裝載功能。 </p><p> 圖2-3 loader的端口圖</p><p> 2.3烹調(diào)計時器
23、counter的設(shè)計</p><p> 計數(shù)是一種最簡單基本的運算,計數(shù)器就是實現(xiàn)這種運算的邏輯電路。計數(shù)器在數(shù)字系統(tǒng)中主要是對脈沖的個數(shù)進行計數(shù),以實現(xiàn)測量、計數(shù)和控制的功能,同時兼有分頻功能。計數(shù)器是由基本的計數(shù)單元和一些控制門所組成,計數(shù)單元則由一系列具有存儲信息功能的各類觸發(fā)器構(gòu)成,這些觸發(fā)器有RS觸發(fā)器、T觸發(fā)器、D觸發(fā)器及JK觸發(fā)器等[10]。計數(shù)器在數(shù)字系統(tǒng)中應(yīng)用廣泛,如在電子計算機的控制器中對指
24、令地址進行計數(shù),以便順序取出下一條指令,在運算器中作乘法、除法運算時記下加法、減法次數(shù),又如在數(shù)字儀器中對脈沖的計數(shù)等等。</p><p> 計數(shù)器按計數(shù)進制不同,可分為二進制計數(shù)器、十進制計數(shù)器、其他進制計數(shù)器和可變進制計數(shù)器,若按計數(shù)單元中各觸發(fā)器所接收計數(shù)脈沖和翻轉(zhuǎn)順序或計數(shù)功能來劃分,則有異步計數(shù)器和同步計數(shù)器兩大類,以及加法計數(shù)器、減法計數(shù)器、加/減計數(shù)器等,如按預(yù)置和清除方式來分,則有并行預(yù)置、直接
25、預(yù)置、異步清除和同步清除等差別,按權(quán)碼來分,則有“8421”碼,“5421”碼、余“3”碼等計數(shù)器,按集成度來分,有單、雙位計數(shù)器等等[10]。</p><p> 烹調(diào)計時器counter為減數(shù)計數(shù)器,其最大計時時間為59分59秒,因此我們可以用兩個鍵計數(shù)十進制計數(shù)器cnt10和兩個減計數(shù)六進制cnt6級聯(lián)構(gòu)成。</p><p> 2.3.1烹調(diào)計時器的內(nèi)部組成原理圖 </p&g
26、t;<p> 烹調(diào)計時器counter的內(nèi)部組成原理圖如圖2-4所示。</p><p> 圖2-4 counter的內(nèi)部組成原理圖</p><p> 說明:CLK為時鐘輸入信號,LOAD為裝載控制信號,COOK為使能信號,DATA[15.0]為數(shù)據(jù)輸入信號, SEC_1,SEC_0,MIN_1,MIN_0分別為妙,分的十位個位的輸出,DONE為烹調(diào)狀態(tài)的信息指示信號。當(dāng)
27、使能段信號有效,且時鐘上升沿來時計數(shù)器根據(jù)裝載數(shù)據(jù)的信息裝入數(shù)據(jù),并完成相應(yīng)的功能。</p><p> 2.4顯示譯碼器YMQ47的設(shè)計</p><p> 本顯示譯碼器不但要對數(shù)字0-9進行顯示譯碼,還要對字母D,O,N,E進行顯示譯碼。其譯碼對照表如表2-1所示,</p><p> 表2-1 YMQ47的譯碼對照表[</p><p>
28、<b> 2.5鎖存器的設(shè)計</b></p><p> 鎖存器SCQ的輸入、輸出端口如圖2-5所示</p><p> 圖2-5 SCQ的端口圖</p><p> 此單元主要用于完成定時時間到蜂鳴報警信息的實現(xiàn),當(dāng)時鐘上升沿到來且清零信號無效時,同時COOK信號開始有高電平變?yōu)榈碗娖綍r,輸出信號則是蜂鳴器報警。其實質(zhì)就是一個D觸發(fā)器的功能
29、。</p><p> 第三章 微波爐控制器的VHDL源程序</p><p> 3.1各模塊的VHDL源程序</p><p> 下面是各模塊的源程序:</p><p> LIBRARY IEEE;--定義庫文件</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p>
30、<p> USE IEEE.STD_LOGIC_ARITH.ALL;</p><p> ENTITY controllor IS</p><p> PORT (RESET:IN STD_LOGIC;--復(fù)位信號</p><p> SET_T:IN STD_LOGIC;--時間設(shè)置信號</p><p> START:I
31、N STD_LOGIC;--開始烹調(diào)信號</p><p> TEST:IN STD_LOGIC;--顯示電路測試信號</p><p> CLK:IN STD_LOGIC;--時鐘信號</p><p> DONE:IN STD_LOGIC;--完成信號</p><p> SEL:IN STD_LOGIC;</p>
32、<p> COOK:OUT STD_LOGIC;</p><p> LD_test:OUT STD_LOGIC;</p><p> LD_CLK:OUT STD_LOGIC;</p><p> LD_DONE:OUT STD_LOGIC;</p><p> PT:OUT STD_LOGIC;</p><
33、;p> WB:OUT STD_LOGIC);</p><p> END ENTITY controllor;</p><p> ARCHITECTURE ART OF controllor IS</p><p> TYPE STATE_TYPE IS (IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG);--狀態(tài)<
34、;/p><p> SIGNAL NXT_STATE ,CURR_STATE:STATE_TYPE;</p><p><b> BEGIN </b></p><p> PROCESS(CLK,RESET) IS</p><p><b> BEGIN </b></p><p>
35、; IF RESET ='1' THEN --清零 </p><p> IF SEL='0'THEN</p><p> PT<='1';WB<='0';</p><p> ELSE PT<='0';WB<='1' ;</p>
36、;<p><b> END IF;</b></p><p> CURR_STATE<=IDLE;</p><p> ELSIF CLK 'EVENT AND CLK='1' THEN</p><p> CURR_STATE<=NXT_STATE;</p><p>
37、<b> END IF; </b></p><p> END PROCESS;</p><p> PROCESS(CLK, CURR_STATE,SET_T,START,TEST,DONE) IS</p><p><b> BEGIN </b></p><p> NXT_STATE<
38、=IDLE;</p><p> LD_test<='0';</p><p> LD_DONE<='0';</p><p> LD_CLK<='0'; </p><p> COOK<='0';</p><p> CAS
39、E CURR_STATE IS </p><p> WHEN LAMP_TEST=>LD_test<='1';COOK<='0';--譯碼顯示測試狀態(tài)</p><p> WHEN SET_CLOCK=>LD_CLK<='1';COOK<='0';--烹調(diào)時間測試狀態(tài)</p>
40、<p> WHEN DONE_MSG=>LD_DONE<='1';COOK<='0';--完成信息顯示狀態(tài)</p><p> WHEN IDLE=></p><p> IF (TEST='1') THEN --初始狀態(tài)</p><p> NXT_STATE<=LA
41、MP_TEST;</p><p> LD_test<='1';</p><p> ELSIF SET_T='1' THEN</p><p> NXT_STATE<=SET_CLOCK;</p><p> LD_CLK<='1';</p><p>
42、 ELSIF ((START='1')AND(DONE='0')) THEN</p><p> NXT_STATE<=TIMER;</p><p> COOK<='1';</p><p><b> END IF;</b></p><p> WHEN T
43、IMER=></p><p> IF DONE='1' THEN --減法計數(shù)定時狀態(tài)</p><p> NXT_STATE<=DONE_MSG;</p><p> LD_DONE<='1';</p><p><b> ELSE </b></p>
44、<p> NXT_STATE<=TIMER;</p><p> COOK<='1';</p><p><b> END IF;</b></p><p><b> END CASE;</b></p><p> END PROCESS;</p&g
45、t;<p> END ARCHITECTURE ART; </p><p> 數(shù)據(jù)裝載電路的VHDL實現(xiàn)</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use ieee.std_logic_arith.all;</p&
46、gt;<p> entity loader is </p><p><b> port(</b></p><p> datain:in std_logic_vector(15 downto 0);</p><p> ld_test:in std_logic;</p><p> ld_clk:in
47、std_logic;</p><p> ld_done: in std_logic;</p><p> dataout:out std_logic_vector(15 downto 0);</p><p> load:out std_logic</p><p><b> );</b></p><
48、;p> end loader;</p><p> architecture rtl of loader is </p><p><b> begin </b></p><p> process(datain,ld_test,ld_clk,ld_done)</p><p> constant alls
49、: std_logic_vector(15 downto 0)--測試信息</p><p> :="1000100010001000";</p><p> constant done:std_logic_vector(15 downto 0)--烹調(diào)完成信息</p><p> :="1010101111001101";
50、</p><p> variable temp:std_logic_vector(2 downto 0);</p><p><b> begin </b></p><p> load<=ld_test or ld_done or ld_clk;</p><p> temp:=ld_test & l
51、d_done &ld_clk;</p><p> case temp is </p><p> when "100"=> --測試</p><p> dataout<=alls;</p><p> when "010"=> --烹調(diào)完成</p>&
52、lt;p> dataout<=done;</p><p> when "001"=> --設(shè)置時間</p><p> dataout<=datain;</p><p> when others=>null;</p><p> end case ;</p><
53、p> end process;</p><p><b> end rtl;</b></p><p> 計時電路的VHDL實現(xiàn)</p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> use iee
54、e.std_logic_unsigned.all;</p><p> entity cnt10 is</p><p><b> port(</b></p><p> clk:in std_logic;</p><p> load:in std_logic;</p><p> en:in
55、 std_logic;</p><p> datain:in std_logic_vector(3 downto 0);</p><p> q:out std_logic_vector(3 downto 0);</p><p> carry_out:out std_logic</p><p><b> );</b>
56、;</p><p> end cnt10;</p><p> architecture rtl of cnt10 is</p><p> signal tmp:std_logic_vector(3 downto 0);</p><p><b> begin</b></p><p> pr
57、ocess(clk,load,en )</p><p><b> begin </b></p><p> if load='1'then</p><p> tmp<=datain;</p><p> elsif clk'event and clk='1'then &l
58、t;/p><p> if en='1'then </p><p> if tmp="0000"then </p><p> tmp<="1001";</p><p><b> else </b></p><p> tmp<=
59、tmp-'1';</p><p><b> end if ;</b></p><p><b> end if ;</b></p><p><b> end if;</b></p><p> end process;</p><p>
60、; process(clk,tmp)</p><p><b> begin </b></p><p> if clk'event and clk='1'then </p><p> if tmp="0000"then </p><p> carry_out<=
61、'1';</p><p><b> else </b></p><p> carry_out<='0';</p><p><b> end if;</b></p><p><b> end if;</b></p>&l
62、t;p> end process;</p><p><b> q<=tmp;</b></p><p><b> end rtl;</b></p><p> ---六進制減法計數(shù)器</p><p> library ieee;</p><p> use
63、ieee.std_logic_1164.all;</p><p> use ieee.std_logic_unsigned.all;</p><p> entity cnt6 is </p><p><b> port( </b></p><p> clk:in std_logic;</p>
64、<p> load:in std_logic;</p><p> en:in std_logic;</p><p> datain:in std_logic_vector(3 downto 0);</p><p> q:out std_logic_vector(3 downto 0);</p><p> carry_ou
65、t:out std_logic</p><p><b> );</b></p><p><b> end cnt6;</b></p><p> architecture rtl of cnt6 is</p><p> signal tmp:std_logic_vector(3 downto
66、0 );</p><p><b> begin </b></p><p> process(clk,load,en )</p><p><b> begin </b></p><p> if load='1'then </p><p> tmp<
67、;=datain;</p><p> elsif clk'event and clk='1'then </p><p> if en='1'then </p><p> if tmp="0000"then </p><p> tmp<="0101"
68、;</p><p><b> else </b></p><p> tmp<=tmp-'1';</p><p><b> end if ;</b></p><p><b> end if ;</b></p><p><
69、b> end if;</b></p><p> end process;</p><p> process(clk,tmp)</p><p><b> begin </b></p><p> if clk'event and clk ='1'then </
70、p><p> if tmp="0000" then </p><p> carry_out<='1';</p><p><b> else </b></p><p> carry_out<='0';</p><p><b&
71、gt; end if;</b></p><p><b> end if;</b></p><p> end process;</p><p><b> q<=tmp;</b></p><p><b> end rtl;</b></p>
72、<p><b> 計時電路模塊設(shè)計</b></p><p> library ieee;</p><p> use ieee.std_logic_1164.all;</p><p> entity counter is </p><p><b> port (</b></p
73、><p> cook:in std_logic;</p><p> load:in std_logic;</p><p> clk:in std_logic;</p><p> data:in std_logic_vector(15 downto 0);</p><p> sec0:out std_logic_
74、vector(3 downto 0);</p><p> sec1:out std_logic_vector(3 downto 0);</p><p> min0:out std_logic_vector(3 downto 0); </p><p> min1:out std_logic_vector(3 downto 0); </p>
75、<p> done:out std_logic </p><p><b> );</b></p><p> end counter;</p><p> architecture rtl of counter is </p><p> ---定義十進制和六進制計數(shù)器電路模塊</p
76、><p> component cnt10 is </p><p><b> port( </b></p><p> clk:in std_logic;</p><p> load:in std_logic;</p><p> en:in std_logic;</p><
77、p> datain:in std_logic_vector(3 downto 0);</p><p> q:out std_logic_vector(3 downto 0);</p><p> carry_out:out std_logic</p><p><b> );</b></p><p> end
78、 component cnt10;</p><p> component cnt6 is </p><p><b> port( </b></p><p> clk:in std_logic;</p><p> load:in std_logic;</p><p> en:in s
79、td_logic;</p><p> datain:in std_logic_vector(3 downto 0);</p><p> q:out std_logic_vector(3 downto 0);</p><p> carry_out:out std_logic</p><p><b> );</b>&
80、lt;/p><p> end component cnt6;</p><p> signal clk0:std_logic;</p><p> signal s0:std_logic;</p><p> signal s1:std_logic;</p><p> signal s2:std_logic;</
81、p><p> signal s3:std_logic;</p><p><b> begin </b></p><p><b> --元件例化</b></p><p> U1:cnt10 port map(clk,load,cook,data(3 downto 0),sec0,s0);</
82、p><p> U2:cnt6 port map(s0,load,cook,data(7 downto 4),sec1,s1);</p><p> U3:cnt10 port map(s1,load,cook,data(11 downto 8),min0,s2);</p><p> U4:cnt6 port map(s2,load,cook,data(15 down
83、to 12),min1,s3);</p><p> done<=s0 and s1 and s2 and s3;</p><p><b> end rtl;</b></p><p> 頂層模塊的VHDL實現(xiàn)</p><p> library ieee;</p><p> use i
84、eee.std_logic_1164.all;</p><p> entity top is</p><p><b> port(</b></p><p> data:in std_logic_vector(15 downto 0);</p><p> reset:in std_logic;</p>
85、<p> set_t:in std_logic;</p><p> start:in std_logic;</p><p> test:in std_logic;</p><p> clk:in std_logic;</p><p> cook:out std_logic;</p><p>
86、sec0:out std_logic_vector(3 downto 0);</p><p> sec1:out std_logic_vector(3 downto 0);</p><p> min0:out std_logic_vector(3 downto 0);</p><p> min1:out std_logic_vector(3 downto 0)
87、</p><p><b> );</b></p><p><b> end top;</b></p><p> architecture rtl of top is </p><p> ---定義狀態(tài)控制電路模塊</p><p> component control
88、lor is </p><p><b> port( </b></p><p> reset: in std_logic;</p><p> set_t:in std_logic;</p><p> start:in std_logic;</p><p> test:in std
89、_logic;</p><p> clk:in std_logic;</p><p> done:in std_logic;</p><p> cook:out std_logic;</p><p> ld_test:out std_logic;</p><p> ld_clk:out std_logic;&
90、lt;/p><p> ld_done:out std_logic</p><p><b> );</b></p><p> end component controllor;</p><p> component loader is </p><p> ---定義數(shù)據(jù)裝載電路模塊</p
91、><p><b> port(</b></p><p> datain:in std_logic_vector(15 downto 0);</p><p> ld_test:in std_logic;</p><p> ld_clk:in std_logic;</p><p> ld_don
92、e:in std_logic;</p><p> dataout:out std_logic_vector(15 downto 0);</p><p> load:out std_logic</p><p><b> );</b></p><p> end component loader;</p>
93、<p> ---定義計時電路模塊</p><p> component counter is </p><p><b> port(</b></p><p> cook:in std_logic;</p><p> load:in std_logic;</p><p> c
94、lk:in std_logic;</p><p> data:in std_logic_vector(15 downto 0);</p><p> sec0:out std_logic_vector(3 downto 0);</p><p> sec1:out std_logic_vector(3 downto 0);</p><p>
95、 min0:out std_logic_vector(3 downto 0);</p><p> min1:out std_logic_vector(3 downto 0);</p><p> done:out std_logic </p><p><b> );</b></p><p> end co
96、mponent counter;</p><p> signal cook_tmp:std_logic;</p><p> signal test_tmp:std_logic;</p><p> signal clk_tmp:std_logic;</p><p> signal done_tmp:std_logic;</p>
97、;<p> signal load_tmp:std_logic;</p><p> signal done:std_logic;</p><p> signal data_tmp:std_logic_vector(15 downto 0);</p><p><b> begin </b></p><p&
98、gt; cook<=cook_tmp;</p><p><b> ---電路模塊例化</b></p><p> U1:controllor port map(reset,set_t,start,test,clk,done,cook_tmp,test_tmp,clk_tmp,done_tmp);</p><p> U2:loader
99、 port map(data,test_tmp,clk_tmp,done_tmp,data_tmp,load_tmp);</p><p> U3:counter port map(cook_tmp,load_tmp,clk,data_tmp,sec0,sec1,min0,min1,done);</p><p><b> end rtl;</b></p>
100、<p> 顯示譯碼YMQ47的VHDL實現(xiàn)</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY YMQ47 IS</p>
101、<p> PORT(AIN4:IN STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> DOUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));</p><p> END ENTITY YMQ47;</p><p> ARCHITECTURE ART OF YMQ47 IS</p>
102、<p><b> BEGIN</b></p><p> PROCESS(AIN4)</p><p><b> BEGIN </b></p><p> CASE AIN4 IS</p><p> WHEN "0000"=>DOUT7<="
103、;0111111";</p><p> WHEN "0001"=>DOUT7<="0000110";</p><p> WHEN "0010"=>DOUT7<="1011011";</p><p> WHEN "0011"=&g
104、t;DOUT7<="1001111";</p><p> WHEN "0100"=>DOUT7<="1100110";</p><p> WHEN "0101"=>DOUT7<="1101101";</p><p> WHEN &q
105、uot;0110"=>DOUT7<="1111101";</p><p> WHEN "0111"=>DOUT7<="0000111";</p><p> WHEN "1000"=>DOUT7<="1111111";</p>&
106、lt;p> WHEN "1001"=>DOUT7<="1101111";</p><p> WHEN "1010"=>DOUT7<="1011110";</p><p> WHEN "1011"=>DOUT7<="1011100&qu
107、ot;;</p><p> WHEN "1100"=>DOUT7<="1010100";</p><p> WHEN "1101"=>DOUT7<="1111001";</p><p> WHEN OTHERS =>DOUT7<="00
108、00000";</p><p><b> END CASE;</b></p><p> END PROCESS;</p><p> END ARCHITECTURE ART; ---------------YMQ47的源程序</p><p> 鎖存SCQ的VHDL實現(xiàn)<
109、/p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY SCQ IS</p><p><b> port( <
110、/b></p><p> clk:in std_logic;</p><p> done:in std_logic;</p><p> clr:in std_logic;</p><p> arlm: out std_logic);</p><p> end entity;</p>
111、<p> ARCHITECTURE ART OF SCQ IS</p><p><b> begin </b></p><p> process( clk,done,clr)</p><p><b> begin </b></p><p> if (done='1'
112、; and clr='0')</p><p> then arlm<='1';</p><p> else arlm<='0';</p><p><b> end if ;</b></p><p> end process;</p>
113、<p><b> end;</b></p><p> 第四章 總體原理圖</p><p> 4.1 總體功能的頂層原理圖</p><p> 本頂層設(shè)計采用原理圖輸入的方式進行設(shè)計,本框圖有五個部分組成。然后對此圖進行編譯仿真最終實現(xiàn)該微波爐定時控制器的各種功能。</p><p><b>
114、圖4-1頂層原理圖</b></p><p> 該頂層原理圖由以上的五個模塊組成,其中輸入端的控制模塊是主要功能的實現(xiàn)控制部分,由它發(fā)出控制信息來提示下面各模塊完成什么功能。其他模塊則根據(jù)控制信息成數(shù)據(jù)的裝載(裝入8888、DONE、時間數(shù)據(jù))、計時的遞減等功能。 輸出端則主要由譯碼器實現(xiàn)信息的顯示功能,并且指示控制器處于那種工作狀態(tài)下。</p><p> 第五章 系統(tǒng)功能
115、的仿真驗證</p><p> 5.1 狀態(tài)控制電路仿真波形圖 </p><p> 圖5-1 controllor顯示的仿真圖</p><p> 上圖中,當(dāng)測試信號TEST為高電平有效時,測試輸出信號為高電平;否則,當(dāng)時間設(shè)置信號SET_T為高電平,對應(yīng)的指示信號LD_CLK輸出高電平;當(dāng)烹飪開始信號START信號為高電平時,對應(yīng)輸出COOK為高電平;當(dāng)復(fù)位信
116、號RESET為高電平時,系統(tǒng)復(fù)位清零,恢復(fù)初始狀態(tài)。仿真結(jié)果符合模塊設(shè)計的要求。</p><p> 5.2數(shù)據(jù)裝載電路的仿真</p><p> 圖5-2數(shù)據(jù)裝載電路仿真波形圖</p><p> 該模塊本質(zhì)即多路選擇譯碼電路。當(dāng)LD_CLK、LD_TEST、LD_DONE三路信號中有且僅有一路信號高電平有效時,選擇其相應(yīng)的值作為輸出。</p>&l
117、t;p> 5.3 計時電路仿真</p><p> 圖5-3計時電路仿真波形圖</p><p> 圖中LOAD為高電平時讀取信號DATA的值,當(dāng)COOK信號為高電平時,對DATA的值進行減法計數(shù),并在每個時鐘周期都輸出減法計數(shù)器的當(dāng)前值。仿真結(jié)果與預(yù)先設(shè)定的電路功能相吻合。</p><p> 5.4微波爐控制器顯示仿真</p><p&
118、gt; 圖5-4微波爐控制器顯示測試功能仿真</p><p> 當(dāng)復(fù)位信號有效,微波爐控制器處于初始狀態(tài)時,若顯示管測試信號有效,則顯示管輸出全8,以示正常工。</p><p> 5.5SCQ的仿真圖</p><p> 圖5-5 SCQ的仿真圖</p><p> 圖5-5為SCQ的仿真圖,該仿真圖說明了當(dāng)烹調(diào)計時完成時即DONE的
119、信號變?yōu)楦唠娖綍r,SCQ輸出的ARLM信號變?yōu)楦唠娖?,即指示工作的結(jié)束。</p><p> 5.6總體功能的仿真分析</p><p> 圖5-6 總功能顯示的仿真圖</p><p> 圖5-6是頂層原理圖的仿真結(jié)果。由該頂層原理圖的仿真結(jié)果可以看出,此設(shè)計基本實現(xiàn)了所要求的各種功能定時,復(fù)位,狀態(tài)切換等功能。</p><p><
120、b> 結(jié)束語</b></p><p> “ 提出一個問題往往比解決一個問題更重要,因為解決問題也許僅是一個數(shù)學(xué)上或?qū)嶒炆系募寄芏?。而提出新的問題、新的可能性,從新的角度去看舊的問題,都需要有創(chuàng)造性的想象力,而且標志著科學(xué)的真正進步?!薄獝垡蛩固?lt;/p><p> 近來進行了一個多月的畢業(yè)設(shè)計任務(wù),通過這段時間的學(xué)習(xí)培養(yǎng)了我獨立思考的解決問題的能力,同時也提高了本
121、身的動手實踐的能力,而且在老師和同學(xué)的幫助下,認真查看問題的所在并且努力利用一切方法來解決實驗中所出現(xiàn)的問題,同時培養(yǎng)了解決問題的能力,初步學(xué)會了設(shè)計中個所用到的軟件操作,我想這將會有利于我今后的學(xué)習(xí)和工作。</p><p> 這個項目到目前為已經(jīng)基本完成,單我知道這個設(shè)計仍有不足之處需要補充創(chuàng)新的,例如可以給控制器加上個預(yù)置數(shù)的功能或分頻器能夠使系統(tǒng)性能更穩(wěn)定。她給我們那么深的希望,讓我們?yōu)榱怂ヅ^斗學(xué)習(xí)
122、,讓我們值得去回味以前為了這個所做的一切努力。所有這兩個月的心血都在這幾十頁紙上,我希望在這幾十頁紙上,書寫了我一個完整的大學(xué)和我那美好的青春時光,書寫了這樣一個結(jié)束,同時也書寫了另外的一個開始!</p><p><b> 參考文獻</b></p><p> [1] 劉欲曉 方強 黃宛寧 《EDA技術(shù)與VHDL電路開發(fā)應(yīng)用實踐》 電子工業(yè)出版社</p&
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計---微波爐定時控制器
- eda課程設(shè)計---微波爐定時控制器的設(shè)置
- eda課程設(shè)計---微波爐控制器設(shè)計
- eda課程設(shè)計—微波爐定時設(shè)計
- vhdl微波爐控制器課程設(shè)計-- 數(shù)字微波爐控制器
- 數(shù)電課程設(shè)計--微波爐定時控制器的設(shè)計與制作
- 課程設(shè)計---vhdl設(shè)計微波爐控制器
- 課程設(shè)計---基于fpga的微波爐控制器設(shè)計
- 數(shù)字電路課程設(shè)計微波爐控制器
- 微波爐課程設(shè)計---基于微波爐控制系統(tǒng)設(shè)計
- 基于fpga的微波爐控制器設(shè)計
- 開題報告---基于fpga的微波爐控制器設(shè)計
- 微波爐控制器論文
- 畢業(yè)設(shè)計--微波爐控制器系統(tǒng)
- 簡易微波爐控制器的設(shè)計與實現(xiàn)
- eda電梯控制器課程設(shè)計報告
- 基于fpga的微波爐控制器【開題報告】
- 可編程微波爐控制器系統(tǒng)設(shè)計
- 《eda技術(shù)》課程設(shè)計報告----彩燈控制器
- eda課程設(shè)計--電梯控制器設(shè)計
評論
0/150
提交評論