基于EDA的微波爐控制器芯片設(shè)計_第1頁
基于EDA的微波爐控制器芯片設(shè)計_第2頁
基于EDA的微波爐控制器芯片設(shè)計_第3頁
基于EDA的微波爐控制器芯片設(shè)計_第4頁
基于EDA的微波爐控制器芯片設(shè)計_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、浙江科技學(xué)院嵌入式系統(tǒng)(EDA技術(shù))課程設(shè)計報告書課題名稱:基于MAX II系列CPLD的微波爐控制器芯片設(shè)計院、系 : 自動化與電氣工程學(xué)院 專業(yè)班級: 建筑電氣智能化 姓 名: 學(xué) 號: 指導(dǎo)教師: 完成日期: 2013年12月17日 目 錄第一章 緒論1第二章 設(shè)計目的2第三章 設(shè)計要求33.1 微波爐的功能要求33.2設(shè)計步驟3第四章 設(shè)計思想44.1微波爐定時器的工作過程44.2根據(jù)系統(tǒng)的基本要求4第五章 設(shè)計內(nèi)容55.1狀態(tài)控制電路模塊65.2數(shù)據(jù)裝載電路模塊85.3計時器模塊95.4狀態(tài)控制源程序115.5控制器仿真及分析20設(shè)計總結(jié)23感 言24參考文獻25第1章 緒論隨著人們

2、生活水平的提高和信息化的發(fā)展,家用電器層出不窮,各種功能也越來越完善,其中微波爐是現(xiàn)代家庭的必備產(chǎn)品已經(jīng)成為人們?nèi)沼蒙钪械谋夭豢缮俚膹N房電器,大大降低了家庭婦女的工作量和工作強度,它的質(zhì)量和性能的高低,將會極大的影響人們的生活水平和質(zhì)量。為此,設(shè)計一個高質(zhì)量的微波爐控制系統(tǒng)是非常有必要的。微波爐開始進入越來越多的家庭,他給人們的生活帶來了極大的方便。微波爐由2450MHz的超高頻來加熱食物。他省時、省電、方便和衛(wèi)生,作為現(xiàn)代的烹飪工具,微波爐的控制器體現(xiàn)著他的重要性能指標(biāo)。目前大部分微波爐控制器采用單片機進行設(shè)計,帶南路比較復(fù)雜性能不夠靈活。本文采用先進的EDA技術(shù),利用QuartusII工

3、作平臺和VHDL設(shè)計語言,設(shè)計了一種新型的微波爐控制器芯片,該芯片具有系統(tǒng)復(fù)位、時間設(shè)定和烹飪計時的功能,用一片F(xiàn)PGA芯片實現(xiàn),所以能設(shè)計出一款方便安全操作的微波爐是非常有必要的。第2章 設(shè)計目的該設(shè)計用語言在軟件平臺上通過編譯、模擬、仿真,完成了微波爐控制功能,實現(xiàn)了微波爐的測試、時間設(shè)置、烹調(diào)計時、完成提示等設(shè)計,并對時鐘分頻作了一定的探討。此設(shè)計采用了現(xiàn)場可編程邏輯器件的 設(shè)計,由控制模塊、裝載模塊、計時模塊和顯示模塊四大模塊組成,而且它可以將所有器件集成在一塊芯片上,體積大大減小,且外圍電路很簡單,易于實現(xiàn)。第3章 設(shè)計要求3.1 微波爐的功能要求要求設(shè)計一個基于MAXII系列的可調(diào)

4、式數(shù)字鬧鐘,器件型號為EPM240T100C5,功能要求如下:1、上電后,系統(tǒng)自動復(fù)位:數(shù)碼管顯示全零,功率選擇小火檔,顯示“1”,三擋加熱輸出均為低電平; 2、可以進行烹調(diào)時間的分、秒設(shè)置,并使用數(shù)碼管顯示時間信息,設(shè)要求最長的烹調(diào)時間為59分59秒;3、可以選擇加熱功率,分三檔:高火、中火、小火,分別顯示“3”,“2”,“1”;4、按“開始”按鍵進入烹調(diào)狀態(tài),根據(jù)功率選擇輸出加熱控制信號,時間顯示數(shù)碼管按每秒減1的倒計時方式顯示剩余烹調(diào)時間;5、烹調(diào)定時結(jié)束后,輸出通知信號,系統(tǒng)回到復(fù)位狀態(tài)。3.2設(shè)計步驟采用VHDL的系統(tǒng)設(shè)計,一般有以下6個步驟:(1)要求的功能模塊劃分; (2)VHD

5、L的設(shè)計描述(設(shè)計輸入); (3)代碼仿真模擬(前仿真); (4)計綜合、優(yōu)化和布局布線; (5)布局布線后的仿真模擬(后仿真); (6)設(shè)計的實現(xiàn)(下載到目標(biāo)器件)。 第4章 設(shè)計思想4.1微波爐定時器的工作過程 上電后,系統(tǒng)處于復(fù)位狀態(tài)。工作時首先進行烹調(diào)時間設(shè)置,并使用數(shù)碼管顯示時間信息,設(shè)要求最長的烹調(diào)時間為59分59秒,時間設(shè)置完畢后系統(tǒng)自動回到初始狀態(tài);按開始烹調(diào)按鍵進入烹調(diào)狀態(tài),時間顯示數(shù)碼管按每秒減1的倒計時方式顯示剩余烹調(diào)時間;烹調(diào)結(jié)束后,系統(tǒng)回到復(fù)位狀態(tài)。 4.2根據(jù)系統(tǒng)的基本要求 (1) 計時電路的設(shè)計:芯片內(nèi)部產(chǎn)生和外部提供。本例中由外部時鐘電路以BCD碼的形式提供。

6、(2) 時間設(shè)置出錯及工作過程的取消等情況的處理:設(shè)置一個復(fù)位按鍵。 (3)數(shù)碼管狀態(tài)的檢測:設(shè)置數(shù)碼管檢測按鍵,按動該按鍵后,數(shù)碼管能夠顯示“8888”的信息。 (4) 時間顯示電路:采用4位7段顯示數(shù)碼管顯示,并由芯片直接驅(qū)動。 (5) 微波管的驅(qū)動:設(shè)置一個輸出驅(qū)動控制烹調(diào)狀態(tài)的繼電器即可。第5章 設(shè)計內(nèi)容微波爐控制器的功能設(shè)計要求,本系統(tǒng)可由一下4個模塊組成:狀態(tài)控制器KZQ;數(shù)據(jù)裝載器ZZQ;烹調(diào)計時器JSQ;顯示譯碼器YMQ47;狀態(tài)控制電路,其功能是控制微波爐工作過程中的狀態(tài)轉(zhuǎn)換,并發(fā)出相關(guān)控制信號;數(shù)據(jù)裝載電路,其功能是根據(jù)控制信號選擇定時時間,測試數(shù)據(jù)或計時完成信息的載入;計

7、時器電路,其功能是對時鐘進行減法計數(shù),提供烹調(diào)完成時的狀態(tài)信號。譯碼器,就是負責(zé)將各種顯示信息的BCD轉(zhuǎn)換成七段數(shù)碼管顯示的驅(qū)動信息編碼。微波爐控制器的系統(tǒng)框圖如圖1所示。其中,CLK為時鐘輸入信號,時鐘上升沿敏感;RESET為復(fù)位信號,高電平有效時系統(tǒng)復(fù)位清零;TEST為數(shù)碼顯示管測試信號,高電平有效系統(tǒng)顯示8888;SET_T高電平有效時允許設(shè)置烹飪時間;KEY為定時時間輸入信號,用于設(shè)置烹飪時間的長短,其高到低分別表示時間分、秒的十位、個位;START為烹調(diào)開始信號,高電平有效時開始烹調(diào);輸出信號COOK指示微波爐狀態(tài),高電平時表示烹調(diào)進行時;SEC0 、SEC1、MIN0、MIN1分別

8、表示秒個位、秒十位、分個位、分十位。圖1 微波爐控制器的系統(tǒng)框圖接通電源初始狀態(tài)時間設(shè)置顯示8888烹調(diào)完成SET_TTEST?START?時間到?NYNYNYNY圖2 工作流程圖首先,對系統(tǒng)進行復(fù)位清零,使其各電路模塊均處于初始狀態(tài);當(dāng)烹飪時間設(shè)置信號SET_T有效時,讀入時間信號KEY3.0的取值,此時系統(tǒng)顯示設(shè)置的時間信息,再按下SET_T確定設(shè)置時間完成。按下開始鍵START,系統(tǒng)進入烹調(diào)狀態(tài),COOK信號變?yōu)楦唠娖?,時鐘計數(shù)器開始減法計數(shù),MIN1、MIN0、SEC1、SEC0顯示剩余烹調(diào)時間。烹調(diào)結(jié)束,系統(tǒng)恢復(fù)初始狀態(tài)。當(dāng)系統(tǒng)處于復(fù)位清零狀態(tài)時,按下顯像管測試按鈕TEST,將對顯像

9、管是否正常工作進行測試,正常工作時,顯像管輸出全8。5.1狀態(tài)控制電路模塊狀態(tài)控制器的功能根據(jù)輸入信號和自身當(dāng)時所處的狀態(tài)完成狀態(tài)的轉(zhuǎn)換和輸出相應(yīng)的控制信號,其模塊框圖如圖3所示。其中,輸出信號LD_DONE指示數(shù)據(jù)裝載電路載入的烹調(diào)結(jié)束的狀態(tài)信息的顯示的驅(qū)動信息數(shù)據(jù);LD_CLK顯示數(shù)據(jù)裝載電路的設(shè)置的時間數(shù)據(jù);LD_TEST指示數(shù)據(jù)裝載電路載入的用于測試的數(shù)據(jù),以顯示驅(qū)動信息數(shù)據(jù);COOK指示烹飪的狀態(tài),并提示計時器進行減法計算;KEY為定時時間輸入信號,用于設(shè)置烹飪時間的長短,其高到低分別表示時間分、秒的十位、個位。當(dāng)LD_DONE有效時,輸出烹調(diào)結(jié)束數(shù)據(jù)。當(dāng)LD_CLK有效時,輸出烹調(diào)

10、的設(shè)置時間數(shù)據(jù)。當(dāng)LD_TEST有效時,輸出數(shù)碼管測試數(shù)據(jù)包括6個輸入信號和4個輸出信號。圖3 狀態(tài)控制電路模塊框圖根據(jù)微波爐工作流程的描述,分析狀態(tài)轉(zhuǎn)換條件及輸出信號,可以得到如圖4所示的微波爐控制器的狀態(tài)轉(zhuǎn)換圖。TEST/LD_TESTRESET初 始狀 態(tài)IDLESET_CLOCKLAMP_TESTDONE_MSGTIMERSTART&DONE&TEST&SET_T/COOKLD_DONE/COOKX/LD_DONEX/LD_CLKSET_T&TEST/LD_CLKX/LD_TESTDONE/LD_DONE圖4 狀態(tài)控制器狀態(tài)轉(zhuǎn)換圖減法計數(shù)定時狀態(tài)T完成信

11、息顯示狀態(tài)T烹調(diào)時間設(shè)置狀態(tài)T顯示譯碼測試狀態(tài)T 圖中,當(dāng)RESET信號有效時,系統(tǒng)復(fù)位清零;輸入/輸出對應(yīng)烹調(diào)時間設(shè)置、顯示譯碼測試、完成信號顯示和減法計數(shù)定時四種狀態(tài)進行相應(yīng)的轉(zhuǎn)換。 5.2數(shù)據(jù)裝載電路模塊數(shù)據(jù)裝載電路的本質(zhì)是一個三選一多路選擇器,其模塊框圖如圖5所示。圖5 數(shù)據(jù)裝載電路模塊框圖當(dāng)LD_DONE有效時,輸出烹調(diào)結(jié)束的信息數(shù)據(jù)數(shù)據(jù)。當(dāng)L_CLK有效時,輸出烹調(diào)的設(shè)置時間數(shù)據(jù)。當(dāng)L_TEST有效時,輸出數(shù)碼管測試數(shù)據(jù)。LOAD信號為LD_DONE時DATEOUT輸出KEY有效指示。5.3計時器模塊 電路計時模塊可以由十進制減法計數(shù)器和六進制減法計數(shù)器級聯(lián)組成,其中,兩個十進制的

12、減法計數(shù)器用于分、秒的個位減法計數(shù),兩個六進制的減法計數(shù)器用于分、秒的十位減法計數(shù)。由六進制計數(shù)器和十進制計數(shù)器級聯(lián)構(gòu)成的計時模塊原理圖如圖6所示。圖6 計時器模塊原理圖計時器模塊的框圖如圖7所示。圖7 計時器模塊框圖LOAD有效時完成裝入功能,COOK(EN)有效時執(zhí)行減計數(shù);CLR由RESET發(fā)出信號,清除裝載已存的數(shù)據(jù);DONE返回給控制器,MIN和SEC顯示所剩時間和測試狀態(tài)信息、烹調(diào)結(jié)束狀態(tài)信息等。顯示譯碼控制部分的設(shè)計顯示的數(shù)字或字母BCD編碼七段顯示驅(qū)動編碼(ga)0000001111111000100001102001010110113001110011114010011001

13、10501011101101601101111101701110000111810001111111910011101111d10101011110o10111011100n11001010100E11011111001設(shè)計內(nèi)容狀態(tài)控制符號圖5.4狀態(tài)控制源程序-狀態(tài)控制電路的VHDL實現(xiàn)如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY controllor IS PORT( RESET:IN STD_LOGIC; -復(fù)位

14、信號 KEY: IN STD_LOGIC_VECTOR(3 DOWNTO 0);-輸入時間 SET_T:IN STD_LOGIC;-時間設(shè)置信號 START:IN STD_LOGIC;-開始烹調(diào)信號 TEST:IN STD_LOGIC;-顯示電路測試信號 CLK:IN STD_LOGIC; -時鐘脈沖 DONE:IN STD_LOGIC;-完成信號 COOK:OUT STD_LOGIC;-指示烹調(diào)狀態(tài),提示計時器開始計數(shù) LD_TEST:OUT STD_LOGIC;-指示數(shù)據(jù)裝載電路載入的用于測試的數(shù)據(jù) LD_CLK:OUT STD_LOGIC; -指示數(shù)據(jù)裝載電路載入設(shè)置時間數(shù)據(jù) DATA:

15、OUT STD_LOGIC_VECTOR(15 DOWNTO 0);-16位數(shù)據(jù) LED_SET_T:OUT STD_LOGIC; -LED顯示狀態(tài) LD_DONE:OUT STD_LOGIC -LED顯示完成 );END controllor;ARCHITECTURE rtl OF controllor ISTYPE STATES IS(IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG);SIGNAL NXT,CUR:STATES; -2個信號:下一狀態(tài)、當(dāng)前狀態(tài)SIGNAL DATATMP:STD_LOGIC_VECTOR(15 DOWNTO 0); SIGN

16、AL SET_T0: STD_LOGIC; -設(shè)置時間信號BEGIN PROCESS(CLK,RESET) -時鐘和復(fù)位的進程 BEGIN IF RESET='1' THEN -復(fù)位時將IDLE(顯示0000)賦予當(dāng)前狀態(tài) CUR<=IDLE; ELSIF CLK'EVENT AND CLK='1' THEN CUR<=NXT; -如果不是,遇到上邊沿則自動跳轉(zhuǎn)下一狀態(tài) END IF;END PROCESS; PROCESS(RESET,KEY) -復(fù)位和輸入的進程 BEGIN -可以讓輸入4位數(shù)字 顯示時間 IF RESET = '

17、1' THEN -復(fù)位時不論任何狀態(tài)數(shù)碼管都將顯示0000 DATATMP <= (others => '0'); ELSE IF KEY(3)'EVENT AND KEY(3) = '1' THEN -設(shè)置分的十位 IF DATATMP(15 DOWNTO 12) = "0101" THEN -5自動跳轉(zhuǎn)到0 DATATMP(15 DOWNTO 12) <= "0000" ELSE DATATMP(15 DOWNTO 12) <= DATATMP(15 DOWNTO 12) + 1

18、; END IF; -否則自動加1 END IF; IF KEY(2)'EVENT AND KEY(2) = '1' THEN -設(shè)置分的個位 IF DATATMP(11 DOWNTO 8) = "1001" THEN -9自動跳轉(zhuǎn)到0 DATATMP(11 DOWNTO 8) <= "0000" ELSE DATATMP(11 DOWNTO 8) <= DATATMP(11 DOWNTO 8) + 1; END IF; -否則自動加1 END IF; IF KEY(1)'EVENT AND KEY(1) =

19、'1' THEN -設(shè)置秒的十位 IF DATATMP(7 DOWNTO 4) = "0101" THEN -5自動跳轉(zhuǎn)到0 DATATMP(7 DOWNTO 4) <= "0000" ELSE DATATMP(7 DOWNTO 4) <= DATATMP(7 DOWNTO 4) + 1; END IF; -否則自動加1 END IF; IF KEY(0)'EVENT AND KEY(0) = '1' THEN -設(shè)置秒的個位 IF DATATMP(3 DOWNTO 0) = "1001&qu

20、ot; THEN -9自動跳轉(zhuǎn)到0 DATATMP(3 DOWNTO 0) <= "0000" ELSE DATATMP(3 DOWNTO 0) <= DATATMP(3 DOWNTO 0) + 1; END IF; END IF; -否則自動加1 END IF; DATA <= DATATMP; END PROCESS; PROCESS(SET_T,RESET) -設(shè)置時間和復(fù)位進程 BEGIN IF RESET = '1' THEN -復(fù)位時設(shè)置時間變?yōu)榈碗娖?SET_T0 <= '0' ELSIF SET_T&#

21、39;EVENT AND SET_T = '1' THEN -按下SET_T鍵時 SET_T0 <= NOT SET_T0; -SET_T非它前之狀態(tài) END IF; IF SET_T0 = '1' THEN LED_SET_T <= '1' -賦予SET_T持續(xù)電平 ELSE LED_SET_T <= '0' -賦予SET_T持續(xù)電平 END IF; END PROCESS;PROCESS(CLK,CUR,SET_T,START,TEST,DONE) ISBEGIN NXT<=IDLE; -將IDLE載入

22、NXT LD_TEST<='0' -復(fù)位 LD_DONE<='0' LD_CLK<='0' COOK<='0' CASE CUR IS WHEN LAMP_TEST=> -譯碼器顯示測試狀態(tài) LD_TEST<='1' COOK<='0' WHEN SET_CLOCK=> -烹調(diào)時間測試狀態(tài) LD_CLK<='1' COOK<='0' WHEN DONE_MSG=> -完成信息顯示狀態(tài) LD_DONE&l

23、t;='0' COOK<='0' WHEN IDLE=> -初始狀態(tài)定義 IF TEST='1' THEN NXT<=LAMP_TEST; -設(shè)置TEST LD_TEST<='1' ELSIF SET_T0='1' THEN -設(shè)置 SET_T NXT<=SET_CLOCK; LD_CLK<='1' ELSIF START='1' AND DONE='0' THEN -設(shè)置計時模式 NXT<=TIMER; COOK<=&

24、#39;1' END IF; WHEN TIMER=> IF DONE='1' THEN -設(shè)置計時完成 NXT<=DONE_MSG; LD_DONE<='0' ELSE NXT<=TIMER; COOK<='1' END IF; - WHEN OTHERS=>NULL; END CASE; END PROCESS;END rtl;數(shù)據(jù)裝載的符號圖數(shù)據(jù)裝載的源程序-數(shù)據(jù)裝載電路的VHDL實現(xiàn)如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_

25、LOGIC_ARITH.ALL;ENTITY loader IS PORT( DATAIN:IN STD_LOGIC_VECTOR(15 DOWNTO 0); -輸入16位數(shù)據(jù) LD_TEST:IN STD_LOGIC; LD_CLK:IN STD_LOGIC; LD_DONE:IN STD_LOGIC; DATAOUT:OUT STD_LOGIC_VECTOR(15 DOWNTO 0); -輸出16位數(shù)據(jù) LOAD:OUT STD_LOGIC -選擇狀態(tài) );END loader;ARCHITECTURE rtl OF loader ISBEGIN PROCESS(DATAIN,LD_TES

26、T,LD_CLK,LD_DONE) CONSTANT ALLS:STD_LOGIC_VECTOR(15 DOWNTO 0)-測試信息 CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0)-烹調(diào)完成信息 VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN LOAD<=LD_TEST OR LD_DONE OR LD_CLK; -三選一狀態(tài) TEMP:=LD_TEST&LD_DONE&LD_CLK; -中間變量定義 CASE TEMP IS WHEN"100"=>-測試

27、 DATAOUT<=ALLS; WHEN"010"=>-烹調(diào)完成 DATAOUT<=DONE; WHEN"001"=> DATAOUT<=DATAIN; WHEN OTHERS=>NULL; END CASE; END PROCESS;END rtl;計時器電路的符號圖計時器電路的源程序-十進制計數(shù)器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 IS PORT( CLK:IN STD_LOGIC

28、; LOAD,CLR:IN STD_LOGIC; -CLR:清除數(shù)據(jù) EN:IN STD_LOGIC; -信號使能 DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -輸入的4位數(shù)據(jù) Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -輸出的4位數(shù)據(jù) CARRY_OUT:OUT STD_LOGIC -數(shù)據(jù)裝載 );END cnt10;ARCHITECTURE rtl OF cnt10 IS SIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0); -鏈接輸入輸出BEGIN -數(shù)據(jù)的信號 PROCESS(CLK,LOAD

29、,CLR,EN) BEGIN IF CLR = '1' THEN -當(dāng)CLR高電平,數(shù)據(jù)變?yōu)?000 TMP<= "0000" ELSIF LOAD='1'THEN -否則裝載輸入的數(shù)據(jù) TMP<=DATAIN; ELSIF CLK'EVENT AND CLK='0'THEN -上升沿時,執(zhí)行10進制減法 IF EN='1'THEN IF TMP="0000"THEN -0跳轉(zhuǎn)到9 TMP<="1001" ELSE -自動減1 TMP<=T

30、MP-'1' END IF; END IF; END IF; IF TMP="0000"THEN CARRY_OUT<='1' -COOK<=CARRY_OUT ELSE CARRY_OUT<='0' END IF; END PROCESS; Q<=TMP;END rtl;-六進制減法計數(shù)器LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt6 IS PORT( CLK:IN STD_LOG

31、IC; LOAD,CLR:IN STD_LOGIC; EN:IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC );END cnt6;ARCHITECTURE rtl OF cnt6 ISSIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(CLK,LOAD,CLR,EN) BEGIN IF CLR = '1' THEN TMP<= "

32、0000" ELSIF LOAD='1' THEN TMP<=DATAIN; ELSIF CLK'EVENT AND CLK='0'THEN -上升沿時進行6進制減法 IF EN='1'THEN IF TMP="0000"THEN -0自動跳轉(zhuǎn)到5 TMP<="0101" ELSE TMP<=TMP-'1' -否則自動減1 END IF; END IF; END IF; IF TMP="0000"THEN CARRY_OUT<=&

33、#39;1' -賦值給COOK ELSE CARRY_OUT<='0' END IF; END PROCESS; Q<=TMP;END rtl;-計時電路的VHDL實現(xiàn)如下:-計數(shù)器電路模塊設(shè)計LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY counter IS PORT( COOK:IN STD_LOGIC; LOAD,CLR:IN STD_LOGIC; CLK:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(15 DOWNTO 0); SEC0:OUT STD_LOGIC_VE

34、CTOR(3 DOWNTO 0); -秒個位 SEC1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -秒十位 MIN0:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -分個位 MIN1:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -分十位 DONE:OUT STD_LOGIC -完成 );END counter;ARCHITECTURE rtl OF counter IS-定義十進制和六進制計數(shù)器電路模塊COMPONENT cnt10 IS PORT( CLK:IN STD_LOGIC; LOAD,CLR:IN STD_LO

35、GIC; EN:IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); -輸入 Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); -輸出 CARRY_OUT:OUT STD_LOGIC -狀態(tài) );END COMPONENT cnt10;COMPONENT cnt6 IS PORT( CLK:IN STD_LOGIC; LOAD,CLR:IN STD_LOGIC; EN:IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR

36、(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC );END COMPONENT cnt6;SIGNAL CLK0:STD_LOGIC;SIGNAL S0:STD_LOGIC;SIGNAL S1:STD_LOGIC;SIGNAL S2:STD_LOGIC;SIGNAL S3:STD_LOGIC;BEGIN -元件例化 CLK0 <= NOT CLK; U1:cnt10 PORT MAP(CLK0,LOAD,CLR,COOK,DATA(3 DOWNTO 0),SEC0,S0); U2:cnt6 PORT MAP(S0,LOAD,CLR,COOK,DATA(7 DO

37、WNTO 4),SEC1,S1); U3:cnt10 PORT MAP(S1,LOAD,CLR,COOK,DATA(11 DOWNTO 8),MIN0,S2); U4:cnt6 PORT MAP(S2,LOAD,CLR,COOK,DATA(15 DOWNTO 12),MIN1,S3); DONE<=S0 AND S1 AND S2 AND S3;END rtl;顯示譯碼的符號圖顯示譯碼的源程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY YMQ47 IS PORT( AIN4

38、:IN STD_LOGIC_VECTOR(3 DOWNTO 0); DOUT7:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); END ENTITY YMQ47;ARCHITECTURE rtl OF YMQ47 IS BEGIN PROCESS(AIN4) BEGIN CASE AIN4 IS WHEN"0000"=>DOUT7<="0111111" -0 WHEN"0001"=>DOUT7<="0000110" -1 WHEN"0010"=>

39、DOUT7<="1011011" -2 WHEN"0011"=>DOUT7<="1001111" -3 WHEN"0100"=>DOUT7<="1100110" -4 WHEN"0101"=>DOUT7<="1101101" -5 WHEN"0110"=>DOUT7<="1111101" -6 WHEN"0111"=>DOUT7<="0000111" -7 WHEN"1000"=>DOUT7<="1111111" -8 WHEN&q

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論