2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩25頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論