基于VHDL的數(shù)字時(shí)鐘設(shè)計(jì)和時(shí)序仿真_第1頁(yè)
基于VHDL的數(shù)字時(shí)鐘設(shè)計(jì)和時(shí)序仿真_第2頁(yè)
基于VHDL的數(shù)字時(shí)鐘設(shè)計(jì)和時(shí)序仿真_第3頁(yè)
基于VHDL的數(shù)字時(shí)鐘設(shè)計(jì)和時(shí)序仿真_第4頁(yè)
基于VHDL的數(shù)字時(shí)鐘設(shè)計(jì)和時(shí)序仿真_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、基于VHDL的數(shù)字時(shí)鐘設(shè)計(jì)和時(shí)序仿真畢業(yè)設(shè)計(jì)基于VHDL的數(shù)字時(shí)鐘設(shè)計(jì)和時(shí)序仿真學(xué)生姓名: 學(xué) 院: 專(zhuān) 業(yè): 指導(dǎo)教師: 年 月目 錄1 引言12 設(shè)計(jì)概述23 開(kāi)發(fā)工具簡(jiǎn)介43.1 VHDL語(yǔ)言簡(jiǎn)介43.1.1 VHDL發(fā)展史43.1.2 VHDL設(shè)計(jì)特點(diǎn)43.1.3 VHDL設(shè)計(jì)結(jié)構(gòu)53.1.4 VHDL設(shè)計(jì)步驟63.2 Quartus II軟件簡(jiǎn)介63.2.1 Quartus II軟件介紹 63.2.2 Quartus II軟件設(shè)計(jì)流程64 數(shù)字時(shí)鐘的設(shè)計(jì)要求和原理84.1 設(shè)計(jì)要求84.2 設(shè)計(jì)原理85 數(shù)字時(shí)鐘模塊化設(shè)計(jì)105.1 分頻模塊115.2 計(jì)時(shí)模塊135.2.1 秒計(jì)時(shí)

2、模塊135.2.2 分計(jì)時(shí)模塊155.2.3 時(shí)計(jì)時(shí)模塊175.3 報(bào)警模塊185.4 數(shù)據(jù)選擇模塊205.5 譯碼顯示模塊226 數(shù)字時(shí)鐘模塊化仿真246.1 計(jì)時(shí)模塊仿真圖246.1.1 秒模塊仿真圖246.1.2 分模塊仿真圖246.1.3 時(shí)模塊仿真圖 256.2 報(bào)警模塊仿真圖256.3 數(shù)據(jù)選擇模塊仿真圖266.4 譯碼模塊仿真圖266.5 數(shù)字時(shí)鐘整體仿真圖277 FPGA開(kāi)發(fā)板實(shí)驗(yàn)287.1 芯片和器件選擇 287.2 外部電路接線 287.2 硬件實(shí)物圖 288 結(jié)論30附錄31參考文獻(xiàn)42致謝431 引言 隨著科學(xué)技術(shù)的迅猛發(fā)展,在計(jì)算機(jī)技術(shù)的推動(dòng)下電子技術(shù)獲得了飛速的發(fā)展

3、。電子產(chǎn)品幾乎滲透到了工業(yè)、生活的各個(gè)領(lǐng)域,其中集成電路的設(shè)計(jì)正朝著速度快、性能高、容量大、體積小和微功耗的方向發(fā)展?;谶@種情況,可編程邏輯器件的出現(xiàn)和發(fā)展大大改變了傳統(tǒng)的系統(tǒng)設(shè)計(jì)方法。可編程邏輯器件和相應(yīng)的設(shè)計(jì)技術(shù)主要體現(xiàn)在三個(gè)方面:一是可編程邏輯器件的芯片技術(shù);二是適用于可邏輯編程器件的硬件編程技術(shù),三是可編程邏輯器件設(shè)計(jì)的EDA開(kāi)發(fā)工具,它主要用來(lái)進(jìn)行可編程邏輯器件應(yīng)用的具體實(shí)現(xiàn)1。在本設(shè)計(jì)中采用了集成度較高的FPGA 可編程邏輯器件,選用了VHDL硬件描述語(yǔ)言和Quartus II開(kāi)發(fā)軟件進(jìn)行設(shè)計(jì)。VHDL硬件描述語(yǔ)言在電子設(shè)計(jì)自動(dòng)化( EDA)中扮演著重要的角色,由于采用了具有多層

4、次描述系統(tǒng)硬件功能的“自頂向下”(Top -Down)的全新設(shè)計(jì)方法,使設(shè)計(jì)師們擺脫了大量的輔助設(shè)計(jì)工作,而把精力集中于創(chuàng)造性的方案與概念構(gòu)思上,用新的思路來(lái)發(fā)掘硬件設(shè)備的潛力,從而極大地提高了設(shè)計(jì)效率,縮短了產(chǎn)品的研制周期2。Quartus II軟件是集成了編輯器、仿真工具、檢查/分析工具和優(yōu)化/綜合工具的這些所有開(kāi)發(fā)工具的一種集成的開(kāi)發(fā)環(huán)境,通過(guò)該開(kāi)發(fā)環(huán)境能夠很方便的檢驗(yàn)設(shè)計(jì)的仿真結(jié)果以及建立起與可編程邏輯器件的管腳之間對(duì)應(yīng)的關(guān)系3。 EDA技術(shù)是以計(jì)算機(jī)為工具,根據(jù)硬件描述語(yǔ)言HDL完成的設(shè)計(jì)文件,自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合及優(yōu)化、布局布線。仿真以及對(duì)于特定目標(biāo)芯片的適配編譯和

5、編程下載等工作。典型的EDA工具中必須包含兩個(gè)特殊的軟件包,即綜合器和適配器。綜合器的功能就是將設(shè)計(jì)者在EDA平臺(tái)上完成的針對(duì)某個(gè)系統(tǒng)項(xiàng)目的HDL、原理圖或狀態(tài)圖形描述,針對(duì)給定的硬件系統(tǒng)組件,進(jìn)行編譯、優(yōu)化、轉(zhuǎn)換和綜合,最終獲得我們欲實(shí)現(xiàn)功能的描述文件。綜合器在工作前,必須給定所要實(shí)現(xiàn)的硬件結(jié)構(gòu)參數(shù),它的功能就是將軟件描述與給定的硬件結(jié)構(gòu)用一定的方式聯(lián)系起來(lái)。綜合過(guò)程就是將電路的高級(jí)語(yǔ)言描述轉(zhuǎn)換低級(jí)的??膳c目標(biāo)器件FPGA/CPLD相映射的網(wǎng)表文件。適配器的功能是將由綜合器產(chǎn)生的王表文件配置與指定的目標(biāo)器件中,產(chǎn)生最終的下載文件,如JED文件。適配所選定的目標(biāo)器件(FPGA/CPLD芯片)必

6、須屬于在綜合器中已指定的目標(biāo)器件系列。2 設(shè)計(jì)概述 數(shù)字時(shí)鐘是一種用數(shù)字電路技術(shù)實(shí)現(xiàn)時(shí)、分、秒計(jì)時(shí)的裝置,與機(jī)械式時(shí)鐘相比具有更高的準(zhǔn)確性和直觀性,且無(wú)機(jī)械裝置,具有更長(zhǎng)的使用壽命,數(shù)字時(shí)鐘可植入自動(dòng)控制、測(cè)試等系統(tǒng)內(nèi)部,作為系統(tǒng)的時(shí)鐘源,可為系統(tǒng)提供定時(shí)信號(hào)或中斷控制的時(shí)間基準(zhǔn),具有廣泛的用途。由于數(shù)字集成電路的發(fā)展使得數(shù)字時(shí)鐘的精度遠(yuǎn)遠(yuǎn)超過(guò)老式鐘表,鐘表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便,而且大大地?cái)U(kuò)展了鐘表原先的單一報(bào)時(shí)功能4。加入了一些諸如自動(dòng)報(bào)時(shí)、定時(shí)鬧鐘等功能。這些都是以鐘表數(shù)字化為基礎(chǔ)的。因此,研究數(shù)字時(shí)鐘及擴(kuò)大其應(yīng)用,有著非?,F(xiàn)實(shí)的意義。數(shù)字時(shí)鐘的設(shè)計(jì)方法有很多種,包括基于

7、單片機(jī)的硬件設(shè)計(jì)、基于各種描述語(yǔ)言的軟件設(shè)計(jì),本設(shè)計(jì)采用VHDL語(yǔ)言來(lái)設(shè)計(jì)數(shù)字時(shí)鐘有著多方面的優(yōu)越性,通過(guò)把整個(gè)設(shè)計(jì)分為多個(gè)模塊依次來(lái)實(shí)現(xiàn),減少了眾多重復(fù)性步驟,合理化了設(shè)計(jì)過(guò)程,使得設(shè)計(jì)更加省時(shí)、快捷,提高了設(shè)計(jì)效率。目前,電子系統(tǒng)的EDA技術(shù)正從著眼與數(shù)字邏輯向模擬電路和數(shù)?;旌想娐返姆较虬l(fā)展,21世紀(jì)是EDA技術(shù)飛速發(fā)展的時(shí)期,可以預(yù)見(jiàn)EDA技術(shù)將會(huì)對(duì)今后電子設(shè)計(jì)的發(fā)展產(chǎn)生重大的影響。隨著電子技術(shù)的發(fā)展,集成電路經(jīng)歷了從小規(guī)模、中規(guī)模到大規(guī)模和超大規(guī)模集成的過(guò)程,應(yīng)用系統(tǒng)向小型化、快速化、大容量、重量輕的方向發(fā)展5;數(shù)字系統(tǒng)的設(shè)計(jì)也已從芯片組合化設(shè)計(jì)走向單片系的設(shè)計(jì)。隨著微電子和計(jì)算機(jī)領(lǐng)

8、域的原理創(chuàng)新、技術(shù)創(chuàng)新、應(yīng)用創(chuàng)新層出不窮,許多特定功能的專(zhuān)用集成電路應(yīng)用日益廣泛,用戶迫切希望根據(jù)自身設(shè)計(jì)要求自行構(gòu)造邏輯功能的數(shù)字電路,復(fù)雜可編程邏輯器件FPGA順應(yīng)了這一新的需要。它能將大量邏輯功能集成于一個(gè)芯片中,其規(guī)模可達(dá)幾十萬(wàn)或上百門(mén)以上,從而電子設(shè)計(jì)自動(dòng)化EDA技術(shù)應(yīng)運(yùn)而生,它是電子產(chǎn)品及系統(tǒng)開(kāi)發(fā)領(lǐng)域中一場(chǎng)革命性變革,EDA技術(shù)極大地推動(dòng)了科學(xué)技術(shù)的發(fā)展6。EDA技術(shù)的發(fā)展使硬件電路設(shè)計(jì)軟件化,降低了硬件電路設(shè)計(jì)的難度,使設(shè)計(jì)周期和產(chǎn)品的開(kāi)發(fā)時(shí)間縮短,設(shè)計(jì)更新變成了程序的修改,適應(yīng)了千變?nèi)f化的市場(chǎng)潮流。它的設(shè)計(jì)輸入可以使用硬件描述語(yǔ)言(HDL),采用“自頂向下”的設(shè)計(jì)方法7,為設(shè)計(jì)

9、者提供了一個(gè)高效、便捷的設(shè)計(jì)環(huán)境,同時(shí)也為充分發(fā)揮設(shè)計(jì)人員的創(chuàng)造性提供了條件。EDA技術(shù)主要應(yīng)用于數(shù)字電路的設(shè)計(jì),目前它在中國(guó)的應(yīng)用多數(shù)是用在FPGA的設(shè)計(jì)中。 EDA技術(shù)是現(xiàn)代電子信息工程領(lǐng)域的一門(mén)新技術(shù),它是在先進(jìn)的計(jì)算機(jī)工作平臺(tái)上開(kāi)發(fā)出來(lái)的一套電子系統(tǒng)設(shè)計(jì)的軟硬件工具,并提供了先進(jìn)的電子系統(tǒng)設(shè)計(jì)方法8。20世紀(jì)90年代,國(guó)際上電子和計(jì)算機(jī)技術(shù)較先進(jìn)的國(guó)家,一直在積極探索新的電子電路設(shè)計(jì)方法,并在設(shè)計(jì)方法、工具等方面進(jìn)行了徹底的變革,取得了巨大成功。在電子技術(shù)設(shè)計(jì)領(lǐng)域,可編程邏輯器件的應(yīng)用,已得到廣泛的普及,這些器件為數(shù)字系統(tǒng)的設(shè)計(jì)帶來(lái)了極大的靈活性。這些器件可以通過(guò)軟件編程而對(duì)其硬件結(jié)構(gòu)

10、和工作方式進(jìn)行重構(gòu),從而使得硬件的設(shè)計(jì)可以如同軟件設(shè)計(jì)那樣方便快捷。這一切極大地改變了傳統(tǒng)的數(shù)字系統(tǒng)設(shè)計(jì)方法、設(shè)計(jì)過(guò)程和設(shè)計(jì)觀念,促進(jìn)了EDA技術(shù)的迅速發(fā)展9。目前,電子系統(tǒng)的EDA技術(shù)正從著眼與數(shù)字邏輯向模擬電路和數(shù)?;旌想娐返姆较虬l(fā)展,21世紀(jì)是EDA技術(shù)飛速發(fā)展的時(shí)期,EDA技術(shù)將會(huì)對(duì)今后電子設(shè)計(jì)的發(fā)展產(chǎn)生重大的影響10。3 開(kāi)發(fā)工具簡(jiǎn)介 3.1 VHDL語(yǔ)言簡(jiǎn)介3.1.1 VHDL發(fā)展史 VHDL語(yǔ)言誕生于1982年,翻譯成中文就是超高速集成電路硬件描述語(yǔ)言。最初是由美國(guó)國(guó)防部開(kāi)發(fā)出來(lái)供美軍用來(lái)提高設(shè)計(jì)的可靠性和縮減開(kāi)發(fā)周期的一種使用范圍較小的設(shè)計(jì)語(yǔ)言。1987年底,VHDL被IEEE

11、和美國(guó)國(guó)防部確認(rèn)為標(biāo)準(zhǔn)硬件描述語(yǔ)言。自IEEE公布了VHDL的標(biāo)準(zhǔn)版本,IEEE-1076之后,各EDA公司相繼推出了自己的VHDL設(shè)計(jì)環(huán)境,或宣布自己的設(shè)計(jì)工具可以和VHDL接口。此后VHDL在電子設(shè)計(jì)領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標(biāo)準(zhǔn)的硬件描述語(yǔ)言11。1993年,IEEE對(duì)VHDL進(jìn)行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴(kuò)展VHDL的內(nèi)容,公布了新版本的VHDL,主要是應(yīng)用在數(shù)字電路的設(shè)計(jì)中?,F(xiàn)在,VHDL和Verilog HDL作為IEEE的工業(yè)標(biāo)準(zhǔn)硬件描述語(yǔ)言,又得到眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事實(shí)上的通用硬件描述語(yǔ)言。有專(zhuān)家認(rèn)為在新的世紀(jì)中,VHDL

12、與Verilog語(yǔ)言將承擔(dān)起大部分的數(shù)字系統(tǒng)設(shè)計(jì)任務(wù)12。 目前,它在中國(guó)的應(yīng)用多數(shù)是用FPGA/CPLD的設(shè)計(jì)中。 VHDL主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu)、行為、功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可是部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體13。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系

13、統(tǒng)設(shè)計(jì)的基本點(diǎn)。3.1.2 VHDL設(shè)計(jì)特點(diǎn) 應(yīng)用VHDL語(yǔ)言進(jìn)行系統(tǒng)設(shè)計(jì),有以下幾方面的特點(diǎn): 1)功能強(qiáng)大:VHDL具有功能強(qiáng)大的語(yǔ)言結(jié)構(gòu)。它可以用明確的代碼描述復(fù)雜的控制邏輯設(shè)計(jì)。并且具有多層次的設(shè)計(jì)描述功能,支持設(shè)計(jì)庫(kù)和可重復(fù)使用的元件生成。VHDL是一種設(shè)計(jì)、仿真和綜合的標(biāo)準(zhǔn)硬件描述語(yǔ)言。 2)可移植性:VHDL語(yǔ)言是一個(gè)標(biāo)準(zhǔn)語(yǔ)言,其設(shè)計(jì)描述可以為不同的EDA工具支持。它可以從一個(gè)仿真工具移植到另一個(gè)仿真工具,從一個(gè)綜合工具移植到另一個(gè)綜合工具,從一個(gè)工作平臺(tái)移植到另一個(gè)工作平臺(tái)14。此外,通過(guò)更換庫(kù)再重新綜合很容易移植為ASIC設(shè)計(jì)。 3)獨(dú)立性:VHDL的硬件描述與具體的工藝技術(shù)

14、和硬件結(jié)構(gòu)無(wú)關(guān)。設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。程序設(shè)計(jì)的硬件目標(biāo)器件有廣闊的選擇范圍,可以是各系列的CPLD、FPGA及各種門(mén)陣列器件。 4)可操作性:由于VHDL具有類(lèi)屬描述語(yǔ)句和子程序調(diào)用等功能,對(duì)于已完成的設(shè)計(jì),在不改變?cè)闯绦虻臈l件下,只需改變端口類(lèi)屬參量或函數(shù),就能輕易地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)。 5)靈活性:VHDL最初是作為一種仿真標(biāo)準(zhǔn)格式出現(xiàn)的,有著豐富的仿真語(yǔ)句和庫(kù)函數(shù)。使其在任何大系統(tǒng)的設(shè)計(jì)中,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。所以,即使在遠(yuǎn)離門(mén)級(jí)的高層次,設(shè)計(jì)者就能夠?qū)φ麄€(gè)工程設(shè)計(jì)的結(jié)構(gòu)和功能的可行性進(jìn)行查驗(yàn),并做出決策。3.1.3

15、VHDL設(shè)計(jì)結(jié)構(gòu) VHDL描述數(shù)字電路系統(tǒng)設(shè)計(jì)的行為、功能、輸入和輸出。它在語(yǔ)法上與現(xiàn)代編程語(yǔ)言相似,但包含了許多與硬件有特殊關(guān)系的結(jié)構(gòu)。VHDL將一個(gè)設(shè)計(jì)稱(chēng)為一個(gè)實(shí)體Entity(元件電路或者系統(tǒng)),并且將它分成外部的可見(jiàn)部分(實(shí)體名連接)和內(nèi)部的隱藏部分(實(shí)體算法實(shí)現(xiàn))。當(dāng)定義了一個(gè)設(shè)計(jì)的實(shí)體之后,其他實(shí)體可以利用該實(shí)體,也可以開(kāi)發(fā)一個(gè)實(shí)體庫(kù)。所以,內(nèi)部和外部的概念對(duì)系統(tǒng)設(shè)計(jì)的VHDL是十分重要的。外部的實(shí)體名或連接由實(shí)體聲明來(lái)描述。而內(nèi)部的實(shí)體算法或?qū)崿F(xiàn)則由結(jié)構(gòu)體來(lái)描述15。結(jié)構(gòu)體可以包含相連的多個(gè)進(jìn)程或者組建等其他并行結(jié)構(gòu),需要說(shuō)明的是它們?cè)谟布卸际遣⑿羞\(yùn)行的。3.1.4 VHDL設(shè)

16、計(jì)步驟 采用VHDL的系統(tǒng)設(shè)計(jì),一般有以下6個(gè)步驟:1)按照要求的功能模塊劃分;2)VHDL的設(shè)計(jì)描述(設(shè)計(jì)輸入);3)代碼仿真模擬(前仿真);4)計(jì)綜合、優(yōu)化和布局布線;5)布局布線后的仿真模擬(后仿真);6)設(shè)計(jì)的實(shí)現(xiàn)(下載到目標(biāo)器件)。3.2 Quartus II軟件簡(jiǎn)介3.2.1 Quartus II軟件介紹 Quartus II 是Alera公司推出的一款功能強(qiáng)大,兼容性最好的EDA工具軟件。該軟件界面友好、使用便捷、功能強(qiáng)大,是一個(gè)完全集成化的可編程邏輯設(shè)計(jì)環(huán)境,具有開(kāi)放性、與結(jié)構(gòu)無(wú)關(guān)、多平臺(tái)完全集成化豐富的設(shè)計(jì)庫(kù)、模塊化工具、支持多種硬件描述語(yǔ)言及有多種高級(jí)編程語(yǔ)言接口等特點(diǎn)16

17、。Quartus II 支持原理圖輸入與 Verilog HDL 和VHDL輸入混合設(shè)計(jì),它除了承接原來(lái)的Max+Plus II 軟件的全部設(shè)計(jì)功能和器件對(duì)象外,還增加了許多新功能和新的FPGA器件系列。它可對(duì)設(shè)計(jì)進(jìn)行功能仿真,對(duì)數(shù)字電路的設(shè)計(jì)實(shí)現(xiàn)同步模擬分析和時(shí)序仿真。這種同步模擬分析、時(shí)序仿真在數(shù)字電路的教學(xué)中可以起到很好的輔助作用。 Quartus II是Altera公司推出的CPLD/FPGA開(kāi)發(fā)工具,Quartus II提供了完全集成且與電路結(jié)構(gòu)無(wú)關(guān)的開(kāi)發(fā)包環(huán)境,具有數(shù)字邏輯設(shè)計(jì)的全部特性,包括:可利用原理圖、結(jié)構(gòu)框圖、VerilogHDL、AHDL和VHDL完成電路描述,并將其保存

18、為設(shè)計(jì)實(shí)體文件;芯片(電路)平面布局連線編輯;功能強(qiáng)大的邏輯綜合工具;完備的電路功能仿真與時(shí)序邏輯仿真工具;定時(shí)/時(shí)序分析與關(guān)鍵路徑延時(shí)分析;可使用SignalTap II邏輯分析工具進(jìn)行嵌入式的邏輯分析;支持軟件源文件的添加和創(chuàng)建,并將它們鏈接起來(lái)生成編程文件;使用組合編譯方式可一次完成整體設(shè)計(jì)流程;自動(dòng)定位編譯錯(cuò)誤;高效的期間編程與驗(yàn)證工具;可讀入標(biāo)準(zhǔn)的EDIF網(wǎng)表文件、VHDL網(wǎng)表文件和Verilog網(wǎng)表文件;能生成第三方EDA軟件使用的VHDL網(wǎng)表文件和Verilog網(wǎng)表文件。3.2.2 Quartus II軟件設(shè)計(jì)流程 1)設(shè)計(jì)輸入:設(shè)計(jì)文件的輸入方法有原理圖輸入、文本輸入、內(nèi)存編輯

19、以及由第三方EDA工具產(chǎn)生的網(wǎng)表輸入、格式輸入,生成方法不同,生成的文件格式也有所不同。在圖形設(shè)計(jì)文件中,Quartus II軟件為了實(shí)現(xiàn)不同的邏輯功能提供了大量的基本單元符號(hào)和宏功能模塊,在圖形編輯器中可以直接調(diào)用;為了適應(yīng)自頂向下的設(shè)計(jì),設(shè)計(jì)者可以使用和Verilog HDL以及Tcl腳本輸入文本型設(shè)計(jì)17。 2)項(xiàng)目編譯:項(xiàng)目編譯主要完成設(shè)計(jì)項(xiàng)目的檢查和邏輯綜合,將項(xiàng)目最終設(shè)計(jì)結(jié)果生成器件的下載文件,并為模擬和編程產(chǎn)生輸出文件。 3)仿真驗(yàn)證和時(shí)序分析:在把經(jīng)過(guò)編譯的輸入設(shè)計(jì)編程或配置到器件之前,可以通過(guò)Quartus II軟件的仿真器對(duì)文件進(jìn)行全面測(cè)試,保證設(shè)計(jì)在各種可能的條件下都有正

20、確的響應(yīng)。根據(jù)所需的信息類(lèi)型,可以進(jìn)行功能仿真和時(shí)序仿真。Quartus II時(shí)序分析器允許分析設(shè)計(jì)中所有邏輯的性能,得出時(shí)序分析結(jié)果,如建立時(shí)間、保持時(shí)間、引腳到引腳延遲、最大時(shí)鐘頻率、延遲時(shí)間及其它時(shí)序特征,并協(xié)助引導(dǎo)適配器滿足設(shè)計(jì)中的時(shí)序要求。 4)器件編程:成功編譯了設(shè)計(jì)工程之后,編譯器的Assembler模塊自動(dòng)將適配過(guò)程的器件、邏輯單元和引腳分配信息轉(zhuǎn)換為器件的編程圖像,并以.sof形式保存,Quartus II軟件的編程器(programmer)使用該文件就可對(duì)器件進(jìn)行編程配置。4 數(shù)字時(shí)鐘設(shè)計(jì)要求和原理4.1 設(shè)計(jì)要求 在Quartus II軟件開(kāi)發(fā)環(huán)境下,使用VHDL描述語(yǔ)言

21、、結(jié)合FPGA開(kāi)發(fā)板編譯和仿真數(shù)字時(shí)鐘;要求時(shí)鐘能進(jìn)行基本的計(jì)時(shí)功能,按照:“時(shí):分:秒”來(lái)顯示時(shí)間;并且能進(jìn)行時(shí)間設(shè)置,具有整點(diǎn)報(bào)時(shí)功能,可對(duì)所有顯示的內(nèi)容進(jìn)行調(diào)節(jié)設(shè)定。4.2 設(shè)計(jì)原理 根據(jù)設(shè)計(jì)要求,采用自頂向下的方法,層次化設(shè)計(jì)概念,將此任務(wù)分成若干模塊,設(shè)計(jì)時(shí)首先用VHDL語(yǔ)言編寫(xiě)各個(gè)功能模塊,在 Quartus II開(kāi)發(fā)環(huán)境下分別進(jìn)行編譯、仿真,然后再用頂層文件將各功能模塊連接起來(lái)。規(guī)定某一模塊的功能和各模塊之間的接口然后將各模塊組合起來(lái)構(gòu)成系統(tǒng)框圖。根據(jù)設(shè)計(jì)要求可以把整體設(shè)計(jì)分為:分頻模塊、計(jì)時(shí)模塊、數(shù)據(jù)掃描模塊、報(bào)警模塊和數(shù)據(jù)選擇模塊,然后再根據(jù)總體方案對(duì)各模塊進(jìn)行分別設(shè)計(jì)和仿真

22、下載18。根據(jù)總體方案對(duì)各模塊分別進(jìn)行設(shè)計(jì)、仿真和下載,數(shù)字時(shí)鐘的總體框圖如圖5.1所示, 報(bào)警模塊 聲音輸出24進(jìn)制計(jì)數(shù)器控 制 信 號(hào)6位數(shù)碼顯示管 時(shí)間 數(shù)據(jù) 動(dòng)態(tài) 掃描 模塊譯 碼 電 路 setmin 60進(jìn)制計(jì)數(shù)器 reset 60進(jìn)制計(jì)數(shù)器 sethour 分頻模塊 50MHz 圖4.1 數(shù)字時(shí)鐘基本框圖 系統(tǒng)的基本功能模塊可劃分為:分頻模塊、計(jì)數(shù)模塊(包括秒、分、時(shí)) 、譯碼模塊、數(shù)據(jù)掃描模塊和報(bào)警模塊。計(jì)數(shù)模塊由兩個(gè)60進(jìn)制計(jì)數(shù)器和一個(gè)24進(jìn)制計(jì)數(shù)器組成,分別對(duì)秒、分、小時(shí)進(jìn)行計(jì)數(shù)。整個(gè)計(jì)數(shù)模塊從00點(diǎn)00分00秒開(kāi)始計(jì)時(shí),當(dāng)計(jì)數(shù)到23點(diǎn)59分59秒的時(shí)候,一天結(jié)束,計(jì)數(shù)器清

23、零,新的一天重新開(kāi)始計(jì)數(shù)。秒計(jì)數(shù)器的計(jì)數(shù)時(shí)鐘信號(hào)為1Hz 的標(biāo)準(zhǔn)信號(hào),可以由系統(tǒng)板上提供的50MHz 信號(hào)通過(guò)分頻得到。秒計(jì)數(shù)器的進(jìn)位輸出信號(hào)作為分鐘計(jì)數(shù)器的計(jì)數(shù)信號(hào),分鐘計(jì)數(shù)器的進(jìn)位輸出信號(hào)又作為小時(shí)計(jì)數(shù)器的計(jì)數(shù)信號(hào)。要設(shè)計(jì)一個(gè)同時(shí)顯示時(shí)、分、秒6個(gè)數(shù)字的數(shù)字時(shí)鐘,則需要6個(gè)七段數(shù)碼顯示管。若同時(shí)點(diǎn)亮這6個(gè)七段數(shù)碼顯示顯示管,則電路中會(huì)產(chǎn)生一個(gè)比較大的電流,很容易造成電路燒壞,我們通過(guò)掃描電路來(lái)解決這一問(wèn)題,通過(guò)產(chǎn)生一個(gè)掃描信號(hào)來(lái)控制6個(gè)七段顯示器,依次點(diǎn)亮6個(gè)七段數(shù)碼顯示管,也就是每次只點(diǎn)亮一個(gè)七段顯示器。只要掃描信號(hào)的頻率超過(guò)人的眼睛視覺(jué)暫留頻率24Hz以上,就可以達(dá)到盡管每次點(diǎn)亮單個(gè)七

24、段數(shù)碼顯示管,卻能具有6個(gè)同時(shí)顯示的視覺(jué)效果,而且顯示也不致閃爍抖動(dòng)。其中6位掃描信號(hào)一方面控制七段顯示器依次點(diǎn)亮,一方面控制6選1選擇器輸出相應(yīng)顯示數(shù)字。時(shí)間數(shù)據(jù)選擇模塊的作用是將時(shí)鐘產(chǎn)生的秒、分鐘、小時(shí)信號(hào)集合起來(lái),然后驅(qū)動(dòng)六位七段數(shù)碼管的片選驅(qū)動(dòng)信號(hào)輸出。5 數(shù)字時(shí)鐘模塊化設(shè)計(jì) 需要設(shè)計(jì)的數(shù)字時(shí)鐘由上述7個(gè)模塊組成,設(shè)計(jì)時(shí),首先用VHDL語(yǔ)言編寫(xiě)各個(gè)底層功能模塊,然后在Quartus II開(kāi)發(fā)環(huán)境下分別進(jìn)行編譯、仿真, 然后再用頂層文件將各功能模塊連接起來(lái),再進(jìn)行進(jìn)一步編譯、仿真、下載。以下介紹系統(tǒng)中各模塊的具體功能和設(shè)計(jì)方法。5.1 分頻模塊 本設(shè)計(jì)使用的FPGA開(kāi)發(fā)板中使用的芯片是C

25、yclone EP1C6Q240C8,使用的是50MHz的時(shí)鐘脈沖輸入,根據(jù)電路的具體設(shè)計(jì)需要,對(duì)其進(jìn)行分頻設(shè)計(jì)。 如圖5.2所示,其為系統(tǒng)的分頻模塊,其中模塊clk1管腳輸出為1hz的時(shí)鐘脈沖,得出用于計(jì)數(shù)模塊和報(bào)警模塊正常工作的時(shí)鐘信號(hào),在clk1k管腳輸出為一個(gè)1khz的時(shí)鐘脈沖,作用與動(dòng)態(tài)掃描模塊的正常工作。輸入管腳:clk為50Mhz脈沖輸入;輸出管腳:clk1為1hz脈沖輸出; clk1k為1khz脈沖輸出. 圖5.2源代碼如下:library ieee;use ieee.std_logic_1164.all;entity fp is port( clk:in std_logic;

26、 q1:out std_logic q1k:out std_logic);end fp;architecture fp_arc of fp issignal x:std_logic;signal y:std_logic;begin process(clk) variable cnt:integer range 0 to 24999999; begin if clk'event and clk='1'then if cnt<24999999 then cnt:=cnt+1; else cnt:=0; x<=not x; end if; end if; q1&l

27、t;=x; end process;process(clk) variable cnt:integer range 0 to 24999; begin if clk'event and clk='1'then if cnt<24999 then cnt:=cnt+1; else cnt:=0; y<=not y; end if; end if; q1k<=y; end process;end fp_arc;5.2 計(jì)時(shí)模塊5.2.1 秒計(jì)時(shí)模塊 如圖5.3所示,計(jì)數(shù)電路的第一個(gè)模塊為秒計(jì)數(shù)模塊,其實(shí)質(zhì)是一個(gè)六十進(jìn)制計(jì)數(shù)器,其中輸入管腳: clk為1hz

28、的時(shí)鐘脈沖; reset為秒模塊清零復(fù)位鍵; setmin為調(diào)分鐘按鍵輸出管腳:enmin為分模塊的進(jìn)位信號(hào); dout6.0為秒模塊輸出的計(jì)數(shù)信號(hào). 圖5.3源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity second is port( clk: in std_logic; reset: in std_logic; setmin: in std_logic; enmin: out std_logic; daout: out std_logic_vector(6 down

29、to 0);end entity second;architecture fun of second is signal count:std_logic_vector(6 downto 0); signal enmin_1,enmin_2:std_logic; begin daout<=count; enmin_2<=(setmin and clk); enmin<=(enmin_1 or enmin_2); process( clk,reset,setmin) begin if(reset='0')then count<="0000000&q

30、uot; elsif(clk'event and clk='1')then if(count(3 downto 0)="1001")then if(count<16#60#)then if(count="1011001")then enmin_1<='1'count<="0000000" else count<=count+7; end if; else count<="0000000" end if; elsif(count<16#60#

31、)then count<=count+1; enmin_1<='0'after 100ns; else count<="0000000" end if; end if; end process;end fun;5.2.2 分計(jì)時(shí)模塊 如圖5.4所示,計(jì)數(shù)模塊的第二個(gè)模塊為分計(jì)時(shí)模塊,其實(shí)質(zhì)是一個(gè)六十進(jìn)制計(jì)數(shù)器,其中:輸入管腳:clk為秒模塊輸出的進(jìn)位信號(hào);clk1為1hz的時(shí)鐘控制脈沖; reset管腳的作用為分模塊的清零、復(fù)位; sethour為調(diào)小時(shí)按鍵。輸出管腳:enhour輸出為時(shí)模塊的進(jìn)位信號(hào); dout6.0為分鐘模塊輸出的計(jì)數(shù)

32、信號(hào). 圖5.4源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port( clk: in std_logic; clk1: in std_logic; reset: in std_logic; sethour: in std_logic; enhour: out std_logic; daout: out std_logic_vector(6 downto 0);end entity minute;architecture fun of minute

33、 is signal count:std_logic_vector(6 downto 0); signal enhour_1,enhour_2:std_logic; begin daout<=count; enhour_2<=(sethour and clk1); enhour<=(enhour_1 or enhour_2); process(clk,reset,sethour) begin if(reset='0')then count<="0000000" elsif(clk'event and clk='1

34、9;)then if(count(3 downto 0)="1001")then if(count<16#60#)then if(count="1011001")then enhour_1<='1' count<="0000000" else count<=count+7; end if; else count<="0000000" end if; elsif(count<16#60#)then count<=count+1; enhour_1<=&#

35、39;0'after 100 ns; else count<="0000000" end if; end if; end process;end fun;5.2.3 時(shí)計(jì)時(shí)模塊 如圖5.5所示,此模塊的第三個(gè)模塊為小時(shí)計(jì)數(shù)模塊,其實(shí)質(zhì)是一個(gè)二十四進(jìn)制計(jì)數(shù)器,其中:輸入管腳:clk為分模塊輸出的進(jìn)位信號(hào); Reset為小時(shí)模塊的清零、復(fù)位管腳.輸出模塊:dout5.0為小時(shí)模塊輸出的計(jì)數(shù)信號(hào). 圖5.5源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;en

36、tity 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 0); begin daout<=count; process(clk,reset) begin if(reset='0')then count<="000000" elsif(clk'event and cl

37、k='1')then if(count(3 downto 0)="1001")then if(count<16#23#)then count<=count+7; else count<="000000" end if; elsif(count<16#23#)then count<=count+1; else count<="000000" end if; end if; end process;end fun;5.3 報(bào)警模塊 如圖5.6所示,報(bào)警模塊的作用是在時(shí)鐘整點(diǎn)的時(shí)候輸出一個(gè)

38、報(bào)時(shí)信號(hào),信號(hào)作用用開(kāi)發(fā)板上,產(chǎn)生外部響聲,起到報(bào)時(shí)的作用,同時(shí)可以選擇在開(kāi)發(fā)板的LED上顯示出整點(diǎn)報(bào)時(shí)的LED花樣顯示,其中:輸出管腳:clk為1hz的脈沖信號(hào); dain6.0是分鐘的輸入信號(hào);輸出管腳:speak為整點(diǎn)報(bào)時(shí)的聲音輸出; lamp2.0為整點(diǎn)報(bào)時(shí)的LED輸出; 圖5.6源代碼如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity alert is port( clk: in std_logic; dain: in std_logic_vector(6 downto

39、0); speak: out std_logic; lamp: out std_logic_vector(2 downto 0);end alert;architecture fun of alert is signal count1: std_logic_vector(1 downto 0); signal count: std_logic_vector(1 downto 0);begin speaker:process(clk) begin speak<=count1(1); if(clk'event and clk='1')then if(dain=&quo

40、t;0000000")then if(count1>="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(c

41、ount="01")then lamp<="010" elsif(count="10")then lamp<="100" end if; count<=count+1; else count<="00" end if; end if; end process lamper;end fun;5.4 時(shí)間數(shù)據(jù)選擇模塊 如圖5.7所示,該模塊的作用是將時(shí)鐘產(chǎn)生的秒、分鐘、小時(shí)信號(hào)集合起來(lái),然后驅(qū)動(dòng)六位八段共陰數(shù)碼管的片選驅(qū)動(dòng)信號(hào)輸出。輸入管腳:clk1為1khz的時(shí)鐘脈沖; R

42、eset為數(shù)據(jù)選擇模塊的清零、復(fù)位信號(hào); Sec6.0為秒模塊計(jì)數(shù)的輸入信號(hào); Min6.0為分鐘模塊計(jì)數(shù)的輸入信號(hào); Hour5.0為小時(shí)模塊計(jì)數(shù)的輸入信號(hào);輸出管腳:dout3.0為選擇信號(hào)的輸出; Dp為八段數(shù)碼管小數(shù)點(diǎn)的輸出管腳; Sel2.0為位選后的輸出信號(hào). 源代碼如下: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: in std_logic; sec,m

43、in: in std_logic_vector(6 downto 0); hour: in std_logic_vector(5 downto 0); daout: out std_logic_vector(3 downto 0); dp: out std_logic; sel: 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)

44、 begin if(reset='0')then count<="000" elsif(clk1'event and clk1='1')then if(count>="101")then count<="000" else count<=count+1; end if; end if; case count is when"000"=>daout<=sec(3 downto 0);dp<='0' when"0

45、01"=>daout(3)<='0' daout(2 downto 0)<=sec(6 downto 4); dp<='0' when"010"=>daout<=min(3 downto 0);dp<='1' when"011"=>daout(3)<='0' daout(2 downto 0)<=min(6 downto 4); dp<='0' when"100"=>daout<=hour(3 downto 0);dp<='1' when others=>daout(3 downto 2)<="00" daout(1 downto 0)<=hour(5 downto 4); dp<='0' end case; end process;end fun;5.5 譯碼顯示模塊 如圖5.8所示,此模塊為數(shù)字時(shí)鐘的譯碼顯示輸出模塊,其中:輸入管腳:num3.0為數(shù)據(jù)選擇模塊

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論