




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、東 北 石 油 大 學 課 程 設 計 2009 年 7 月 10 日 課 程 硬件課程設計 題 目 數字鐘設計 院 系 計算機與信息技術學院 專業班級 學生姓名 學生學號 指導教師 東北石油大學課程設計任務書 課程 硬件課程設計 題目 數字鐘設計 專業 計算機 姓名 學號 主要內容、基本要求等 一、主要內容: 利用 EL 教學實驗箱、微機和 Quartus軟件系統,使用 VHDL 語言輸入方法 設計數字鐘。可以利用層次設計方法和 VHDL 語言,完成硬件設計設計和仿真。 最后在 EL 教學實驗箱中實現。 二、基本要求: 1.具有時,分,秒,計數顯示功能,以 24 小時循環計時。 2.具有清零
2、功能。 三、擴展要求 1.調節小時、分鐘功能。 2.整點報時功能,整點報時的同時 LED 燈花樣顯示。 按照規范寫出論文,要求字數在 4000 字以上,并進行答辯。論文內容包括概 述(學習、調研、分析、設計的內容摘要) 、EDA 技術的現狀和發展趨勢、對 EL 教學實驗箱和 Quartus軟件的掌握程度、數字鐘的設計過程(包括原理圖或程 序設計、編譯、仿真分析、硬件測試的全過程) ,論文中含有原理圖、程序、仿 真波形圖及其分析報告。 完成期限 2 周 指導教師 梁吉勝 專業負責人 富宇 2012 年 6 月 10 日 東北石油大學課程設計成績評價表 課程名稱硬件課程設計 題目名稱數字鐘設計 學
3、生姓名 學號 指導教 師姓名 梁吉勝職稱講師 序號評價項目指 標(優秀)滿分評分 1選題難度 選題難度較高,或者對原題目進行了相當程度 的改進。 10 2 工作量、工作態 度和出勤率 工作量飽滿,工作努力,遵守紀律,出勤率高, 工作作風嚴謹,善于與他人合作。 10 3課程設計質量 按期圓滿的完成了規定的任務,方案設計合理, 思考問題全面,系統功能完善。 40 4報告質量 問題論述思路清晰,結構嚴謹,文理通順,撰 寫規范,圖表完備正確。 30 5回答問題 在進行課程設計程序系統檢查時,能正確回答 指導教師所提出的問題。 10 6創新(加分項) 工作中有創新意識,對前人工作有改進或有應 用價值。在
4、進行系統檢查時能對創新性進行說 明,并在報告中有相應的論述。 +5 總分 評語: 指導教師: 梁吉勝 2012 年 6 月 10 日 摘 要 本文介紹了利用 EDA-V 硬件系統和微機上的 Quartus7.2-II 等軟件系統。 VHDL 的英文全名是 Very-High-Speed Integrated Circuit HardwareDescription Language,誕生于 1982 年。1987 年底,VHDL 被 IEEE 和美 國國防部確認為標準硬件描述語言 。自 IEEE 公布了 VHDL 的標準版本,IEEE- 1076(簡稱 87 版)之后,各 EDA 公司相繼推出了
5、自己的 VHDL 設計環境,或宣布 自己的設計工具可以和 VHDL 接口。此后 VHDL 在電子設計領域得到了廣泛的接受, 并逐步取代了原有的非標準的硬件描述語言。有專家認為,在新的世紀中,VHDL 于 Verilog 語言將承擔起大部分的數字系統設計任務。 本文設計主要利用 VHDL 語言在 EDA 平臺上設計一個電子數字鐘,它的計時 周期為 24 小時,顯示滿刻度為 23 時 59 分 59 秒,另外還具有校時功能和鬧鐘功 能。總的程序由幾個各具不同功能的單元模塊程序拼接而成,其中包括分頻程序 模塊、時分秒計數和設置程序模塊、比較器程序模塊、三輸入數據選擇器程序模 塊、譯碼顯示程序模塊和拼
6、接程序模塊。并且使用 Quartus7.2-II 軟件進行電路 波形仿真,下載到 EDA 實驗箱進行驗證。 關鍵詞關鍵詞: EDA(電子設計自動化) ;VHDL(硬件描述語言) ,數字鐘。 目錄 第 1 章 概 述 .1 1.1 EDA 的概念.1 1.2 EDA 的工作平臺.2 1.3 EDA 的發展趨勢 4 第 2 章 數字鐘設計的系統分析 .6 2.1 設計目的.6 2.2 功能說明.6 2.3 實驗原理.6 2.4 系統硬件.6 第 3 章 數字鐘的底層電路設計 .8 3.1 設計規劃.8 3.2 設計說明.8 3.3 底層電路程序.9 第 4 章 數字鐘的頂層文件設計 .18 4.1
7、 設計說明.18 4.2 頂層文件程序.18 第 5 章 數字鐘設計的測試與運行 .21 5.1 數字鐘的調 試.21 5.2 數字鐘的適配與測試.24 結 論 .26 參考文獻 .27 第 1 章 概 述 1.1 EDA 的概念 EDA 是電子設計自動化 Electronic Design Automation 的縮寫。EDA 技術是 以大規模可編程邏輯器件為設計載體,以硬件描述語言為系統邏輯描述的主要表 達方式,以計算機、大規模可編程邏輯器件的開發軟件及實驗開發系統為設計工 具,通過有關的開發軟件,自動完成用軟件的方式設計電子系統到硬件系統的一 門新技術。可以實現邏輯編譯、邏輯化簡、邏輯分
8、割、邏輯綜合及優化,邏輯布 局布線、邏輯仿真。完成對于特定目標芯片的適配編譯、邏輯映射、編程下載等 工作,最終形成集成電子系統或專用集成芯片。 1.1.1EDA1.1.1EDA 技術及應用技術及應用 電子設計技術的核心就是 EDA 技術,EDA 是指以計算機為工作平臺,融合 應用電子技術、計算機技術、智能化技術最新成果而研制成的電子 CAD 通用軟 件包,主要能輔助進行三方面的設計工作,即 IC 設計、電子電路設計和 PCB 設 計。EDA 技術已有 30 年的發展歷程,大致可分為三個階段。70 年代為計算機輔 助設計(CAD)階段,人們開始用計算機輔助進行 IC 版圖編輯、PCB 布局布線,
9、 取代了手工操作。80 年代為計算機輔助工程(CAE)階段。與 CAD 相比,CAE 除了有純粹的圖形繪制功能外,又增加了電路功能設計和結構設計,并且通過電 氣連接網絡表將兩者結合在一起,實現了工程設計。CAE 的主要功能是:原理圖 輸人,邏輯仿真,電路分析,自動布局布線,PCB 后分析。90 年代為電子系統設 計自動化(EDA)階段3。 EDA 技術發展迅猛,逐漸在教學、科研、產品設計與制造等各方面都發揮著 巨大的作用。在教學方面:幾乎所有理工科(特別是電子信息)類的高校都開設了 EDA 課程。主要是讓學生了解 EDA 的基本原理和基本概念、鱗握用佃 L 描述系 統邏輯的方法、使用扔 A 工
10、具進行電子電路課程的模擬仿真實驗并在作畢業設計 時從事簡單電子系統的設計,為今后工作打下基礎。具有代表性的是全國每兩年 舉辦一次大學生電子設計競賽活動。在科研方面:主要利用電路仿真工具(EwB 或 PSPICE、VLOL 等)進行電路設計與仿真;利用虛擬儀器進行產品調試;將 O) LI)FPGA 器件的開發應用到儀器設備中。例如在 CDMA 無線通信系統中,所 有移動手機和無線基站都工作在相同的頻譜,為區別不同的呼叫,每個手機有一 個唯一的碼序列,CDMA 基站必須能判別這些不同觀點的碼序列才能分辨出不同 的傳呼進程;這一判別是通過匹配濾波器的輸出顯示在輸人數據流中探調到特定 的碼序列;FPG
11、A 能提供良好的濾波器設計,而且能完成 DSP 高級數據處理功能, 因而 FPGA 在現代通信領域方面獲得廣泛應用4。在產品設計與制造方面:從高 性能的微處理器、數字信號處理器一直到彩電、音響和電子玩具電路等,EDA 技 術不單是應用于前期的計算機模擬仿真、產品調試,而且也在批量制作、電子設 備的研制與生產、電路板的焊接等有重要作用。可以說電子 EDA 技術已經成為 電子工業領域不可缺少的技術支持。 電子技術全方位納入 EDA 領域,EDA 使得電子領域各學科的界限更加模糊, 更加互為包容,突出表現在以下幾個方面:使電子設計成果以自主知識產權的方 式得以明確表達和確認成為可能;基于 EDA 工
12、具的 ASIC 設計標準單元已涵蓋大 規模電子系統及 IP 核模塊;軟硬件 IP 核在電子行業的產業領域、技術領域和設 計應用領域得到進一步確認;SoC 高效低成本設計技術的成熟。隨著半導體技術、 集成技術和計算機技術的迅猛發展,電子系統的設計方法和設計手段都發生了很 大的變化。可以說電子 EDA 技術是電子設計領域的一場革命。傳統的“固定功 能集成塊十連線”的設計方法正逐步地退出歷史舞臺,而基于芯片的設計方法正 成為現代電子系統設計的主流。作為高等院校有關專業的學生和廣大的電子工程 師了解和掌握這一先進技術是勢在必行,這不僅是提高設計效率的需要,更是時 代發展的需求,只有攀握了 EDA 技術
13、才有能力參與世界電子工業市場的競爭, 才能生存與發展。隨著科技的進步,電子產品的更新日新月異,EDA 技術作為電 子產品開發研制的源動力,已成為現代電子設計的核心。所以發展 EDA 技術將 是電子設計領域和電子產業界的一場重大的技術革命,同時也對電類課程的教學 和科研提出了更深更高的要求。特別是 EDA 技術在我國尚未普及,掌握和普及 這一全新的技術,將對我國電子技術的發展具有深遠的意義。 1.2 EDA 的工作平臺 1.2.1 EDA 硬件工作平臺 1.計算機。 2.EDA 實驗開發系統:EDA-V。 1.2.2 EDA 的軟件工作平臺 PLD(Programmable Logic Devi
14、ce)是一種由用戶根據需要而自行構造邏輯功 能的數字集成電路。目前主要有兩大類型:CPLD(Complex PLD)和 FPGA(Field Programmable Gate Array)。它們的基本設計方法是借助于 EDA 軟件,用原理圖、 狀態機、布爾表達式、硬件描述語言等方法,生成相應的目標文件,最后用編程 器或下載電纜,由目標器件實現。生產 PLD 的廠家很多,但最有代表性的 PLD 廠 家為 Altera、Xilinx 和 Lattice 公司。 1.3EDA 的發展趨勢 面對當今飛速發展的電子產品市場,設計師需要更加實用、快捷的 EDA 工 具,使用統一的集成化設計環境,改變傳統
15、設計思路,將精力集中到設計構思、 方案比較和尋找優化設計等方面,需要以最快的速度,開發出性能優良、質量一 流的電子產品,對 EDA 技術提出了更高的要求3。未來的 EDA 技術將在仿真、 時序分析、集成電路自動測試、高速印刷電路板設計及開發操作平臺的擴展等方 面取得新的突破,向著功能強大、簡單易學、使用方便的方向發展。 可編程邏輯器件已經成為當今世界上最富吸引力的半導體器件,在現代 電子系統設計中扮演著越來越重要的角色。過去的幾年里,可編程器件市場 的增長主要來自大容量的可編程邏輯器件 CPLD 和 FPGA,其未來的發展趨 勢如下:向高密度、高速度、寬頻帶方向發展。在電子系統的發展過程中,
16、工程師的系統設計理念要受到其能夠選擇的電子器件的限制,而器件的發展 又促進了設計方法的更新。隨著電子系統復雜度的提高,高密度、高速度和 寬頻帶的可編程邏輯產品已經成為主流器件,3其規模也不斷擴大,從最初 的幾百門到現在的上百萬門,有些已具備了片上系統集成的能力。這些高密 度、大容量的可編程邏輯器件的出現,給現代電子系統(復雜系統)的設計 與實現帶來了巨大的幫助。設計方法和設計效率的飛躍,帶來了器件的巨大 需求,這種需求又促使器件生產工藝的不斷進步,而每次工藝的改進,可編 程邏輯器件的規模都將有很大擴展。3 向在系統可編程方向發展。在系統可編程是指程序(或算法)在置入用戶系 統后仍具有改變其內部
17、功能的能力4。采用在系統可編程技術,可以像對待軟件 那樣通過編程來配置系統內硬件的功能,從而在電子系統中引入“軟硬件”的全 新概念。它不僅使電子系統的設計和產品性能的改進和擴充變得十分簡便,還使 新一代電子系統具有極強的靈活性和適應性,為許多復雜信號的處理和信息加工 的實現提供了新的思路和方法。 向可預測延時方向發展。當前的數字系統中,由于數據處理量的激增,要求 其具有大的數據吞吐量,加之多媒體技術的迅速發展,要求能夠對圖像進行實時 處理,就要求有高速的系統硬件系統5。為了保證高速系統的穩定性,可編程邏 輯器件的延時可預測性是十分重要的。用戶在進行系統重構的同時,擔心的是延 時特性會不會因為重
18、新布線而改變,延時特性的改變將導致重構系統的不可靠, 這對高速的數字系統而言將是非常可怕的。因此,為了適應未來復雜高速電子系 統的要求,可編程邏輯器件的高速可預測延時是非常必要的。 向混合可編程技術方向發展。3可編程邏輯器件為電子產品的開發帶來了極 大的方便,它的廣泛應用使得電子系統的構成和設計方法均發生了很大的變化。 但是,有關可編程器件的研究和開發工作多數都集中在數字邏輯電路上,直到 1999 年 11 月,Lattice 公司推出了在系統可編程模擬電路,為 EDA 技術的應用 開拓了更廣闊的前景。其允許設計者使用開發軟件在計算機中設計、修改模擬電 路,進行電路特性仿真,最后通過編程電纜將
19、設計方案下載至芯片中。已有多家 公司開展了這方面的研究,并且推出了各自的模擬與數字混合型的可編程器件, 相信在未來幾年里,模擬電路及數模混合電路可編程技術將得到更大的發展。 向低電壓、低功耗方面發展。集成技術的飛速發展,工藝水平的不斷提高, 節能潮流在全世界的興起,也為半導體工業提出了向降低工作電壓、降低功耗的 方向發展。 面對當今飛速發展的電子產品市場,電子設計人員需要更加實用、快捷的開 發工具,使用統一的集成化設計環境,改變優先考慮具體物理實現方式的傳統設 計思路,將精力集中到設計構思、方案比較和尋找優化設計等方面,以最快的速 度開發出性能優良、質量一流的電子產品。開發工具的發展趨勢如下:
20、具有混合 信號處理能力。由于數字電路和模擬電路的不同特性,模擬集成電路 EDA 工具 的發展遠遠落后于數字電路 EDA 開發工具。但是,由于物理量本身多以模擬形 式存在,實現高性能復雜電子系統的設計必然離不開模擬信號。20 世紀 90 年代 以來,EDA 工具廠商都比較重視數模混合信號設計工具的開發。美國 Cadence 、Synopsys 等公司開發的 EDA 工具已經具有了數模混合設計能力,這些 EDA 開 發工具能完成含有模數變換、數字信號處理、專用集成電路宏單元、數模變換和 各種壓控振蕩器在內的混合系統設計。 高效的仿真工具。在整個電子系統設計過程中,仿真是花費時間最多的工作,也是占用
21、 EAD 工具時間最多的一個環節。可以將電子系統設計的仿真過程分為兩個階段:設計前期的 系統級仿真和設計過程中的電路級仿真。系統級仿真主要驗證系統的功能,如驗證設計的有 效性等;電路級仿真主要驗證系統的性能,決定怎樣實現設計,如測試設計的精度、處理和 保證設計要求等。要提高仿真的效率,一方面是要建立合理的仿真算法;另一方面是要更好 地解決系統級仿真中,系統模型的建模和電路級仿真中電路模型的建模技術8。在未來的 EDA 技術中,仿真工具將有較大的發展空間。 理想的邏輯綜合、優化工具。邏輯綜合功能是將高層次系統行為設計自動翻譯成門級邏 輯的電路描述,做到了實際與工藝的獨立。優化則是對于上述綜合生成
22、的電路網表,根據邏 輯方程功能等效的原則,用更小、更快的綜合結果替代一些復雜的邏輯電路單元,根據指定 目標庫映射成新的網表。隨著電子系統的集成規模越來越大,幾乎不可能直接面向電路圖做 設計,要將設計者的精力從繁瑣的邏輯圖設計和分析中轉移到設計前期算法開發上。邏輯綜 合、優化工具就是要把設計者的算法完整高效地生成電路網表。 第第 2 2 章章 數字鐘數字鐘的系統分析的系統分析 2.1 設計目的 1.掌握多位計數器相連的設計方法。 2.掌握十進制,六進制,二十四進制計數器的設計方法。 3.繼續鞏固多位共陰極掃描顯示數碼管的驅動,及編碼。 4.掌握揚聲器的驅動。 5.LED 燈的花樣顯示。 6.掌握
23、 CPLD 技術的層次化設計方法。 2.2 功能說明 1.具有時,分,秒,計數顯示功能,以 24 小時循環計時。 2.具有清零,調節小時、分鐘功能。 3.具有整點報時功能,整點報時的同時 LED 燈花樣顯示。 2.3 實驗原理 在同一 EPLD 芯片 EPF10K10 上集成了如下電路模塊: 1時鐘計數: 秒60 進制 BCD 碼計數; 分60 進制 BCDD 碼計數; 時24 進制 BCDD 碼計數; 同時整個計數器有清零,調分,調時功能。在接近整數時間能提供報時信號。 2具有驅動 8 位八段共陰掃描數碼管的片選驅動信號輸出和八段字形譯碼 輸出。編碼和掃描可參照“實驗四” 。 3揚生器在整點
24、時有報時驅動信號產生。 4. LED 燈按個人口味在整點時有花樣顯示信號產生。 2.4 系統硬件 1主芯片 EPF10K10LC84-4。 28 個 LED 燈。 3揚聲器。 48 位八段掃描共陰級數碼顯示管。 5三個按鍵開關(清零,調小時,調分鐘) 。 第 3 章 數字鐘的底層電路設計 3.1 設計規劃 該數字鐘可以實現 3 個功能:計時功能、整點報時功能和重置時間功能,因 此有 3 個子模塊:計時、報時(alarm1) 、重置時間(setmin1、sethour1)。其中 計時模塊有 3 部分構成:秒計時器(second1) 、分計時器(minute1)、時計時器 (hour1)。 1.
25、秒計數模塊:秒計數,在頻率為 1HZ 的時鐘下以 60 次為循環計數,并產 生進位信號影 響分計數。 2. 分計數模塊:分計數,在秒進位信號為高電平時,計數一次,同樣以 60 次為一個循環計數,同時產生分進位信號影響時計數。 3. 時計數模塊:時計數,在分進位信號為高電平時,計數一次,以 24 次為 一個循環計數。 4. 時間顯示模塊:通過選中不同的數碼管,同時進行一定頻率的掃描顯示 時,分,秒。 5. 時間設置模塊:設置調試使能端,可以調時,分。基本功能是在使能端 為高電平時,可以使時和分循環計數; 6. 整點報時模塊:在秒計數到 50 秒時,同時分計數到 59 分開始,豐鳴器 產生每個 2
26、 秒的鳴叫(500HZ) ,到整點是產生 750HZ 的鳴叫。 7. 鬧鐘模塊:在設定鬧鐘鬧鈴時間后,當鬧鐘使能端有效時,可在鬧鈴時 間鬧鈴,并有彩燈顯示。 3.2 設計說明 首先分析數字時鐘,得出進位法則大體相同,故所得時分秒進位方式語法基 本相同,因此可以將時分秒定義成六位輸出端口,即分別將時分秒定義為 3 個 component,分別給予設計。 3.3底層電路程序 3.3.1 秒秒計計時時器器(VHDL 語語言言編編譯譯) 其代碼如下:(VHDL 語言): LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsi
27、gned.all; ENTITY second IS PORT( clk, reset,setmin : IN STD_LOGIC; enmin : OUTSTD_LOGIC; daout: out std_logic_vector (6 downto 0); END entity second; ARCHITECTURE fun OF second IS SIGNAL count: STD_LOGIC_VECTOR( 6 downto 0); BEGIN daout = count; process ( clk , reset , setmin) begin - enmin=k; if (r
28、eset=0) then count = ; elsif (setmin=0) then enmin = clk; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#60#) then if (count=) then enmin=1; count=; ELSE count=count+7; end if; else count=; end if; elsif (count 16#60#) then count = count+1; enmin=0 after 100 ns; else
29、count=; end if; end if; end process; END fun; 在秒計時器的 clk 輸入一個周期為 5ns 的時鐘信號;清 0 端(reset)前面 一小段(100ns)為低電平,后面均為高電平;置數端(set)前面一小段 (200ns)為低電平,后面均為高電平;秒重置端(s1)可設置數值為 50 秒,保 存波形圖,進行仿真,產生如下波形: 圖 3-1 5na 時鐘信號 由上述波形可以清楚的看到:當清 0 信號(reset)無效時,秒計時器置數, 從 50 秒開始計數,到 59 秒時回到 0,并且輸出一個高電平。 3.3.2 分分計計時時器器(VHDL 語語言言編
30、編譯譯) 其代碼(VHDL 語言)如下: LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY minute IS PORT( clk, clk1,reset,sethour : IN STD_LOGIC; enhour : OUTSTD_LOGIC; daout: out std_logic_vector (6 downto 0); END entity minute; ARCHITECTURE fun OF minute IS SIGNAL count: STD_LOGIC_VE
31、CTOR( 6 downto 0); BEGIN daout = count; process ( clk,reset,sethour) begin if (reset=0) then count = ; elsif (sethour=0) then enhour = clk1; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#60#) then if (count=) then enhour=1; count=; ELSE count=count+7; end if; else co
32、unt=; end if; elsif(count 16#60#) then count = count + 1; enhour=0 after 100 ns; else count=; end if; end if; end process; END fun; 在分計時器的 clkm 輸入一個周期為 5ns 的時鐘信號;清 0 端(reset)前面一 小段(100ns)為低電平,后面均為高電平;置數端(set)前面一小段(200ns) 為低電平,后面均為高電平;分重置端(m1)可設置數值為 50 分,保存波形圖, 進行仿真,產生如下波形: 圖 3-2 分計時器信號 由上述波形可以清楚的看到:
33、當清 0 信號(reset)無效時,分計時器置數, 從 50 分開始計數,到 59 秒時回到 0,并且從 enmin 輸出一個高電平。 3、時計時器(hour) 在時計時器的 clkh 輸入一個周期為 5ns 的時鐘信號;清 0 端(reset)前面一 小段(100ns)為低電平,后面均為高電平;置數端(set)前面一小段(200ns) 為低電平,后面均為高電平;時重置端(h1)可設置數值為 20 時,保存波形圖, 進行仿真,產生如下波形: 圖 3-3 時計時器信號 由上述波形可以清楚的看到:當清 0 信號(reset)無效時,時計時器置數, 從 20 時開始計數,到 23 時回到 0,并且從
34、 enhour 輸出一個高電平。 3.3.3 時計時器(時計時器(VHDL 語言)語言) 代碼如下: LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY hour IS PORT( clk,reset: IN STD_LOGIC; daout: out std_logic_vector (5 downto 0); END entity hour; ARCHITECTURE fun OF hour IS SIGNAL count: STD_LOGIC_VECTOR( 5 downto
35、 0); BEGIN daout = count; process ( clk,reset) begin if (reset=0) then count = ; elsif (clk event and clk=1) then if (count(3 downto 0)=1001) then if (count 16#24#) then count=count + 7; else count=; end if; elsif(count 16#24#) then count = count + 1; else count=; end if; end if; end process; END fu
36、n; 時計時器是一個 24 進制的計數器,它從分組件的脈沖信號輸出端接受脈沖 信號,每當一個脈沖信號來時,時就自動加 1,并且輸出個信號給時組件,直到 計滿 24,再將本身清零。該組件還能對時進行數字調整,并可以將其全部清零。 3 3. .3 3. .4 4 時間顯示時間顯示 DeledDeled(VHDLVHDL 語言)語言) 代碼如下: LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; ENTITY deled IS PORT(num: IN std_logic_vector( 3 dow
37、nto 0); led: OUT std_logic_vector(6 downto 0); END deled; ARCHITECTURE fun OF deled IS BEGIN led = when num= 0000 else when num= 0001 else when num= 0010 else when num= 0011 else when num= 0100 else when num= 0101 else when num= 0110 else when num= 0111 else when num= 1000 else when num= 1001 else w
38、hen num= 1010 else when num= 1011 else when num= 1100 else when num= 1101 else when num= 1110 else when num= 1111 ; END fun; Deled 模塊是一個簡單的電路,它的功能將時、分、秒三個組件中所計的數 編碼后,能對應在七段數碼管山顯示成數字形式。 3 3. .3 3. .5 5 報時模塊報時模塊 alertalert(VHDLVHDL 語言)語言) 代碼如下: LIBRARY ieee; use ieee.std_logic_1164.all; use ieee.std_l
39、ogic_unsigned.all; ENTITY alert IS PORT( clk : INSTD_LOGIC; dain : INSTD_LOGIC_VECTOR(6 DOWNTO 0); speak: OUT STD_LOGIC; lamp : OUT STD_LOGIC_VECTOR(2 DOWNTO 0); END alert ; ARCHITECTURE fun OF alert IS signal count : std_logic_vector( 1 downto 0); signal count1: std_logic_vector( 1 downto 0); BEGIN
40、 speaker:process (clk) begin speak =10) then count1=00; else count1 = count1 + 1; end if; end if; end if; end process speaker; lamper:process(clk) begin if (rising_edge(clk)then if (count = 10) then if (count =00) then lamp = 001 ; elsif (count = 01) then lamp = 010 ; elsif(count=10) then lamp = 100
41、 ; end if; count = count + 1; else count = 00; end if; end if; end process lamper; END fun ; 清 0 端(reset)前面一小段(200ns)為低電平,后面均為高電平;設置 min 的值,使其分別為58 分、59 分、00 分、01 分、02 分、03 分,保存波 形圖,進行仿真,產生如下波形: 圖 3-4 報時模式信號圖 由上述波形可以清楚的看到:alarm 在 0 分時輸出高電平,并且持續至 min 不為 0。 3 3. .3 3. .6 6 譯碼模塊譯碼模塊 seltimeseltime(VHDL
42、VHDL 語言)語言) 代碼如下: LIBRARY ieee; use ieee.std_logic_1164.all use ieee.std_logic_unsigned.all; use ieee.std_logic_arith.all; ENTITY seltime IS PORT( clk1, reset: INSTD_LOGIC; sec,min : IN STD_LOGIC_VECTOR(6 downto 0); hour : in std_logic_vector (5 downto 0); daout: OUTSTD_LOGIC_vector (3 downto 0); se
43、l : out std_logic_vector ( 2 downto 0); END seltime; ARCHITECTURE fun OF seltime IS SIGNAL count: STD_LOGIC_vector ( 2 downto 0); BEGIN sel = count; process ( clk1,reset) begin if (reset =0) then count = 101) then count = 000; else count daout daout(3) = 0; daout(2 downto 0) daout daout(3) = 0; daou
44、t(2 downto 0) daout daout(3 downto 2) = 00; daout(1 downto 0) = hour(5 downto 4); end case; end process; 譯碼模塊時時鐘顯示的最重要的部件,它的功能時將時、分、秒共六位譯碼 輸出顯示在六位的 led 顯示器上。它的時鐘信號應接到一個高頻脈沖信號源上, 這樣,由于刷新的時間間隔很短,所以,led 顯示器才能一直持續的亮著。 第 4 章 數字鐘的頂層文件設計 4.1 設計說明 建立數字鐘的頂層文件就是將已經設計好的各個功能組件組合調用,連成一 個整體,使整個系統按照設計要求在實際中工作起來。 4
45、.2 頂層文件程序 代碼如下: library ieee; use ieee.std_logic_1164.all; entity clock_top is port (clk,reset,setmin,sethour,clkdsp:in std_logic; speaker: out std_logic; lamp:out std_logic_vector(2 downto 0); sel: out std_logic_vector(2 downto 0); a,b,c,d,e,f,g,dp:out std_logic); end clock_top; -* architecture a o
46、f clock_top is -* -second counter COMPONENT second PORT( clk, reset,setmin: INSTD_LOGIC; daout:out std_logic_vector(6 downto 0); enmin: OUTSTD_LOGIC); END COMPONENT; -* - minute counter COMPONENT minute PORT( clk, clk1,reset,sethour: INSTD_LOGIC; enhour: OUT STD_LOGIC; daout:out std_logic_vector(6 d
47、ownto 0); END COMPONENT; -* -hour counter COMPONENT hour PORT(clk, reset: INSTD_LOGIC; daout:out std_logic_vector(5 downto 0); END COMPONENT; -* COMPONENT alert PORT( clk: INSTD_LOGIC; dain:in std_logic_vector(6 downto 0); lamp:out std_logic_vector(2 downto 0); speak: OUTSTD_LOGIC); END COMPONENT; -
48、* COMPONENT seltime PORT( clk1, reset: IN STD_LOGIC; sec,min:in std_logic_vector(6 downto 0); hour:in std_logic_vector(5 downto 0); daout:out std_logic_vector(3 downto 0); sel: OUT STD_LOGIC_vector(2 downto 0); END COMPONENT; -* COMPONENT deled PORT( num: IN STD_LOGIC_vector(3 downto 0); led: out st
49、d_logic_vector(6 downto 0); END COMPONENT; -* signal ledout: std_logic_vector(6 downto 0); signal enmin_re,enhour_re: std_logic; signal second_daout,minute_daout:std_logic_vector(6 downto 0); signal hour_daout:std_logic_vector(5 downto 0); signal seltime_daout:std_logic_vector(3 downto 0); -* begin
50、a=ledout(0); b=ledout(1); c=ledout(2); d=ledout(3); e=ledout(4); f=ledout(5); g=ledout(6); dpreset, clk=clk, setmin=setmin, enmin=enmin_re, daout=second_daout); u2:minute port map( clk=enmin_re, clk1 =clk, reset=reset, sethour=sethour, enhour=enhour_re, daout=minute_daout); u3:hour port map( clk=enhour_re, reset=reset, daout=hour_daout); u4:alert port map( clk=clk, dain =minute_daout, speak=speaker, lamp=lamp); u5:seltime port map( clk1 =clkdsp, reset=reset, sec=second_daout, min=minut
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論