版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 摘 要</b></p><p> 當前電子系統(tǒng)的設(shè)計正朝著速度快,容量大,體積小,質(zhì)量輕,用電省的方向發(fā)展。推動該潮流迅速發(fā)展的決定性因素就是使用了現(xiàn)代化的EDA[1]設(shè)計工具。本論文先確定了系統(tǒng)的邏輯功能,建立算法流程,選擇電路結(jié)構(gòu),然后確定并設(shè)計電路所需的數(shù)據(jù)處理以及控制模塊,在Quartus II[1]上以超高速硬件描述語言VHDL為系統(tǒng)邏輯描述方法完成
2、了數(shù)字計時器所需的設(shè)計與頂層設(shè)計,利用計算機的強大運算能力在Quartus II上對用VHDL 建模的復(fù)雜數(shù)字邏輯進行編譯,自動綜合地完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯行局布線、邏輯仿真,生成符合要求且在電路結(jié)構(gòu)上可以實現(xiàn)的數(shù)字邏輯網(wǎng)表(Netlist),根據(jù)網(wǎng)表和某種工藝的器件自動生成具體電路,然后生成該工藝條件下這種具體電路的延時模型,通過本設(shè)計對數(shù)字系統(tǒng)自動化的基本概念、基本原理、特性及實現(xiàn)方法都有了較好的了解
3、和理解,同時鍛煉了計算機應(yīng)用能力和VHDL語言的編程能力和Quartus II的使用能力,本設(shè)計圓滿完成了用VHDL語言設(shè)計1/100秒數(shù)字計時器并仿真。</p><p> 關(guān)鍵詞:電子設(shè)計自動化;超高速集成電路硬件描述語言;數(shù)字系統(tǒng)設(shè)計</p><p><b> 目錄</b></p><p><b> 第1章 緒論1<
4、;/b></p><p> 1.1 課題的研究背景1</p><p> 1.2 課題的研究目的2</p><p> 1.3 主要工作條件2</p><p> 1.4 硬件描述語言——VHDL2</p><p> 1.4.1 VHDL的簡介2</p><p> 1.4.
5、2 VHDL語言的特點3</p><p> 1.4.3 VHDL的設(shè)計流程4</p><p> 第2章 設(shè)計思想與方案論證5</p><p> 2.1 設(shè)計思想5</p><p> 2.2 設(shè)計要求(秒表的功能描述)5</p><p> 第3章 系統(tǒng)設(shè)計7</p><p&g
6、t; 3.1 頂層電路設(shè)計7</p><p> 3. 2 數(shù)字秒表的設(shè)計原理7</p><p> 3.3 分頻器模塊8</p><p> 3.4 十進制計數(shù)模塊8</p><p> 3.5 六進制計數(shù)器模塊9</p><p> 第4章 系統(tǒng)仿真10</p><p>
7、4.1 分頻器模塊仿真10</p><p> 4.1.1 分頻器模塊程序clkgen.vhd10</p><p> 4.1.2 分頻器模塊仿真波形11</p><p> 4.1.3 分頻器模塊仿真結(jié)果分析12</p><p> 4.2 十進制計數(shù)器模塊仿真12</p><p> 4.2.1 十進制計
8、數(shù)器模塊程序12</p><p> 4.2.2十進制計數(shù)器模塊仿真波形13</p><p> 4.2.3 十進制計數(shù)器模塊仿真結(jié)果分析13</p><p> 4.3 六進制計數(shù)器模塊仿真14</p><p> 4.3.1 六進制計數(shù)器模塊程序14</p><p> 4.3.2 六進制計數(shù)器模塊仿真波
9、形15</p><p> 4.3.3 六進制計數(shù)器模塊仿真結(jié)果分析15</p><p> 4.4 數(shù)字秒表頂層模塊仿真16</p><p> 4.4.1 數(shù)字秒表頂層模塊程序16</p><p> 4.4.2 數(shù)字秒表頂層模塊仿真波形17</p><p> 4.4.3 數(shù)字秒表頂層模塊仿真結(jié)果分析
10、18</p><p> 第5章 展望與結(jié)論19</p><p><b> 致 謝20</b></p><p><b> 參考文獻21</b></p><p><b> 附 錄22</b></p><p><b> 第1章
11、緒論</b></p><p> 數(shù)字秒表是日常生活中比較常見的電子產(chǎn)品,其設(shè)計也是EDA技術(shù)中最基本的設(shè)計實驗之一。當今社會是數(shù)字化的社會,是數(shù)字集成電路廣泛應(yīng)用的社會。數(shù)字集成電路本身在不斷進行更新?lián)Q代,隨著微電子技術(shù)的發(fā)展,設(shè)計與制造集成電路的任務(wù)已不完全由半導體廠商來獨立承擔。系統(tǒng)設(shè)計師更愿意自己設(shè)計專業(yè)集成電路(ASIC)芯片,而且希望設(shè)計周期盡可能短,最好在實驗室里就能設(shè)計出合適的ASIC
12、芯片并且立即投入實際應(yīng)用之中,因而出現(xiàn)了現(xiàn)場可編程器件(FPLD)?,F(xiàn)場可編程門陣列(FPGA)即屬其中應(yīng)用最廣泛的一種。超高速硬件描述語言VHDL,是對數(shù)字系統(tǒng)進行抽象的行為與功能描述到具體的內(nèi)部線路結(jié)構(gòu)描述,利用EDA工具可以在電子設(shè)計的各個階段、各個層次進行計算機模擬驗證,保證設(shè)計過程的正確性,可大大降低設(shè)計成本,縮短設(shè)計周期。本文介紹的數(shù)字秒表,利用基于VHDL的EDA設(shè)計工具,采用大規(guī)??删幊踢壿嬈骷﨔PGA,通過設(shè)計芯片來實
13、現(xiàn)系統(tǒng)功能。給出了頂層電路圖,和各模塊的設(shè)計.通過編輯、編譯和器件編程,經(jīng)測試驗證,達到了預(yù)期的設(shè)計要求,顯示結(jié)果準確無誤。</p><p> 1.1 課題的研究背景</p><p> 在科技高度發(fā)展的今天,集成電路和計算機應(yīng)用得到了高速發(fā)展。尤其是計算機應(yīng)用的發(fā)展。它在人們?nèi)粘I钜阎饾u嶄露頭角。大多數(shù)電子產(chǎn)品多是由計算機電路組成,如:手機、mp3等。而且將來的不久他們的身影將會更頻
14、繁的出現(xiàn)在我們身邊。各種家用電器多會實現(xiàn)微電腦技術(shù)。電腦各部分在工作時多是一時間為基準的。本文就是基于計算機電路的時鐘脈沖信號、狀態(tài)控制等原理設(shè)計出的數(shù)字秒表。秒表在很多領(lǐng)域充當一個重要的角色。在各種比賽中對秒表的精確度要求很高,尤其是一些科學實驗。他們對時間精確度達到了幾納秒級別。</p><p> 秒表作為日常生活中,特別是體育運動中應(yīng)用的特別廣泛,所以精確且方便使用的秒表就被越來越多的人所選擇.本秒表計時
15、器用于體育競賽及各種要求有較精確時的各領(lǐng)域,以往常利用中小規(guī)模集成電路實現(xiàn),但一般體積大,使用攜帶不方便。利用VHDL在FPGA或CPLD上實現(xiàn)1/100秒計時控制器,能充分發(fā)揮VHDL與可編程器件靈活、高效,集成度高的特點,基于VHDL實現(xiàn)1/100秒計時控制器具有重要的實際意義.此計時器是用一塊專用的芯片,用VHDL語言描述的。它具有開關(guān)、時鐘和顯示功能,其體積小,攜帶方便。</p><p> 1.2 課題
16、的研究目的</p><p> 本次設(shè)計的目的就是在掌握EDA實驗開發(fā)系統(tǒng)的初步使用基礎(chǔ)上,了解EDA技術(shù),對計算機系統(tǒng)中時鐘控制系統(tǒng)進一步了解,掌握狀態(tài)機工作原理,同時了解計算機時鐘脈沖是怎么產(chǎn)生和工作的。在掌握所學的計算機組成與結(jié)構(gòu)課程理論知識時。通過對數(shù)字秒表的設(shè)計,進行理論與實際的結(jié)合,提高與計算機有關(guān)設(shè)計能力,提高分析、解決計算機技術(shù)實際問題的能力。通過課程設(shè)計深入理解計算機結(jié)構(gòu)與控制實現(xiàn)的技術(shù),達到課
17、程設(shè)計的目標。</p><p> 1.3 主要工作條件</p><p> EDA是指以計算機為工作平臺,融合了應(yīng)用電子技術(shù)、計算機技術(shù)、智能化技術(shù)的最新成果而開發(fā)出的電子CAD通用軟件包,它根據(jù)硬件描述語言HDL完成的設(shè)計文件,自動完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。目前EDA主要輔助進行三個方面的設(shè)計工作
18、:IC設(shè)計、電子電路設(shè)計和PCB設(shè)計。沒有EDA技術(shù)的支持,想要完成超大規(guī)模集成電路的設(shè)計制造是不可想象的;反過來,生產(chǎn)制造技術(shù)的不斷進步又必將對EDA技術(shù)提出新的要求。</p><p> 1.4 硬件描述語言——VHDL</p><p> 1.4.1 VHDL的簡介</p><p> VHDL語言是一種用于電路設(shè)計的高級語言。它在80年代的后期出現(xiàn)。最初是由
19、美國國防部開發(fā)出來供美軍用來提高設(shè)計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設(shè)計語言 。但是,由于它在一定程度上滿足了當時的設(shè)計需求,于是他在1987年成為A I/IEEE的標準(IEEE STD 1076-1987)。1993年更進一步修訂,變得更加完備,成為A I/IEEE的A I/IEEE STD 1076-1993標準。目前,大多數(shù)的CAD廠商出品的EDA軟件都兼容了這種標準。自IEEE公布了VHDL的標準版本,IEEE-10
20、76(簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設(shè)計環(huán)境,或宣布自己的設(shè)計工具可以和VHDL接口。此后VHDL在電子設(shè)計領(lǐng)域得到了廣泛的接受,并逐步取代了原有的非標準的硬件描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統(tǒng)描述能力上擴展VHDL的內(nèi)容,公布了新版本的VHDL,即IEEE標準的1076-1993版本,(簡稱93版)?,F(xiàn)在,VHDL和Verilog作為IEEE的工業(yè)標準硬件描述語言,又得到
21、眾多EDA公司的支持,在電子工程領(lǐng)域,已成為事</p><p> 1.4.2 VHDL語言的特點</p><p> VHDL的程序結(jié)構(gòu)特點是將一項工程設(shè)計,關(guān)于用VHDL和原理圖輸入進行CPLD/FPGA設(shè)計的粗略比較:在設(shè)計中,如果采用原理圖輸入的設(shè)計方式是比較直觀的。你要設(shè)計的是什么,你就直接從庫中調(diào)出來用就行了。這樣比較符合人們的習慣。在對一個設(shè)計實體定義了外部界面后,一旦其內(nèi)部
22、開發(fā)完成后,其他的設(shè)計就可以直接調(diào)用這個實體。這種將設(shè)計實體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計的基本點。應(yīng)用VHDL進行工程設(shè)計的優(yōu)點是多方面的。</p><p> (1) 與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統(tǒng)設(shè)計領(lǐng)域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結(jié)構(gòu),從邏輯行為上描述和設(shè)計大規(guī)模電子系統(tǒng)的重要保證。</p><p>
23、 (2) VHDL豐富的仿真語句和庫函數(shù),使得在任何大系統(tǒng)的設(shè)計早期就能查驗設(shè)計系統(tǒng)的功能可行性,隨時可對設(shè)計進行仿真模擬。</p><p> (3) VHDL語句的行為描述能力和程序結(jié)構(gòu)決定了他具有支持大規(guī)模設(shè)計的分解和已有設(shè)計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現(xiàn)。</p><p> (4) 對于用VHDL完成的一個確定的
24、設(shè)計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述設(shè)計轉(zhuǎn)變成門級網(wǎng)表。</p><p> (5) VHDL對設(shè)計的描述具有相對獨立性,設(shè)計者可以不懂硬件的結(jié)構(gòu),也不必管理最終設(shè)計實現(xiàn)的目標器件是什么,而進行獨立的設(shè)計。</p><p> 1.4.3 VHDL的設(shè)計流程</p><p> 它主要包括以下幾個步驟:</p><p
25、><b> (1) 文本編輯:</b></p><p> 用任何文本編輯器都可以進行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件,Verilog文件保存為.v文件</p><p><b> (2) 功能仿真:</b></p><p> 將文件調(diào)入HDL仿真軟件進行功能仿真,檢查邏輯功能是
26、否正確(也叫前仿真,對簡單的設(shè)計可以跳過這一步,只在布線完成以后,進行時序仿真)</p><p><b> (3) 時序仿真:</b></p><p> 需要利用在布局布線中獲得的精確參數(shù),用仿真軟件驗證電路的時序。(也叫后仿真) 通常以上過程可以都在PLD/FPGA廠家提供的開發(fā)工具。</p><p><b> (4) 器件編
27、程</b></p><p> 第2章 設(shè)計思想與方案論證</p><p> 實現(xiàn)數(shù)字秒表的方法有多種,可以用單片機作為控制芯片,也可以用FPGA作為控制芯片。本章說明了采用EDA技術(shù)用VHDL語言實現(xiàn)硬件電路,用FPGA作為控制芯片實現(xiàn)數(shù)字秒表的方案。</p><p><b> 2.1 設(shè)計思想</b></p>
28、<p> 基于FPGA的數(shù)字秒表的設(shè)計</p><p> 其設(shè)計思路為:通過分頻器將晶振所提供的信號分頻成0.01S脈沖作為計時信號,經(jīng)十進制與六進制計數(shù)器累加計數(shù)。使用按鍵開關(guān)可實現(xiàn)開始/結(jié)束計時操作以及復(fù)位清零操作的操作。</p><p> 2.2 設(shè)計要求(秒表的功能描述) </p><p> (1)要求設(shè)置復(fù)位開關(guān)。當按下復(fù)位開關(guān)時,秒表
29、清零并做好計時準備。在任何情況下只要按下復(fù)位開關(guān),秒表都要無條件地進行復(fù)位操作,即使是在計時過程中也要無條件地進行清零操作。</p><p> ?。?)要求設(shè)置啟/停開關(guān)。當按下啟/停開關(guān)后,將啟動秒表并開始計時,當再按一下啟/停開關(guān)時,將終止秒表的計時操作。</p><p> ?。?)要求計時精確度大于0.01秒。要求設(shè)計的計時器能夠顯示秒(2位)、0.1秒(1位),0.01秒的時間。&
30、lt;/p><p> ?。?)要求秒表的最長計時時間為秒表計時長度為59.99秒.</p><p><b> 第3章 系統(tǒng)設(shè)計</b></p><p> 整個系統(tǒng)設(shè)計是采用自頂向下分析,自底向上設(shè)計。將數(shù)字秒表系統(tǒng)的整體分解為各個模塊電路。本章詳細介紹了數(shù)字秒表系統(tǒng)的各個模塊的設(shè)計,并對各個模塊的每一個部分進行了分析,在第五章對系統(tǒng)模型進行了
31、訪真與程序調(diào)試。各模塊之間的每一個壞節(jié)都是深思熟慮而成,各自完成相應(yīng)的功能并組成一個統(tǒng)一的整體。</p><p> 3.1 頂層電路設(shè)計</p><p> 數(shù)字秒表設(shè)計整體運用自頂向下的設(shè)計思想,將系統(tǒng)按功能逐層分割的層次化設(shè)計方法。在頂層設(shè)計中,要對內(nèi)部各功能塊的連接關(guān)系和對外的接口關(guān)系進行描述,而功能塊實際的邏輯功能和具體的實現(xiàn)形式則由下一層模塊來描述[1]。</p>
32、<p> 圖3.1 QUARTUS II頂層電路圖</p><p> 根據(jù)圖所示的數(shù)字秒表系統(tǒng)頂層電路圖, 按照自頂向下的設(shè)計思路, 編寫各個模塊的源程序, 最后再對各個模塊進行組合, 編寫頂層描述的源程序。</p><p> 3. 2 數(shù)字秒表的設(shè)計原理</p><p> 各個輸入/輸出端口的作用如下:</p><p>
33、 CLK為外部時鐘信號</p><p><b> CLR為復(fù)位信號</b></p><p> ENA為啟動/停止開關(guān),用于開始/結(jié)束計時操作</p><p><b> COUT為輸出信號</b></p><p><b> 內(nèi)部模塊說明:</b></p>
34、<p><b> 分頻器模塊</b></p><p><b> 十進制計數(shù)器模塊</b></p><p><b> 六進制計數(shù)器模塊</b></p><p><b> 3.3 分頻器模塊</b></p><p> 在基于EDA技術(shù)的數(shù)字
35、電路系統(tǒng)設(shè)計中,分頻電路應(yīng)用十分廣泛。常常使用分頻電路來得到數(shù)字系統(tǒng)中各種不同頻率的控制信號。所謂分頻電路,就是將一個給定的頻率較高的數(shù)字輸入信號經(jīng)過適當處理后,產(chǎn)生一個或數(shù)個頻率較低的數(shù)字輸出信號。</p><p> 本設(shè)計需要一個計時范圍為0.01s-59.99秒的秒表,首先需要獲得一個比較精確的計時基準信號,這里時周期為1/100 s的計時脈沖,采用一個時鐘信號源3MHZ經(jīng)3萬倍分頻后獲得一個精確的100
36、HZ的脈沖來作為計數(shù)器的時鐘信號NEWCLK。</p><p> 圖3.2 分頻器模塊圖</p><p> 3.4 十進制計數(shù)模塊</p><p> 十進制計數(shù)器的作用:當輸入100HZ的時鐘信號時,每個脈沖相當于是0.01秒,經(jīng)過一個十進制計數(shù)器輸出便相當于是0.1秒,經(jīng)過兩個十進制計數(shù)器輸出則為1秒,經(jīng)過三個輸出為10秒,這樣便完成了有0.01秒到10秒的
37、轉(zhuǎn)變。</p><p> 圖3.3 十進制計數(shù)器模塊圖</p><p> 3.5 六進制計數(shù)器模塊</p><p> 六進制計數(shù)器的作用:當輸出為10秒時,經(jīng)過一個六進制計數(shù)器,便可轉(zhuǎn)化為1分鐘,在經(jīng)過一個十進制計數(shù)器輸出就是10分鐘,最后經(jīng)過一個六進制計數(shù)器最終便會轉(zhuǎn)化為1小時。</p><p> 圖3.4 六進制計數(shù)器模塊圖<
38、;/p><p><b> 第4章 系統(tǒng)仿真</b></p><p> 系統(tǒng)設(shè)計完成后需要對其編譯仿真,觀看仿真波形圖來判斷設(shè)計的是否可以實現(xiàn)期望功能,F(xiàn)PGA的仿真分功能仿真和時序仿真[1]。</p><p> 功能仿真是指在一個設(shè)計中在設(shè)計實現(xiàn)前對所創(chuàng)建的邏輯進行的驗證其功能是否正確的過程。布局布線以前的仿真都稱作功能仿真,它包括綜合前仿
39、真(Pre-Synthesis Simulation)和綜合后仿真(Post-Synthesis Simulation)。綜合前仿真主要針對基于原理框圖的設(shè)計;綜合后仿真既適合原理圖設(shè)計,也適合基于HDL語言的設(shè)計,功能仿真沒有考慮進布線延時等情況,波形不存在毛刺。</p><p> 時序仿真也叫后仿真,時序仿真使用布局布線后器件給出的模塊和連線的延時信息, 在最壞的情況下對電路的行為作出實際地估價。時序仿真使
40、用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激勵也是相同的;惟一的差別是為時序仿真加載到仿真器的設(shè)計包括基于實際布局布線設(shè)計的最壞情況的布局布線延時,并且在仿真結(jié)果波形圖中,時序仿真后的信號加載了時延,而功能仿真沒有,時序仿真波形會有毛刺現(xiàn)象。</p><p> 在本次設(shè)計中我們利用的EDA工具是ALTERA公司的QUARTUSⅡ?qū)υ闯绦蜻M行編譯、選配、優(yōu)化、邏輯綜合,自動地把VHDL描述轉(zhuǎn)變成器件圖
41、,并進而完成電路分析、糾錯、驗證、自動布局布線、仿真等各種測試工作。在仿真過程中我分別對分頻器模塊、六進制計數(shù)器、十進制計數(shù)器、數(shù)字秒表頂層模塊進行波形仿真,結(jié)果符合設(shè)計要求。</p><p> 4.1 分頻器模塊仿真</p><p> 4.1.1 分頻器模塊程序clkgen.vhd </p><p> LIBRARY IEEE;</p><
42、;p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY CLKGEN IS</p><p> PORT(CLK:IN STD_LOGIC; --定義3MHZ脈沖輸入端</p><p> NEWCLK:OUT STD_LOGIC); --定義100HZ脈沖輸出端</p><p&
43、gt; END CLKGEN;</p><p> ARCHITECTURE ART OF CLKGEN IS</p><p> SIGNAL CNTER:INTEGER RANGE 0 TO 10#29999#; --暫存輸入脈沖個數(shù)</p><p><b> BEGIN</b></p><p> U1:PR
44、OCESS(CLK)</p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK='1' THEN</p><p> IF CNTER=10#29999# THEN CNTER<=0; --判斷輸入脈沖個數(shù)是否為30000</p><p>
45、 ELSE CNTER<=CNTER+1;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS U1;</p><p> U2:PROCESS(CNTER) --計數(shù)溢出信號控制</p
46、><p><b> BEGIN</b></p><p> IF CNTER=10#29999# THEN NEWCLK<='1’ --3MHZ信號變?yōu)?00HZ信號</p><p> ELSE NEWCLK<='0';</p><p><b> END IF;<
47、/b></p><p> END PROCESS U2;</p><p><b> END ART;</b></p><p> 4.1.2 分頻器模塊仿真波形</p><p> 圖4.1 分頻器電路模塊時序仿真波形</p><p> 4.1.3 分頻器模塊仿真結(jié)果分析</p&
48、gt;<p> 在結(jié)構(gòu)體的說明語句中,定義了一個頻率脈沖計數(shù)信號(CNTER),該信號的類型為整數(shù)型,計數(shù)范圍為0~29999。</p><p> 在結(jié)構(gòu)體的功能描述語句中,用兩個進程(U1和U2)來完成3MHZ轉(zhuǎn)化成100HZ的頻率描述。在U1中每次檢測到一上升沿輸入脈沖時,先通過IF語句檢測輸入信號是否為上升沿,若是上升沿,再使IF語句判斷當前計數(shù)值(CNTER)是否等于29999,如果相等
49、,則將CNTER置零,為輸出下一個100HZ的頻率做準備,否則將CNTER加1。U2中判斷CNTER是否等于29999,如果相等,將NEWCLK輸出為高電平,否則輸出為低電平。由仿真波形圖可知此模塊能正確完成分頻功能[2]。</p><p> 4.2 十進制計數(shù)器模塊仿真</p><p> 4.2.1 十進制計數(shù)器模塊程序</p><p> LIBRARY I
50、EEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CNT10 IS</p><p> PORT(CLK:IN STD_LOGIC;</p><p> CLR:
51、IN STD_LOGIC;</p><p> ENA:IN STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CARRY_OUT:OUT STD_LOGIC);</p><p> END CNT10;</p><p> ARCH
52、ITECTURE ART OF CNT10 IS</p><p> SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN </b></p><p> U1:PROCESS(CLK,CLR,ENA)</p><p><b> BEGIN&
53、lt;/b></p><p> IF CLR='1' THEN CQI<="0000";</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> IF ENA='1' THEN</p><p> IF
54、CQI="1001" THEN CQI<="0000";</p><p> ELSE CQI<=CQI+'1';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p&g
55、t;<b> END IF;</b></p><p> END PROCESS U1;</p><p> U2:PROCESS(CQI)</p><p><b> BEGIN</b></p><p> IF CQI="0000" THEN CARRY_OUT<=&
56、#39;1';</p><p> ELSE CARRY_OUT<='0';</p><p><b> END IF;</b></p><p> END PROCESS U2;</p><p><b> CQ<=CQI;</b></p><
57、;p><b> END ART;</b></p><p> 4.2.2十進制計數(shù)器模塊仿真波形</p><p> 圖4.2 十進制計數(shù)器仿真波形</p><p> 4.2.3 十進制計數(shù)器模塊仿真結(jié)果分析</p><p> 由于CQ的方向定義為OUT,在結(jié)構(gòu)體中不能對輸入脈沖進行加1計數(shù),因此在結(jié)構(gòu)體說明
58、語句中定義了一個頻率脈沖計數(shù)信號(CQI),通過CQI來進行加1控制。</p><p> 在結(jié)構(gòu)體的功能描述語句中,使用2個進程(U1和U2)來完成十進制計數(shù)器的功能描述。在U1中,先判斷清零信號(CLR)是否有效,若有效時,將CQI清零,否則檢測輸入脈沖。每次檢測到一個上升沿輸入脈沖時,同過IF語句檢測輸入信號是否為上升沿,再判斷是否允許計數(shù)(即ENA是否有效),若ENA無效,則暫停計數(shù),否則在使用IF語句判
59、斷當前計數(shù)值(CQI)是否等于“1001”(即整數(shù)9),如果相等,則將CQI清零,否則CQI加1。在U2中判斷CQI是否等于“1001”,如果相等,產(chǎn)生溢出信號(CARRY_OUT<=’1’),否則CARRY_OUT輸出為低電平(CARRY_OUT<=’0’)。由仿真波形圖可知此模塊能正確完成十進制計數(shù)功能[2]。</p><p> 4.3 六進制計數(shù)器模塊仿真</p><p&g
60、t; 4.3.1 六進制計數(shù)器模塊程序</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CNT6 IS</p><p>
61、 PORT(CLK:IN STD_LOGIC;</p><p> CLR:IN STD_LOGIC;</p><p> ENA:IN STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CARRY_OUT:OUT STD_LOGIC);</p>
62、;<p><b> END CNT6;</b></p><p> ARCHITECTURE ART OF CNT6 IS</p><p> SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN </b></p><
63、p> U1:PROCESS(CLK,CLR,ENA)</p><p><b> BEGIN </b></p><p> IF CLR='1' THEN CQI<="0000";</p><p> ELSIF CLK'EVENT AND CLK='1' THEN&
64、lt;/p><p> IF ENA='1' THEN</p><p> IF CQI="0101" THEN CQI<="0000";</p><p> ELSE CQI<=CQI+'1';</p><p><b> END IF;</b&
65、gt;</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS U1;</p><p> U2:PROCESS(CQI)</p><p><b> BEGIN</b
66、></p><p> IF CQI="0000" THEN CARRY_OUT<='1';</p><p> ELSE CARRY_OUT<='0';</p><p><b> END IF;</b></p><p> END PROCESS
67、U2;</p><p><b> CQ<=CQI;</b></p><p><b> END ART;</b></p><p> 4.3.2 六進制計數(shù)器模塊仿真波形</p><p> 圖4.3 六進制計時器仿真波形</p><p> 4.3.3 六進制計數(shù)器
68、模塊仿真結(jié)果分析</p><p> 在結(jié)構(gòu)體的功能描述語句中,使用2個進程(U1和U2)來完成六進制計數(shù)器的功能描述。在U1中,先判斷清零信號(CLR)是否有效,若有效時,將CQI清零,否則檢測輸入脈沖。每次檢測到一個上升沿輸入脈沖時,同過IF語句檢測輸入信號是否為上升沿,再判斷是否允許計數(shù)(即ENA是否有效),若ENA無效,則暫停計數(shù),否則在使用IF語句判斷當前計數(shù)值(CQI)是否等于“0101”,(即整數(shù)5
69、),如果相等,則將CQI清零,否則CQI加1。在U2中判斷CQI是否等于“0101”,如果相等,產(chǎn)生溢出信號(CARRY_OUT<=’1’),否則CARRY_OUT輸出為低電平(CARRY_OUT<=’0’)。由仿真波形圖可知此模塊能正確完成六進制計數(shù)功能[2]。</p><p> 4.4 數(shù)字秒表頂層模塊仿真</p><p> 4.4.1 數(shù)字秒表頂層模塊程序</p
70、><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY miaobiao IS</p><p> PORT(CLR:IN STD_LOGIC;</p><p> CLK:IN STD_LOGIC;</p>
71、<p> ENA:IN STD_LOGIC;</p><p> DOUT:OUT STD_LOGIC_VECTOR(23 DOWNTO 0));</p><p> END miaobiao;</p><p> ARCHITECTURE ART OF miaobiao IS</p><p> COMPONENT CLKGEN
72、</p><p> PORT(CLK:IN STD_LOGIC;</p><p> NEWCLK:OUT STD_LOGIC);</p><p> END COMPONENT;</p><p> COMPONENT CNT10</p><p> PORT(CLK,CLR,ENA:IN STD_LOGIC;&l
73、t;/p><p> CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CARRY_OUT:OUT STD_LOGIC);</p><p> END COMPONENT;</p><p> COMPONENT CNT6</p><p> PORT(CLK,CLR,ENA:I
74、N STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CARRY_OUT:OUT STD_LOGIC);</p><p> END COMPONENT;</p><p> SIGNAL NEWCLK:STD_LOGIC;</p><p
75、> SIGNAL CARRY1:STD_LOGIC;</p><p> SIGNAL CARRY2:STD_LOGIC;</p><p> SIGNAL CARRY3:STD_LOGIC;</p><p> SIGNAL CARRY4:STD_LOGIC;</p><p> SIGNAL CARRY5:STD_LOGIC;&l
76、t;/p><p><b> BEGIN</b></p><p> U0:CLKGEN PORT MAP(CLK=>CLK,NEWCLK=>NEWCLK);</p><p> U1:CNT10 PORT MAP(CLK=>NEWCLK,CLR=>CLR,ENA=>ENA,CQ=>DOUT(3 DOWNTO 0
77、),CARRY_OUT=>CARRY1);</p><p> U2:CNT10 PORT MAP(CLK=>CARRY1,CLR=>CLR,ENA=>ENA,CQ=>DOUT(7 DOWNTO 4),CARRY_OUT=>CARRY2);</p><p> U3:CNT10 PORT MAP(CLK=>CARRY2,CLR=>CLR,EN
78、A=>ENA,CQ=>DOUT(11 DOWNTO 8),CARRY_OUT=>CARRY3);</p><p> U4:CNT6 PORT MAP(CLK=>CARRY3,CLR=>CLR,ENA=>ENA,CQ=>DOUT(15 DOWNTO 12),CARRY_OUT=>CARRY4);</p><p> U5:CNT10 PORT
79、 MAP(CLK=>CARRY4,CLR=>CLR,ENA=>ENA,CQ=>DOUT(19 DOWNTO 16),CARRY_OUT=>CARRY5);</p><p> U6:CNT6 PORT MAP(CLK=>CARRY5,CLR=>CLR,ENA=>ENA,CQ=>DOUT(23 DOWNTO 20));</p><p>&
80、lt;b> END ART;</b></p><p> 4.4.2 數(shù)字秒表頂層模塊仿真波形</p><p> 圖4.4 數(shù)字秒表頂層模塊仿真波形</p><p> 4.4.3 數(shù)字秒表頂層模塊仿真結(jié)果分析</p><p> 該數(shù)字秒表能精確反映計數(shù)時間,且具有復(fù)位和計時功能,其輸入脈沖為3MHZ,最大計時范圍是1
81、小時,精度為0.01秒,秒表的度量單位有0.01秒,0.1秒,1秒,1分等檔位并且各個度量單位可以進位。上圖為開始計數(shù)前3秒輸出波形圖,可知此數(shù)字秒表功能正確[2]。</p><p> 第5章 展望與結(jié)論</p><p> 本文利用 Quartus II做為開發(fā)工具,設(shè)計了一款基于 FPGA 的數(shù)字式秒表,</p><p> 整個秒表系統(tǒng)的時鐘信號源由實驗板
82、上的3MHZ的時鐘信號經(jīng)分頻而得的100HZ的時鐘信號。在設(shè)計電路時,遵循從上到下的設(shè)計原則。首先從系統(tǒng)設(shè)計入手,在頂層進行功能劃分和結(jié)構(gòu)設(shè),頂層模塊中的每個次層模塊均可完成一個較為獨立的功能,次模塊在調(diào)試成功后可生成一個默認符號,以供上一層模塊調(diào)用,當各個所需的模塊全部調(diào)試仿真成功完畢,便將他們組裝成一個更復(fù)雜的電路,也就是頂層電路,放在一起再進行調(diào)試仿真。</p><p> 經(jīng)過幾十年的發(fā)展FPGA已由當初
83、的1200門發(fā)展成為今天的百萬門級。通過不斷更新優(yōu)化產(chǎn)品架構(gòu)和生產(chǎn)工藝,實現(xiàn)了更多的邏輯單元、更高的性能、更低的單位成本和功耗,可構(gòu)建從小型到大型的幾乎所有數(shù)字電路系統(tǒng)。目前在無線通信基礎(chǔ)設(shè)施、汽車電子、智能視頻監(jiān)控、工業(yè)自動化控制和航空航天等嵌入式應(yīng)用領(lǐng)域,市場的需求是以更低成本、更低功耗、更小尺寸處理日益復(fù)雜的功能。這些市場需求正推動著FPGA、CPU、DSP等不同技術(shù)走向融合。DSP是數(shù)字信號處理的簡稱,處理數(shù)據(jù)的能力強,比如音頻
84、視頻信號處理,F(xiàn)PGA做邏輯設(shè)計與時序約束比較多,二者當前的優(yōu)缺點十分明顯,現(xiàn)在音視頻處理,移動通信或者整個通信行業(yè)等大量信號處理的工程項目中,流行的解決方案都是FPGA+DSP,F(xiàn)PGA做邏輯控制,DSP做浮點算法,如果算法不是很占資源的,也有直接用FPGA來做的,兩大FPGA廠商最近都推出了帶DSP平臺的FPGA產(chǎn)品,以后FPGA與DSP的界限將越來越模糊,會慢慢的合二為一。</p><p><b>
85、; 致 謝</b></p><p> 這次課程設(shè)計可以圓滿的完成,要感謝學校對我的栽培,感謝**老師對我的指導,以及同學們的幫助。論文終于脫稿付印了,此刻的我思緒萬千,心情久久不能平靜。課程設(shè)計是大學最重要的任務(wù)之一,是將所學知識綜合運用,設(shè)計一個獨立的與實踐緊密聯(lián)系的系統(tǒng)。我的設(shè)計課題是 “基于VHDL的數(shù)字秒表設(shè)計”。在設(shè)計過程中,兩位老師多次認真講解設(shè)計的要求及注意事項,并就設(shè)計中的具體問題
86、提出了很好的建議和意見。我愿借此機會向兩位老師表示衷心的感謝!也向?qū)W校以及同學表示衷心的感謝! </p><p> 路漫漫其修遠兮,吾將上下而求索。我愿在未來的學習和研究過程中,以更加豐厚的成果來答謝曾經(jīng)關(guān)心、幫助和支持過我的所有老師、同學和朋友。感謝他們對我的關(guān)心、關(guān)注和支持!同窗之誼和手足之情,我將終生難忘!師生之情,血濃于水的感情將陪伴我度過一生,這將是我進步的階梯。</p><p&g
87、t;<b> 參考文獻</b></p><p> [1]潘松,黃繼業(yè).EDA技術(shù)與VHDL[M].北京:清華大學出版社,2012.</p><p> [2]陳中平,高金定等.基于Quartus II的FPGA/CPLD設(shè)計與實踐[M].北京:電子工業(yè)出版社,2010</p><p><b> 附 錄</b><
88、/p><p> 數(shù)字秒表頂層模塊程序:</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> ENTITY miaobiao IS</p><p> PORT(CLR:IN STD_LOGIC;</p><p
89、> CLK:IN STD_LOGIC;</p><p> ENA:IN STD_LOGIC;</p><p> DOUT:OUT STD_LOGIC_VECTOR(23 DOWNTO 0));</p><p> END miaobiao;</p><p> ARCHITECTURE ART OF miaobiao IS<
90、/p><p> COMPONENT CLKGEN</p><p> PORT(CLK:IN STD_LOGIC;</p><p> NEWCLK:OUT STD_LOGIC);</p><p> END COMPONENT;</p><p> COMPONENT CNT10</p><p>
91、; PORT(CLK,CLR,ENA:IN STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CARRY_OUT:OUT STD_LOGIC);</p><p> END COMPONENT;</p><p> COMPONENT CNT6</p
92、><p> PORT(CLK,CLR,ENA:IN STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CARRY_OUT:OUT STD_LOGIC);</p><p> END COMPONENT;</p><p> SIGNAL
93、 NEWCLK:STD_LOGIC;</p><p> SIGNAL CARRY1:STD_LOGIC;</p><p> SIGNAL CARRY2:STD_LOGIC;</p><p> SIGNAL CARRY3:STD_LOGIC;</p><p> SIGNAL CARRY4:STD_LOGIC;</p>&l
94、t;p> SIGNAL CARRY5:STD_LOGIC;</p><p><b> BEGIN</b></p><p> U0:CLKGEN PORT MAP(CLK=>CLK,NEWCLK=>NEWCLK);</p><p> U1:CNT10 PORT MAP(CLK=>NEWCLK,CLR=>CLR
95、,ENA=>ENA,CQ=>DOUT(3 DOWNTO 0),CARRY_OUT=>CARRY1);</p><p> U2:CNT10 PORT MAP(CLK=>CARRY1,CLR=>CLR,ENA=>ENA,CQ=>DOUT(7 DOWNTO 4),CARRY_OUT=>CARRY2);</p><p> U3:CNT10 POR
96、T MAP(CLK=>CARRY2,CLR=>CLR,ENA=>ENA,CQ=>DOUT(11 DOWNTO 8),CARRY_OUT=>CARRY3);</p><p> U4:CNT6 PORT MAP(CLK=>CARRY3,CLR=>CLR,ENA=>ENA,CQ=>DOUT(15 DOWNTO 12),CARRY_OUT=>CARRY4);&
97、lt;/p><p> U5:CNT10 PORT MAP(CLK=>CARRY4,CLR=>CLR,ENA=>ENA,CQ=>DOUT(19 DOWNTO 16),CARRY_OUT=>CARRY5);</p><p> U6:CNT6 PORT MAP(CLK=>CARRY5,CLR=>CLR,ENA=>ENA,CQ=>DOUT(23
98、 DOWNTO 20));</p><p><b> END ART;</b></p><p><b> 分頻器模塊程序:</b></p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p>
99、; ENTITY CLKGEN IS</p><p> PORT(CLK:IN STD_LOGIC;</p><p> NEWCLK:OUT STD_LOGIC);</p><p> END CLKGEN;</p><p> ARCHITECTURE ART OF CLKGEN IS</p><p> SI
100、GNAL CNTER:INTEGER RANGE 0 TO 10#29999#;</p><p><b> BEGIN</b></p><p> U1:PROCESS(CLK)</p><p><b> BEGIN</b></p><p> IF CLK'EVENT AND CLK=
101、'1' THEN</p><p> IF CNTER=10#29999# THEN CNTER<=0;</p><p> ELSE CNTER<=CNTER+1;</p><p><b> END IF;</b></p><p><b> END IF;</b>&
102、lt;/p><p> END PROCESS U1;</p><p> U2:PROCESS(CNTER)</p><p><b> BEGIN</b></p><p> IF CNTER=10#29999# THEN NEWCLK<='1';</p><p> ELS
103、E NEWCLK<='0';</p><p><b> END IF;</b></p><p> END PROCESS U2;</p><p><b> END ART;</b></p><p> 六進制計數(shù)器模塊程序:</p><p> L
104、IBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p> ENTITY CNT6 IS</p><p> PORT(CLK:IN STD_LOGIC;</p><p>
105、; CLR:IN STD_LOGIC;</p><p> ENA:IN STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p> CARRY_OUT:OUT STD_LOGIC);</p><p><b> END CNT6;</b>&l
106、t;/p><p> ARCHITECTURE ART OF CNT6 IS</p><p> SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);</p><p><b> BEGIN </b></p><p> U1:PROCESS(CLK,CLR,ENA)</p>&l
107、t;p><b> BEGIN</b></p><p> IF CLR='1' THEN CQI<="0000";</p><p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> IF ENA='1' THEN&l
108、t;/p><p> IF CQI="0101" THEN CQI<="0000";</p><p> ELSE CQI<=CQI+'1';</p><p><b> END IF;</b></p><p><b> END IF;</
109、b></p><p><b> END IF;</b></p><p> END PROCESS U1;</p><p> U2:PROCESS(CQI)</p><p><b> BEGIN</b></p><p> IF CQI="0000&qu
110、ot; THEN CARRY_OUT<='1';</p><p> ELSE CARRY_OUT<='0';</p><p><b> END IF;</b></p><p> END PROCESS U2;</p><p><b> CQ<=CQI;&
111、lt;/b></p><p><b> END ART;</b></p><p> 十進制計數(shù)器模塊程序:</p><p> LIBRARY IEEE;</p><p> USE IEEE.STD_LOGIC_1164.ALL;</p><p> USE IEEE.STD_LOGI
112、C_UNSIGNED.ALL;</p><p> ENTITY CNT10 IS</p><p> PORT(CLK:IN STD_LOGIC;</p><p> CLR:IN STD_LOGIC;</p><p> ENA:IN STD_LOGIC;</p><p> CQ:OUT STD_LOGIC_VE
113、CTOR(3 DOWNTO 0);</p><p> CARRY_OUT:OUT STD_LOGIC);</p><p> END CNT10;</p><p> ARCHITECTURE ART OF CNT10 IS</p><p> SIGNAL CQI:STD_LOGIC_VECTOR(3 DOWNTO 0);</p&g
114、t;<p><b> BEGIN </b></p><p> U1:PROCESS(CLK,CLR,ENA)</p><p><b> BEGIN</b></p><p> IF CLR='1' THEN CQI<="0000";</p>&l
115、t;p> ELSIF CLK'EVENT AND CLK='1' THEN</p><p> IF ENA='1' THEN</p><p> IF CQI="1001" THEN CQI<="0000";</p><p> ELSE CQI<=CQI+'
116、;1';</p><p><b> END IF;</b></p><p><b> END IF;</b></p><p><b> END IF;</b></p><p> END PROCESS U1;</p><p> U2:P
117、ROCESS(CQI)</p><p><b> BEGIN</b></p><p> IF CQI="0000" THEN CARRY_OUT<='1';</p><p> ELSE CARRY_OUT<='0';</p><p><b>
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字秒表課程設(shè)計
- 數(shù)字秒表課程設(shè)計
- 數(shù)字秒表課程設(shè)計
- 課程設(shè)計-- 數(shù)字秒表
- 課程設(shè)計--數(shù)字秒表設(shè)計
- 課程設(shè)計---數(shù)字秒表設(shè)計
- 數(shù)字秒表課程設(shè)計報告
- 簡易數(shù)字秒表課程設(shè)計
- 微機課程設(shè)計--數(shù)字秒表
- 數(shù)字秒表課程設(shè)計1
- eda數(shù)字秒表課程設(shè)計
- eda課程設(shè)計--數(shù)字秒表設(shè)計
- 數(shù)字電子課程設(shè)計--秒表
- 數(shù)字秒表課程設(shè)計 (2)
- 數(shù)字秒表課程設(shè)計報告
- eda課程設(shè)計---數(shù)字秒表
- 數(shù)字秒表課程設(shè)計報告
- 簡易數(shù)字秒表課程設(shè)計
- 課程設(shè)計報告---數(shù)字秒表設(shè)計
- eda課程設(shè)計--數(shù)字秒表設(shè)計
評論
0/150
提交評論