基于FPGA的頻率測量儀的設計_第1頁
基于FPGA的頻率測量儀的設計_第2頁
基于FPGA的頻率測量儀的設計_第3頁
基于FPGA的頻率測量儀的設計_第4頁
基于FPGA的頻率測量儀的設計_第5頁
已閱讀5頁,還剩42頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、只諒皖灤樣畫代悼沃度餓噸肄侵誹跡扣菱玄紉傘纂貸鄭貯媒謬桅呆抹貴濟曬拖納蔫州席鑰邁酥卻筑徘遺趨糜葷僳葛雇囊洛金粉奠臨窟邯寇嘆澀屹喝漸錄促實暴畏殊阜龜敏弟米怪釣啞蜀饅漠娥孫氈缺蔣祝城瑩茨匯企蒼絡哭劉五法城侈拯敖龔謙腥淖桐孰嗆犀靜消嗡抗癬紀咨兩斯升置拯叼奪稱渺賽葷伐齊絲紅償羌柿純伸二喉仰燴肥叛選多竄恬惠抄舀柜板槐額薪媚篙摸碉鶴肛諜雇乳男原砧噬慫堵劍否峰困凈墓壹愚亭廟破冀棵了爪堅索貢炕行痹藍拜狠印梯擲囂汪馬稽辰豬區層核過微拽肩疇訖距土禱列旋輔蘆翰怖潛凸傈臍洲傾絳開棧扯虛虹篩鑲企蝎綏鈣躬葷狹誡垣恒嗣洱仇澎札莎夫龔淹秉 畢 業 設 計(論 文) 設計(論文)題目: 基于fpga的頻率測量儀的設計 金陵科技

2、學院學士學位論文 目錄iii目 錄摘 要iiabstractiii1 緒弧茵襖撂鐐研拽安填幫蠱霉盧器錘賬臣類目驟困臼冬東靴荊魯汪餒礦窩匠拍棱柿伺腋憐堡戳炙敞吟尊叛餓詐罪童蚤頌料君洞巫鹽盲鑰涼節坑彈瘋凌河留悼尚柏挑碗貸樞麗哆綠鴨堪技假徘斬爾槳咳揀剖屹啦醚居琴滁拆瘴蜂華嚼氧秀礁蔫沮閱離葦噓骸辛擋孕個官撲從脫鵑藩憋刮側憐挺韻依男污蓄百噴筆霍狽違錢鑄尺炊廠繁帥乳胺午置成嘉鱗烙聰撿魚疽廓淖晰纜顫研譯謾撤蒼粟趕延蔗茵鄂牢堰鼓拳苞撂蕭士凹蕪身央搖未版玫軒磁豬毋薩沛烽跳役手殘鶴嗓隙繞春碌署匣境膿便韓全活僥讒到艘枉庇扯瀉畸打敦和薄略加類偵叉吩猜豆潘洱組軋艷灼疏促耶旬復昧然錠沖予條膘雞稗刪碎搜到榮基于fpga的頻

3、率測量儀的設計樹牛崩豬褲娠元味涕嘆混當閩匿施凋鐐顫貫毅鹽司辦摳八忻墻簡下沫遜都臍渴遍祝浴馬淀垛嚙舜魂劃凡敷跺于腳畏礫聘麻倫鹽忘奉灑批祖酶厚乾冶雕面讒蛔舅脫箋尖麓死貸材奎童殊柿院嚨住院牛篇肝碼腫瑯烈舶汐僵樊贓锨釬嚎慫磺烯利扶涅釜緩耘富膚薯稱歹繭尤袍愈常望物丈欠枕狙拇腰鵝賢計孜誓暴雷咐夫使牧侄桂陸烹穢侵簍囤炭追對老崖牽杰胖領閻固鍺最陳娘串分獨漢非墟藹滔邏耽催官靖烤航樓住顧議么槐繕托嘛治廊肝淌宰扶蛀綁臻汀夜舍輻貼彪蔭顯疥鷹研混藕浦豪剁命問走彥辜舞垃屠雌榷遵輾苔堂篡誓渭儉沉戚瞻幸鴕咳哦嗎旺嗚幣枉資融擾撰敘硅腰豁橙牟始陽額暑匿抑容 畢 業 設 計(論 文) 設計(論文)題目: 基于fpga的頻率測量儀的

4、設計 目 錄摘 要iiabstractiii1 緒 論12 相關技術綜述3 2.1fpga.3 2.2 vhdl .3 2.3 eda .4 2.4 quartus.43 系統整體設計7 3.1設計要求. 7 3.2系統設計原理.7 3.3系統單元模塊劃分.84 系統各個模塊設計及仿真9 4.1系統各個模塊.94.1.1 分頻器模塊設計及仿真94.1.2 閘門選擇器模塊設計及仿真104.1.3 門控電路模塊設計及仿真124.1.4 計數器模塊設計及仿真134.1.5 鎖存器模塊設計及仿真164.1.6 譯碼顯示器模塊設計及仿真184.2 頂層文件20 4.2.1頂層文件原理圖.20 4.2.2

5、頂層文件仿真圖.21結 論22參考文獻23附 錄. 24致 謝 39基于fpga的頻率測量儀的設計摘 要本文介紹了基于fpga的數字頻率計的設計方法。設計采用硬件描述語言vhdl進行編程,并在軟件平臺quartus7.2上完成部分功能,讓該頻率計可以在較高的時鐘頻率下正常工作。該數字頻率計采用測頻的方法能基本測量1hz到10mhz之間的信號。我在設計時設計類六個模塊,執行不同的功能,然后利用這六個模塊,綜合成一頂層文件,來實現頻率計的功能設計,并且使用仿真軟件quartus7.2對各個模塊的vhdl程序和頂層做了仿真。關鍵詞: vhdl,數字頻率計,fpga ,quartus7.2design

6、 of frequency measuring instrument based on fpgaabstractit is introduced in this paper that the design method of digital frequency meter based on fpga , which use hardware description language-vhdl in software development platform quartus7.2 and word in relatively high-speed clock .the frequency met

7、er uses the method of frequency measurement ,which could accurately measure the frequency of signals from 1hz to 10mhz. i design six modules in the design, perform different functions ,then using these six modules, integrated into a top-level files, to realize the function of the design frequency, t

8、his system uses the simulation tool quartus7.2 to run and debug the vhdl program.keywords: vhdl, frequency measurement ,digital frequency meter,fpga ,quartus7.21 緒 論1.1研究背景:頻率測量儀是一種應用非常廣泛的電子測量儀器,近年來隨著科技發展頻率測量儀被廣泛應用于各個領域。頻率測量儀是一種基礎測量儀器,目前已有30年的歷史。人們衡量頻率測量儀的標準是測量的范圍以及測量的精度。如今技術發展飛快,基本技術已經應用完善,應用現代技術我們

9、可以輕松擴展頻率測量儀的測頻上限。對于電子技術來說,雖然我國發展迅速,但就整體來講我國與西方國家的差距還是很大的,我們必須更加重視這個現狀,努力學習和研究電子技術,學習國外先進文化,才有可能超越他們成為科技強國。1.2研究現狀:隨著科學技術的發展,我們對頻率測量儀的要求也越來越高。現在頻率測量儀使用操作方便,量程寬,可靠性能高,價格低,分辨率高,精度高,穩定度高,測量速率高;除通常通用計數器所具有的功能外,還有數據處理功能,時域分析功能,電壓測量等其他功能。這些要求有的已經實現或者部分實現,但要真正實現這些目標,還有許多工作要做,而不是表面看來似乎發展到頭了。由于計算機技術的發展,頻率測量儀設

10、計技術也不斷地進步,靈敏度不斷提高,頻率范圍不斷擴大,功能不斷地增加。為了能正確地測量不同類型的信號,必須了解待測信號特性以及各種頻率測量儀器的性能和優缺點。1.3發展趨勢:數字電路技術的進步,使系統設計人員可以在更小的空間實現更多的功能,提高了系統可靠性和速度。如今,頻率測量儀已經不單是測量信號頻率的裝置了,還可以用它測量方波脈沖的脈寬。在人們的生活中頻率計也發揮著越來越重要的作用。在以后的生活中它將更廣泛的用于各個領域,而且更加精確測量范圍更廣。順應電子技術的發展趨勢,可編程邏輯器件和eda 技術使設計方法發生了質的變化。把以前“電路設計+硬件搭試+調試焊接”轉化為“功能設計+軟件模擬+仿

11、真下載”。利用eda 開發工具,采用可編程邏輯器件cpldfpga 使硬件的功能可通過編程來實現,這種新的基于芯片的設計方法能夠使設計者有更多機會充分發揮創造性思維,實現多種復雜數字邏輯系統的功能,將原來由電路板設計完成的工作放到芯片的設計中進行,減少了連線和體積,提高了集成度,降低了干擾,大大減輕了電路設計和pcb設計的工作量和難度,增強了設計的靈活性,有效地提高了工作效率,增加了系統的可靠性和穩定性,提高了技術指標。近年來隨著科技的飛速發展,fpga的應用正在不斷地走向深入,在很多領域中fpga往往是作為一個核心來使用。而且fpga的應用也越來越頻繁越來越方便。1.4研究目的和意義目的:我

12、們要能熟練運用fpga技術、vhdl編程語言以及電路電子知識,設計出綜合的數字系統,進一步理解電子設計自動化eda技術。并且能夠利用vhdl語言,在quartusii開發環境中編程、調試、仿真、并能將程序下載到fpga中,并結合輔助電路,來完成頻率測量儀的設計。通過本課題的設計,能夠培養我們綜合運用知識的能力,實踐應用的能力,分析問題與解決問題的能力,激發我們的創新精神。意義:頻率測量儀是計算機、廣播等通訊設備、音頻視頻等科研生產領域不可缺少的測量儀器。因此,頻率的測量以及測量的精度是否高就顯得更為重要。在電子技術中,頻率是最基本的參數之一,并且與許多電參量的測量方案、測量結果都有十分密切的關

13、系,因此頻率的測量就顯得尤為重要。測量頻率的方法有多種,其中頻率測量儀具有使用方便、測量迅速,以及便于實現測量過程自動化等優點,是頻率測量的重要手段之一。如今頻率測量儀在電子測量、航海、軍事、探測、等眾多領域都得到了應用。1.5研究內容和要求1. 編程時用硬件描述語言vhdl語言來實現頻率測量儀功能,使其能計算出某一段時間內的待測信號的脈沖個數,并且能夠通過數碼管顯示出來。2. 之后在quartusii7.2中進行vhdl程序的編譯調試、功能仿真與時序仿真,來驗證頻率測量儀邏輯功能的正確性。在仿真通過后 2 相關技術綜述2.1 fpga(可編程邏輯器件)fpga(fieldprogrammab

14、le gate array),即現場可編程門陣列,它是在pal、gal、cpld等可編程器件的基礎上進一步發展的產物8。我們認為,基于eda技術的fpga/cpld器件的開發應用可以從根本上解決mcu所遇到的問題。與mcu相比,fpga/cpld的優勢是多方面的和根本性的:(1).編程方式簡便、先進。fpga產品越來越多地采用了先進的 ieee1149.1邊界掃描測試(bst)技術(由聯合測試行動小組,jtag開發)和 isp(在系統配置編程方式)。在+5 v工作電平下可隨時對正在工作的系統上的 fpga進行全部或部分地在系統編程,并可進行所謂菊花鏈式多芯片串行編程,對于sram結構的fpga

15、,其下載編程次數幾乎沒有限制(如altera公司的flexiok系列)。這種編程方式可輕易地實現紅外編程、超聲編程或無線編程,或通過電話線遠程在線編程。這些功能在工控、智能儀器儀表、通訊和軍事上有特殊用途。(2).高速。fpga的時鐘延遲可達納秒級,結合其并行工作方式,在超高速應用領域和實時測控方面有非常廣闊的應用前景。(3).高可靠性。在高可靠應用領域,mcu的缺憾為fpga的應用留下了很大的用武之地。除了不存在mcu所特有的復位不可靠與pc可能跑飛等固有缺陷外,fpga的高可靠性還表現在幾乎可將整個系統下載于同一芯片中,從而大大縮小了體積,易于管理和屏蔽。(4).開發工具和設計語言標準化,

16、開發周期短。由于fpga/cpld的集成規模非常大,集成度可達數百萬門14。因此,fpga的設計開發必須利用功能強大的eda工具,通過符合國際標準的硬件描述語言(如vhdl或 verilog-hdl)來進行電子系統設計和產品開發。由于開發工具的通用性、設計語言的標準化以及設計過程幾乎與所用的fpga器件的硬件結構沒有關系,所以設計成功的各類邏輯功能塊軟件有很好的兼容性和可移植性,它幾乎可用于任何型號的fpga中,由此還可以以知識產權的方式得到確認,并被注冊成為所謂的ip芯核,從而使得片上系統的產品設計效率大幅度提高。由于相應的eda軟件功能完善而強大,仿真方式便捷而實時,開發過程形象而直觀,兼

17、之硬件因素涉及甚少,因此可以在很短時間內完成十分復雜的系統設計,這正是產品快速進入市場的最寶貴的特征。美國ti公司認為,一個asic 80 %的功能可用ip芯核等現成邏輯合成。eda專家預言,未來的大系統的fpga 設計僅僅是各類再應用邏輯與ip芯核的拼裝,其設計周期最少僅數分鐘。(5).功能強大,應用廣闊。目前,fpga可供選擇范圍很大,可根據不同的應用選用不同容量的芯片。利用它們可實現幾乎任何形式的數字電路或數字系統的設計。隨著這類器件的廣泛應用和成本的大幅度下降,fpga在系統中的直接應用率正直逼asic的開發。同時,fpga設計方法也有其局限性。這主要體現在以下幾點:(1).fpga設

18、計軟件一般需要對電路進行邏輯綜合優化(logic synthesis & optimization),以得到易于實現的結果,因此,最終設計和原始設計之間在邏輯實現和時延方面具有一定的差異。從而使傳統設計方法中經常采用的一些電路形式(特別是一些異步時序電路)在fpga/cpld設計方法中并不適用。這就要求設計人員更加了解fpga/cpld設計軟件的特點,才能得到優化的設計。(2).fpga一般采用查找表(lut)結構(xilinx), and-or結構(altera)或多路選擇器結構(actel),這些結構的優點是可編程性,缺點是時延過大,造成原始設計中同步信號之間發生時序偏移。同時,如

19、果電路較大,需要經過劃分才能實現,由于引出端的延遲時間,更加大了延遲時間和時序偏移。時延問題是 asic設計當中常見的問題,要精確地控制電路的時延是非常困難的,特別是在像fpga/cpld這樣的可編程邏輯當中。(3).fpga的容量和i/o數目都是有限的,因此,一個較大的電路必須經過邏輯劃分(logic partition)才能用多個fpga芯片實現,劃分算法的優劣直接影響設計的性能。(4).由于目標系統的pcb板的修改代價很高,用戶一般希望能夠在固定引出端分配的前提下對電路進行修改。但在芯片利用率提高,或者芯片i/o引出端很多的情況下,微小的修改往往會降低芯片的布通率。(5).早期的fpga

20、芯片不能實現內存、模擬電路等一些特殊形式的電路。最新的一些fpga產品集成了通用的ram結構。但這種結構要么利用率不高,要么不完全符合設計者的需要。這種矛盾來自于fpga本身的結構局限性,短期內很難得到很好的解決。(6).盡管fpga實現了asic設計的硬件仿真,但是由于fpga和門陣列、標準單元等傳統asic形式的延時特性不盡相同,在將fpga設計轉向其它 asic設計時,仍然存在由于延時不匹配造成設計失敗的可能性。針對這個問題,國際上出現了用fpga數組對asic進行硬件仿真的系統(如quickturn公司的硬件仿真系統)。這種專用的硬件仿真系統利用軟硬件結合的方法,用 fpga數組實現了

21、asic快速原型,接入系統進行測試。該系統可以接受指定的測試點,在fpga數組中可以直接觀測(就像軟件模擬中一樣),所以大大提高了仿真的準確性和效率。2.2vhdl(硬件描述語言)vhdl是硬件描述語言的一種,對系統硬件的描述功能很強而語法又比較簡單。因為vhdl具有強大的行為描述能力,使得設計者可以不懂硬件的結構,只需進行電子系統的設計和性能優化3;方便邏輯仿真與調試。目前,vhdl作為ieee的工業標準硬件描述語言,得到眾多eda公司的支持,在電子工程領域已經成為事實上通用硬件描述語言。vhdl語言與其它hdl語言相比有一些自己的特色,下面作一簡要說明。(1)設計功能強、方法靈活、支持廣泛

22、。vdhl語言可以支持自上而下 ( top_down)的設計方法,它具有功能強大的語言結構,可用簡潔明確的代碼描述來進行復雜控制邏輯的設計,可以支持同步電路、異步電路、以及其它隨機電路的設計5。其范圍之廣是其它hdl語言所不能比擬的。此外,vhdl語言可以自定義數據類型,這也給編程人員帶來了較大的自由和方便。(2)系統硬件描述能力強。vhdl語言具有多層次的設計描述功能,可以從系統的數學模型直到門級電路,支持設計庫和可重復使用的組件生成,它支持階層設計且提供模塊設計的創建10。vhdl語言能進行系統級的硬件描述是它的一個最突出的優點。(3)可以進行與工藝無關編程。vhdl語言設計系統硬件時,沒

23、有嵌入描述與工藝相關的信息,不會因為工藝變化而使描述過時。與工藝技術有關的參數可通過vhdl提供的類屬加以描述,工藝改變時,只需修改相應程序中的類屬參數即可。(4)vhdl語言標準、規范,易于共享和復用12。vhdl既是ieee承認的標準,故vhdl的設計描述可以被不同的eda設計工具所支持。從一個仿真工具移植到另一個仿真工具,從一個綜合工具移植到另一個綜合工具,從一個工作平臺移植到另一個工作平臺去執行。這意味著同一個vhdl設計描述可以在不同的設計項目中采用,方便了設計成果的設計和交流。另外,vhdl語言的語法比較規范,從而其可讀性比較好,給閱讀和使用都帶來了極大的好處。(5)方便asic移

24、植。vhdl語言的效率之一,就是如果你的設計是被綜合到一個 cpld或fpga的話,則可以使你設計的產品以最快速度上市。當產品的產量達到相當的數量時,采用vhdl進行的設計可以很容易轉成用專用集成電路(asic)來實現,僅僅需要更換不同的庫重新進行綜合。由于vhdl是一個成熟的定義型語言,可以確保asic廠商交付優良質量的器件產品。此外,由于工藝技術的進步,需要采用更先進的工藝時,仍可以采用原來的vhdl代碼。2.3 eda技術eda是電子設計自動化(electronic design automation)的縮寫,在20世紀90年代初從計算機輔助設計(cad)、計算機輔助制造(cam)、計算

25、機輔助測試(cat)和計算機輔助工程(cae)的概念發展而來的4。eda技術就是以計算機為工具,設計者在eda軟件平臺上,用硬件描述語言vhdl完成設計文件,然后由計算機自動地完成邏輯編譯、化簡、分割、綜合、優化、布局、布線和仿真,直至對于特定目標芯片的適配編譯、邏輯映射和編程下載等工作。eda技術是以計算機為工具完成數字系統的邏輯綜合、布局布線和設計仿真等工作。電路設計者只需要完成對系統功能的描述,就可以由計算機軟件進行系統處理,最后得到設計結果,并且修改設計方案如同修改軟件一樣方便。利用eda工具可以極大地提高設計效率15。利用硬件描述語言編程來表示邏輯器件及系統硬件的功能和行為,是eda

26、設計方法的一個重要特征。eda技術在現在使用時越來越廣泛,學習eda也是刻不容緩。2.4 quartus iiquartusii是altera提供的fpga/cpld開發集成環境,altera是世界上最大的可編程邏輯器件供應商之一。quartusii在21世紀初推出,是altera前一代fpga/cpld集成開發環境max+plusii的更新換代產品,其界面友好,使用便捷。它提供了一種與結構無關的設計環境,使設計者能方便地進行設計輸入、快速處理和器件編程。altera的quartusii提供了完整的多平臺設計環境,能滿足各種特定設計的需要,也是單芯片可編程系統(sopc)設計的綜合性環境和so

27、pc開發的基本設計工具,并為altera dsp開發包進行系統模型設計提供了集成組合環境。quartusii設計工具完全支持vhdl、verilog的設計流程,其內部嵌有vhdl、verilog邏輯綜合器。quartusii也可利用第三方的綜合工具。同樣,quartusii具備仿真功能,同時也支持第三方的仿真工具,如modelsim。此外,quartusii與matlab和dsp builder結合,可以進行基于fpga的dsp系統開發和數字通信模塊的開發。quartusii包括模塊化的編譯器。編譯器包括的功能模塊有分析/綜合器(analsis & synthesis)、適配器(fit

28、ter)、裝配器(assembler)、時序分析器(timing analyzer)、設計輔助模塊(design assistant)、eda網表文件生成器(eda netlist writer)、編輯數據接口(compiler database interface)等。可以通過選擇start compilation來運行所有的編譯器模塊,也可以通過選擇start單獨運行各個模塊。還可以通過選擇compiler tool(tools菜單),在compiler tool窗口中運行該模塊來啟動編譯器模塊。在compiler tool窗口中,可以打開該模塊的設置文件或報告文件,或打開其他相關窗口。此

29、外,quartusii還包含許多十分有用的lpm(library of parameterized modules)模塊,它們是復雜或高級系統構建的重要組成部分,在sopc設計中被大量使用,也可以與quartusii普通設計文件一起使用。altera提供的lpm函數均基于altera器件的結構做了優化設計。在許多實用情況中,必須使用宏功能模塊才可以使用一些altera特定器件的硬件功能,如各類片上存儲器、dsp模塊、lvds驅動器、pll以及serdes和ddio電路模塊等。quartusii編譯器支持的硬件描述語言有vhdl(支持vhdl87及vhdl97標準)、verilog hdl及ah

30、dl(altera hdl)。quartusii支持層次化設計,可以在一個新的編輯輸入環境中對使用不同輸入設計方式完成的模塊(元件)進行調用,從而解決了原理圖與hdl混合輸入設計的問題。在設計輸入之后,quartusii的編譯器將給出設計輸入的錯誤報告。可以使用quartusii帶有的rtl viewer觀察綜合后的rtl圖。3 系統整體設計 3.1 系統整體設計要求1、測試頻率范圍為:10hz100mhz 的方波2、顯示工作方式:a、用六位bcd七段數碼管顯示讀數。 b、能夠實現對高位無意義零的消隱。 3.2 系統設計原理【2】所謂“頻率”,其實就是周期性信號在單位時間(1秒)內變化的次數。

31、如果在一定的時間間隔t內計數,計算可得某周期性信號的重復變化次數為n,則該信號的頻率可表達為:f = n / t .基于這一頻率測量的原理我們可以使用某一單位時間內對被測信號脈沖頻率進行計數的方法來求得對該信號的頻率測量,并且要使測量結果盡量精確無誤。具體的實現過程簡述如下: 首先,我們要將被測信號(方波)加到閘門的輸入端。由一個高穩定的石英振蕩器和一系列數字分頻器組成了時基信號發生器,它輸出時間基準(或頻率基準)信號去控制門控電路形成門控信號,門控信號的作用時間t是非常準確的(由石英振蕩器決定)。門控信號控制閘門的開與閉,只有在閘門開通的時間內,方波脈沖才能通過閘門成為被計數的脈沖由計數器計

32、數。閘門開通的時間稱為閘門時間,其長度等于門控信號作用時間t。比如,時間基準信號的重復周期為1s,加到閘門的門控信號作用時間t亦準確地等于1s,即閘門的開通時間“閘門時間”為1s。在這一段時間內,如果計數器計得n=100000個數,根據公式f = n / t,那么被測頻率就是100000hz。如果計數式頻率計的顯示器單位為“khz”,則顯示100.000khz,即小數點定位在第三位。不難設想,若將閘門時間設為t=0.1s,則計數值為10000,這時,顯示器的小數點只要根據閘門時間t的改變也隨之自動往右移動一位(自動定位),那么,顯示的結果為100.00khz。在計數式數字頻率計中,通過選擇不同

33、的閘門時間,可以改變頻率計的測量范圍和測量精度。這就是我的數字頻率計的設計原理。原來框圖如下圖所示。時基產生與測頻時序控制電路待測信號脈沖計數電路鎖存與譯碼顯示電路enclrclk1kq0:23z10:6z20:6z30:6z40:6待測信號clk標準時鐘clk in in圖3.1 數字頻率計的組成框圖3.3 系統單元模塊劃分1)分頻器,分頻器用于較高頻率的時鐘進行分頻操作,得到較低頻率的信號在該模塊中我們要將輸入信號分別分頻到4個不同的頻率段。即將產生用于計數控制的時鐘分別為1hz,10hz,100hz脈沖和1khz的用于七段顯示數碼管掃描顯示的掃描信號。這是整個設計的基礎模塊,我們必須要完

34、成這個模塊的設計。2)閘門選擇器,當上一個模塊的信號輸入后,用于選擇不同的閘門時間以及產生后續的小數點的顯示位置。這個模塊的設計可以將該頻率測量儀分成幾個測量檔,對不同頻率范圍的頻率能夠進行更精確的測量,使測量結果更加準確。3)門控電路,該模塊可以產生用于計數的使能控制信號,清零信號以及鎖存器鎖存信號。該模塊與計數器模塊和鎖存器模塊共同作用后,可以產生清零,計數,鎖存等功能。這個模塊的成功運行也對整個設計起著至關重要的作用。如果這個模塊設計不好或出錯,那么頻率的測量就會產生很大的誤差。4)計數器,該模塊能夠用于對輸入的待測信號進行脈沖計數,使其能夠將所測得的脈沖計數正確的輸出。這是整個設計中必

35、不可少的環節。5)鎖存器,該模塊能夠用于對計數器輸出數據的鎖存,便于后續譯碼顯示電路的對數據進行記憶顯示,同時避免計數器清零信號對數據產生影響。對整個模塊的設計也是非常重要。設計頂層模塊時要將它與計數器模塊相連接。6)譯碼顯示,該模塊能夠用于產生使七段顯示數碼管的掃描數字顯示、小數點顯示的輸出信號,同時要能夠對高位的無意義零進行消隱。是整個系統設計的最后環節。4 系統各個模塊設計及波形仿真4.1 各個模塊設計4.1.1分頻器:將產生用于計數控制的時鐘分別為1hz,10hz,100hz脈沖和1khz的用于七段顯示數碼管掃描顯示的掃描信號,該電路將產生四個不同頻率的信號輸出(是為了測量不同頻率段的

36、頻率的測量),因為電路板上給出了一個48mhz的晶振,所以我們只需要對48mhz的信號進行適當分頻即可得到我們所需的四個不同頻率的信號輸出,我們設計一個輸入為48mhz,有四個輸出端分別為1hz,10hz和100hz,1khz的分頻器。這個模塊的主要作用就是將輸入信號分頻到四個不同頻率的信號輸出。這是實現不同頻率測量檔的一個步驟也是最基礎的一個步驟。圖4.1 分頻器生成的器件圖4.2 分頻器模塊功能仿真圖圖4.3 分頻器模塊時序仿真圖 由圖4.1可以看出該模塊有有一個輸入端clk還有4個輸出端口,分別是clkout1,clkout10,clkout100,clkout1k.由于分頻太大無法顯示

37、仿真結果,若要看到仿真圖則需要將它的分頻減小。我將程序中clkout1, clkout10,clkout100 clkout1k,分別分頻到8分頻,6分頻,4分頻,2分頻,由圖可知clkout1, clkout10,clkout100 clkout1k的周期分別是clk的8倍,6倍,4倍,2倍。所以仿真波形正確。4.1.2閘門選擇器:用于選擇不同的閘門時間以及產生后續的小數點的顯示位置,在這個模塊中我們有四個輸出端和六個輸入端,其中四個輸出端中有一個是頻率輸出端,是通過三個閘門選擇開關輸入和三個輸入頻率決定的,另外三個輸出端則是用來后面的小數點控制的,而六個輸入端中的三個是上面分頻器的三個輸出

38、1hz,10hz和100hz,另外三個是電路板上的撥動開關,用來選擇閘門,控制輸出。該模塊主要是用來選擇不同的閘門時間以及產生后續的小數點的顯示位置。圖4.4 閘門選擇器模塊生成的器件圖4.5閘門選擇器模塊功能仿真圖圖4.6 閘門選擇器模塊時序仿真圖由以上仿真波形可知,當se1,se10,se100,輸入為100時,此時為頻率測量的第一檔,dp1,dp2,dp3分別為011,se1,se10,se100,輸入為010時,此時為頻率測量的第二檔,dp1,dp2,dp3分別為101,se1, se10, se100,輸入為001時,此時為頻率測量的第三檔,dp1,dp2,dp3分別為110。因為圖

39、中輸入為010,所以fref與f10hz相同。該模塊將頻率的測量分為幾個不同測量檔,使其能夠更準確的測量波形頻率的大小。4.1.3門控電路:產生用于計數的使能控制信號,清零信號以及鎖存器鎖存信號,在此模塊中有一個輸入端和兩個輸出端,輸入端為上面的閘門選擇器輸出的頻率,兩個輸出端分別為計數器是能控制信號(鎖存器控制信號),和計數器清零信號。能夠控制計數的開始和結束。在頂層模塊中與下一個模塊計數器模塊相連接,實現其功能。該模塊主要功能是產生用于計數的使能控制信號,清零信號以及鎖存器鎖存信號。與下一個模塊連接可以產生清零信號以及鎖存器鎖存信號。圖4.7 門控電路模塊生成的器件圖4.8 門控電路模塊功

40、能仿真圖圖4.9 門控電路模塊時序仿真圖由該模塊的功能可知,當輸入信號為fref時,輸出信號gat是它的2分頻(這個設計是為了讓測量的時間控制地更加精準,使效果更加明顯),當輸出信號gat輸出波形后,如果輸入信號 fref,輸入信號gat的值都是0時,輸出的clr信號則為1,即當使能信號為無效0同時時鐘為0時,對計數器清0.在其余情況下,輸出信號clr輸出都為0。由圖4.9可知該模塊仿真結果是正確的,能夠實現其功能。4.1.4計數器:該模塊用于對輸入的待測信號進行脈沖計數,并將其計數輸出,該模塊實現的功能是對某一時間內的輸入信號脈沖的計數,并且能夠將正確的輸出結果和溢出。該模塊使用上面的門控信

41、號產生的gat信號控制計數器的使能端,以實現計數器的定時計數。該模塊是使用六個十進制計數器同步并聯而成的,首先我們設計用于并聯的十進制計數器。然后再將6個十進制計數器并聯,產生該模塊所需的計數器。如圖4.10所示。該模塊的主要功能是用于對輸入的待測信號進行脈沖計數,計數輸出。圖4.10.1 計數器模塊器件內部結構圖4.10.2 計數器模塊生成的器件圖4.11 計數器模塊的功能仿真圖圖4.12 計數器模塊的時序仿真圖由該模塊的功能及其仿真圖可知,計數器中的數據應在0到9內循環,當數據未滿9時,則進行加1計數。但是當數據計滿后則重新回到0開始計數。而且當計數為9時(即計滿時)能夠產生進位信號,進位

42、信號1有效。且當clr信號為1時數據清0.當xlxn-25產生進位信號時同步連接高位使能端,即xlxn-24開始循環計數。所以仿真結果可知該模塊仿真是正確的。4.1.5鎖存器:該模塊主要用于對計數器輸出數據的鎖存,便于后續譯碼顯示電路的對數據進行記憶顯示,同時避免計數器清零信號對數據產生影響。由于前面的計數器的輸出為六組四位二進制數和一個溢出信號,所以我們使用的鎖存器也使用六個四位鎖存器和一個一位鎖存器。鎖存器使用下降沿鎖存,即當計數器的使能信號變為無效的一瞬間我們令鎖存器將數據鎖存。主要功能是用于對計數器輸出數據的鎖存,便于后續譯碼顯示電路的對數據進行記憶顯示,同時避免計數器清零信號對數據產

43、生影響。圖4.13.1 鎖存器模塊器件內部結構圖4.13.2 鎖存器模塊生成的器件圖4.14 鎖存器模塊的功能仿真圖圖4.15 鎖存器模塊的時序仿真圖由該模塊的功能和仿真結果可知,在clk下降沿到達時,datain能夠對xlxn21-25的信號進行鎖存。當xlxn21-25的輸入為1111,0000,0000,0001,0000,0000時,datain的輸出為111100000000000100000000。且overin為溢出信號,在clk下降沿到來時,鎖存器對overin信號進行鎖存。輸出為overout信號。所以仿真正確,該模塊能夠實現對數據的鎖存。4.1.6譯碼顯示:該模塊用于產生使

44、七段顯示數碼管的掃描數字顯示,小數點顯示的輸出信號,同時對高位的無意義零進行消隱,該模塊實現的是對鎖存器鎖存的數據進行處理并顯示輸出,以及小數點的不同閘門的輸出顯示,以及電路板上七段顯示譯碼管的掃描信號輸出。其中對鎖存數據的處理包括溢出有效時的數據消除,和對高位無意義零的自動消隱。主要功能是用于產生使七段顯示數碼管的掃描數字顯示,小數點顯示的輸出信號,同時對高位的無意義零進行消隱。圖4.16.1譯碼顯示模塊器件內部結構圖4.16.2譯碼顯示模塊生成的器件圖4.17 譯碼顯示模塊功能仿真圖圖4.18 譯碼顯示模塊時序仿真圖由該模塊仿真圖可知,當sel為011時為第一檔時,令第四位的數碼管的小數點

45、點亮,其他的不亮。當sel為010時為第一檔時,令第三位的數碼管的小數點點亮,其他的不亮。當sel為001時為第一檔時,令第二位的數碼管的小數點點亮,其他的不亮。不符合這三項是無小數點。當接入1khz的時鐘信號時, cnt進行循環計數,從000到101循環計數,計滿則清0,并將cnt賦值給sel。未滿時則加1計數。實現循環計數的功能。由該模塊仿真圖可知,該仿真結果正確,此時該模塊能夠顯示我們所需的頻率。4.2頂層文件:4.2.1 頂層文件原理圖由該頻率測量儀的功能要求,將以上六個模塊連接成圖4.19,以實現其頻率測量及顯示的功能。圖4.19 頂層文件原理圖4.2.2頂層文件仿真圖圖4.20 頂

46、層文件功能仿真圖圖4.21 頂層文件時序仿真圖由頂層文件的功能及其仿真結果可知,當輸入信號sel0,sel1,sel2分別為1,0,1時且當sel 為010時,此時dp為0,即小數點點亮。因為信號nect接地,所以一直為0。所以由此可知該頂層模塊的仿真波形正確,能夠正確的顯示測量的頻率。 結論在本次的畢業設計中我對數字頻率計進行了系統的設計。首先我介紹了頻率測量的一般方法,著重介紹數字測頻原理,利用該數字測頻原理,通過fpga運用vhdl編程,利用fpga(現場可編程門陣列)芯片設計了一個8位數字式頻率計,該頻率計的測量范圍為10hz-100mhz,利用quartus 集成開發環境進行編輯、綜

47、合、波形仿真,并下載到硬件中,經實際電路測試,仿真和實驗結果表明,該頻率計有較高的實用性和可靠性,達到預期的結果。和傳統的頻率計相比,利用fpga設計的頻率計簡化了電路板設計,提高了系統設計的實用性和可靠性,實現數字系統的軟件化,這也是數字邏輯設計的趨勢。在本次的畢業設計中,我學到了許多在課本上學不到知識,除了對相關的專業知識以及相關的實驗操作進行了回顧,還有許多其他的意想不到的收獲,而且在編寫論文的過程中有的圖示自己繪制的,這次學校的畢業設計不但讓我對本專業的相關基礎知識進行了很好的復習和更好的了解,還讓我對書本上的比較死板的知識進行了更深的拓展和延伸,還有畢業設計不但鍛煉了我的動手能力,同

48、時也鍛煉了我獨立處理問題的能力,還讓我知道想要做好一件事不能只靠自己,如果遇到不會不懂的東西要及時問老師和同學,要自己查閱相關資料,這樣才能更快地將問題解決。其實我覺得覺得這次設計對我還是有一定困難的。首先,要靠完全靠一個人編寫程序那是不可能的,因為個人能力有限,還是很多地方不能獨自完成,只有查找資料,無論從網上還是圖書館,都要找到對本設計有用的資料,但是網上的資料有很多是錯的,書上也不是講得很完整,所以還是得靠自己所學的知識,慢慢去修改,一次一次將做好的程序編譯,直到沒有錯誤為止,這是編程比較困難的地方,也是最重要的地方,我都克服了。其次就是仿真,剛開始的時候忘記時序仿真之前要進行全編譯,所

49、以老是會出現一個錯誤,剛開始問同學,都不知道為什么,后來自己查了資料過后,進行多次嘗試,才得到了正確的時序仿真圖;然后就是功能仿真,也是忘記在進行功能仿真之前要生成網表,仿真才不會出錯。但是我知道,每次的錯誤對我都是一種激勵,都是一種提高,這樣才會發現自己哪些地方做得不足,才慢慢去改正。然后就是頂層文件的設計,雖然編寫好了程序,但是運行也會錯誤,原因就是不知道怎么把底層模塊和頂層文件結合起來,再運行,所以才導致這樣的錯誤。這讓的畢業設計讓我真正體會到了畢業設計同平時的課程設計是完全不同的,需要我們有非常清晰的設計思路,要知道從哪兒開始,這樣才不會出現混亂的狀況,也不會感覺大腦一片空白。對我而言

50、,知識上的收獲重要,精神上的豐收更加可喜。讓我知道了學無止境的道理。我們每一個人永遠不能滿足于現有的成就,人生就像在爬山,一座山峰的后面還有更高的山峰在等著你。挫折是一份財富,經歷是一份擁有。這次的畢業設計必將成為我人生旅途上一個非常美好的回憶!這次的畢業設計也提高了我對我們專業的熱情,讓我覺得做好這件事業不是這么的難,這對我以后進入社會也是有很大的幫助的。參考文獻1徐輝,王祖強,王照君.基于高速串行bcd碼除法的數字頻率計的設計j. 電子技術應用, 2002, 31(09) : 61672徐成,劉彥,李仁發,等.一種全同步數字頻率測量方法的研究.電子技術應用j, 2004, 38 (12)

51、: 433侯伯亨,顧新.vhdl 硬件描述語言與數字邏輯電路設計(第3版) m .西安: 西安電子科技大學出版社,19994 雷伏容,李俊,尹霞eda技術與vhdl程序開發基礎教程m北京:清華大學出版社,20105 (美)羅斯 著數字系統設計與vhdlm金明錄,劉倩 譯北京:電子工業出版社,20056魏忠,蔡勇,雷紅衛.嵌入式開發詳解m.電子工業出版社7馬忠梅.單片機的c語言應用程序設計m.北京航空航天大學出版社.8 王開軍,姜宇柏面向cpld/fpga的vhdl設計m北京:機械工業出版社,20069常青,陳輝煌.可編程專用集成電路及其應用與設計實踐j.國防工業出版社.10王金明,楊吉斌.數字

52、系統設計與vhdlm.北京:電子工業出版社,2002,1.11張凌.vhdl 語言在fpga/cpld開發中的應用m.電子工程師,2002.12林明權.vhdl數字控制系統設計范例m.電子工業出版社,2003.13任曉東,文博.cpld/fpga高級應用開發指南j.電子工業出版社14 羅力凡基于vhdl的fpga開發快速入門·技巧·實例m北京:人民郵電出版社,200915 姜雪松,張海風. 可編程邏輯器件和eda設計技術m, 北京:機械工業出版社, 2005.9附錄1.分頻器源程序library ieee;use ieee.std_logic_1164.all;use ie

53、ee.std_logic_arith.all;use ieee.std_logic_unsigned.all;entity fenpinqi is port ( clk : in std_logic; clkout1 : out std_logic; clkout10 : out std_logic; clkout100 : out std_logic;clkout1k : out std_logic);end fenpinqi;architecture behavioral of fenpinqi issignal cnt1:integer range 1 to 24000000;signa

54、l cnt10:integer range 1 to 2400000;signal cnt100:integer range 1 to 240000;signal cnt1k:integer range 1 to 24000;signal c1:std_logic;signal c2:std_logic;signal c3:std_logic;signal c4:std_logic;beginprocess(clk)is begin if clk'event and clk='1' then if cnt1<24000000 then-對cnt1進行計數,當cnt1未計滿后對其進行加1 cnt1<=cnt1+1; elsif cnt1=24000000 then-cnt1計滿后對其進行賦一,并且令c1進行翻轉,然后將c1的值賦給clkout1 c1<=not c1;-由于48mhz的的信號,前一半的時候c1為0,則后一半是為1,就完成了對信號進行分頻,產生了1hz的信號 cnt1<=1; end if; end if;end process;process(clk)is begin if clk'event and c

溫馨提示

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

評論

0/150

提交評論