




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、廣西工學院 課程設(shè)計論文課程設(shè)計論文 課題名稱課題名稱 微波爐控制器的 FPGA 實現(xiàn) 系 別 理學院 專 業(yè) 電子信息科學與技術(shù) 班 級 學 號 姓 名 指導教師 韋艷霞 2012 年 9 月 14 日 目 錄 第一章 緒 論.1 第一節(jié) 課題背景介紹.1 第二章 電子設(shè)計自動化概述.2 第一節(jié) VHDL 簡介.2 第三章 總體設(shè)計.5 第一節(jié) 課題的主要內(nèi)容及基本要求.5 第二節(jié) 設(shè)計思路.5 第三節(jié) 設(shè)計方案.6 第四章 模塊分析.8 第一節(jié) 狀態(tài)控制電路模塊.9 第二節(jié) 數(shù)據(jù)裝載電路模塊.10 第三節(jié) 計時器模塊.11 第五章 程序設(shè)計及仿真.12 第一節(jié) 程序簡要說明.12 第二節(jié)
2、仿真時序圖.13 第六章 硬件調(diào)試.13 總 結(jié) .16 致 謝 .17 參考文獻.18 附錄一 原理圖.19 附錄二 源程序.20 摘摘 要要 該設(shè)計用語言在軟件平臺上通過編譯、模 擬仿真,完成了微波爐控制功能,實現(xiàn)了微波爐的測試、時間設(shè)置、烹調(diào)計時、 完成提示等設(shè)計,并對時鐘分頻作了一定的探討。此設(shè)計采用了現(xiàn)場可編程邏 輯器件的設(shè)計,由控制模塊、裝載模塊、計時模塊和顯示 模塊四大模塊組成,而且它可以將所有器件集成在一塊芯片上,體積大大減小, 且外圍電路很簡單,易于實現(xiàn)。 關(guān)鍵詞:;微波爐控制器;仿真 , , , , , , , , :;:; ; 第一章 緒 論 第一節(jié) 課題背景介紹 一、產(chǎn)
3、品背景介紹 Percy L.Spencer 在 1946 年構(gòu)想出微波爐的概念,在 1950 年取得專利。 微波爐的運作機制為微波在水中能產(chǎn)生摩擦熱的原理。早期微波爐尺碼龐大, 重量超過 300 公斤和高度超過 1.5 米,所以主要在大型餐廳和食物市場使用。 第一部家用微波爐是在 1965 年由 Raytheon 集團生產(chǎn)。 二、國內(nèi)產(chǎn)品發(fā)展現(xiàn)狀 現(xiàn)在,中國已成為全球最大的微波爐生產(chǎn)基地,據(jù)估計,中國微波爐年產(chǎn) 量已達 2000 萬臺左右,從 2001 年中國市場的需求量來看,約在 700 萬臺左右。 中國微波爐市場經(jīng)過前幾年的洗牌,已由前幾年的 300 多家減少至目前的 100 多家,其中在
4、市場上可統(tǒng)計的僅 30 多家。 洋品牌在早期的微波爐市場份額,幾乎占據(jù)了絕大部分的市場。但初期由 于微波爐市場屬于導入期,價格高,消費者接受的少,自 1996 年以后,惠而浦、 松下等大部分都退出了中國市場,主要以出口為主。1998 年后,外資品牌中以 韓國品牌 LG、三星表現(xiàn)較為突出,逐漸跨入第 2、第 3 名,微波爐第一品牌為 格蘭仕。2000 年,美的介入,迅速崛起成為行業(yè)第三,三星也逐漸退出市場。 經(jīng)過 60 年的發(fā)展,微波爐已經(jīng)成為人們?nèi)沼蒙钪械谋夭豢缮俚膹N房電器, 大大降低了家庭婦女的工作量和工作強度。據(jù)統(tǒng)計,微波爐目前在日本、美國、 西歐等發(fā)達國家地區(qū)的普及率高達 98%,在中
5、國城鎮(zhèn)的普及率也已近 90%。這個 數(shù)字甚至超過了彩電和洗衣機的普及程度。 三、產(chǎn)品發(fā)展趨勢 隨著人們生活水平的提高和信息化的發(fā)展,家用電器層出不窮,各種功能 也越來越完善,其中微波爐是現(xiàn)代家庭的必備產(chǎn)品,它的質(zhì)量和性能的高低,將 會極大的影響人們的生活水平和質(zhì)量。為此,設(shè)計一個高質(zhì)量的微波爐控制系 統(tǒng)是非常有必要的。 微波爐開始進入越來越多的家庭,他給人們的生活帶來了極大的方便。微 波爐由 2450MHz 的超高頻來加熱食物。他省時、省電、方便和衛(wèi)生,作為現(xiàn)代 的烹飪工具,微波爐的控制器體現(xiàn)著他的重要性能指標。目前大部分微波爐控 制器采用單片機進行設(shè)計,帶南路比較復雜性能不夠靈活。本文采用先
6、進的 EDA 技術(shù),利用 QuartusII 工作平臺和 VHDL 設(shè)計語言,設(shè)計了一種新型的微波 爐控制器芯片,該芯片具有系統(tǒng)復位、時間設(shè)定和烹飪計時的功能,用一片 FPGA 芯片實現(xiàn),所以能設(shè)計出一款方便安全操作的微波爐是非常有必要的。 第二章 電子設(shè)計自動化概述 第一節(jié) VHDL 簡介 隨著VLSI、EDA( Electronic Design Automation )工具的迅速發(fā)展,用戶系 統(tǒng)的設(shè)計從單純的ASIC(Application Specific Integrated Circuit)設(shè)計向著系 統(tǒng)單片化SOC(System On a Chip)設(shè)計的方向發(fā)展。同時網(wǎng)絡(luò)技術(shù)的
7、發(fā)展,共享 IP 知識產(chǎn)權(quán)的開放式系統(tǒng)設(shè)計成為新模式,芯片工藝物理設(shè)計與系統(tǒng)設(shè)計相分 離,使用戶系統(tǒng)設(shè)計人員可直接從事芯片設(shè)計。多種技術(shù)的融合,系統(tǒng)的功能 復合化程度越來越高;對系統(tǒng)設(shè)計方法學和工具的要求更高;系統(tǒng)設(shè)計日趨軟 件硬化、硬件軟化,并使兩者得到了有機的融合,形成了更為強大的 ESDA( Electronic System Design Automation ) 。 VHDL(Very High Speed Integrated Circuit Hardware Description Language)是 IEEE(Institute of Electrical and Elect
8、ronics Engineers)標準的硬件描述語言,是現(xiàn)代電子系統(tǒng)設(shè)計的首選硬件設(shè)計計算機 語言。本篇介紹 VHDL 的語法基礎(chǔ)、用 VHDL 進行系統(tǒng)設(shè)計的基本方法、以及 VHDL 的設(shè)計實例等。 從宏觀的角度看,VHDL 的語法構(gòu)成了程序的各組成部分;微觀上看 VHDL 的語法是各種語句的運用細節(jié)。本章在 VHDL 的特性之后,從這兩個角度簡要介 紹 VHDL 的語法基礎(chǔ)。 硬件描述語言 HDL(Hardware Description Language)誕生于 1962 年。 HDL 是用形式化的方法描述數(shù)字電路和設(shè)計數(shù)字邏輯系統(tǒng)的語言。主要用于描 述離散電子系統(tǒng)的結(jié)構(gòu)和行為。與 SD
9、L(Software Description Language)相 似,經(jīng)歷了從機器碼(晶體管和焊接) 、匯編(網(wǎng)表) 、到高級語言(HDL)的過 程。 20 世紀 80 年代美國國防部開發(fā) Very High Speed Integrated Circuit VHSIC,用于描述集成電路的結(jié)構(gòu)和功能。此后,硬件描述語言向標準化方向發(fā) 展,1987 年成為 IEEE Standard 1076,稱為 VHDL 語言。它也是美國國防部標 準(MIL-STD-454L) 。1993 年該標準增修為 IEEE1164 標準。1996 年,再次加入 電路合成的標準程序和規(guī)格,成為 IEEE1076.3
10、 標準。 1995 年 VerilogHDL 也成為 IEEE 標準。VHDL 與 VerilogHDL 一起成為業(yè)界 主選的硬件描述語言。 一、VHDL 的特點 應(yīng)用 VHDL 進行系統(tǒng)設(shè)計,有以下幾方面的特點。 (一)功能強大 VHDL 具有功能強大的語言結(jié)構(gòu)。它可以用明確的代碼描述復雜的控制邏輯 設(shè)計。并且具有多層次的設(shè)計描述功能,支持設(shè)計庫和可重復使用的元件生成。 VHDL 是一種設(shè)計、仿真和綜合的標準硬件描述語言。 (二)可移植性 VHDL 語言是一個標準語言,其設(shè)計描述可以為不同的 EDA 工具支持。它可 以從一個仿真工具移植到另一個仿真工具,從一個綜合工具移植到另一個綜合 工具,
11、從一個工作平臺移植到另一個工作平臺。此外,通過更換庫再重新綜合 很容易移植為 ASIC 設(shè)計。 (三)獨立性 VHDL 的硬件描述與具體的工藝技術(shù)和硬件結(jié)構(gòu)無關(guān)。設(shè)計者可以不懂硬件 的結(jié)構(gòu),也不必管最終設(shè)計實現(xiàn)的目標器件是什么,而進行獨立的設(shè)計。程序 設(shè)計的硬件目標器件有廣闊的選擇范圍,可以是各系列的 CPLD、FPGA 及各種門 陣列器件。 (四)可操作性 由于 VHDL 具有類屬描述語句和子程序調(diào)用等功能,對于已完成的設(shè)計,在 不改變源程序的條件下,只需改變端口類屬參量或函數(shù),就能輕易地改變設(shè)計 的規(guī)模和結(jié)構(gòu)。 (五)靈活性 VHDL 最初是作為一種仿真標準格式出現(xiàn)的,有著豐富的仿真語句和
12、庫函數(shù)。 使其在任何大系統(tǒng)的設(shè)計中,隨時可對設(shè)計進行仿真模擬。所以,即使在遠離 門級的高層次(即使設(shè)計尚未完成時) ,設(shè)計者就能夠?qū)φ麄€工程設(shè)計的結(jié)構(gòu)和 功能的可行性進行查驗,并做出決策。 二、VHDL 的設(shè)計步驟 采用 VHDL 的系統(tǒng)設(shè)計,一般有以下 6 個步驟。 (1)要求的功能模塊劃分; (2)VHDL 的設(shè)計描述(設(shè)計輸入) ; (3)代碼仿真模擬(前仿真) ; (4)計綜合、優(yōu)化和布局布線; (5)布局布線后的仿真模擬(后仿真) ; (6)設(shè)計的實現(xiàn)(下載到目標器件) 。 三、VHDL 的設(shè)計簡述 VHDL 描述數(shù)字電路系統(tǒng)設(shè)計的行為、功能、輸入和輸出。它在語法上與現(xiàn) 代編程語言相
13、似,但包含了許多與硬件有特殊關(guān)系的結(jié)構(gòu)。 VHDL 將一個設(shè)計稱為一個實體 Entity(元件、電路或者系統(tǒng)) ,并且將它 分成外部的可見部分(實體名、連接)和內(nèi)部的隱藏部分(實體算法、實現(xiàn)) 。 當定義了一個設(shè)計的實體之后,其他實體可以利用該實體,也可以開發(fā)一個實 體庫。所以,內(nèi)部和外部的概念對系統(tǒng)設(shè)計的 VHDL 是十分重要的。 外部的實體名或連接由實體聲明 Entity 來描述。而內(nèi)部的實體算法或?qū)崿F(xiàn) 則由結(jié)構(gòu)體 Architecture 來描述。結(jié)構(gòu)體可以包含相連的多個進程 process 或 者組建 component 等其他并行結(jié)構(gòu)。需要說明的是,它們在硬件中都是并行運 行的。 V
14、HDL 程序設(shè)計的基本結(jié)構(gòu)如下: 庫、程序包 實體 Entity 結(jié)構(gòu)體 Architecture、 進程 process、 組件 component 等 配置 Configuration 表 1 VHDL 程序設(shè)計的基本結(jié)構(gòu) 一個實體可以對應(yīng)一個或者多個結(jié)構(gòu)體。結(jié)構(gòu)體可以包含一個或者多個進 程或者組件。 四、VHDL 的描述風格 設(shè)計實體的邏輯功能由 VHDL 的結(jié)構(gòu)體具體描述。用戶可以使用不同程度的 語句類型和抽象方式來描述不同程度的設(shè)計。例如系統(tǒng)級的、板級的、芯片級 的或者模塊級的設(shè)計。對于相同的邏輯行為可以有不同的語句表達方式。在 VHDL 結(jié)構(gòu)體中這種不同的描述方式或者說建模方法,通
15、常可歸納為行為 (Behavioral)級描述、數(shù)據(jù)流(Dataflow)級描述和結(jié)構(gòu)(Structural)級 描述。 (一)行為級描述 通過一組串行的 VHDL 進程,反映設(shè)計的功能和算法,而沒有直接指明或涉 及實現(xiàn)這些行為的硬件結(jié)構(gòu),包括硬件特性、連線方式和邏輯行為方式。行為 級描述主要指順序語句描述,即通常是指含有進程的非結(jié)構(gòu)化的邏輯描述。 (二)數(shù)據(jù)流級描述 將數(shù)據(jù)看成從設(shè)計的輸入端流到輸出端,反映從輸入數(shù)據(jù)到輸出數(shù)據(jù)所發(fā) 生的立即變換。數(shù)據(jù)流描述主要是指非結(jié)構(gòu)化的并行語句描述;是建立在用并 行信號賦值語句描述基礎(chǔ)上的。數(shù)據(jù)流描述方式可比較直觀地表達底層邏輯行 為。 (三)結(jié)構(gòu)級描述
16、 將設(shè)計看成多個功能塊的相互連接,并且主要通過功能塊的組件例化來表 示。結(jié)構(gòu)級描述方式采用了結(jié)構(gòu)化、模塊化的設(shè)計思想,適合于大型復雜性設(shè) 計。 VHDL 通過這三種描述方法或稱描述風格,從不同的側(cè)面描述結(jié)構(gòu)體的行為 方式。其中,行為描述的抽象程度最高,最能體現(xiàn) VHDL 描述高層次結(jié)構(gòu)和系 統(tǒng)的能力。正是 VHDL 語言的行為描述能力使自頂向下的設(shè)計方式成為可能。 在實際應(yīng)用中,為了能兼顧整個設(shè)計的功能、資源和性能幾方面的因素, 通常將以上三種描述方式混合使用。 第三章 總體設(shè)計 第一節(jié) 課題的主要內(nèi)容及基本要求 要求采用 EDA 技術(shù)設(shè)計一個微波爐控制器,可完成以下功能: (1)可控制烹調(diào)的
17、開關(guān); (2)可設(shè)置烹調(diào)時間, (假設(shè)系統(tǒng)最長的烹調(diào)時間為 59 分 59 秒) ; (3)可顯示烹調(diào)的剩余時間。 第二節(jié) 設(shè)計思路 現(xiàn)代數(shù)字系統(tǒng)設(shè)計一般采用自頂向下的方法,其過程大致可分為三個大的 步驟:系統(tǒng)調(diào)研;模塊的劃分;模塊的實現(xiàn)。承接一個數(shù)字系統(tǒng)設(shè)計的課題后, 一般不要急于動手設(shè)計,而應(yīng)對課題作充分的分析和調(diào)研,然后確定初步的方 案。 分析:課題的任務(wù)、要求、原理和使用條件等。 調(diào)研:課題現(xiàn)狀并和相同或相近課題進行比較。 現(xiàn)代數(shù)字系統(tǒng)設(shè)計一般是將其劃分為控制器和受控電路兩大部分,控制器 由 ASM 圖或 MDS 圖決定,而受控電路則使用各種通用模塊實現(xiàn)。 下面分析微波爐定時器的工作過
18、程及基本要求: 上電后,系統(tǒng)處于復位狀態(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)回到復位狀態(tài)。 系統(tǒng)要求分析及初步方案的確定: 根據(jù)系統(tǒng)的基本要求,著重應(yīng)考慮如下問題: (1)計時電路的設(shè)計:芯片內(nèi)部產(chǎn)生和外部提供。本例中由外部時鐘電路 以 BCD 碼的形式提供。 (2)時間設(shè)置出錯及工作過程的取消等情況的處理:設(shè)置一個復位按鍵。 (3)數(shù)碼管狀態(tài)的檢測:設(shè)置數(shù)碼管檢測按鍵,按動該按鍵后,數(shù)碼管
19、能 夠顯示“8888”的信息。 (4)時間顯示電路:采用 4 位 7 段顯示數(shù)碼管顯示,并由芯片直接驅(qū)動。 (5)微波管的驅(qū)動:設(shè)置一個輸出驅(qū)動控制烹調(diào)狀態(tài)的繼電器即可。 第三節(jié) 設(shè)計方案 微波爐控制器系統(tǒng)可由以下三個電路模塊組成:狀態(tài)控制電路,其功能是 控制微波爐工作過程中的狀態(tài)轉(zhuǎn)換,并發(fā)出相關(guān)控制信號;數(shù)據(jù)裝載電路,其 功能是根據(jù)控制信號選擇定時時間,測試數(shù)據(jù)或計時完成信息的載入;計時器 電路,其功能是對時鐘進行減法計數(shù),提供烹調(diào)完成時的狀態(tài)信號。 微波爐控制器的系統(tǒng)框圖如圖 1 所示。其中,CLK 為時鐘輸入信號,時鐘 上升沿敏感;RESET 為復位信號,高電平有效時系統(tǒng)復位清零;TES
20、T 為數(shù)碼顯 示管測試信號,高電平有效系統(tǒng)顯示 8888;SET_T 高電平有效時允許設(shè)置烹飪 時間;KEY 為定時時間輸入信號,用于設(shè)置烹飪時間的長短,其高到低分別表 示時間分、秒的十位、個位;START 為烹調(diào)開始信號,高電平有效時開始烹調(diào); 輸出信號 COOK 指示微波爐狀態(tài),高電平時表示烹調(diào)進行時;SEC0 、SEC1、MIN0、MIN1 分別表示秒個位、秒十位、分個位、分十位。 圖 1 微波爐控制器系統(tǒng)框圖 微波爐控制器的工作流程圖如圖 2 所示。 時間輸入 時鐘輸入 復位輸入 時間設(shè)置 輸入 開始按鍵 數(shù)碼管測 試輸入 分秒 信號 輸 出 驅(qū)動烹調(diào)輸出 顯示設(shè)置時間和 烹飪時間信號
21、 接通電源 初始狀態(tài) 時間設(shè)置 顯示 8888 烹調(diào) 完成 SET_T TEST? START ? 時間到? N Y N Y N Y N Y 圖 2 工作流程圖 首先,對系統(tǒng)進行復位清零,使其各電路模塊均處于初始狀態(tài);當烹飪時 間設(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)恢復初始狀態(tài)。 當系統(tǒng)處于復位清零狀態(tài)時,按下顯像管測試按鈕 TEST
22、,將對顯像管是否 正常工作進行測試,正常工作時,顯像管輸出全 8。 第四章 模塊分析 第一節(jié) 狀態(tài)控制電路模塊 狀態(tài)控制器的功能根據(jù)輸入信號和自身當時所處的狀態(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è)置烹飪時間的長短,其高到低分別表 示時間分、秒的十位、個位。當 L
23、D_DONE 有效時,輸出烹調(diào)結(jié)束數(shù)據(jù)。當 LD_CLK 有效時,輸出烹調(diào)的設(shè)置時間數(shù)據(jù)。當 LD_TEST 有效時,輸出數(shù)碼管測 試數(shù)據(jù)包括 6 個輸入信號和 4 個輸出信號。 圖 3 狀態(tài)控制電路模塊框圖 根據(jù)微波爐工作流程的描述,分析狀態(tài)轉(zhuǎn)換條件及輸出信號,可以得到如 圖 4 所示的微波爐控制器的狀態(tài)轉(zhuǎn)換圖。 TEST/LD_TEST RESET 初 始 狀 態(tài) IDLE SET_ CLOCK LAMP_ TEST DONE_ MSG TIMER START USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE
24、 IEEE.STD_LOGIC_ARITH.ALL; ENTITY controllor IS PORT( RESET:IN STD_LOGIC; -復位信號 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:OU
25、T STD_LOGIC; -指示數(shù)據(jù)裝載電路載入的用于測試的數(shù)據(jù) LD_CLK:OUT STD_LOGIC; -指示數(shù)據(jù)裝載電路載入設(shè)置時間數(shù)據(jù) DATA: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 IS TYPE STATES IS(IDLE,LAMP_TEST,SET_CLOCK,TIMER,DONE_MSG); SIG
26、NAL NXT,CUR:STATES; -2 個信號:下一狀態(tài)、當前狀態(tài) SIGNAL DATATMP:STD_LOGIC_VECTOR(15 DOWNTO 0); SIGNAL SET_T0: STD_LOGIC; -設(shè)置時間信號 BEGIN PROCESS(CLK,RESET) -時鐘和復位的進程 BEGIN IF RESET=1 THEN -復位時將 IDLE(顯示 0000)賦予當前狀態(tài) CUR=IDLE; ELSIF CLKEVENT AND CLK=1 THEN CUR=NXT; -如果不是,遇到上邊沿則自動跳轉(zhuǎn)下一狀態(tài) END IF; END PROCESS; PROCESS(R
27、ESET,KEY) -復位和輸入的進程 BEGIN -可以讓輸入 4 位數(shù)字 顯示時間 IF RESET = 1 THEN -復位時不論任何狀態(tài)數(shù)碼管都將顯示 0000 DATATMP 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; END IF; -否則自動加 1 END
28、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) = 1 THEN -設(shè)置秒的十位 IF DATATMP(7 DOWNTO 4) = 0101 THEN -5 自動跳轉(zhuǎn)到 0 DATATMP(7
29、 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 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; DA
30、TA = DATATMP; END PROCESS; PROCESS(SET_T,RESET) -設(shè)置時間和復位進程 BEGIN IF RESET = 1 THEN -復位時設(shè)置時間變?yōu)榈碗娖?SET_T0 = 0; ELSIF SET_TEVENT 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 PRO
31、CESS; PROCESS(CLK,CUR,SET_T,START,TEST,DONE) IS BEGIN NXT=IDLE; -將 IDLE 載入 NXT LD_TEST=0; -復位 LD_DONE=0; LD_CLK=0; COOK -譯碼器顯示測試狀態(tài) LD_TEST=1; COOK -烹調(diào)時間測試狀態(tài) LD_CLK=1; COOK -完成信息顯示狀態(tài) LD_DONE=0; COOK -初始狀態(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;
32、 LD_CLK=1; ELSIF START=1 AND DONE=0 THEN -設(shè)置計時模式 NXT=TIMER; COOK IF DONE=1 THEN -設(shè)置計時完成 NXT=DONE_MSG; LD_DONE=0; ELSE NXT=TIMER; COOKNULL; END CASE; END PROCESS; END rtl; - -數(shù)據(jù)裝載電路的 VHDL 實現(xiàn)如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; ENTITY loader IS PORT( DATAIN:IN S
33、TD_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 IS BEGIN PROCESS(DATAIN,LD_TEST,LD_CLK,LD_DONE) CONSTANT ALLS:STD_LOGIC_V
34、ECTOR(15 DOWNTO 0)-測試信息 :=01000; -顯示 8888 CONSTANT DONE:STD_LOGIC_VECTOR(15 DOWNTO 0)-烹調(diào)完成信息 :=01101; VARIABLE TEMP:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN LOAD-測試 DATAOUT-烹調(diào)完成 DATAOUT DATAOUTNULL; END CASE; END PROCESS; END rtl; - -十進制計數(shù)器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UN
35、SIGNED.ALL; ENTITY cnt10 IS PORT( CLK:IN STD_LOGIC; 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_
36、VECTOR(3 DOWNTO 0); -鏈接輸入輸出 BEGIN -數(shù)據(jù)的信號 PROCESS(CLK,LOAD,CLR,EN) BEGIN IF CLR = 1 THEN -當 CLR 高電平,數(shù)據(jù)變?yōu)?0000 TMP= 0000; ELSIF LOAD=1THEN -否則裝載輸入的數(shù)據(jù) TMP=DATAIN; ELSIF CLKEVENT AND CLK=0THEN -上升沿時,執(zhí)行 10 進制減法 IF EN=1THEN IF TMP=0000THEN -0 跳轉(zhuǎn)到 9 TMP=1001; ELSE -自動減 1 TMP=TMP-1; END IF; END IF; END IF;
37、IF TMP=0000THEN 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_LOGIC; LOAD,CLR:IN STD_LOGIC; EN:IN STD_LOGIC; DATAIN:IN STD_LOGIC_VECTOR(3 DOWN
38、TO 0); Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); CARRY_OUT:OUT STD_LOGIC ); END cnt6; ARCHITECTURE rtl OF cnt6 IS SIGNAL TMP:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,LOAD,CLR,EN) BEGIN IF CLR = 1 THEN TMP= 0000; ELSIF LOAD=1 THEN TMP=DATAIN; ELSIF CLKEVENT AND CLK=0THEN -上升沿時進行 6 進制減法 IF EN=1THEN I
39、F TMP=0000THEN -0 自動跳轉(zhuǎn)到 5 TMP=0101; ELSE TMP=TMP-1; -否則自動減 1 END IF; END IF; END IF; IF TMP=0000THEN CARRY_OUT=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
40、,CLR:IN STD_LOGIC; CLK:IN STD_LOGIC; DATA:IN STD_LOGIC_VECTOR(15 DOWNTO 0); SEC0:OUT STD_LOGIC_VECTOR(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; ARCHITECT
41、URE rtl OF counter IS -定義十進制和六進制計數(shù)器電路模塊 COMPONENT cnt10 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(3 DOWNTO 0); -輸出 CARRY_OUT:OUT STD_LOGIC -狀態(tài) ); END COMPONENT cnt10; COMPONENT cnt6 IS PORT( CLK:IN STD_LOGIC;
42、 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 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; U
43、1:cnt10 PORT MAP(CLK0,LOAD,CLR,COOK,DATA(3 DOWNTO 0),SEC0,S0); U2:cnt6 PORT MAP(S0,LOAD,CLR,COOK,DATA(7 DOWNTO 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; - -頂層模塊的 VH
44、DL 實現(xiàn)如下: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY top IS PORT( KEY: IN STD_LOGIC_VECTOR(3 DOWNTO 0); -輸入 4 位 16 進制 RESET:IN STD_LOGIC; -復位鍵 SET_T:IN STD_LOGIC; -設(shè)置時間 START:IN STD_LOGIC; -開始計時 TEST:IN STD_LOGIC; -測試模式 CLK :IN STD_LOGIC; -輸入脈沖 COOK:OUT STD_LOGIC; -烹調(diào)狀態(tài) LED2:OUT STD_LOGIC_VECTOR(1 DOWNTO 0); -LED 顯示狀態(tài) SEC0:OUT STD_LOGIC_VECTOR(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) ); END top; ARCHITECTURE rtl OF top
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 中外石油文化知到課后答案智慧樹章節(jié)測試答案2025年春中國石油大學(華東)
- 初級社會工作實務(wù)-2020年初級社會工作者考試《社會工作實務(wù)》真題
- 江蘇省如皋市2024-2025學年高一上學期期末語文試題2
- 2018年高考物理一輪訓練(10)及詳細解析
- 高考總復習課程-2019年高考數(shù)學(理)第一輪復習(江蘇版)講義答案
- 江蘇省泰州市2024-2025學年高二上學期期末語文試題2
- 2025屆陜西省榆林市高三下學期三模英語試題(原卷版+解析版)
- 初中《道德與法治》教學中生態(tài)文明教育滲透問題與解決對策研究
- 以興趣為支點 建構(gòu)魅力英語課堂
- 2025版高考歷史大一輪復習第十二單元中國古代的思想科技與文藝第34講明清之際的進步思潮教案含解析岳麓版
- DQ-廠房設(shè)施設(shè)計確認方案
- 常用中藥飲片介紹PPT幻燈片
- 各國鋼材牌號對照大全
- MSA-測量系統(tǒng)分析模板
- 屈原《國殤》課件
- 電機與變壓器(第6版)PPT完整全套教學課件
- 休克病人的麻醉處理
- 中考數(shù)學計算題100道
- 人教版八年級下冊英語單詞表(默寫用)
- 【員工創(chuàng)新績效研究文獻綜述】
- 2023年高中生物新教材人教版(2023年)必修二全冊教案
評論
0/150
提交評論