基于vhdl頻率計畢業(yè)論文_第1頁
已閱讀1頁,還剩40頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p>  本科生畢業(yè)論文(設計)</p><p>  題 目: 基于VHDL的頻率計設計 </p><p>  專業(yè)代碼: </p><p>  作者姓名:    </p><p>  學 號:

2、 </p><p>  單 位: </p><p>  指導教師:        </p><p>  目錄 </p><p><b>  引 言1</b></p><p>  1 EDA

3、技術發(fā)展概況1</p><p>  1.1 VHDL 軟件設計簡介1</p><p>  1.2 VHDL的開發(fā)流程3</p><p>  1.3 MAX+PLUSⅡ 開發(fā)工具概述4</p><p><b>  2設計實現5</b></p><p>  2.1數字頻率計概述5</

4、p><p>  2.2數字頻率計的基本設計原理7</p><p>  2.3測頻專用模塊功能描述及VHDL程序10</p><p>  2.3.1基準脈沖信號產生模塊10</p><p>  2.3.2 測頻時序控制電路模塊13</p><p>  2.3.3計數模塊15</p><p>

5、  2.3.4鎖存器模塊18</p><p>  2.3.5七段顯示譯碼器20</p><p>  2.3.6動態(tài)掃描顯示模塊22</p><p>  2.3.7頂層文件設計25</p><p><b>  3總結27</b></p><p><b>  4致謝28</

6、b></p><p><b>  5參考文獻29</b></p><p><b>  6附錄30</b></p><p><b>  摘 要</b></p><p>  隨著計算機技術超大規(guī)模集成電路EDA(Electronics Design Automation

7、)技術的發(fā)展和可編程邏輯器件的廣泛應用,傳統(tǒng)的自下而上的數字電路設計方法、工具器件已遠遠落后于當今信息技術的發(fā)展。基于EDA技術和硬件描述語言的自上而下的設計技術正在承擔起越來越多的數字系統(tǒng)設計任務。在電子技術中,頻率是最基本的參數之一,并且與許多電參量的測量方案、測量結果都有十分密切的關系,因此頻率的測量就顯得更為重要。測量頻率的方法有多種,其中電子計數器測量頻率具有精度高、使用方便、測量迅速,以及便于實現測量過程自動化等優(yōu)點,是頻率

8、測量的重要手段之一。電子計數器測頻有兩種方式:一是直接測頻法,即在一定閘門時間內測量被測信號的脈沖個數;二是間接測頻法,如周期測頻法。直接測頻法適用于高頻信號的頻率測量,間接測頻法適用于低頻信號的頻率測量。本論文采用自上向下的設計方法,基于VHDL硬件描述語言設計了一種數字頻率計,并在Max+plusⅡ平臺上進行了仿真。</p><p>  關鍵詞:EDA;VHDL;數字頻率計;CPLD</p>&

9、lt;p><b>  Abstract</b></p><p>  With the development of computer,VHDL and EDA and the application of programmable logic devices,the traditional bottom-up design method, tools and devices have

10、been far behind the development of information technology. The top-down design method based on the EDA technology and VHDL is used to design the digital system. Be one of the most fundamental parameter in electron techno

11、logy medium frequency, parameter measurement scheme, measurement result all have very close something to do with a lot o</p><p>  Key words:EDA;VHDL;Digital Frequency Count;CPLD</p><p>  基于VHDL

12、的頻率計設計</p><p><b>  引 言</b></p><p>  頻率是電子測量中一個最為基本的參量,在信號發(fā)生器以及振蕩器、各種倍頻和分頻電路的輸出信號中,都要進行頻率的測量。作為用十進制數字顯示被測信號頻率的數字頻率計,是計算機、通訊設備、音頻視頻等科研生產領域不可缺少的電子測量儀器。與傳統(tǒng)的頻率計相比,數字頻率計具有精度高、測量范圍大、可靠性好等優(yōu)

13、點。傳統(tǒng)的數字頻率計是由中大規(guī)模集成電路構成,但這類頻率計會產生比較大的延時,測量范圍較小,精度不高,可靠性差且電路復雜。隨著集成電路技術的發(fā)展,可以將整個系統(tǒng)集成到一個塊上,實現所謂的片上系(SOC)。片上系統(tǒng)的實現將大大減小系統(tǒng)的體積,降低系統(tǒng)的成本,提高系統(tǒng)的處理速度和可靠性。隨著可編程邏輯器件(CPLD)的廣泛應用,以EDA工具為開發(fā)平臺,利用VHDL(Very High Speed Integrated Circuit Har

14、dware Description Language)工業(yè)標準硬件描述語言,采用自頂向下(Top to Down)和基于庫(Library-based的設計,設計者不但可以不必了解硬件結構設計,而且將使系統(tǒng)大大簡化。提高整體的性能和可靠性。本文用VHDL在CPLD器件上</p><p>  1 EDA 技術發(fā)展概況</p><p>  1.1 VHDL 軟件設計簡介</p>

15、<p>  VHDL全名Very High Speed Integrated Circuit Hardware Description Language ,VHDL語言是一種在80年代的后期出現用于電路設計的高級語言,最初是由美國國防部開發(fā)出來供美軍用來提高設計的可靠性和縮減開發(fā)周期的一種使用范圍較小的設計語言。VHDL翻譯成中文就是超高速集成電路硬件描述語言,主要是應用在數字電路的設計中。目前,它在中國的應用多數是用FP

16、GA/CPLD/EPLD的設計中。當然在一些實力較為雄厚的單位,它也被用來設計ASIC。 </p><p>  VHDL主要用于描述數字系統(tǒng)的結構、行為、功能和接口。除了含有許多具有硬件特征的語句外,VHDL的語言形式、描述風格以及語法是十分類似于一般的計算機高級語言。VHDL的程序結構特點是將一項工程設計,或稱設計實體(可以是一個元件,一個電路模塊或一個系統(tǒng))分成外部(或稱可視部分,及端口)和內部(或稱不可視部

17、分),既涉及實體的內部功能和算法完成部分。在對一個設計實體定義了外部界面后,一旦其內部開發(fā)完成后,其他的設計就可以直接調用這個實體。這種將設計實體分成內外部分的概念是VHDL系統(tǒng)設計的基本點。</p><p>  系統(tǒng)電路的軟件設計可采用工具軟件Maxplus II,Maxplus II 作為Altera的上一代PLD設計軟件,由于其出色的易用性而得到了廣泛的應用。目前Altera已經停止了對Maxplus II

18、 的更新支持,Quartus II 與之相比不僅僅是支持器件類型的豐富和圖形界面的改變。Altera在Quartus II 中包含了許多諸如SignalTap II、Chip Editor和RTL Viewer的設計輔助工具,集成了SOPC和HardCopy設計流程,并且繼承了Maxplus II 友好的圖形界面及簡便的使用方法。用該工具軟件所支持的語言----硬件描述語言VHDL,以文本的方式進行編程輸入。在編程時分別對控制、計數、鎖

19、存、譯碼、動態(tài)掃描等電路模塊進行VHDL文本描述, 使每個電路模塊以及器件都以文本的形式出現,然后通過編譯、波形仿真、調試來完善每個器件的功能。單個器件制作完成后,然后將它們生成庫文件,并產生相應的符號,最后用語言將各個已生成庫文件的器件的各個端口連接在一起,從而形成了系統(tǒng)主電路的軟件結構。在連接器件時,也可以采用圖形輸入方式,即在圖形輸入界面中調出先制作</p><p><b>  VHDL語言優(yōu)勢:

20、</b></p><p> ?。?)與其他的硬件描述語言相比,VHDL具有更強的行為描述能力,從而決 </p><p>  定了他成為系統(tǒng)設計領域最佳的硬件描述語言。強大的行為描述能力是避開具體的器件結構,從邏輯行為上描述和設計大規(guī)模電子系統(tǒng)的重要保證。 </p><p> ?。?)VHDL豐富的仿真語句和庫函數,使得在任何大系統(tǒng)的設計早期就能查驗設計

21、系統(tǒng)的功能可行性,隨時可對設計進行仿真模擬。 </p><p>  (3)VHDL語句的行為描述能力和程序結構決定了他具有支持大規(guī)模設計的分解和已有設計的再利用功能。符合市場需求的大規(guī)模系統(tǒng)高效,高速的完成必須有多人甚至多個代發(fā)組共同并行工作才能實現。 </p><p>  (4)對于用VHDL完成的一個確定的設計,可以利用EDA工具進行邏輯綜合和優(yōu)化,并自動的把VHDL描述設計轉變成門級

22、網表。 </p><p>  (5)VHDL對設計的描述具有相對獨立性,設計者可以不懂硬件的結構,也不必管理最終設計實現的目標器件是什么,而進行獨立的設計。</p><p>  1.2 VHDL的開發(fā)流程</p><p>  VHDL作為一種標準化的硬件描述語言,在對硬件電路進行描述的過程中應該遵循一定的流程,主要包括以下幾步: </p><p

23、>  ①在進行硬件電路系統(tǒng)設計之前,首先作出總體設計方案;然后給出相應的硬件電路系統(tǒng)設計指標;最后將總體方案中的各個部分電路設計任務及設計要求給相應的設計部門。 </p><p> ?、?具體電路功能。接受相應的電路設計任務后,首先要對電路的設計任務和設計要求進行具體分析,確定設計電路所要實現的具體功能。 </p><p> ?、?劃分模塊、編寫程序。利用VHDL設計硬件電路通常采用

24、自頂向下的設計方法。這種設計方法的總體思路是:首先確定頂層模塊并進行頂層模塊的設計;然后將頂層模塊中的邏輯功能劃分為不同的功能模塊,再進行功能模塊的詳細設計。 </p><p> ?、?VHDL程序模擬。在設計過程中,往往先采用模擬器(或稱為仿真器)對VHDL程序進行模擬(或稱為仿真)。這樣做的目的是可以在設計的早期發(fā)現電路設計上的缺陷和錯誤,從而節(jié)省電路設計的時間,縮短開發(fā)周期。 </p><

25、;p> ?、?綜合、優(yōu)化和布局布線。綜合是將電路設計的VHDL描述轉換成底層電路表示;優(yōu)化是將電路設計的時延縮到最小和有效利用資源;布局布線是將通過綜合和優(yōu)化所得到的邏輯,安防到一個邏輯器件之中的過程。 </p><p>  ⑥ 布局布線后的程序模擬。與VHDL程序模擬不同,只是對設計的邏輯功能進行模擬, </p><p>  ⑦ 生成器件編程文件。生成器件編程文件的作用是將VHDL

26、描述經過模擬、綜合、優(yōu)化和布局布線的結果,經過一定的映射轉換成一個器件編程所用的數據文件格式。 </p><p><b>  ⑧ 進行器件編程。</b></p><p>  1.3 MAX+PLUSⅡ 開發(fā)工具概述</p><p>  MAX+PLUSⅡ(Multiple Array and Programming Logic User S

27、ystem)開發(fā)工具是Altera公司推出的一種EDA工具,具有靈活高效、使用便捷和易學易用等特點。Altera公司在推出各種CPLD的同時,也在不斷地升級相應的開發(fā)工具軟件,已從早起的第一代A+PLUS、第二代MAX+PLUS發(fā)展到第三代MAX+PLUSⅡ和第四代Quartus。使用MAX+PLUSⅡ軟件,設計者無需精通器件內部的復雜結構,只需用業(yè)已熟悉的設計輸入工具,如硬件描述語言、原理圖等進行輸入即可,MAX+PLUSⅡ就會自動將

28、設計轉換成目標文件下載到器件中去。</p><p>  MAX+PLUSⅡ開發(fā)系統(tǒng)具有以下特點: </p><p>  (1) 多平臺。MAX+PLUSⅡ軟件可以在基于PC機的操作系統(tǒng)如Windows95、</p><p>  Windows98、Windows2000、Windows NT下運行,也可以在Sun SPAC station</p>&l

29、t;p><b>  等工作站上運行。 </b></p><p> ?。?) 開放的界面。MAX+PLUSⅡ提供了與其他設計輸入、綜合和校驗工具的接口,借口符合EDIF 200/300、LPM、VHDL、Verilog-HDL等標準。目前MAX+PLUS</p><p> ?、蛩С值闹髁鞯谌紼DA工具主要有Synopsys、Viewlogic、Mentor、G

30、raphics、Cadence、OrCAD、Xilinx等公司提供的工具。 </p><p> ?。?) 模塊組合式工具軟件。MAX+PLUSⅡ具有一個完整的可編程邏輯設計環(huán)境,包括設計輸入、設計處理、設計校驗和下載編程4個模塊,設計者可以按設計流程選擇工作模塊。 </p><p> ?。?) 與結構無關。MAX+PLUSⅡ開發(fā)系統(tǒng)的核心——Compiler(編譯器)能夠自動完成邏輯綜合和

31、優(yōu)化,它支持Altera的Classic、MAX7000、FLEX8000和FLEX10K等可編程器件系列,提供一個與結構無關的PLD開發(fā)環(huán)境。 </p><p> ?。?) 支持硬件描述語言。MAX+PLUSⅡ支持各種HDL設計輸入語言,包括VHDL、</p><p>  Verilog-HDL和Altera的硬件描述語言AHDL。 </p><p> ?。?)

32、豐富的設計庫。MAX+PLUSⅡ提供豐富的庫單元供設計者調用,其中包括一些基本的邏輯單元,74系列的器件和多種特定功能的宏功能模塊以及參數化的</p><p>  兆功能模塊。調用庫單元進行設計,可以大大減輕設計人員的工作量,縮短設計周期。</p><p>  數字頻率計是數字電路中的一個典型應用,傳統(tǒng)的數字頻率計一般由分離元件搭接而成,實際的硬件設計用到的器件較多,連線比較復雜,其測量范

33、圍、測量精度和測量速度都受到很大的限制。隨著新型可編程邏輯器件FPGA技術的發(fā)展,能夠將大量的邏輯功能集成于一個單個器件中,根據不同的需要所提供的門數可以從幾百萬到上百萬門,不但集成度遠遠超過了以往的數字頻率計,而且在基準頻率及精度等外部條件的允許下,根據不同場合的精度要求,對硬件描述語言進行一定的改動,使系統(tǒng)在精度提高的同時,用較少的器件來實現系統(tǒng)的功能,從而降低系統(tǒng)的整體造價。 此外,系統(tǒng)芯片(SOC)的發(fā)展也要求其包含頻率測量的功

34、能,所以用FPGA實現數字頻率計也是實現系統(tǒng)芯片的前提條件。</p><p>  本設計實現的數字頻率計,除被測信號以外,只需要一個標準時基信號,其余全部在一片FPGA芯片上實現,系統(tǒng)各功能模塊的實現全部采用VHDL語言編寫。本設計通過用VHDL語言實現數字頻率計,用設計實例說明如何采用層次化的設計方法實現較大的數字系統(tǒng),并強化了使用VHDL語言來實現數字系統(tǒng)設計的能力。接下來,在后續(xù)的章節(jié)會介紹硬件描語言VHD

35、L語言的詳細情況。</p><p><b>  2設計實現</b></p><p>  2.1 數字頻率計概述 </p><p>  數字頻率計是一種用十進制數字顯示被測信號頻率的數字測量儀器.它的基本功能是測量正弦信號、方波信號、尖脈沖信號及其他各種單位時間內變化的物理量。當今數字頻率計不僅是作為電壓表、計算機、天線電廣播通訊設備、工藝過程

36、自動化裝置。集成數字頻率計由于所用元件少、投資少、體積小、功耗低、且可靠性高、功能強、易于設計和研發(fā),使得它具有技術上的實用性和應用的廣泛性。不論從彩色電視機、電冰箱、DVD,還是現在家庭常用到的數字電壓表、數字萬用表等都包含有頻率計。在智能化、數字化科技發(fā)展的今天,數字頻率計已成為頻率計發(fā)展的方向,與傳統(tǒng)的頻率計相比,數字頻率計具有測量速度快、精度高、量程大、設計簡單、讀數方便等優(yōu)點。因此數字頻率計的發(fā)展對整個電子產品的發(fā)展起著舉足輕

37、重的作用。</p><p>  隨著社會和科技的發(fā)展,信息傳輸和處理的要求的提高,對頻率的測量精度也提出了更高的要求,需要更高準確度的時頻基準和更精密的測量技術。而頻率測量所能達到的精度,主要取決于作為標準頻率源的精度以及所使用的測量設備和測量方法。頻率測量技術的發(fā)展非???。一方面是追求新的更高穩(wěn)定度和準確度的新型頻標;另一方面是提供便于工業(yè),科研應用的商品化頻標,如小銫鐘,新型高穩(wěn)定度晶體振蕩器等這些工作多在計

38、量研究與工業(yè)部門進行。在頻率測量的研究上,改進,創(chuàng)造新的測頻原理,方法和儀器,以便以更高的精度,速度,自動進行測量和數據處理,并向多功能,小型化,高性價比發(fā)展是其主要的發(fā)展方向。</p><p>  目前國內外使用的測頻的方法有很多,如直接測頻法,內插法,游標法,時間—電壓變化法,多周期同步法,頻率倍增法,頻差倍增法以及相位比較法等測頻方法。直接測頻的方法較簡單,但精度不高。內插法和游標法都是采用模擬的方法,而且

39、多用于測量時間間隔,從而進行轉換得出,雖然精度提高了,但是電路設計卻很復雜。時間—電壓變化法是利用電容的充放電時間進行測量,由于經過A/D轉換,速度較慢,且抗干擾能力較弱,多周期同步法其方法是:首先由控制線路給出閘門開啟信號,此時計數器并不開始計數,而是等到被測信號的上升沿到來時,才真正開始計數。然后,兩組計數器分別對被測信號和標準信號進行計數,要等到被測信號下降沿到來時才真正結束計數,完成一次測量過程。計數器的開閉與被測信號是完全同步

40、的。為了進一步的提高精度,通常采用模擬內插法或游標法與多周期同步法結合使用,雖然精度有了進一步的提高,但始終未解決士1的計數誤差,而且這些方法設備復雜,不利于推廣。頻率誤差倍增法就是使用2個標稱值一樣的頻標信號,通過多次倍頻,混頻,濾波以及放大把2個頻標信號的頻差加以放大的方法。它的優(yōu)點是把差頻放大后,便于使用簡單的儀器來獲得測量精度的測量結</p><p>  在結合前面多種方法的基礎上做了改進,等精度測量不但

41、有很高的測量精度。且在整個頻率區(qū)域能保持恒定的測量精度。</p><p>  數字頻率計的設計手段也是多種多樣的。大體上分為利用數字電路設計,單片機設計,DSP進行設計和硬件描述語言的設計。采用數字電路的頻率計因其電路極為復雜,抗干擾能力和穩(wěn)定性較差,因此使用較少。</p><p>  采用單片機設計具有一定的優(yōu)勢,如以AT89C51單片機和MSP430F449單片機的頻率計設計,總體來看

42、,這些具有結構簡單,功能齊全,使用方便的特點。但其在電路硬件級的描述上不足,使得其更適合做控制方面,結合硬件描述進行設計,采用TMS320F2812DSP 芯片為控制單元,在無需任何門控器件控制的情況下,利用DSP2812豐富的軟件資源可以實現等精度測量。它根據每個門閘時間內高頻標準脈沖的個數與已知被測信號的個數,求的被測信號的頻率,再通過多次平均得到最終結果。但由于DSP定時器在計數時存在計數飽和的情況,因此在實現該精度測量時存在上限

43、,即當被測測信號頻率填充脈沖的頻率時,該方法就不能實現等精度了,采用硬件描述語言進行設計是目前最多也是最好的設計方法。</p><p>  近年來,我國在數字頻率計研究領域發(fā)展迅速。目前,數字頻率計的設計可以直接面向用戶需求,根據系統(tǒng)的行為和功能要求,自上至下的逐層完成相應的描述、綜合、優(yōu)化、仿真與驗證,直到生成器件。 </p><p>  2.2數字頻率計的基本設計原理</p>

44、;<p>  所謂頻率,就是周期信號在單位時間1s里變化的次數。常用的直接測頻法有兩種:一種是測周期法;一種是測頻率法。測周期法需要有基準系統(tǒng)時鐘頻率Fs,在待測信號一個周期Tx內,記錄基準系統(tǒng)時鐘頻率的周期數Ns,則被測頻率可表示為: Fx=Fs/Ns 。 </p><p>  測頻率法就是在一定時間間隔Tw(該時間定義為閘門時間)

45、內,測得這個周期性信號的重復變換次數為Nx,則其頻率可表示為: </p><p>  Fx=Nx/Tw 。 </p><p>  這兩種方法的計數值會產生正負一個字的誤差,并且被測精度與計數器中記錄的數值Nx有關,為保證測試精度,一般對于低頻信號采用測周期法,對于高頻信號采用測頻率法。</p><

46、p>  直接測頻法的一般思路是:在精確規(guī)定計數允許周期T內使能計數器,對被測信號的周期(脈沖)數進行計數,計數允許周期T的長度決定了被測信號頻率的范圍。較長的計數允許周期T對低頻信號而言有利于改善測量精度,但對于高頻信號來說,則會產生溢出;較短的計數允許周期T對低頻信號的測量,雖然精度降低,但能測量的最大頻率較高,且不會產生溢出。</p><p>  在本設計中,用一個頻率穩(wěn)定度高的頻率源作為基準時鐘,通過

47、對來臨的待測信號的上升沿在設定的計數允許周期T內計數,這個計數允許周期T就是所謂的閥門。閘門時間可以根據需要取值大于或小于1 s都可以。閘門時間越長,得到的頻率值就越準確,但閘門時間越長,則每測一次頻率的間隔就越長。閘門時間越短,測得的頻率值刷新就越快,但測得的頻率精度就受影響。通常情況下計算每秒內待測信號的脈沖個數即閘門時間為1s?;诖怂悸?,可得到數字式頻率計系統(tǒng)組成框圖如圖2.0。</p><p>  圖2

48、.0數字式頻率計的原理方框圖</p><p>  系統(tǒng)設計采用自頂向下的設計方法,包括脈沖發(fā)生器電路模塊與測頻控制信號發(fā)生器電路模塊 ,以及待測信號脈沖計數電路模塊和鎖存與譯碼顯示控制電路模塊。該數字式頻率計的精度取決于系統(tǒng)基準時鐘,實際設計可采用石英晶體振蕩器電路,以便為閘門控制電路產生精確的系統(tǒng)基準時鐘。并且分別用VHDL硬件描述語言對其編程,實現了閘門控制信號、計數電路、鎖存電路、顯示電路等。</p&

49、gt;<p>  根據數字頻率計的系統(tǒng)原理方框圖(圖2.0)設計系統(tǒng)的頂層電路圖如圖2.1所示,A模塊為基準脈沖信號產生模塊,B模塊為測頻時序控制電路模塊,C模塊為計數模塊,D模塊為40位鎖存器模塊,E模塊為七段譯碼顯示模塊,F模塊為動態(tài)掃描模塊。</p><p>  圖2.1十位十進制頻率計頂層原理圖</p><p>  2.3測頻專用模塊功能描述及VHDL程序</p

50、><p>  2.3.1基準脈沖信號產生模塊</p><p>  當系統(tǒng)正常工作時,脈沖發(fā)生器提供標準1HZ的輸入信號,經過測頻時序控制信號發(fā)生器進行信號的變換,產生計數信號。測量信號時,將被測信號送入計數模塊。先使計數模塊對輸入的矩形波進行計數,將計數結果送入鎖存器中,保證系統(tǒng)可以穩(wěn)定顯示數據,然后將計數結果送入動態(tài)掃描電路進行選擇輸出,輸出結果由顯示譯碼驅動電路將計數結果轉換成相應的能夠在

51、七段數碼顯示管上可以顯示的十進制結果,在七段數碼顯示管可以看到計數結果。</p><p>  圖2.2基準脈沖信號產生模塊</p><p>  基準脈沖信號產生模塊的工作過程為:由外部時鐘提供的10MHZ 標準脈沖信號,經分頻器兩次分頻以后得到1HZ 基準脈沖信號。在CLK10M模塊,輸入為由外部時鐘提供的CLK脈沖信號,頻率為10MHZ ,經過10000分頻,輸出為信號CLK500,頻率

52、為500HZ,該時鐘信號可作為動態(tài)掃描顯示模塊的掃描時鐘信號,時鐘信號CLK500經過CLKGEN模塊,經過250分頻,輸出為基準脈沖信號NECLK ,頻率為1HZ.</p><p>  CLK10M模塊的源程序為:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p>&

53、lt;p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CLK10M IS</p><p>  PORT( CLK :IN STD_LOGIC ; 外部時鐘提供的10MHZ標準脈沖信號</p><p>  CLK500: OUT STD_LOGIC); 10000分頻后的時

54、鐘信號</p><p>  END CLK10M;</p><p>  ARCHITECTURE ART OF CLK10M IS</p><p>  SIGNAL CNTER:STD_LOGIC_VECTOR(24 DOWNTO 0);</p><p>  SIGNAL CNTEER:STD_LOGIC;</p><p&

55、gt;<b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p>  IF (CLK'EVENT AND CLK='1') THEN</p><p>  IF CNTER=9999 THEN

56、 </p><p>  CNTER<="0000000000000000000000000"; </p><p>  CNTEER<=NOT CNTEER; </p><p>  ELSE CNTER<=CNTER+1;<

57、;/p><p><b>  END IF ;</b></p><p><b>  END IF ;</b></p><p>  END PROCESS;</p><p>  CLK500<=CNTEER;</p><p><b>  END ART;</b&

58、gt;</p><p>  CLKGEN模塊的源程序為:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY CLKGEN I

59、S</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>  SIGNAL CNTER:ST

60、D_LOGIC_VECTOR(24 DOWNTO 0);</p><p>  SIGNAL CNTEER:STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><

61、p>  IF (CLK'EVENT AND CLK='1') THEN</p><p>  IF CNTER=249 THEN</p><p>  CNTER<="0000000000000000000000000";</p><p>  CNTEER<=NOT CNTEER;</p>&l

62、t;p>  ELSE CNTER<=CNTER+1;</p><p><b>  END IF ;</b></p><p><b>  END IF ;</b></p><p>  END PROCESS;</p><p>  NEWCLK<=CNTEER;</p>

63、<p><b>  END ART;</b></p><p>  仿真后得到的波形圖如圖2.3所示:</p><p>  仿真分析:輸入信號CLK 的頻率為10MHZ,輸出信號CLK500的頻率為500HZ。圖2.3CLK500分頻模塊仿真波形</p><p>  圖2. 4CLKGEN 分頻模塊仿真波形</p><

64、;p>  仿真分析:輸入信號CLK的頻率為500HZ,輸出NEWCLK的頻率為1HZ。</p><p>  測頻時序控制電路模塊</p><p>  圖2.5測頻時序控制電路模塊框圖</p><p>  測頻時序控制電路模塊框圖如圖2.5所示,CLK為由基準脈沖信號產生模塊產生的頻率為1HZ的標準時鐘信號NEWCLK,測頻時,將頻率為1HZ的標準時鐘信號NEW

65、CLK送入控制電路輸入端CLK,輸出端包括一個計數使能輸出端TSTEN,一個是清零信號輸入端CLR_CNT和一個數據鎖存輸出端LOAD。使能信號TSTEN對頻率計中10個十進制計數器的使能端ENA進行同步控制,當TSTEN為高電平時允許計數,低電平時停止計數,停止計數期間,測頻時序控制模塊TESTCTL的鎖存信號LOAD端輸出上升沿,將計數值鎖存到REG40B鎖存器中。測頻控制模塊TESTCTL的CLR_CNT端產生一個上升沿,對計數器

66、進行清零。為下一秒的計數操作做準備。</p><p>  圖2.6測頻時序模塊波形圖</p><p>  為了實現系統(tǒng)功能,測頻時序控制模塊TESTCTL,計數器CNT10,以及鎖存器REG40B存在一個工作時序的問題,設計時需要綜合考慮。為了產生如圖2.6所示的時序圖,首先要有一個D觸發(fā)器構成二分頻器,在每次時鐘CLK上升沿到來使其值翻轉。觸發(fā)器的輸出高電平正好是1S,即測頻時序控制模塊

67、TESTCTL的TSTEN端時鐘脈沖信號的脈寬為1S,并對頻率計的每一計數器CNT10的ENA使能端進行同步控制。而LOAD信號正好是TSTEN端信號的翻轉。在計數結束后半個CLK周期,CLK與TSTEN都為低電平,這時CLR_CNT產生一個上升沿作為清零信號。</p><p>  圖2.7測頻時序模塊仿真波形 </p><p>  測頻時序控制電路模塊源程序:</p>&l

68、t;p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY TESTCTL IS</p><p>  PORT(CLK:IN STD_LOGIC;</p&

69、gt;<p>  TSTEN:OUT STD_LOGIC;</p><p>  CLR_CNT:OUT STD_LOGIC;</p><p>  LOAD: OUT STD_LOGIC);</p><p>  END TESTCTL;</p><p>  ARCHITECTURE ART OF TESTCTL IS</p&

70、gt;<p>  SIGNAL Div2CLK:STD_LOGIC;</p><p><b>  BEGIN</b></p><p>  PROCESS(CLK)</p><p><b>  BEGIN</b></p><p>  IF CLK'EVENT AND CLK=&#

71、39;1' THEN</p><p>  Div2CLK<=NOT Div2CLK;</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  PROCESS(CLK,Div2CLK)</p><p><b>  

72、BEGIN</b></p><p>  IF CLK='0'AND Div2CLK='0'THEN</p><p>  CLR_CNT<='1';</p><p>  ELSE CLR_CNT<='0';</p><p><b>  END IF

73、 ;</b></p><p>  END PROCESS;</p><p>  LOAD<=NOT Div2clk;</p><p>  TSTEN<=Div2CLK;</p><p><b>  END ART;</b></p><p><b>  2.3.3計

74、數模塊</b></p><p>  該計數模塊主要有10個十進制計數器CNT10級聯而成,具有復位和使能控制功能,主要是在閥門時間內對被測信號FSIN頻率進行計數。</p><p>  圖2.8計數模塊框圖</p><p>  測頻時, 測頻時序控制電路模塊TESTCTL的TSTEN端時鐘脈沖信號的脈寬為1S,并對頻率計的如圖2.8的計數模塊每一計數器C

75、NT10的ENA使能端進行同步控制,TSTEN高電平期間允許各個計數器工作,低電平期間停止計數并保持計數值。測頻控制模塊TESTCTL的CLR_CNT端產生一個上升沿,并對頻率計的每一計數器CNT10的CLR端進行同步控制,對計數器進行清零。當測頻時序控制模塊TESTCTL的鎖存信號LOAD端輸出上升沿時,將計數值DIN(39 DOWNTO 0)鎖存到REG40B鎖存器中.此計數器從個位開始到高位分別計數,使低位計數器CNT10的CAR

76、RY_OUT端與高位計數器CNT10的輸入時鐘位CLK相連。首個計數器CNT10的CLK端外接被測信號FSIN,該計數模塊的輸出信號為有低位到高位的10組4位二進制表示的十進制數,用來分別表示被測信號的個、十、百、千等位的數值。位數越高頻率測量的范圍也越寬,此測量范圍由計數電路內部的十進制計數器的個數來決定。</p><p>  圖2.9具有同步使能端的十進制計數器 元件符號圖</p><p

77、>  具有同步使能端的十進制計數器如圖2.9所示,CARRY_OUT 是計數器進位輸出;COUNT10(3 DOWNTO 0)是計數器的狀態(tài)輸出;CLK是時鐘輸入端;ENA是使能控制輸入端,當ENA=1時,計數器計數,當ENA=0時,計數器保持狀態(tài)不變。</p><p>  具有同步使能端的十進制計數器源程序為:</p><p>  LIBRARY IEEE;</p>

78、<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> 

79、 CLR:IN STD_LOGIC; 清零信號</p><p>  ENA:IN STD_LOGIC; 計數使能信號</p><p>  COUNT10:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); 4位計數結果輸出</p><p>  CARRY_OUT:OUT ST

80、D_LOGIC 計數進位</p><p><b>  );</b></p><p>  END CNT10;</p><p>  ARCHITECTURE ART OF CNT10 IS</p><p>  SIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0);</p>

81、;<p><b>  BEGIN </b></p><p>  PROCESS(CLK,CLR,ENA)</p><p><b>  BEGIN</b></p><p>  IF CLR='1'THEN CQI<="0000"; 計數器

82、異步清零</p><p>  ELSIF CLK'EVENT AND CLK='1'THEN</p><p>  IF ENA='1'THEN</p><p>  IF CQI="1001"THEN</p><p>  CQI<="0000";

83、 等于9,則計數器清零</p><p>  ELSE CQI<=CQI+'1';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p><b>  END IF;</b&

84、gt;</p><p>  END PROCESS;</p><p>  PROCESS(CQI)</p><p><b>  BEGIN</b></p><p>  IF CQI="1001"THEN CARRY_OUT<='1'; 進位輸出<

85、;/p><p>  ELSE CARRY_OUT<='0';</p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  COUNT10<=CQI;</p><p><b>  END ART;</b

86、></p><p>  圖2.10具有使能端的十進制計數器的仿真波形</p><p>  仿真分析:在使能端ENA高電平期間,清零信號CLR為低電平時,CNT10計數器以十進制計數,計數到9后,進位CARRY_OUT輸出為高電平,在下一個時鐘信號CLK上升沿到來時,計數器清零。在使能端ENA為低電平時,計數器不能啟動。當清零信號CLR為高電平時,計數器清零。</p>&

87、lt;p>  2.3.4 鎖存器模塊</p><p>  圖2.11鎖存器元件符號</p><p>  鎖存器模塊元件符號如圖2.11所示,主要作用為鎖存計數器的計數值。設置鎖存器可以使數據顯示穩(wěn)定可靠,不會由于周期性的清零信號而使數碼管不斷閃爍。測頻時序控制模塊TESTCTL的鎖存信號LOAD端輸出上升沿,將計數值鎖存到REG40B鎖存器中,并由REG40B的輸出端輸出。</

88、p><p>  鎖存器模塊的源程序:</p><p>  LIBRARY IEEE;</p><p>  USE IEEE.STD_LOGIC_1164.ALL;</p><p>  ENTITY REG40B IS</p><p>  PORT( LOAD :IN STD_LOGIC;

89、 鎖存信號時鐘</p><p>  DIN: IN STD_LOGIC_VECTOR(39 DOWNTO 0); 鎖存器輸入信號</p><p>  DOUT: OUT STD_LOGIC_VECTOR(39 DOWNTO 0) 鎖存器輸出信號</p><p><b>  );</b></p

90、><p>  END REG40B;</p><p>  ARCHITECTURE ART OF REG40B IS</p><p><b>  BEGIN</b></p><p>  PROCESS(LOAD,DIN)</p><p><b>  BEGIN</b></p

91、><p>  IF LOAD'EVENT AND LOAD='1' THEN DOUT<=DIN; LOAD上升沿到來后</p><p>  END IF; 鎖存</p><p>  END PROCESS;

92、 </p><p><b>  END ART;</b></p><p>  圖2.12REG40B 波形仿真</p><p>  REG40B波形仿真分析:輸入信號DIN為40位數據0000 0000 0000 0000 0000 0000 0000 0000

93、0001 1000,測頻時序控制模塊TESTCTL的鎖存信號LOAD端輸出上升沿時,將計數值鎖存到REG40B鎖存器中,輸出信號DOUT為40位數據0000 0000 0000 0000 0000 0000 0000 0000 0001 1000.</p><p>  2.3.5七段顯示譯碼器</p><p>  數字邏輯系統(tǒng)中常用的顯示器件是數碼管,半導體數碼管的外形

94、和等效電路如圖2.13所示,每一個字段都是一個發(fā)光二極管,因而也稱之為LED數碼管或LED顯示器。LED數碼管用七段發(fā)光二極管(帶小數點時為8段)來顯示數字,每一段都是一個發(fā)光二極管,一般把所有段的相同的一端相連,連接到地(共陰極接法)或者是連接到電源(共陽極接法)。共陰極LED數碼管的公共端連接到地,另一端分別接一個限流電阻后再接到控制電路的信號端,當信號端為高電平時,該段即被點亮,否則不亮。共陽極接法則相反,公共端連接到電源,另一端

95、分別接一個限流電阻后再接到控制電路的信號端,只有信號端為低電平時才被點亮,否則不亮。</p><p>  圖2.13數碼管的外形和等效電路</p><p>  在數字邏輯電路中,數碼管可以用TTL或CMOS集成電路來直接驅動,其驅動方式有BCD碼驅動和直接驅動。BCD碼驅動方式是用74LS48(共陽極七段顯示驅動器)、74LS49(共陰極七段顯示驅動器)譯碼驅動電路來控制數碼管顯示。直接驅

96、動方式是直接對數碼管相應的字段給出驅動電平,以顯示電平。 74LS48是一種實現碼型轉換的譯碼芯片。碼型轉化就是將一種編碼的輸入轉換為另一種編碼輸出。74LS48就是將BCD碼轉換成為7段數碼管顯示編碼。它是共陰極驅動芯片,也就是在輸出高電平時,該芯片具有較強的電流輸出能力。</p><p>  圖2.14七段顯示譯碼器模塊元件符號</p><p>  七段顯示譯碼模塊將鎖存器送過來的4位

97、BCD數字符譯成七段碼。頻率測量中,共要10個七段顯示譯碼模塊BCD。鎖存器模塊輸出的40位數據,從低位到高位以4位二進制數據為一組分別送入顯示譯碼模塊的輸入端口BCD(3 DOWNTO 0)。每個顯示譯碼模塊的輸出端LED(6 DOWNTO 0)從低位高位送入動態(tài)掃描模塊的10個7位數據輸入端口。</p><p>  七段顯示譯碼模塊的源程序:</p><p>  LIBRARY IEE

98、E; </p><p>  USE IEEE.STD_LOGIC_1164.ALL; </p><p>  ENTITY BCD7 IS </p><p>  PORT(BCD:IN STD_LOGIC_VECTOR(3 DOWNTO 0); 輸入的4位BCD 數字符</p><p>  LED: OUT STD_LOGIC_VECTOR(

99、6 DOWNTO 0)); 輸出七段碼</p><p><b>  END; </b></p><p>  ARCHITECTURE ART OF BCD7 IS </p><p><b>  BEGIN </b></p><p>  LED<="0111111" W

100、HEN BCD="0000" ELSE 0 LED 為共陰極</p><p>  "0000110" WHEN BCD="0001" ELSE 1</p><p>  "1011011" WHEN BCD="0010" ELSE 2<

101、/p><p>  "1001111" WHEN BCD="0011" ELSE 3</p><p>  "1100110" WHEN BCD="0100" ELSE 4</p><p>  "1101101" WHEN BCD="01

102、01" ELSE 5</p><p>  "1111101" WHEN BCD="0110" ELSE 6</p><p>  "0000111" WHEN BCD="0111" ELSE 7</p><p>  "11111

103、11" WHEN BCD="1000" ELSE 8</p><p>  "1101111" WHEN BCD="1001" ELSE 9</p><p>  "0000000"; </p><p>  END ART; </p&

104、gt;<p>  圖2.15七段顯示譯碼器模塊仿真波形</p><p>  仿真波形分析:在七段顯示譯碼器模塊仿真中,輸入信號BCD的值為 0001時,輸出信號LED 的值為0000110,當輸入信號BCD的值為1110時,輸出信號LED的值為0000000。因為該數字頻率計要求的為10進制計數,則該七段顯示譯碼器只對0到9的二進制數進行譯碼,輸入其他的二進制數時,譯碼輸出為0000000。<

105、/p><p>  2.3.6動態(tài)掃描顯示模塊</p><p>  在CPLD或FPGA驗證設計結果時,數碼管的兩種驅動方式BCD碼驅動和直接驅動兩種方法均可采用,10個LED數碼管以靜態(tài)方式顯示時,需要用到8×10條引腳線,在較為復雜的系統(tǒng)中,CPLD或FPGA的引腳資源有限的。因此對于多個LED數碼管顯示,可以采用動態(tài)掃描方式來實現LED數碼管動態(tài)顯示。實現方法是將頻率計的10個數

106、碼管的相應字段并聯起來,由CPLD或FPGA 的輸出信號a,b,c,d,e,f,g直接驅動相應字段,由片選信號S1,S2,S3,S4,S5,S6,S7,S8,S9,S10依次點亮各個LED數碼管,循環(huán)顯示,即一個數碼管顯示之后另一個數碼管馬上顯示,利用人眼的視覺的暫留特性,可以看大多個數碼管同時顯示的效果。采用掃描方式來實現LED數碼管動態(tài)顯示,控制好數碼管之間的延時相當重要。根據人眼的視覺暫留原理,LED數碼管每秒導通16次以上,人眼

107、就無法分辨LED數碼管短暫的不亮,認為是一直亮的(其實LED數碼管是以一定頻率在閃動的)。如果延時控制的不好則會出現閃動,或者亮度不夠。據經驗,延時2ms可以達到滿意的效果。另外,顯示的字符有變化時,可在延時到達后送一個低電平(共陰極數碼管</p><p>  圖2.16動態(tài)掃描顯示模塊元件圖</p><p>  動態(tài)掃描模塊如圖2.16所示,時鐘信號CLK端外接 CLK500分頻模塊輸出

108、信號CLK500,復位信號RESET端接復位信號RESET,當時鐘信號CLK上升沿到來時,片選信號S1,S2,S3,S4,S5,S6,S7,S8,S9,S10依次點亮各個LED數碼管,循環(huán)顯示,即一個數碼管顯示之后另一個數碼管馬上顯示。</p><p>  動態(tài)掃描顯示模塊的源程序為:</p><p>  LIBRARY IEEE;</p><p>  USE IE

109、EE.STD_LOGIC_1164.ALL;</p><p>  USE IEEE.STD_LOGIC_ARITH.ALL;</p><p>  USE IEEE.STD_LOGIC_UNSIGNED.ALL;</p><p>  ENTITY DYNAMIC IS</p><p>  PORT(CLK:IN STD_LOGIC;

110、 動態(tài)掃描時鐘信號</p><p>  RESET:IN STD_LOGIC; 復位信號</p><p>  DIN0,DIN1,DIN2,DIN3,DIN4,DIN5,DIN6,DIN7,DIN8,DIN9:IN STD_LOGIC_VECTOR(6 DOWNTO 0); 譯

111、碼后的數據信號輸入</p><p>  SHIFT:OUT STD_LOGIC_VECTOR(9 DOWNTO 0); 位選信號 </p><p>  BUS4 :OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); 段選信號</p><p>  END DYNAMIC;</p><p>  ARCHITECT

112、URE ART OF DYNAMIC IS</p><p>  SIGNAL SCAN_CLK: STD_LOGIC_VECTOR( 3 DOWNTO 0);</p><p><b>  BEGIN </b></p><p>  P1:PROCESS(CLK,SCAN_CLK,RESET)</p><p>  VARIA

113、BLE SCAN:STD_LOGIC_VECTOR(17 DOWNTO 0);</p><p><b>  BEGIN</b></p><p>  IF RESET='1' THEN </p><p>  SCAN:="000000000000000000";</p><p>  S

114、CAN_CLK<="0000";</p><p>  ELSIF CLK'EVENT AND CLK='1'THEN</p><p>  SCAN:=SCAN+1;</p><p><b>  END IF;</b></p><p>  SCAN_CLK<=SCAN

115、(3 DOWNTO 0);</p><p>  END PROCESS P1;</p><p>  P2:PROCESS(SCAN_CLK,DIN0,DIN1,DIN2,DIN3,DIN4,DIN5,DIN6,DIN7,DIN8,DIN9)</p><p>  BEGIN

溫馨提示

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

評論

0/150

提交評論