版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p><b> ?。?0 屆)</b></p><p> 基于FPGA數(shù)字秒表電路的設(shè)計(jì)</p><p><b> 目錄</b></p><p><b> 摘要II</b></p><p>
2、 AbstractIII</p><p><b> 第一章 緒論1</b></p><p> 1.1 研究背景1</p><p> 1.2 研究目的和意義1</p><p> 第二章 硬件描述語(yǔ)言VHDL3</p><p> 2.1 VHDL的簡(jiǎn)介3</p&
3、gt;<p> 2.2 VHDL語(yǔ)言的特點(diǎn)3</p><p> 2.3 VHDL的基本結(jié)構(gòu)與基本要素4</p><p> 2.3.1 VHDL語(yǔ)言的標(biāo)識(shí)符4</p><p> 2.3.2 VHDL語(yǔ)言的客體4</p><p> 2.3.3 VHDL語(yǔ)言的數(shù)據(jù)類(lèi)型4</p><p&
4、gt; 2.3.4 VHDL 順序語(yǔ)句5</p><p> 2.3.5 VHDL并行語(yǔ)句5</p><p> 2.4 VHDL的設(shè)計(jì)流程5</p><p> 2.5 VHDL和MAX+PLUSII在設(shè)計(jì)數(shù)字電路中的應(yīng)用5</p><p> 第三章 FPGA概述7</p><p> 3.1
5、 FPGA簡(jiǎn)介7</p><p> 3.2 FPGA的發(fā)展應(yīng)用7</p><p> 3.3 FPGA的基本特點(diǎn)8</p><p> 3.4 FPGA在數(shù)字秒表上的應(yīng)用研究8</p><p> 第四章 MAX+PLUSⅡ簡(jiǎn)介9</p><p> 4.1 MAX+PLUSⅡ簡(jiǎn)介9</
6、p><p> 4.2 MAX+PLUSⅡ的功能9</p><p> 4.3 MAX+PLUSⅡ的主要特點(diǎn)9</p><p> 4.4 使用Max+plusⅡ軟件設(shè)計(jì)流程10</p><p> 第五章 數(shù)字秒表的系統(tǒng)設(shè)計(jì)及仿真11</p><p> 5.1 系統(tǒng)設(shè)計(jì)11</p>&
7、lt;p> 5.1.1 設(shè)計(jì)思想11</p><p> 5.1.2 設(shè)計(jì)要求(秒表的功能描述)11</p><p> 5.1.3 秒表的面板包括11</p><p> 5.2 頂層電路設(shè)計(jì)11</p><p> 5.3 數(shù)字秒表的設(shè)計(jì)原理12</p><p> 5.4 各模塊的原
8、理、程序及其仿真13</p><p> 5.4.1 調(diào)整控制電路(主控電路模塊)13</p><p> 5.4.2 鍵輸入模塊電路(含消抖電路)15</p><p> 5.4.3 時(shí)鐘分頻電路模塊17</p><p> 5.4.4 計(jì)時(shí)模塊19</p><p> 5.4.5 顯示譯碼電路模
9、塊23</p><p> 5.4.6 溢出報(bào)警控制25</p><p> 5.4.7 VHDL頂層電路描述25</p><p><b> 結(jié) 論27</b></p><p><b> 參考文獻(xiàn)28</b></p><p><b> 附錄2
10、9</b></p><p><b> 致謝37</b></p><p> 基于FPGA數(shù)字秒表電路的設(shè)計(jì)</p><p><b> 摘要</b></p><p> 在科技技術(shù)高度發(fā)展的今天,計(jì)算機(jī)應(yīng)用及集成電路得到了高速的發(fā)展。數(shù)字秒表是采用數(shù)字電路實(shí)現(xiàn)對(duì)分、秒,數(shù)字顯示的計(jì)時(shí)
11、裝置,由于數(shù)字集成電路的發(fā)展和石英晶體振蕩器的廣泛應(yīng)用,使得數(shù)字秒表的精確度,遠(yuǎn)遠(yuǎn)超過(guò)原來(lái)的老式秒表。秒表在很多領(lǐng)域充當(dāng)一個(gè)重要的角色。如在各種比賽中對(duì)秒表的精確度要求很高,尤其是一些科學(xué)實(shí)驗(yàn)上,對(duì)時(shí)間的把握度很高。秒表的數(shù)字化給人們生產(chǎn)生活帶來(lái)了極大的方便。本文就是基于FPGA數(shù)字秒表的設(shè)計(jì),在時(shí)鐘脈沖信號(hào)、狀態(tài)控制等原理設(shè)計(jì)出的數(shù)字秒表。以FPGA為核心的數(shù)字秒表,具有集成度高、外圍電路少、可靠性強(qiáng)等特點(diǎn)。</p>&
12、lt;p> 本文以MAX+PLUSⅡ軟件為設(shè)計(jì)平臺(tái),以現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)器件為核心,設(shè)計(jì)了一個(gè)具有數(shù)字系統(tǒng)即帶計(jì)時(shí)器功能的秒表系統(tǒng),并且通過(guò)了數(shù)碼管驅(qū)動(dòng)電路動(dòng)態(tài)顯示計(jì)時(shí)結(jié)果。使用MAX+PLUSⅡ的綜合器和仿真器對(duì)系統(tǒng)進(jìn)行了編譯和仿真,并得出了正確的仿真結(jié)果。其展示了VHDL語(yǔ)言的強(qiáng)大功能和優(yōu)秀特性。</p><p> 關(guān)鍵字:數(shù)字秒表;FPGA;MAX+PLUSⅡ;VHDL</p>
13、;<p> FPGA-based Digital Stopwatch Circuit</p><p><b> Abstract</b></p><p> Highly developed technology in technology today, computer application and development of high-spe
14、ed integrated circuits have been. Digital stopwatch is used to realize digital circuits minutes, seconds, the figures show the timing device, due to the development of digital integrated circuits and the extensive applic
15、ation of quartz crystal oscillators, making digital stopwatch accuracy, far more than the original old-fashioned stopwatch. Stopwatch in many areas as an important role. In various co</p><p> Key words:Digi
16、tal Stopwatch, FPGA, MAX + PLUS Ⅱ, VHDL</p><p><b> 第一章 緒論</b></p><p><b> 1.1 研究背景</b></p><p> 時(shí)間在不斷的流逝,當(dāng)它從指尖流走的那一刻我們可曾感到過(guò)它的存在呢?從古至今人們就知道了時(shí)間的重要性。他們開(kāi)始尋找和創(chuàng)
17、造可以表示時(shí)間的儀器。在公元1300年以前,人們主要是利用天文現(xiàn)象和流動(dòng)物質(zhì)的連續(xù)運(yùn)動(dòng)來(lái)計(jì)時(shí)。例如,日晷是利用日影的方位計(jì)時(shí);漏壺和沙漏是利用水流和沙流的流量計(jì)時(shí)。隨著人們生活水平的日益提高,社會(huì)體系的日益完善,人們對(duì)于各種應(yīng)用器材的要求也越來(lái)越高.秒表作為日常生活中常見(jiàn)的儀器,尤其在體育運(yùn)動(dòng)中應(yīng)用很廣泛,所以秒表的精確性和方便性被人們很好的利用。本秒表計(jì)時(shí)器用于體育競(jìng)賽及各種要求較精確的領(lǐng)域。這里設(shè)計(jì)的計(jì)時(shí)器是用一塊專(zhuān)用的芯片,用VH
18、DL語(yǔ)言描述的。它具有開(kāi)關(guān)、時(shí)鐘和顯示功能,其體積小,攜帶方便。以大規(guī)模集成電路為物質(zhì)基礎(chǔ)的EDA技術(shù)終于打破了軟硬件之間最后的屏障,使軟硬件工程師們有了共同的語(yǔ)言[1]。</p><p> EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫(xiě)。EDA技術(shù)伴隨著計(jì)算機(jī)、集成電路以及電子系統(tǒng)設(shè)計(jì)的發(fā)展,經(jīng)歷了計(jì)算機(jī)輔助設(shè)計(jì)(簡(jiǎn)稱(chēng)CAD)、計(jì)算機(jī)輔助工程設(shè)計(jì)(簡(jiǎn)稱(chēng)CAE)和電子設(shè)
19、計(jì)自動(dòng)化(簡(jiǎn)稱(chēng)EDA)。</p><p> EDA技術(shù)是以計(jì)算機(jī)為工具,在以EDA軟件為平臺(tái)的基礎(chǔ)上,以硬件描述語(yǔ)言HDL為系統(tǒng)邏輯描述手段完成的設(shè)計(jì)文件自動(dòng)地完成邏輯編譯、邏輯分割、邏輯化簡(jiǎn)、邏輯行局布線(xiàn)、邏輯綜合及優(yōu)化、邏輯仿真,直到對(duì)特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載。目前設(shè)計(jì)者僅限于利用軟件的方式來(lái)工作,對(duì)系統(tǒng)硬件功能的描述要利用硬件描述語(yǔ)言來(lái)完成,在利用EDA工具的幫助下得到設(shè)計(jì)的結(jié)果。盡管目
20、標(biāo)系統(tǒng)是硬件,但整個(gè)設(shè)計(jì)和修改過(guò)程如同完成軟件設(shè)計(jì)一樣方便和高效[2]。</p><p> 1.2 研究目的和意義</p><p> 目的:本文的研究目的是對(duì)數(shù)字系統(tǒng)設(shè)計(jì)的歷史和現(xiàn)狀進(jìn)行分析,并對(duì)數(shù)字秒表的VHDL設(shè)計(jì)原理進(jìn)行了深入的研究,并將其綜合。本文設(shè)計(jì)了一個(gè)基于FPGA的數(shù)字秒表,并在開(kāi)發(fā)軟件MAX+PLUSⅡ進(jìn)行輸入、編譯、綜合、仿真將其下載到系統(tǒng)可編程實(shí)驗(yàn)板中測(cè)試實(shí)現(xiàn)。信
21、號(hào)源是由實(shí)驗(yàn)板上的時(shí)鐘信號(hào)經(jīng)分頻而得到的0.0 1 秒信號(hào)。設(shè)計(jì)采用EDA技術(shù)分為兩步。第一步:在MAXPLUSⅡ開(kāi)發(fā)工具中 ,用 VHDL語(yǔ)言分別編寫(xiě)出所要的幾個(gè)模塊的文本文件 (也稱(chēng)底層文件) ,將VHDL的文本文件分別轉(zhuǎn)換為相對(duì)應(yīng)的器件,并進(jìn)行仿真,每個(gè)器件的時(shí)序仿真結(jié)果與設(shè)計(jì)要求要一致;其次,將整個(gè)數(shù)字秒表作為一個(gè)器件進(jìn)行時(shí)序仿真。</p><p> 意義:在科技高度發(fā)展的今天,集成電路及計(jì)算機(jī)應(yīng)用得到
22、了高速的發(fā)展。尤其是計(jì)算機(jī)應(yīng)用的發(fā)展,各種家用電器多會(huì)實(shí)現(xiàn)電腦技術(shù),電腦各部分在工作時(shí)多是以時(shí)間為基準(zhǔn)的。本文就是基于FPGA數(shù)字秒表的設(shè)計(jì),在時(shí)鐘脈沖信號(hào)、狀態(tài)控制等原理設(shè)計(jì)出的數(shù)字秒表。秒表在很多領(lǐng)域充當(dāng)一個(gè)重要的角色。在各種比賽中對(duì)秒表的精確度要求很高,尤其是一些科學(xué)實(shí)驗(yàn)。他們對(duì)時(shí)間精確度達(dá)到了幾納秒級(jí)別。數(shù)字秒表是日常生活中比較常見(jiàn)的電子產(chǎn)品,以其價(jià)格低廉、走時(shí)精確。使用方便,功能多而倍受廣大用戶(hù)的喜歡。如在很多喜慶場(chǎng)合,對(duì)某一
23、時(shí)刻進(jìn)行倒計(jì)時(shí),人們常常使用倒計(jì)時(shí)秒表。所以研究秒表具有重大的現(xiàn)實(shí)意義和理論意義。</p><p> 第二章 硬件描述語(yǔ)言VHDL</p><p> 2.1 VHDL的簡(jiǎn)介</p><p> VHDL(超高集成電路硬件描敘語(yǔ)言)誕生于1982年。是一種用于電路設(shè)計(jì)的高級(jí)語(yǔ)言。最初是由美國(guó)國(guó)防部開(kāi)發(fā)出來(lái)供美軍用來(lái)提高設(shè)計(jì)的可靠性和縮減開(kāi)發(fā)周期的一種使用范圍較
24、小的設(shè)計(jì)語(yǔ)言。VHDL主要用于描述數(shù)字系統(tǒng)的行為、結(jié)構(gòu)、接口和功能,非常適合用于可編程邏輯芯片的應(yīng)用設(shè)計(jì)。VHDL除具有硬件特征的語(yǔ)句外,其描述風(fēng)格與語(yǔ)言形式和句法類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序特點(diǎn)是將一項(xiàng)設(shè)計(jì)實(shí)體(可以是個(gè)元件、電路模塊或一個(gè)系統(tǒng))分成外部(即端口)和內(nèi)部(即結(jié)構(gòu)體)兩部分,外部負(fù)責(zé)對(duì)設(shè)計(jì)實(shí)體和端口引腳命名和說(shuō)明,內(nèi)部負(fù)責(zé)對(duì)模塊功能和算法進(jìn)行描述。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部結(jié)構(gòu)、功能開(kāi)發(fā)完
25、成,即可生成共享功能模塊,這就意味著,在頂層綜合或其他設(shè)計(jì)中可以直接調(diào)用這個(gè)實(shí)體模塊。VHDL具有較強(qiáng)的行為描述能力,可避開(kāi)具體的器件結(jié)構(gòu),從邏輯功能和行為上進(jìn)行描述和設(shè)計(jì)[3]。</p><p> 2.2 VHDL語(yǔ)言的特點(diǎn)</p><p> VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),關(guān)于用VHDL和原理圖輸入進(jìn)行CPLD/FPGA設(shè)計(jì)的粗略比較:在設(shè)計(jì)中,如果采用原理圖輸入的設(shè)計(jì)方
26、式是比較直觀(guān)的。你要設(shè)計(jì)的是什么,你就直接從庫(kù)中調(diào)出來(lái)用就行了。這樣比較符合人們的習(xí)慣。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本點(diǎn)。應(yīng)用 VHDL進(jìn)行工程設(shè)計(jì)的優(yōu)點(diǎn)是多方面的。</p><p> 與其他的硬件描述語(yǔ)言相比,VHDL具有更強(qiáng)的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計(jì)領(lǐng)域最佳的硬件描述語(yǔ)
27、言。</p><p> VHDL語(yǔ)句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計(jì)的分解和已有設(shè)計(jì)的再利用功能。符合市場(chǎng)需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個(gè)代發(fā)組共同并行工作才能實(shí)現(xiàn)。</p><p> VHDL豐富的仿真語(yǔ)句和庫(kù)函數(shù),使得在任何大系統(tǒng)的設(shè)計(jì)早期就能查驗(yàn)設(shè)計(jì)系統(tǒng)的功能可行性,隨時(shí)可對(duì)設(shè)計(jì)進(jìn)行仿真模擬。</p><p> 對(duì)于用
28、VHDL完成的一個(gè)確定的設(shè)計(jì),可以利用EDA工具進(jìn)行邏輯綜合和優(yōu)化,并自動(dòng)的把VHDL描述設(shè)計(jì)轉(zhuǎn)變成門(mén)級(jí)網(wǎng)表。</p><p> VHDL對(duì)設(shè)計(jì)的描述具有相對(duì)獨(dú)立性,設(shè)計(jì)者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計(jì)實(shí)現(xiàn)的目標(biāo)器件是什么,而進(jìn)行獨(dú)立的設(shè)計(jì)。</p><p> 由于VHDL具有類(lèi)屬描述語(yǔ)句和子程序調(diào)用等功能,對(duì)于完成的設(shè)計(jì),在不改變?cè)闯绦驐l件下,只需改變類(lèi)屬參量或函數(shù),就能輕易
29、地改變?cè)O(shè)計(jì)的規(guī)模和結(jié)構(gòu)[1]。</p><p> 2.3 VHDL的基本結(jié)構(gòu)與基本要素</p><p> 一個(gè)相對(duì)完整的VHDL程序通常包含實(shí)體(Entity)、結(jié)構(gòu)體(Architecture)、配置(configuration)、程序包(package)和庫(kù)(Library)5個(gè)部分[4]。</p><p> 2.3.1 VHDL語(yǔ)言的標(biāo)識(shí)符</
30、p><p> VHDL文字主要包括數(shù)值和標(biāo)識(shí)符。VHDL的標(biāo)識(shí)符是最常用的操作符,可以是常數(shù)、變量、端口、信號(hào)、子程序以及參數(shù)的名字。標(biāo)識(shí)符分為擴(kuò)展標(biāo)識(shí)符與短標(biāo)識(shí)符。</p><p> 短標(biāo)識(shí)符遵循以下規(guī)則:必須以26個(gè)英文字母開(kāi)頭;字母可以是大寫(xiě)、小寫(xiě)、數(shù)字包括0--9和下劃線(xiàn);下劃線(xiàn)前后都必須有英文字母或數(shù)字。</p><p> 2.3.2 VHDL語(yǔ)言的客
31、體</p><p> 在VHDL語(yǔ)言中,凡是可以賦予一個(gè)值的對(duì)象叫客體。 VHDL語(yǔ)言客體包含有專(zhuān)門(mén)的數(shù)據(jù)類(lèi)型,主要有4個(gè)類(lèi)別:常量、信號(hào)、變量以及文件。</p><p> 常量:常量是設(shè)計(jì)者給實(shí)體名賦予的固定值,其中的值在運(yùn)行中不改變。通常,常量賦值應(yīng)該在程序開(kāi)始就進(jìn)行說(shuō)明,數(shù)據(jù)類(lèi)型在實(shí)體說(shuō)明語(yǔ)句中指明。</p><p> 信號(hào):信號(hào)通常是在構(gòu)造體、程序包以
32、及實(shí)體的說(shuō)明中使用,用來(lái)進(jìn)行進(jìn)程中的通信,它是個(gè)全局變量。信號(hào)是電子電路內(nèi)部硬件實(shí)體相互連接的抽象表示。</p><p> 變量:變量只在進(jìn)程語(yǔ)句、函數(shù)語(yǔ)句、過(guò)程語(yǔ)句的結(jié)構(gòu)中使用,變量的賦值立即生效,不產(chǎn)生賦值延時(shí),是一個(gè)局部量。</p><p> 文件:是傳輸大量數(shù)據(jù)的客體,包含一些專(zhuān)門(mén)數(shù)據(jù)類(lèi)型的數(shù)值。在仿真測(cè)試時(shí),輸入的激烈數(shù)據(jù)與仿真結(jié)果的輸出都需要用文件來(lái)進(jìn)行[4]。</p
33、><p> 2.3.3 VHDL語(yǔ)言的數(shù)據(jù)類(lèi)型</p><p> 在VHDL語(yǔ)言中,信號(hào)、變量、常數(shù)都要指定數(shù)據(jù)類(lèi)型,并且只有相同的數(shù)據(jù)類(lèi)型的量才能互相傳遞和作用。VHDL 的基本類(lèi)型有:integer(整數(shù))、bit(位)、bit-Vector(位矢量)、Boolean(布爾量)、character(字符)、string(字符串)、time(時(shí)間)、real(實(shí)數(shù))。 </p&
34、gt;<p> 2.3.4 VHDL 順序語(yǔ)句</p><p> VHDL有如下基本順序語(yǔ)句 :賦值語(yǔ)句、等待語(yǔ)句、流程控制語(yǔ)句、返回語(yǔ)句、子程序調(diào)用語(yǔ)句、空操作語(yǔ)句。流程控制語(yǔ)句共有五種:IF語(yǔ)句、CASE語(yǔ)句、NEXT語(yǔ)句、LOOP語(yǔ)句、EXIT語(yǔ)句。賦值語(yǔ)句有信號(hào)賦值語(yǔ)句和變量賦值語(yǔ)句兩種。</p><p> 2.3.5 VHDL并行語(yǔ)句</p>
35、<p> 結(jié)構(gòu)體中的并行語(yǔ)句主要有七種類(lèi)型:進(jìn)程語(yǔ)句、塊語(yǔ)句 、并行信號(hào)賦值語(yǔ)句、條件信號(hào)賦值語(yǔ)句、元件例化語(yǔ)句(其中包括類(lèi)屬配置語(yǔ)句 )生成語(yǔ)句、并行過(guò)程調(diào)用語(yǔ)句。</p><p> 2.4 VHDL的設(shè)計(jì)流程</p><p> VHDL是設(shè)計(jì)流程主要包括以下幾個(gè)步驟:</p><p> 文本編輯:用任何文本編輯器都可以進(jìn)行,也可以用專(zhuān)用的H
36、DL編輯環(huán)境。通常VHDL文件保存為.vhd文件,Verilog文件保存為.v文件。</p><p> 功能仿真:將文件調(diào)入HDL仿真軟件進(jìn)行功能仿真,檢查邏輯功能是否正確(也叫前仿真,對(duì)簡(jiǎn)單的設(shè)計(jì)可以跳過(guò)這一步,只在布線(xiàn)完成以后,進(jìn)行時(shí)序仿真)</p><p> 邏輯綜合:將源文件調(diào)入邏輯綜合軟件進(jìn)行綜合,即把語(yǔ)言綜合成最簡(jiǎn)的布爾表達(dá)式。邏輯綜合軟件會(huì)生成.edf或.edif 的ED
37、A工業(yè)標(biāo)準(zhǔn)文件。</p><p> 布局布線(xiàn):將.edf文件調(diào)入PLD廠(chǎng)家提供的軟件中進(jìn)行布線(xiàn),即把設(shè)計(jì)好的邏輯安放PLD/FPGA內(nèi)。</p><p> 時(shí)序仿真:需要利用在布局布線(xiàn)中獲得的精確參數(shù),用仿真軟件驗(yàn)證電路的時(shí)序。(也叫后仿真) 通常以上過(guò)程可以都在PLD/FPGA廠(chǎng)家提供的開(kāi)發(fā)工具。</p><p><b> 器件編程[5]。<
38、/b></p><p> 2.5 VHDL和MAX+PLUSII在設(shè)計(jì)數(shù)字電路中的應(yīng)用</p><p> 以VHDL為工具的EDA設(shè)計(jì)方法與傳統(tǒng)的人工設(shè)計(jì)方法相比,有以下幾個(gè)優(yōu)點(diǎn):縮短了開(kāi)發(fā)周期、提高了效率、產(chǎn)品的質(zhì)量得到了提高。用VHDL進(jìn)行數(shù)字系統(tǒng)開(kāi)發(fā)與設(shè)計(jì),其設(shè)計(jì)的抽象層次有6個(gè),分別是系統(tǒng)級(jí)、芯片級(jí)、寄存器級(jí)、門(mén)級(jí)、電路級(jí)和版圖/硅片級(jí),可以在不同的抽象層次級(jí)別上設(shè)計(jì)系
39、統(tǒng)。使用MAX+PLUSII作為開(kāi)發(fā)環(huán)境時(shí)應(yīng)該根據(jù)軟件支持的芯片資源情況選擇合適的設(shè)計(jì)層次。在VHDL設(shè)計(jì)中,常常采用多進(jìn)程描述的方法來(lái)進(jìn)行程序設(shè)計(jì),通過(guò)使用進(jìn)程可以把整體的功能局部化,分塊設(shè)計(jì),多個(gè)進(jìn)程通過(guò)進(jìn)程間通信機(jī)制互相配合,達(dá)到設(shè)計(jì)要求。當(dāng)進(jìn)程比較多的時(shí)候,它們之間的配合問(wèn)題就比較復(fù)雜,因此在設(shè)計(jì)之前應(yīng)該合理規(guī)劃安排[6]。</p><p> 第三章 FPGA概述</p><p&g
40、t; 基于FPGA技術(shù)的發(fā)展和應(yīng)用領(lǐng)域的擴(kuò)大與深入,它作為一種高新的技術(shù),在電子信息、通信、自動(dòng)控制用計(jì)算機(jī)等領(lǐng)域電子行業(yè)都無(wú)處不在它的身影,因此FPGA重要性日益突出。</p><p> 3.1 FPGA簡(jiǎn)介</p><p> FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門(mén)陣列,它是在可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。與其他器件相比,它的
41、優(yōu)點(diǎn)是可以實(shí)時(shí)的對(duì)外加或內(nèi)置的RAM或EPROM編程,實(shí)時(shí)地改變器件功能,實(shí)現(xiàn)現(xiàn)場(chǎng)可編程或在線(xiàn)重配置,是科學(xué)實(shí)驗(yàn)、樣機(jī)研制、小批量產(chǎn)品生產(chǎn)的最佳選擇器件。</p><p> 由于FPGA具有開(kāi)發(fā)周期短、編程靈活、可靠性高等優(yōu)點(diǎn),所以非常適合在實(shí)驗(yàn)室中使用。FPGA的應(yīng)用研究對(duì)科研工作者的作用也是顯而易見(jiàn)的。FPGA集成了功能豐富的硬件知識(shí)產(chǎn)權(quán)。這些硬件知識(shí)產(chǎn)權(quán)一般完成高速、復(fù)雜的設(shè)計(jì)標(biāo)準(zhǔn)。FPGA正逐步進(jìn)入一些
42、過(guò)去只有ASIC才能完成的設(shè)計(jì)領(lǐng)域。FPGA一般采用同步時(shí)鐘設(shè)計(jì);用全局時(shí)鐘驅(qū)動(dòng)以及門(mén)控時(shí)鐘樹(shù)驅(qū)動(dòng);FPGA采用的時(shí)序驅(qū)動(dòng)方式在各級(jí)專(zhuān)用布線(xiàn)資源上靈活運(yùn)用。目前以硬件描述語(yǔ)言所完成的電路設(shè)計(jì),可以經(jīng)過(guò)簡(jiǎn)單的綜合與布局,快速的燒錄至 FPGA 上進(jìn)行測(cè)試,是現(xiàn)代 IC 設(shè)計(jì)驗(yàn)證的技術(shù)主流。</p><p> 3.2 FPGA的發(fā)展應(yīng)用</p><p> 從1985年FPGA誕生于XIL
43、INX公司,從當(dāng)初的幾百個(gè)門(mén)電路到現(xiàn)在的幾百萬(wàn)門(mén)、幾千萬(wàn)門(mén)……,從原來(lái)的上千元的天價(jià)到現(xiàn)在幾元的超低價(jià),可謂是出現(xiàn)了翻天覆地的變化。早期的可編程邏輯器件只有可編程只讀存貯器(PROM)、紫外線(xiàn)可擦除只讀存貯器(EPROM)和電可擦除只讀存貯器(EEPROM)三種。由于結(jié)構(gòu)的限制,它們只能完成簡(jiǎn)單的數(shù)字邏輯功能。</p><p> FPGA作為一種高新的技術(shù),已經(jīng)逐漸普及到了各行各業(yè),無(wú)論是消費(fèi)類(lèi)、通信類(lèi)、電子行
44、業(yè)都無(wú)處不在它的身影。FPGA的應(yīng)用可分為四個(gè)方面:直接使用,間接使用,硬件仿真,專(zhuān)用集成電路。</p><p> FPGA有多種配置模式:并行主模式為一片F(xiàn)PGA加一片EPROM的方式;主從模式可以支持一片PROM編程多片F(xiàn)PGA;串行模式可以采用串行PROM編程FPGA;外設(shè)模式可以將FPGA作為微處理器的外設(shè),由微處理器對(duì)其編程[7]。</p><p> 3.3 FPGA的基本
45、特點(diǎn)</p><p> 采用FPGA設(shè)計(jì)ASIC電路(專(zhuān)用集成電路),用戶(hù)不需要投片生產(chǎn),就能得到合用的芯片。 </p><p> FPGA可做其它全定制或半定制ASIC電路的中試樣片。 </p><p> FPGA內(nèi)部有豐富的觸發(fā)器和I/O引腳。 </p><p> FPGA是ASIC電路中設(shè)計(jì)周期最短、開(kāi)發(fā)費(fèi)用最低、風(fēng)險(xiǎn)最
46、小的器件之一。 </p><p> FPGA采用高速CHMOS工藝,功耗低,可以與CMOS、TTL電平兼容。 </p><p> 可以說(shuō),F(xiàn)PGA芯片是小批量系統(tǒng)提高系統(tǒng)集成度、可靠性的最佳選擇之一。 FPGA是由存放在片內(nèi)RAM中的程序來(lái)設(shè)置其工作狀態(tài)的,因此,工作時(shí)需要對(duì)片內(nèi)的RAM進(jìn)行編程。用戶(hù)可以根據(jù)不同的配置模式,采用不同的編程方式。 </p>&l
47、t;p> 3.4 FPGA在數(shù)字秒表上的應(yīng)用研究</p><p> 基于FPGA設(shè)計(jì)的數(shù)字秒表具有電路簡(jiǎn)單、可靠性強(qiáng)、實(shí)時(shí)快速擦寫(xiě)、運(yùn)算速度高、故障率低、可靠性高,而且體積小的特點(diǎn)。根據(jù)硬件描述語(yǔ)言VHDL的設(shè)計(jì)文件,能自動(dòng)地完成用軟件方式描述的電子系統(tǒng)到硬件系統(tǒng)的邏輯編譯、邏輯化簡(jiǎn)、邏輯分割、邏輯綜合及優(yōu)化、布局布線(xiàn)、邏輯仿真,直至完成對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。設(shè)計(jì)者的工
48、作僅限于利用軟件的方式來(lái)完成對(duì)系統(tǒng)硬件功能的描述。在MAX+PLUSⅡ軟件平臺(tái)上使用VHDL語(yǔ)言,采用自頂向下的設(shè)計(jì)方法對(duì)系統(tǒng)進(jìn)行了模塊化設(shè)計(jì)和綜合,并進(jìn)行了仿真。 </p><p> 第四章 MAX+PLUSⅡ簡(jiǎn)介</p><p> 4.1 MAX+PLUSⅡ簡(jiǎn)介</p><p> MAX+PLUSⅡ 是美國(guó)ALTERA公司自行開(kāi)發(fā)的一種針對(duì)其公司生產(chǎn)的
49、系列FPGA的設(shè)計(jì)、仿真、編程的工具軟件,其全稱(chēng)為Multiple Array Materix and Programmable Logic User Systems.MAX+PLUSⅡ是FPGA應(yīng)用軟件中比較典型和常見(jiàn)的一種工具,在我國(guó)應(yīng)用較為普遍。</p><p> MAX + plus Ⅱ是一種與結(jié)構(gòu)無(wú)關(guān)的全集成化設(shè)計(jì)環(huán)境。 MAX+ plus Ⅱ開(kāi)發(fā)系統(tǒng)具有強(qiáng)大的處理能力和高度的靈活性。其主要優(yōu)點(diǎn):與結(jié)
50、構(gòu)無(wú)關(guān)、多平臺(tái)、豐富的設(shè)計(jì)庫(kù)、開(kāi)放的界面、全集成化、支持多種硬件描述語(yǔ)言( HDL)等。</p><p> 4.2 MAX+PLUSⅡ的功能</p><p> MAX+PLUSⅡ 接受對(duì)一個(gè)電路設(shè)計(jì)的圖形描述(電路圖)或文本描述(硬件描述語(yǔ)言),通過(guò)編輯、編譯、仿真、綜合、FPGA編程等一系列過(guò)程,將用戶(hù)所設(shè)計(jì)的電路原理圖或電路描述轉(zhuǎn)變?yōu)镕PGA內(nèi)部的基本邏輯單元,寫(xiě)入FPGA芯片中
51、,從而在硬件上實(shí)現(xiàn)用戶(hù)所設(shè)計(jì)的電路。該FPGA可用于正式的產(chǎn)品,也可作為對(duì)最終實(shí)現(xiàn)的ASIC芯片的硬件驗(yàn)證。</p><p> 4.3 MAX+PLUSⅡ的主要特點(diǎn)</p><p> 開(kāi)放的界面:MAX+PLUSⅡ軟件提供了與設(shè)計(jì)輸入、綜合和驗(yàn)證工具的接口。設(shè)計(jì)人員可使用ALTERA或標(biāo)準(zhǔn)EDA設(shè)計(jì)輸入工具建立電路設(shè)計(jì),使用MAX+PLUSⅡ編譯器(Compiler)對(duì)ALTERA的
52、器件進(jìn)行編譯,然后使用ALTERA或其他標(biāo)準(zhǔn)EDA驗(yàn)證工具進(jìn)行驗(yàn)證。</p><p> 設(shè)計(jì)與器件的結(jié)構(gòu)無(wú)關(guān):MAX+PLUSⅡ系統(tǒng)的核心——編譯器(Compiler)支持ALTERA公司的FLEX10K,F(xiàn)LEX8000,F(xiàn)LEX6000,MAX9000,MAX7000,MAX5000和Classic等可編程邏輯器件系列,提供了業(yè)界惟一真正與結(jié)構(gòu)無(wú)關(guān)的可編程邏輯設(shè)計(jì)環(huán)境。MAXPLUSⅡ的編譯器還提供了強(qiáng)大的
53、邏輯綜合與優(yōu)化功能,使設(shè)計(jì)人員能比較容易地將其設(shè)計(jì)集成到可編程邏輯器件中。</p><p> 多平臺(tái):MAX+PLUSⅡ軟件可在多種PC機(jī)和工作站的操作系統(tǒng)中運(yùn)行。其中包括WindowsNT3.51,Windows NT 4.0,Windows 95,Windows 98,Windows2000,WindowsXP Sun SPAC Stations等工作站上運(yùn)行。</p><p>
54、豐富的設(shè)計(jì)庫(kù):MAX+PLUSⅡ提供了豐富的庫(kù)單元供設(shè)計(jì)者使用,其中包括74系列的全部器件和多種特殊的邏輯功能(Macro-Function)以及新型的參數(shù)化兆功能(Mega-Function)。</p><p> 完全集成化:在MAX+PLUSⅡ系統(tǒng)環(huán)境下,可以完成所有的編輯、編譯、邏輯綜合、網(wǎng)表提前、適配、器件裝配及功能的時(shí)序仿真。這可以加快調(diào)試、縮短開(kāi)發(fā)周期。</p><p>
55、接受高級(jí)描述語(yǔ)言:MAX+PLUSⅡ接受多種硬件描述語(yǔ)言(HDL),包括VHDL,VERILOG和ABTERA自己的硬件描述語(yǔ)言AHDL。</p><p> 底層編輯方便形象:MAX+PLUSⅡ的底層編輯與實(shí)際CPLD/FPDA器件的管腳一一對(duì)應(yīng),所以只要用鼠標(biāo)拖放就可以完成I/O口等管腳的編輯任務(wù)[7]。</p><p> 4.4 使用Max+plusⅡ軟件設(shè)計(jì)流程</p&g
56、t;<p> 設(shè)計(jì)輸入:可以采用原理圖輸入、HDL語(yǔ)言描述、及波形輸入等幾種方式。</p><p> 項(xiàng)目編譯:先根據(jù)設(shè)計(jì)要求設(shè)定編譯參數(shù)和編譯策略,如器件的選擇、邏輯綜合方式的選擇等。然后根據(jù)設(shè)定的參數(shù)和策略對(duì)設(shè)計(jì)項(xiàng)目進(jìn)行網(wǎng)表提取、邏輯綜合和器件適配,并產(chǎn)生報(bào)告文件、延時(shí)信息文件及編程文件,供分析仿真和編程使用。 仿真(項(xiàng)目校驗(yàn)):仿真包括功能仿真、時(shí)序仿真和定時(shí)分析,可以利用軟件的仿
57、真功能來(lái)驗(yàn)證設(shè)計(jì)項(xiàng)目的邏輯功能是否正確。 編程與驗(yàn)證:用經(jīng)過(guò)仿真確認(rèn)后的編程文件通過(guò)編程器(Programmer)將設(shè)計(jì)下載到實(shí)際芯片中,最后測(cè)試芯片在系統(tǒng)中的實(shí)際運(yùn)行性能。 在設(shè)計(jì)過(guò)程中,如果出現(xiàn)錯(cuò)誤,則需重新回到設(shè)計(jì)輸入階段,改正錯(cuò)誤或調(diào)整電路后重復(fù)上述過(guò)程。</p><p> 本次設(shè)計(jì)中我利用的 EDA 工具是 ALTERA公司的MAX+PLUSⅡ 對(duì)源程序進(jìn)行選配、編譯、優(yōu)化、邏輯綜合
58、,自動(dòng)地把VHDL描述轉(zhuǎn)變器件圖,并進(jìn)而完成電路分析、自動(dòng)布局布線(xiàn)、驗(yàn)證、糾錯(cuò)、仿真各種測(cè)試工作。在下一章將介紹數(shù)字秒表的系統(tǒng)仿真。</p><p> 第五章 數(shù)字秒表的系統(tǒng)設(shè)計(jì)及仿真</p><p><b> 5.1 系統(tǒng)設(shè)計(jì)</b></p><p> 5.1.1 設(shè)計(jì)思想</p><p> 利用VHDL
59、語(yǔ)言設(shè)計(jì)基于計(jì)算機(jī)電路中時(shí)鐘脈沖原理的數(shù)字秒表。其設(shè)計(jì)思路為:通過(guò)分頻器將晶振所提供的信號(hào)分頻成0.01S脈沖作為計(jì)時(shí)信號(hào),經(jīng)計(jì)數(shù)器累加計(jì)數(shù),形成六十進(jìn)制的計(jì)數(shù)器和一百進(jìn)制的計(jì)數(shù)器。經(jīng)譯碼器譯碼后,分位輸出給六個(gè)7段LED數(shù)碼管顯示。 設(shè)計(jì)采用六位LED數(shù)碼管顯示分、秒,0.1s,0.01s計(jì)時(shí)方式。使用按鍵開(kāi)關(guān)可實(shí)現(xiàn)開(kāi)始/結(jié)束計(jì)時(shí)操作,及復(fù)位清零操作和計(jì)時(shí)長(zhǎng)度模式選擇。</p><p> 5.1.2
60、 設(shè)計(jì)要求(秒表的功能描述)</p><p> 要求設(shè)置復(fù)位開(kāi)關(guān):當(dāng)按下復(fù)位開(kāi)關(guān)時(shí),秒表清零并做好計(jì)時(shí)準(zhǔn)備。在任何情況下只要按下復(fù)位開(kāi)關(guān),秒表都要無(wú)條件地進(jìn)行復(fù)位操作,即使是在計(jì)時(shí)過(guò)程中也要無(wú)條件地進(jìn)行清零操作。</p><p> 要求設(shè)置啟/停開(kāi)關(guān):當(dāng)按下啟/停開(kāi)關(guān)后,將啟動(dòng)秒表并開(kāi)始計(jì)時(shí),當(dāng)再按一下啟/停開(kāi)關(guān)時(shí),將終止秒表的計(jì)時(shí)操作。</p><p> 要
61、求計(jì)時(shí)精確度大于0.01秒:要求設(shè)計(jì)的計(jì)時(shí)器能夠顯示分(2位)、秒(2位)、0.1秒(1位),0.01秒的時(shí)間。</p><p> 要求秒表的最長(zhǎng)計(jì)時(shí)時(shí)間為秒表計(jì)時(shí)長(zhǎng)度為59.分59.99秒,超過(guò)計(jì)時(shí)長(zhǎng)度,有溢出則報(bào)警,計(jì)時(shí)長(zhǎng)度可手動(dòng)設(shè)置[8]。</p><p> 5.1.3 秒表的面板包括</p><p> 顯示屏:由6個(gè)7段數(shù)碼管組成,用于顯示當(dāng)前時(shí)間;
62、</p><p> QT(啟/停鍵):用于開(kāi)始/結(jié)束計(jì)時(shí)操作;</p><p> MODE (模式選擇鍵):用于計(jì)時(shí)長(zhǎng)度模式選擇;</p><p> CLR(復(fù)位鍵):用于秒表計(jì)時(shí)系統(tǒng)的復(fù)位操作;</p><p> 蜂鳴器:溢出報(bào)警,則發(fā)出蜂鳴聲。</p><p> 5.2 頂層電路設(shè)計(jì)</p>
63、<p> 整個(gè)系統(tǒng)設(shè)計(jì)是采用自頂向下分析,自底向上設(shè)計(jì)。所謂自上至下的設(shè)計(jì)方法,就是從系統(tǒng)總體要求出發(fā),自上至下的地逐步將設(shè)計(jì)內(nèi)容細(xì)化,最后完成整個(gè)設(shè)計(jì)。在此將數(shù)字秒表系統(tǒng)的整體分解為各個(gè)模塊電路。本章詳細(xì)介紹了數(shù)字秒表系統(tǒng)的各個(gè)模塊的設(shè)計(jì),并對(duì)各個(gè)模塊的每一個(gè)部分進(jìn)行了分析,在后半部分還對(duì)系統(tǒng)模型進(jìn)行了訪(fǎng)真與程序調(diào)試。各模塊之間的每一個(gè)壞節(jié)都是深思熟慮而成,各自完成相應(yīng)的功能并組成一個(gè)統(tǒng)一的整體[9]。</p&g
64、t;<p> 數(shù)字秒表的頂層電路圖及時(shí)序分析采用硬件描述語(yǔ)言設(shè)計(jì)一個(gè)復(fù)雜電路系統(tǒng),運(yùn)用自頂向下的設(shè)計(jì)思想,將系統(tǒng)按功能逐層分割的層次化設(shè)計(jì)方法。在頂層設(shè)計(jì)中,要對(duì)內(nèi)部各功能塊的連接關(guān)系和對(duì)外的接口關(guān)系進(jìn)行描述,而功能塊實(shí)際的邏輯功能和具體的實(shí)現(xiàn)形式則由下一層模塊來(lái)描述。頂層電路如圖 5.1所示:</p><p> 圖5.1 頂層電路圖</p><p> 5.3 數(shù)字秒
65、表的設(shè)計(jì)原理</p><p> 本系統(tǒng)設(shè)計(jì)采用自頂向下的設(shè)計(jì)方案,系統(tǒng)的整體組裝設(shè)計(jì)原理圖如圖5.2所示:</p><p> (1)本設(shè)計(jì)可分為五個(gè)主要模塊:</p><p> ?、僬{(diào)整控制電路(主控電路模塊);</p><p> ?、阪I輸入模塊電路(含消抖電路);</p><p> ?、蹠r(shí)鐘分頻電路模塊;<
66、/p><p><b> ④計(jì)時(shí)電路模塊;</b></p><p> ⑤顯示控制電路模塊(包括溢出報(bào)警控制)。</p><p> 圖5.2 數(shù)字秒表系統(tǒng)原理</p><p> ?。?)系統(tǒng)的總體設(shè)計(jì):</p><p> 各個(gè)輸入/輸出端口的作用如下:</p><p>
67、CLK為外部時(shí)鐘信號(hào),CLR為復(fù)位信號(hào);</p><p> QT為啟/停開(kāi)關(guān),用于開(kāi)始/結(jié)束計(jì)時(shí)操作;</p><p> MODE為模式選擇鍵,用1個(gè)電平信號(hào)A進(jìn)行模式選擇;</p><p> Q是數(shù)據(jù)掃描顯示的公共七段數(shù)碼顯示驅(qū)動(dòng)端,它經(jīng)過(guò)外接的譯碼器譯碼后接數(shù)碼管的公共端COM。</p><p> SOUND用于控制蜂鳴器發(fā)聲。當(dāng)
68、SOUND=“1”時(shí),揚(yáng)聲器發(fā)出蜂鳴聲,表示計(jì)時(shí)超出計(jì)時(shí)長(zhǎng)度(溢出報(bào)警)</p><p> 5.4 各模塊的原理、程序及其仿真</p><p> 5.4.1 調(diào)整控制電路(主控電路模塊)</p><p> 為了實(shí)現(xiàn)數(shù)字秒表的各種相應(yīng)功能,主控電路對(duì)各種輸入控制信號(hào)進(jìn)行處理。作出相應(yīng)的調(diào)整,發(fā)出一系列的控制輸出信號(hào)。如對(duì)數(shù)字秒表實(shí)現(xiàn)復(fù)位操作,啟、??刂疲约?/p>
69、計(jì)時(shí)長(zhǎng)度設(shè)置模式選擇。</p><p><b> 主控電路的功能</b></p><p> ?。?)實(shí)現(xiàn)系統(tǒng)復(fù)位:</p><p> 設(shè)置一個(gè)CLR信號(hào),當(dāng)CLR信號(hào)=0時(shí),整個(gè)系統(tǒng)復(fù)位:當(dāng)CLR=1時(shí),系統(tǒng)進(jìn)行計(jì)時(shí)或模式選擇。</p><p><b> ?。?)啟/??刂疲?lt;/b></p
70、><p> 用于開(kāi)始/結(jié)束計(jì)時(shí)操作。數(shù)字秒表的啟/停是通過(guò)控制送給計(jì)數(shù)器的時(shí)鐘來(lái)實(shí)現(xiàn)的。當(dāng)按下QT鍵后,輸出端Q的狀態(tài)發(fā)生反轉(zhuǎn)。Q為“1”時(shí)。時(shí)鐘可通過(guò)與門(mén),秒表處于計(jì)時(shí)狀態(tài)。當(dāng)Q為“0”時(shí),時(shí)鐘被屏蔽,計(jì)數(shù)器得不到時(shí)鐘脈沖,停止計(jì)數(shù)。</p><p> 模式選擇功能:通過(guò)MODE鍵進(jìn)行秒表計(jì)時(shí)長(zhǎng)度設(shè)置的選擇。當(dāng)MODE=“0”時(shí)為模式0,秒表系統(tǒng)的計(jì)時(shí)長(zhǎng)度為59分59.99秒。當(dāng)MODE
71、=“1”時(shí),為模式1,秒表系統(tǒng)的計(jì)時(shí)長(zhǎng)度為59.99秒。</p><p> (3)計(jì)時(shí)模塊的作用是針對(duì)計(jì)時(shí)過(guò)程進(jìn)行控制。</p><p> 計(jì)時(shí)控制模塊可用倆個(gè)按鈕來(lái)完成秒表的啟動(dòng)、停止和復(fù)位。部分源程序與器件圖(圖5.3)及仿真圖(圖5.4)如下:</p><p> ARCHITECTURE a OF KZQ IS</p><p>
72、 PROCESS(CLK,CLR)</p><p> VARIABLE TMP:STD_LOGIC;</p><p><b> BEGIN</b></p><p> IF CLR='0' THEN TMP:='0';</p><p> ELSIF CLK'EVENT AND
73、 CLK='1' THEN</p><p> IF A='1' THEN</p><p> TMP:=NOT TMP;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p>
74、<b> Q<=TMP;</b></p><p> END PROCESS;</p><p> PROCESS(CLK,CLR)</p><p><b> BEGIN</b></p><p><b> MIN<='0';</b></p
75、><p><b> SEC<='0';</b></p><p> TSEC<='0';</p><p> ELSIF CLK'EVENT AND CLK='1' THEN
76、 </p><p> 圖5.3 主控制模塊KZQ的器件圖</p><p> 主控制模塊KZQ的波形仿真如下圖5.4所示:</p><p> 圖5.4 主控制模塊KZQ的波形仿真</p><p> 5.4.2 鍵輸入模塊電路(含消抖電路)</p><p> 在秒
77、表面板上有3個(gè)按鍵:?jiǎn)?停鍵、復(fù)位鍵及模式選擇鍵鍵。因?yàn)樵O(shè)計(jì)采用的是機(jī)械式的按鍵,由于存在機(jī)械觸動(dòng)的彈性作用,一個(gè)按鍵開(kāi)關(guān)在閉合時(shí)不會(huì)馬上穩(wěn)定地接通,在斷開(kāi)時(shí)也不會(huì)馬上斷開(kāi)。因而在閉合及斷開(kāi)按鍵的瞬間均伴隨有一連串的抖動(dòng)。抖動(dòng)時(shí)間的長(zhǎng)短由按鍵的機(jī)械特性決定,一般為5-10ms。如圖5.5所示:</p><p> 圖5.5 按鍵時(shí)的抖動(dòng)</p><p> 按鍵的閉合穩(wěn)定時(shí)間的長(zhǎng)短由操作人
78、員的按鍵動(dòng)作決定,一般為零點(diǎn)幾秒至數(shù)秒。按鍵抖動(dòng)會(huì)引起被誤讀多次。為確保FPGA對(duì)鍵的閉合僅作一次處理,必須去除按鍵抖動(dòng)。</p><p> 常在按鍵較少時(shí)可用硬件方法消除抖動(dòng),一般采用RS觸發(fā)器作為常用的消抖電路,如果按鍵較多時(shí),常用軟件消除抖動(dòng)。在EDA的設(shè)計(jì)應(yīng)用中,軟件消抖的方法即可使用RS觸發(fā)器進(jìn)行消抖,也可通過(guò)檢測(cè)按鍵按下的時(shí)間進(jìn)行消抖。</p><p> 消抖模塊的VHDL
79、部分源程序設(shè)計(jì)與器件圖(圖5.6)及仿真圖(圖5.7) 如下:</p><p> ARCHITECTURE ARC OF XDOU IS</p><p> SIGNAL CP:STD_LOGIC;</p><p> SIGNAL JSQ:INTEGER RANGE 0 TO 3;</p><p><b> BEGIN<
80、/b></p><p> PROCESS(CLK)</p><p><b> BEGIN</b></p><p> IF (CLK' EVENT AND CLK= '1' ) THEN</p><p> IF X='1' THEN</p><p&g
81、t; IF JSQ=3 THEN</p><p><b> JSQ<=JSQ;</b></p><p><b> ELSE</b></p><p> JSQ<=JSQ+1;</p><p><b> END IF;</b></p><p
82、> IF JSQ=1 THEN</p><p><b> CP<='1';</b></p><p><b> ELSE</b></p><p> CP<='0'; </p><p> END
83、IF </p><p> 圖5.6 消抖模塊的器件圖</p><p> 鍵盤(pán)消抖模塊XDOU的波形仿真如圖5.7所示:</p><p> 圖5.7 鍵盤(pán)消抖模塊XDOU的波形仿真</p><p><b> 工作原理:</b></p><p> 本模塊描述的防抖動(dòng)電路屬于計(jì)數(shù)器
84、型防抖動(dòng)電路。其工作原理是,設(shè)置一個(gè)模值為4的控制計(jì)數(shù)器,在人工按鍵KEY=‘1’時(shí),執(zhí)行加1計(jì)數(shù);KEY=‘1’時(shí),計(jì)數(shù)器進(jìn)入狀態(tài)0。計(jì)數(shù)器只在狀態(tài)2有輸出。計(jì)數(shù)器進(jìn)入狀態(tài)3,處于保持狀態(tài)??傊?,按鍵一次,計(jì)數(shù)器只有一個(gè)單脈沖輸出。</p><p><b> 防抖動(dòng)原理:</b></p><p> 按鍵KEY是產(chǎn)生抖動(dòng)的根源,按照設(shè)計(jì),只有按鍵持續(xù)時(shí)間大于3個(gè)時(shí)
85、鐘周期,計(jì)數(shù)器輸出才可能產(chǎn)生有效的正跳變,輸出一個(gè)單脈沖。由于機(jī)械開(kāi)關(guān)抖動(dòng)產(chǎn)生的毛刺寬度小于3個(gè)時(shí)鐘周期,因而毛刺作用不可能使計(jì)數(shù)器有輸出,防抖動(dòng)目的得以實(shí)現(xiàn)。</p><p> 從上圖的仿真結(jié)果可看出模塊的正確性。</p><p> 5.4.3 時(shí)鐘分頻電路模塊</p><p> 在基于EDA技術(shù)的數(shù)字電路系統(tǒng)設(shè)計(jì)中,分頻電路應(yīng)用十分廣泛。常常使用分頻電路
86、來(lái)得到數(shù)字系統(tǒng)中各種不同頻率的控制信號(hào)。所謂分頻電路,就是將一個(gè)給定的頻率較高的數(shù)字輸入信號(hào)經(jīng)過(guò)適當(dāng)處理后,產(chǎn)生一個(gè)或數(shù)個(gè)頻率較低的數(shù)字輸出信號(hào)。分頻電路本質(zhì)上是加法計(jì)數(shù)器的變種,其計(jì)數(shù)值有分頻常數(shù)N=fin/fout決定,其輸出不是一般計(jì)數(shù)器的計(jì)數(shù)結(jié)果,而是根據(jù)分頻常數(shù)對(duì)輸出信號(hào)的高,低電平控制。</p><p> 本設(shè)計(jì)需要一個(gè)計(jì)時(shí)范圍為0.01s-59分59.99秒的秒表,首先需要獲得一個(gè)比較精確的計(jì)時(shí)基
87、準(zhǔn)信號(hào),這里時(shí)周期為1/100 s的計(jì)時(shí)脈沖,所以采用一個(gè)標(biāo)準(zhǔn)時(shí)鐘信號(hào)源1KHZ經(jīng)分頻后獲得一個(gè)精確的100HZ的脈沖。 </p><p> 1KHZ —100HZ分頻器的部分源程序與器件圖(圖5.8)及仿真圖(圖5.9)如下: </p><p> ARCHITECTURE rtl OF clk_div10 IS&
88、lt;/p><p> SIGNAL clk_temp :STD_LOGIC;</p><p><b> BEGIN</b></p><p> PROCESS(clk_in)</p><p> VARIABLE counter: INTEGER RANGE 0 TO 15;</p><p>&l
89、t;b> BEGIN</b></p><p> IF (clk_in'EVENT AND clk_in='1') THEN</p><p> IF (counter = 9) THEN</p><p> Counter := 0;</p><p> Clk_out <= '1
90、';</p><p><b> ELSE </b></p><p> Counter :=counter +1 ;</p><p> Clk_out <= '0';</p><p><b> END IF;</b></p><p> 圖
91、5.8 分頻器的器件圖</p><p> 用于10分頻電路模塊clk_div10的波形仿真如圖5.9所示:</p><p> 圖5.9 分頻電路模塊clk_div10的波形仿真圖</p><p> 功能說(shuō)明:如上圖所示的10分頻電路模塊,輸入時(shí)鐘信號(hào)變?yōu)榉诸l輸出信號(hào),分頻常數(shù)N=fin/fout??芍诸l為10分頻,從仿真結(jié)果可看出模塊的正確性。</p&
92、gt;<p> 5.4.4 計(jì)時(shí)模塊</p><p> 計(jì)時(shí)模塊執(zhí)行計(jì)時(shí)功能,計(jì)時(shí)方法和計(jì)算機(jī)一樣是對(duì)標(biāo)準(zhǔn)時(shí)鐘脈沖計(jì)數(shù)。</p><p> 在本次設(shè)計(jì)中,采用異步計(jì)數(shù)器的方法,用硬件描述語(yǔ)言描述一個(gè)異步計(jì)數(shù)器,將低/高位計(jì)數(shù)器的輸出作為高/低位計(jì)數(shù)器的時(shí)鐘信號(hào),在本設(shè)計(jì)中要用到兩個(gè)60進(jìn)制計(jì)數(shù)器,和一個(gè)100進(jìn)制計(jì)數(shù)器</p><p> cn
93、t60計(jì)數(shù)模塊:是一個(gè)多用計(jì)時(shí)模塊,既可作計(jì)秒電路又可作計(jì)分電路調(diào)用。</p><p> (1)用于秒鐘計(jì)時(shí)的cnt60_1的VHDL部分源程序與器件圖(圖5.10)及仿真圖(圖5.11)如下: </p><p> ARCHITECTURE CNT60_1_ARC OF CNT60_1 IS<
94、/p><p><b> BEGIN</b></p><p> PROCESS(CLK,CLR)</p><p> VARIABLE CNT0,CNT1:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN</b></p><p>
95、; IF CLR='0' THEN</p><p> CNT0:="0000";</p><p> CNT1:="0000";</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> IF EN='1
96、' THEN</p><p> IF CNT1="0101" and cnt0= "1000"THEN</p><p> CNT0:="1001"; CO<='1';</p><p> elsif cnt0<"1001" then</p&g
97、t;<p> CNT0:=CNT0+1; </p><p> else cnt0:="0000";</p><p> IF CNT1<"0101" THEN</p><p> 圖5.10 秒鐘計(jì)時(shí)的器件圖</p><p> 程序說(shuō)明:clk為信號(hào)時(shí)鐘輸入端;</p&g
98、t;<p><b> clr為復(fù)位端;</b></p><p> co為進(jìn)位信號(hào)輸出端;</p><p> sec1:秒信號(hào)的高位輸出端;</p><p> sec0: 秒信號(hào)的低位輸出端。</p><p> 用于秒計(jì)時(shí)器CNT60_1的波形仿真如圖5.11所示:</p><p
99、> 圖5.11 用于秒計(jì)時(shí)器CNT60_1的波形仿真圖</p><p> 功能說(shuō)明:秒進(jìn)制為60進(jìn)制,高位到6會(huì)有進(jìn)位,低位為10進(jìn)制,可以證明模塊的正確性。</p><p> (2)用于分鐘計(jì)時(shí)的CNT60_2的VHDL的部分源程序與器件圖(圖5.12)及仿真圖(圖5.13)如下:</p><p> IF CLR='0' THEN&l
100、t;/p><p> CNT1:="0000";</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> IF EN='1' THEN</p><p> IF CNT1="0101" and cnt0= "
101、1000"THEN</p><p> CNT0:="1001"; CO<='1';</p><p> elsif cnt0<"1001" then</p><p> CNT0:=CNT0+1; </p><p> else cnt0:="0000&
102、quot;;</p><p> IF CNT1<"0101" THEN</p><p> cnt1:=cnt1+1; </p><p> else cnt1:="0000"; </p><p>
103、圖5.12 分鐘計(jì)時(shí)的器件圖</p><p> 程序說(shuō)明:clk為信號(hào)時(shí)鐘輸入端;</p><p><b> clr為復(fù)位端;</b></p><p> co為進(jìn)位信號(hào)輸出端;</p><p> min1:秒信號(hào)的高位輸出端;</p><p> min0: 秒信號(hào)的低位輸出端。</
104、p><p> 用于分計(jì)時(shí)器CNT60_2的波形仿真如圖5.13所示:</p><p> 圖5.13 用于分計(jì)時(shí)器CNT60_2的波形仿真圖</p><p> 功能說(shuō)明:高位為6進(jìn)制,低位為10進(jìn)制,當(dāng)min0=9的時(shí)候,min1在下一時(shí)刻會(huì)增1,可以證明模塊的正確性。</p><p> ?。?)m100:輸出值為0.01s和0.1s 。其V
105、HDL部分源程序與器件圖(圖5.14)及仿真圖(圖5.15)如下:</p><p><b> begin</b></p><p> co<='1' when (qh="1001" and ql="1001") else '0';</p><p> process
106、(clk,reset,pause)</p><p><b> begin</b></p><p> if(reset='0') then</p><p> qh<="0000";</p><p> ql<="0000";</p>&
107、lt;p> elsif(pause='0')then</p><p><b> qh<=qh;</b></p><p><b> ql<=ql;</b></p><p> elsif (clk'event and clk='1') then</p>
108、;<p> if (ql="1001") then</p><p> ql<="0000";</p><p> if (qh="1001") then</p><p> qh<="0000";</p><p> else qh&
109、lt;=qh+1;</p><p><b> end if;</b></p><p> else ql<=ql+1;</p><p> 圖5.14 毫秒計(jì)數(shù)器的器件圖</p><p> 程序說(shuō)明:clk為信號(hào)時(shí)鐘輸入端;</p><p> reset為復(fù)位端;</p>
110、<p> pause為暫停端;</p><p> co為進(jìn)位信號(hào)輸出端;</p><p> qh:毫秒信號(hào)的高位輸出端;</p><p> ql: 毫秒信號(hào)的低位輸出端。</p><p> 用于毫秒計(jì)數(shù)器m100的波形仿真如圖5.15所示:</p><p> 圖5.15 用于毫秒計(jì)數(shù)器m100的
111、波形仿真圖</p><p> 功能說(shuō)明:毫秒為100進(jìn)制,高位和地位都是10進(jìn)制,高位到10會(huì)有進(jìn)位,可以證明模塊的正確性。</p><p> 5.4.5 顯示譯碼電路模塊</p><p> 將用于顯示BCD碼數(shù)據(jù)進(jìn)行譯碼,計(jì)時(shí)電路的結(jié)果的8位BCD碼輸出端Q經(jīng)外部的譯碼電路后用于選擇對(duì)應(yīng)計(jì)時(shí)結(jié)果顯示數(shù)碼管的公共端。數(shù)碼管顯示數(shù)據(jù)分為靜態(tài)顯示和動(dòng)態(tài)顯示。所謂
112、靜態(tài)顯示,即是把數(shù)據(jù)的BCD碼顯示出來(lái),通過(guò)各自的4-7/8顯示譯碼器譯碼后,分別接到顯示譯碼器的顯示驅(qū)動(dòng)段a-g(p),而公共端COM則根據(jù)數(shù)碼管的類(lèi)型(共陰/共陽(yáng))分別接GND/VCC。動(dòng)態(tài)顯示,就是將被顯示的數(shù)據(jù)的BCD碼,按照一定的變化頻率,在不同的時(shí)刻周期性地分別送到一個(gè)數(shù)據(jù)總線(xiàn)上,再通過(guò)一個(gè)公共的4-7/8顯示譯碼后,接到多個(gè)顯示譯碼器的公共顯示驅(qū)動(dòng)段a-g(p)上,同時(shí),在不同的時(shí)刻周期性地選通對(duì)應(yīng)的數(shù)碼管的公共端COM[
113、10]。</p><p> 在本次設(shè)計(jì)中我將采用數(shù)碼管靜態(tài)顯示電路來(lái)設(shè)計(jì),其中7段數(shù)碼管顯示器由7根顯示數(shù)碼管組成,對(duì)每一碼管,用一位二進(jìn)制表示。若該數(shù)碼管的為共陰極數(shù)碼管,則該位為1時(shí),表示此數(shù)碼管發(fā)光,如為0,表示此數(shù)碼管不發(fā)光,對(duì)7個(gè)數(shù)碼管進(jìn)行編號(hào)。共陽(yáng)極數(shù)碼管則正好相反[11]。</p><p> 其顯示模塊的VHDL部分源程序與器件圖(圖5.16)及仿真圖(圖5.17)如下:
114、</p><p><b> BEGIN</b></p><p> PROCESS(D)</p><p><b> BEGIN</b></p><p><b> CASE D IS</b></p><p> WHEN"0000"
115、;=>Q<="0111111";</p><p> WHEN"0001"=>Q<="0000110";</p><p> WHEN"0010"=>Q<="1011011";</p><p> WHEN"0011&qu
116、ot;=>Q<="1001111";</p><p> WHEN"0100"=>Q<="1100110";</p><p> WHEN"0101"=>Q<="1101101";</p><p> WHEN"0110&
117、quot;=>Q<="1111101";</p><p> WHEN"0111"=>Q<="0100111";</p><p> WHEN"1000"=>Q<="1111111";</p><p> WHEN"100
118、1"=>Q<="1101111";</p><p> WHEN OTHERS=>Q<="0000000";</p><p><b> END CASE;</b></p><p> 圖5.16 顯示模塊的器件圖</p><p> 7段顯示譯碼
119、器的波形仿真如圖5.17所示:</p><p> 圖5.17 7段顯示譯碼器的波形仿真圖</p><p> 分析:D為時(shí)鐘脈沖輸入信號(hào),Q是輸出信號(hào),如圖所示:實(shí)現(xiàn)七段譯碼功能。證明模塊的正確性。</p><p> 5.4.6 溢出報(bào)警控制</p><p> 溢出報(bào)警控制信號(hào)控制:由cnt60,cnt100的CO進(jìn)位輸出信號(hào)連接在一
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢業(yè)論文-基于fpga數(shù)字時(shí)鐘的設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字秒表設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga數(shù)字基帶信號(hào)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga的des算法【精校排版】
- 畢業(yè)論文-基于fpga的uart控制器設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga的lcd12864的驅(qū)動(dòng)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-數(shù)字溫度計(jì)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-水箱缺水提示電路【精校排版】
- 基于fpga數(shù)字秒表電路的設(shè)計(jì)
- 畢業(yè)論文-基于veriloghdl的數(shù)字鐘系統(tǒng)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga的交通信號(hào)燈控制電路的設(shè)計(jì)【精校排版】
- 畢業(yè)論文-數(shù)字電容測(cè)量?jī)x設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于單片機(jī)的數(shù)字鐘設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于fpga六層電梯控制系統(tǒng)【精校排版】
- 畢業(yè)論文-基于fpga偽隨機(jī)序列與誤碼檢測(cè)【精校排版】
- 畢業(yè)論文-數(shù)字頻率計(jì)設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于labview的數(shù)字濾波器設(shè)計(jì)【精校排版】
- 畢業(yè)論文-基于proteus的數(shù)字溫度計(jì)設(shè)計(jì)與仿真【精校排版】
- 基于FPGA數(shù)字秒表電路的設(shè)計(jì)定稿.doc
- 畢業(yè)論文-基于單片機(jī)的數(shù)字溫度計(jì)的設(shè)計(jì)【精校排版】
評(píng)論
0/150
提交評(píng)論