數字秒表課程設計_第1頁
已閱讀1頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  摘 要</b></p><p>  當前電子系統的設計正朝著速度快,容量大,體積小,質量輕,用電省的方向發(fā)展。推動該潮流迅速發(fā)展的決定性因素就是使用了現代化的EDA[1]設計工具。本論文先確定了系統的邏輯功能,建立算法流程,選擇電路結構,然后確定并設計電路所需的數據處理以及控制模塊,在Quartus II[1]上以超高速硬件描述語言VHDL為系統邏輯描述方法完成

2、了數字計時器所需的設計與頂層設計,利用計算機的強大運算能力在Quartus II上對用VHDL 建模的復雜數字邏輯進行編譯,自動綜合地完成邏輯編譯、邏輯化簡、邏輯分割、邏輯綜合及優(yōu)化、邏輯行局布線、邏輯仿真,生成符合要求且在電路結構上可以實現的數字邏輯網表(Netlist),根據網表和某種工藝的器件自動生成具體電路,然后生成該工藝條件下這種具體電路的延時模型,通過本設計對數字系統自動化的基本概念、基本原理、特性及實現方法都有了較好的了解

3、和理解,同時鍛煉了計算機應用能力和VHDL語言的編程能力和Quartus II的使用能力,本設計圓滿完成了用VHDL語言設計1/100秒數字計時器并仿真。</p><p>  關鍵詞:電子設計自動化;超高速集成電路硬件描述語言;數字系統設計</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的設計流程4</p><p>  第2章 設計思想與方案論證5</p><p>  2.1 設計思想5</p><p>  2.2 設計要求(秒表的功能描述)5</p><p>  第3章 系統設計7</p><p&g

6、t;  3.1 頂層電路設計7</p><p>  3. 2 數字秒表的設計原理7</p><p>  3.3 分頻器模塊8</p><p>  3.4 十進制計數模塊8</p><p>  3.5 六進制計數器模塊9</p><p>  第4章 系統仿真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 分頻器模塊仿真結果分析12</p><p>  4.2 十進制計數器模塊仿真12</p><p>  4.2.1 十進制計

8、數器模塊程序12</p><p>  4.2.2十進制計數器模塊仿真波形13</p><p>  4.2.3 十進制計數器模塊仿真結果分析13</p><p>  4.3 六進制計數器模塊仿真14</p><p>  4.3.1 六進制計數器模塊程序14</p><p>  4.3.2 六進制計數器模塊仿真波

9、形15</p><p>  4.3.3 六進制計數器模塊仿真結果分析15</p><p>  4.4 數字秒表頂層模塊仿真16</p><p>  4.4.1 數字秒表頂層模塊程序16</p><p>  4.4.2 數字秒表頂層模塊仿真波形17</p><p>  4.4.3 數字秒表頂層模塊仿真結果分析

10、18</p><p>  第5章 展望與結論19</p><p><b>  致 謝20</b></p><p><b>  參考文獻21</b></p><p><b>  附 錄22</b></p><p><b>  第1章

11、緒論</b></p><p>  數字秒表是日常生活中比較常見的電子產品,其設計也是EDA技術中最基本的設計實驗之一。當今社會是數字化的社會,是數字集成電路廣泛應用的社會。數字集成電路本身在不斷進行更新換代,隨著微電子技術的發(fā)展,設計與制造集成電路的任務已不完全由半導體廠商來獨立承擔。系統設計師更愿意自己設計專業(yè)集成電路(ASIC)芯片,而且希望設計周期盡可能短,最好在實驗室里就能設計出合適的ASIC

12、芯片并且立即投入實際應用之中,因而出現了現場可編程器件(FPLD)?,F場可編程門陣列(FPGA)即屬其中應用最廣泛的一種。超高速硬件描述語言VHDL,是對數字系統進行抽象的行為與功能描述到具體的內部線路結構描述,利用EDA工具可以在電子設計的各個階段、各個層次進行計算機模擬驗證,保證設計過程的正確性,可大大降低設計成本,縮短設計周期。本文介紹的數字秒表,利用基于VHDL的EDA設計工具,采用大規(guī)模可編程邏輯器件FPGA,通過設計芯片來實

13、現系統功能。給出了頂層電路圖,和各模塊的設計.通過編輯、編譯和器件編程,經測試驗證,達到了預期的設計要求,顯示結果準確無誤。</p><p>  1.1 課題的研究背景</p><p>  在科技高度發(fā)展的今天,集成電路和計算機應用得到了高速發(fā)展。尤其是計算機應用的發(fā)展。它在人們日常生活已逐漸嶄露頭角。大多數電子產品多是由計算機電路組成,如:手機、mp3等。而且將來的不久他們的身影將會更頻

14、繁的出現在我們身邊。各種家用電器多會實現微電腦技術。電腦各部分在工作時多是一時間為基準的。本文就是基于計算機電路的時鐘脈沖信號、狀態(tài)控制等原理設計出的數字秒表。秒表在很多領域充當一個重要的角色。在各種比賽中對秒表的精確度要求很高,尤其是一些科學實驗。他們對時間精確度達到了幾納秒級別。</p><p>  秒表作為日常生活中,特別是體育運動中應用的特別廣泛,所以精確且方便使用的秒表就被越來越多的人所選擇.本秒表計時

15、器用于體育競賽及各種要求有較精確時的各領域,以往常利用中小規(guī)模集成電路實現,但一般體積大,使用攜帶不方便。利用VHDL在FPGA或CPLD上實現1/100秒計時控制器,能充分發(fā)揮VHDL與可編程器件靈活、高效,集成度高的特點,基于VHDL實現1/100秒計時控制器具有重要的實際意義.此計時器是用一塊專用的芯片,用VHDL語言描述的。它具有開關、時鐘和顯示功能,其體積小,攜帶方便。</p><p>  1.2 課題

16、的研究目的</p><p>  本次設計的目的就是在掌握EDA實驗開發(fā)系統的初步使用基礎上,了解EDA技術,對計算機系統中時鐘控制系統進一步了解,掌握狀態(tài)機工作原理,同時了解計算機時鐘脈沖是怎么產生和工作的。在掌握所學的計算機組成與結構課程理論知識時。通過對數字秒表的設計,進行理論與實際的結合,提高與計算機有關設計能力,提高分析、解決計算機技術實際問題的能力。通過課程設計深入理解計算機結構與控制實現的技術,達到課

17、程設計的目標。</p><p>  1.3 主要工作條件</p><p>  EDA是指以計算機為工作平臺,融合了應用電子技術、計算機技術、智能化技術的最新成果而開發(fā)出的電子CAD通用軟件包,它根據硬件描述語言HDL完成的設計文件,自動完成邏輯編譯、化簡、分割、綜合、優(yōu)化、布局布線及仿真,直至完成對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。目前EDA主要輔助進行三個方面的設計工作

18、:IC設計、電子電路設計和PCB設計。沒有EDA技術的支持,想要完成超大規(guī)模集成電路的設計制造是不可想象的;反過來,生產制造技術的不斷進步又必將對EDA技術提出新的要求。</p><p>  1.4 硬件描述語言——VHDL</p><p>  1.4.1 VHDL的簡介</p><p>  VHDL語言是一種用于電路設計的高級語言。它在80年代的后期出現。最初是由

19、美國國防部開發(fā)出來供美軍用來提高設計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設計語言 。但是,由于它在一定程度上滿足了當時的設計需求,于是他在1987年成為A I/IEEE的標準(IEEE STD 1076-1987)。1993年更進一步修訂,變得更加完備,成為A I/IEEE的A I/IEEE STD 1076-1993標準。目前,大多數的CAD廠商出品的EDA軟件都兼容了這種標準。自IEEE公布了VHDL的標準版本,IEEE-10

20、76(簡稱87版)之后,各EDA公司相繼推出了自己的VHDL設計環(huán)境,或宣布自己的設計工具可以和VHDL接口。此后VHDL在電子設計領域得到了廣泛的接受,并逐步取代了原有的非標準的硬件描述語言。1993年,IEEE對VHDL進行了修訂,從更高的抽象層次和系統描述能力上擴展VHDL的內容,公布了新版本的VHDL,即IEEE標準的1076-1993版本,(簡稱93版)?,F在,VHDL和Verilog作為IEEE的工業(yè)標準硬件描述語言,又得到

21、眾多EDA公司的支持,在電子工程領域,已成為事</p><p>  1.4.2 VHDL語言的特點</p><p>  VHDL的程序結構特點是將一項工程設計,關于用VHDL和原理圖輸入進行CPLD/FPGA設計的粗略比較:在設計中,如果采用原理圖輸入的設計方式是比較直觀的。你要設計的是什么,你就直接從庫中調出來用就行了。這樣比較符合人們的習慣。在對一個設計實體定義了外部界面后,一旦其內部

22、開發(fā)完成后,其他的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統設計的基本點。應用VHDL進行工程設計的優(yōu)點是多方面的。</p><p>  (1) 與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決定了他成為系統設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規(guī)模電子系統的重要保證。</p><p> 

23、 (2) VHDL豐富的仿真語句和庫函數,使得在任何大系統的設計早期就能查驗設計系統的功能可行性,隨時可對設計進行仿真模擬。</p><p>  (3) VHDL語句的行為描述能力和程序結構決定了他具有支持大規(guī)模設計的分解和已有設計的再利用功能。符合市場需求的大規(guī)模系統高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現。</p><p>  (4) 對于用VHDL完成的一個確定的

24、設計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述設計轉變成門級網表。</p><p>  (5) VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結構,也不必管理最終設計實現的目標器件是什么,而進行獨立的設計。</p><p>  1.4.3 VHDL的設計流程</p><p>  它主要包括以下幾個步驟:</p><p

25、><b>  (1) 文本編輯:</b></p><p>  用任何文本編輯器都可以進行,也可以用專用的HDL編輯環(huán)境。通常VHDL文件保存為.vhd文件,Verilog文件保存為.v文件</p><p><b>  (2) 功能仿真:</b></p><p>  將文件調入HDL仿真軟件進行功能仿真,檢查邏輯功能是

26、否正確(也叫前仿真,對簡單的設計可以跳過這一步,只在布線完成以后,進行時序仿真)</p><p><b>  (3) 時序仿真:</b></p><p>  需要利用在布局布線中獲得的精確參數,用仿真軟件驗證電路的時序。(也叫后仿真) 通常以上過程可以都在PLD/FPGA廠家提供的開發(fā)工具。</p><p><b>  (4) 器件編

27、程</b></p><p>  第2章 設計思想與方案論證</p><p>  實現數字秒表的方法有多種,可以用單片機作為控制芯片,也可以用FPGA作為控制芯片。本章說明了采用EDA技術用VHDL語言實現硬件電路,用FPGA作為控制芯片實現數字秒表的方案。</p><p><b>  2.1 設計思想</b></p>

28、<p>  基于FPGA的數字秒表的設計</p><p>  其設計思路為:通過分頻器將晶振所提供的信號分頻成0.01S脈沖作為計時信號,經十進制與六進制計數器累加計數。使用按鍵開關可實現開始/結束計時操作以及復位清零操作的操作。</p><p>  2.2 設計要求(秒表的功能描述) </p><p> ?。?)要求設置復位開關。當按下復位開關時,秒表

29、清零并做好計時準備。在任何情況下只要按下復位開關,秒表都要無條件地進行復位操作,即使是在計時過程中也要無條件地進行清零操作。</p><p> ?。?)要求設置啟/停開關。當按下啟/停開關后,將啟動秒表并開始計時,當再按一下啟/停開關時,將終止秒表的計時操作。</p><p> ?。?)要求計時精確度大于0.01秒。要求設計的計時器能夠顯示秒(2位)、0.1秒(1位),0.01秒的時間。&

30、lt;/p><p> ?。?)要求秒表的最長計時時間為秒表計時長度為59.99秒.</p><p><b>  第3章 系統設計</b></p><p>  整個系統設計是采用自頂向下分析,自底向上設計。將數字秒表系統的整體分解為各個模塊電路。本章詳細介紹了數字秒表系統的各個模塊的設計,并對各個模塊的每一個部分進行了分析,在第五章對系統模型進行了

31、訪真與程序調試。各模塊之間的每一個壞節(jié)都是深思熟慮而成,各自完成相應的功能并組成一個統一的整體。</p><p>  3.1 頂層電路設計</p><p>  數字秒表設計整體運用自頂向下的設計思想,將系統按功能逐層分割的層次化設計方法。在頂層設計中,要對內部各功能塊的連接關系和對外的接口關系進行描述,而功能塊實際的邏輯功能和具體的實現形式則由下一層模塊來描述[1]。</p>

32、<p>  圖3.1 QUARTUS II頂層電路圖</p><p>  根據圖所示的數字秒表系統頂層電路圖, 按照自頂向下的設計思路, 編寫各個模塊的源程序, 最后再對各個模塊進行組合, 編寫頂層描述的源程序。</p><p>  3. 2 數字秒表的設計原理</p><p>  各個輸入/輸出端口的作用如下:</p><p>

33、  CLK為外部時鐘信號</p><p><b>  CLR為復位信號</b></p><p>  ENA為啟動/停止開關,用于開始/結束計時操作</p><p><b>  COUT為輸出信號</b></p><p><b>  內部模塊說明:</b></p>

34、<p><b>  分頻器模塊</b></p><p><b>  十進制計數器模塊</b></p><p><b>  六進制計數器模塊</b></p><p><b>  3.3 分頻器模塊</b></p><p>  在基于EDA技術的數字

35、電路系統設計中,分頻電路應用十分廣泛。常常使用分頻電路來得到數字系統中各種不同頻率的控制信號。所謂分頻電路,就是將一個給定的頻率較高的數字輸入信號經過適當處理后,產生一個或數個頻率較低的數字輸出信號。</p><p>  本設計需要一個計時范圍為0.01s-59.99秒的秒表,首先需要獲得一個比較精確的計時基準信號,這里時周期為1/100 s的計時脈沖,采用一個時鐘信號源3MHZ經3萬倍分頻后獲得一個精確的100

36、HZ的脈沖來作為計數器的時鐘信號NEWCLK。</p><p>  圖3.2 分頻器模塊圖</p><p>  3.4 十進制計數模塊</p><p>  十進制計數器的作用:當輸入100HZ的時鐘信號時,每個脈沖相當于是0.01秒,經過一個十進制計數器輸出便相當于是0.1秒,經過兩個十進制計數器輸出則為1秒,經過三個輸出為10秒,這樣便完成了有0.01秒到10秒的

37、轉變。</p><p>  圖3.3 十進制計數器模塊圖</p><p>  3.5 六進制計數器模塊</p><p>  六進制計數器的作用:當輸出為10秒時,經過一個六進制計數器,便可轉化為1分鐘,在經過一個十進制計數器輸出就是10分鐘,最后經過一個六進制計數器最終便會轉化為1小時。</p><p>  圖3.4 六進制計數器模塊圖<

38、;/p><p><b>  第4章 系統仿真</b></p><p>  系統設計完成后需要對其編譯仿真,觀看仿真波形圖來判斷設計的是否可以實現期望功能,FPGA的仿真分功能仿真和時序仿真[1]。</p><p>  功能仿真是指在一個設計中在設計實現前對所創(chuàng)建的邏輯進行的驗證其功能是否正確的過程。布局布線以前的仿真都稱作功能仿真,它包括綜合前仿

39、真(Pre-Synthesis Simulation)和綜合后仿真(Post-Synthesis Simulation)。綜合前仿真主要針對基于原理框圖的設計;綜合后仿真既適合原理圖設計,也適合基于HDL語言的設計,功能仿真沒有考慮進布線延時等情況,波形不存在毛刺。</p><p>  時序仿真也叫后仿真,時序仿真使用布局布線后器件給出的模塊和連線的延時信息, 在最壞的情況下對電路的行為作出實際地估價。時序仿真使

40、用的仿真器和功能仿真使用的仿真器是相同的,所需的流程和激勵也是相同的;惟一的差別是為時序仿真加載到仿真器的設計包括基于實際布局布線設計的最壞情況的布局布線延時,并且在仿真結果波形圖中,時序仿真后的信號加載了時延,而功能仿真沒有,時序仿真波形會有毛刺現象。</p><p>  在本次設計中我們利用的EDA工具是ALTERA公司的QUARTUSⅡ對源程序進行編譯、選配、優(yōu)化、邏輯綜合,自動地把VHDL描述轉變成器件圖

41、,并進而完成電路分析、糾錯、驗證、自動布局布線、仿真等各種測試工作。在仿真過程中我分別對分頻器模塊、六進制計數器、十進制計數器、數字秒表頂層模塊進行波形仿真,結果符合設計要求。</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#; --暫存輸入脈沖個數</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; --判斷輸入脈沖個數是否為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) --計數溢出信號控制</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 分頻器模塊仿真結果分析</p&

48、gt;<p>  在結構體的說明語句中,定義了一個頻率脈沖計數信號(CNTER),該信號的類型為整數型,計數范圍為0~29999。</p><p>  在結構體的功能描述語句中,用兩個進程(U1和U2)來完成3MHZ轉化成100HZ的頻率描述。在U1中每次檢測到一上升沿輸入脈沖時,先通過IF語句檢測輸入信號是否為上升沿,若是上升沿,再使IF語句判斷當前計數值(CNTER)是否等于29999,如果相等

49、,則將CNTER置零,為輸出下一個100HZ的頻率做準備,否則將CNTER加1。U2中判斷CNTER是否等于29999,如果相等,將NEWCLK輸出為高電平,否則輸出為低電平。由仿真波形圖可知此模塊能正確完成分頻功能[2]。</p><p>  4.2 十進制計數器模塊仿真</p><p>  4.2.1 十進制計數器模塊程序</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十進制計數器模塊仿真波形</p><p>  圖4.2 十進制計數器仿真波形</p><p>  4.2.3 十進制計數器模塊仿真結果分析</p><p>  由于CQ的方向定義為OUT,在結構體中不能對輸入脈沖進行加1計數,因此在結構體說明

58、語句中定義了一個頻率脈沖計數信號(CQI),通過CQI來進行加1控制。</p><p>  在結構體的功能描述語句中,使用2個進程(U1和U2)來完成十進制計數器的功能描述。在U1中,先判斷清零信號(CLR)是否有效,若有效時,將CQI清零,否則檢測輸入脈沖。每次檢測到一個上升沿輸入脈沖時,同過IF語句檢測輸入信號是否為上升沿,再判斷是否允許計數(即ENA是否有效),若ENA無效,則暫停計數,否則在使用IF語句判

59、斷當前計數值(CQI)是否等于“1001”(即整數9),如果相等,則將CQI清零,否則CQI加1。在U2中判斷CQI是否等于“1001”,如果相等,產生溢出信號(CARRY_OUT<=’1’),否則CARRY_OUT輸出為低電平(CARRY_OUT<=’0’)。由仿真波形圖可知此模塊能正確完成十進制計數功能[2]。</p><p>  4.3 六進制計數器模塊仿真</p><p&g

60、t;  4.3.1 六進制計數器模塊程序</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 六進制計數器模塊仿真波形</p><p>  圖4.3 六進制計時器仿真波形</p><p>  4.3.3 六進制計數器

68、模塊仿真結果分析</p><p>  在結構體的功能描述語句中,使用2個進程(U1和U2)來完成六進制計數器的功能描述。在U1中,先判斷清零信號(CLR)是否有效,若有效時,將CQI清零,否則檢測輸入脈沖。每次檢測到一個上升沿輸入脈沖時,同過IF語句檢測輸入信號是否為上升沿,再判斷是否允許計數(即ENA是否有效),若ENA無效,則暫停計數,否則在使用IF語句判斷當前計數值(CQI)是否等于“0101”,(即整數5

69、),如果相等,則將CQI清零,否則CQI加1。在U2中判斷CQI是否等于“0101”,如果相等,產生溢出信號(CARRY_OUT<=’1’),否則CARRY_OUT輸出為低電平(CARRY_OUT<=’0’)。由仿真波形圖可知此模塊能正確完成六進制計數功能[2]。</p><p>  4.4 數字秒表頂層模塊仿真</p><p>  4.4.1 數字秒表頂層模塊程序</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 數字秒表頂層模塊仿真波形</p><p>  圖4.4 數字秒表頂層模塊仿真波形</p><p>  4.4.3 數字秒表頂層模塊仿真結果分析</p><p>  該數字秒表能精確反映計數時間,且具有復位和計時功能,其輸入脈沖為3MHZ,最大計時范圍是1

81、小時,精度為0.01秒,秒表的度量單位有0.01秒,0.1秒,1秒,1分等檔位并且各個度量單位可以進位。上圖為開始計數前3秒輸出波形圖,可知此數字秒表功能正確[2]。</p><p>  第5章 展望與結論</p><p>  本文利用 Quartus II做為開發(fā)工具,設計了一款基于 FPGA 的數字式秒表,</p><p>  整個秒表系統的時鐘信號源由實驗板

82、上的3MHZ的時鐘信號經分頻而得的100HZ的時鐘信號。在設計電路時,遵循從上到下的設計原則。首先從系統設計入手,在頂層進行功能劃分和結構設,頂層模塊中的每個次層模塊均可完成一個較為獨立的功能,次模塊在調試成功后可生成一個默認符號,以供上一層模塊調用,當各個所需的模塊全部調試仿真成功完畢,便將他們組裝成一個更復雜的電路,也就是頂層電路,放在一起再進行調試仿真。</p><p>  經過幾十年的發(fā)展FPGA已由當初

83、的1200門發(fā)展成為今天的百萬門級。通過不斷更新優(yōu)化產品架構和生產工藝,實現了更多的邏輯單元、更高的性能、更低的單位成本和功耗,可構建從小型到大型的幾乎所有數字電路系統。目前在無線通信基礎設施、汽車電子、智能視頻監(jiān)控、工業(yè)自動化控制和航空航天等嵌入式應用領域,市場的需求是以更低成本、更低功耗、更小尺寸處理日益復雜的功能。這些市場需求正推動著FPGA、CPU、DSP等不同技術走向融合。DSP是數字信號處理的簡稱,處理數據的能力強,比如音頻

84、視頻信號處理,FPGA做邏輯設計與時序約束比較多,二者當前的優(yōu)缺點十分明顯,現在音視頻處理,移動通信或者整個通信行業(yè)等大量信號處理的工程項目中,流行的解決方案都是FPGA+DSP,FPGA做邏輯控制,DSP做浮點算法,如果算法不是很占資源的,也有直接用FPGA來做的,兩大FPGA廠商最近都推出了帶DSP平臺的FPGA產品,以后FPGA與DSP的界限將越來越模糊,會慢慢的合二為一。</p><p><b>

85、;  致 謝</b></p><p>  這次課程設計可以圓滿的完成,要感謝學校對我的栽培,感謝**老師對我的指導,以及同學們的幫助。論文終于脫稿付印了,此刻的我思緒萬千,心情久久不能平靜。課程設計是大學最重要的任務之一,是將所學知識綜合運用,設計一個獨立的與實踐緊密聯系的系統。我的設計課題是 “基于VHDL的數字秒表設計”。在設計過程中,兩位老師多次認真講解設計的要求及注意事項,并就設計中的具體問題

86、提出了很好的建議和意見。我愿借此機會向兩位老師表示衷心的感謝!也向學校以及同學表示衷心的感謝! </p><p>  路漫漫其修遠兮,吾將上下而求索。我愿在未來的學習和研究過程中,以更加豐厚的成果來答謝曾經關心、幫助和支持過我的所有老師、同學和朋友。感謝他們對我的關心、關注和支持!同窗之誼和手足之情,我將終生難忘!師生之情,血濃于水的感情將陪伴我度過一生,這將是我進步的階梯。</p><p&g

87、t;<b>  參考文獻</b></p><p>  [1]潘松,黃繼業(yè).EDA技術與VHDL[M].北京:清華大學出版社,2012.</p><p>  [2]陳中平,高金定等.基于Quartus II的FPGA/CPLD設計與實踐[M].北京:電子工業(yè)出版社,2010</p><p><b>  附 錄</b><

88、/p><p>  數字秒表頂層模塊程序:</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>  六進制計數器模塊程序:</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>  十進制計數器模塊程序:</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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論