基于FPGA數(shù)字頻率計(jì)的SOPC實(shí)現(xiàn)_第1頁(yè)
基于FPGA數(shù)字頻率計(jì)的SOPC實(shí)現(xiàn)_第2頁(yè)
基于FPGA數(shù)字頻率計(jì)的SOPC實(shí)現(xiàn)_第3頁(yè)
基于FPGA數(shù)字頻率計(jì)的SOPC實(shí)現(xiàn)_第4頁(yè)
基于FPGA數(shù)字頻率計(jì)的SOPC實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩22頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于FPGA數(shù)字頻率計(jì)的SOPC實(shí)現(xiàn)課程名稱:現(xiàn)代電子技術(shù)綜合實(shí)驗(yàn)姓名:指導(dǎo)老師: 學(xué)號(hào):摘要本文介紹了一種數(shù)字頻率計(jì)的SOPC實(shí)現(xiàn)方法。該設(shè)計(jì)采用MC8051軟核作為SOPC系統(tǒng)的控制核心,使用硬件描述語(yǔ)言VHDL在開(kāi)發(fā)平臺(tái)ISE上搭建MC8051的外圍電路,共同構(gòu)建SOPC系統(tǒng)。在進(jìn)行綜合、布局布線、生成bit文件、配置實(shí)驗(yàn)電路板上的目標(biāo)器件后,聯(lián)合使用Keil C51進(jìn)行軟件部分的設(shè)計(jì)與在線仿真,最后在FPGA實(shí)驗(yàn)電路板上成功驗(yàn)證了設(shè)計(jì)的功能。經(jīng)測(cè)量數(shù)據(jù)與真實(shí)數(shù)據(jù)比較,在10-5誤差范圍內(nèi),該頻率計(jì)能測(cè)量頻率在0.5Hz以上的信號(hào)。關(guān)鍵詞:MC8051,SOPC,F(xiàn)PGA,數(shù)字頻率計(jì)一、

2、數(shù)字頻率計(jì)的實(shí)現(xiàn)方式及其誤差1.1概述在電子技術(shù)領(lǐng)域,頻率是一個(gè)最基本的參數(shù),頻率與其它許多參量的測(cè)量方案、測(cè)量結(jié)果都有十分密切的關(guān)系。因此,頻率的測(cè)量非常重要。 在電子實(shí)驗(yàn)室中,測(cè)量頻率的儀器是最重要的儀器之一。目前,絕大多數(shù)實(shí)驗(yàn)室使用計(jì)數(shù)式數(shù)字頻率計(jì)測(cè)量頻率。利用計(jì)數(shù)式數(shù)字頻率計(jì)測(cè)量頻率具有精度高、使用方便、測(cè)量迅速等一系列突出優(yōu)點(diǎn),故已成為近代頻率測(cè)量的重要手段。目前頻率測(cè)量主要有3種實(shí)現(xiàn)方法:(1)測(cè)頻法。測(cè)頻法是指在時(shí)基信號(hào)的幾個(gè)周期內(nèi)計(jì)算被測(cè)信號(hào)的個(gè)數(shù),最后得出被測(cè)信號(hào)的頻率。該測(cè)量在低頻段的相對(duì)測(cè)量誤差較大。(2)測(cè)周法。測(cè)周法是指在被測(cè)信號(hào)的幾個(gè)周期內(nèi)計(jì)算時(shí)基信號(hào)的個(gè)數(shù),最后得

3、出被測(cè)信號(hào)的頻率。這種方法在高頻段相對(duì)誤差較大,增大基準(zhǔn)信號(hào)頻率可以提高測(cè)量精度。(3)等精度法。等精度法是指在與被測(cè)信號(hào)同步的閘門(mén)時(shí)間內(nèi),分別計(jì)算被測(cè)信號(hào)和時(shí)基信號(hào)的個(gè)數(shù),最后通過(guò)被測(cè)信號(hào)與時(shí)基信號(hào)的個(gè)數(shù)的相比,再乘以時(shí)基信號(hào)的頻率算出被測(cè)信號(hào)頻率。該方法可以在整個(gè)工作頻段可以得到相同的相對(duì)精度,且測(cè)量范圍更大、更精確。1.2 三種頻率測(cè)量方法誤差的簡(jiǎn)要分析 (1)測(cè)頻法:測(cè)頻法的公式為:f=N/TN為1次閘門(mén)時(shí)間內(nèi)計(jì)數(shù)器計(jì)得被測(cè)信號(hào)的脈沖數(shù),T為閘門(mén)時(shí)間的長(zhǎng)度。由于N存在±1誤差,那么測(cè)頻法的相對(duì)誤差:±1/N絕對(duì)誤差:±1/T即對(duì)于測(cè)頻法,被測(cè)信號(hào)頻率越高或

4、者閘門(mén)時(shí)間越長(zhǎng),N值就越大,誤差就越小。閘門(mén)時(shí)間固定時(shí),絕對(duì)誤差固定。(2)測(cè)周法:測(cè)周法的公式為:f=F/NF為基準(zhǔn)時(shí)鐘的頻率,N為被測(cè)信號(hào)單周期內(nèi)計(jì)得基準(zhǔn)時(shí)鐘的脈沖數(shù)。由于N存在±1的誤差,測(cè)周法的相對(duì)誤差:( -1/ (N+1), 1/ (N-1) )絕對(duì)誤差:( -F/N(N+1), F/N(N-1) )即對(duì)于測(cè)周法,被測(cè)信號(hào)頻率越低,基準(zhǔn)時(shí)鐘頻率越高,N值越大,誤差越小。(3)等精度法:等精度法的公式為:f=(N1/N2)*FN1 、N2分別為與被測(cè)信號(hào)同步的閘門(mén)時(shí)間內(nèi)測(cè)得被測(cè)信號(hào)脈沖數(shù)、時(shí)基信號(hào)脈沖數(shù),F(xiàn)為時(shí)基信號(hào)頻率。由于閘門(mén)信號(hào)與被側(cè)信號(hào)同步,N1無(wú)量化誤差。N2存在

5、±1誤差。相對(duì)誤差:( -1/ (N2+1), 1/ (N2-1) )絕對(duì)誤差:( -N1F/N2(N2+1), N1F/N2(N2-1) )即時(shí)基信號(hào)頻率越高,N2越大,那么誤差就越小。特別當(dāng)N1=1時(shí),等精度法變?yōu)闇y(cè)周法。二、數(shù)字頻率計(jì)的設(shè)計(jì)與實(shí)現(xiàn)2.1測(cè)量方式與實(shí)現(xiàn)方式的選擇本次設(shè)計(jì)采用等精度法,由于等精度法設(shè)計(jì)到乘除運(yùn)算,如果直接用數(shù)字電路搭建乘除電路,十分復(fù)雜,但MC8051進(jìn)行乘除十分方便,而且編程容易。所以考慮采用SOPC的實(shí)現(xiàn)方式來(lái)設(shè)計(jì)頻率計(jì)。2.2 硬件系統(tǒng)的設(shè)計(jì)2.2.1 實(shí)驗(yàn)所用開(kāi)發(fā)板簡(jiǎn)介本次實(shí)驗(yàn)所用的電路為EEC FPGA核心板,板上包含一塊TQ144封裝的x

6、c3s250e FPGA芯片,使用50MHz有源晶振作時(shí)鐘輸入,含有4個(gè)按鍵,一個(gè)8位撥碼開(kāi)關(guān),8位LED,8位數(shù)碼管,提供外部時(shí)鐘輸入引腳,足夠滿足本次頻率計(jì)的設(shè)計(jì)需要。圖1給出了開(kāi)發(fā)板上FPGA的引腳分配,可以得到引腳約束信息,以供開(kāi)發(fā)時(shí)使用。圖1 管腳分配2.2.2 硬件系統(tǒng)的整體框架由等精度測(cè)量頻率的原理可知,頻率測(cè)量功能的實(shí)現(xiàn)需要時(shí)鐘管理模塊、閘門(mén)電路、基準(zhǔn)時(shí)鐘、輸入信號(hào)、兩個(gè)計(jì)數(shù)器以及MC8051。模塊之間的互聯(lián)如圖2所示。圖2 數(shù)字電路框圖基于上面給出的數(shù)字電路框圖,各個(gè)模塊的功能如下:1)DCM時(shí)鐘管理模塊Xilinx公司的FPGA中提供了一種特殊的時(shí)鐘管理模塊,可以對(duì)時(shí)鐘進(jìn)行

7、倍頻與分頻。所用芯片上單個(gè)DCM能提供兩路輸出,分別用作MC8051的時(shí)鐘和測(cè)頻電路的基準(zhǔn)時(shí)鐘。因?yàn)閷?duì)單片機(jī)在線調(diào)試的需求,單片機(jī)的時(shí)鐘固定為18MHz。由之前的理論分析,基準(zhǔn)時(shí)鐘頻率更高時(shí),量化誤差導(dǎo)致的頻率誤差會(huì)降低,所以基準(zhǔn)時(shí)鐘使用50MHz,所以該模塊的功能是對(duì)輸入的晶振信號(hào)進(jìn)行分頻產(chǎn)生一個(gè)18MHz和50MHZ的方波信號(hào)。2)MC8051軟核系統(tǒng)整體的處理、控制核心。通過(guò)感應(yīng)反饋回的閘門(mén)信號(hào)判斷何時(shí)進(jìn)行數(shù)據(jù)的傳輸,在正確傳輸數(shù)據(jù)后并輸出高電平的清零信號(hào)(clr)使32位計(jì)數(shù)器清零,在短暫的延時(shí)后,使clr變成低電平,以使32位計(jì)數(shù)器在下次閘門(mén)信號(hào)到來(lái)時(shí)做好計(jì)數(shù)準(zhǔn)備。進(jìn)行數(shù)據(jù)的乘除運(yùn)算

8、,判斷頻率的單位(Hz、KHz、MHz)并輸出有效的低電平信號(hào)使相應(yīng)的指示燈點(diǎn)亮,分離頻率各個(gè)位的數(shù)字(包括小數(shù)點(diǎn)的判斷),然后通過(guò)先送片選后送段選實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)顯示。3)分頻器通過(guò)對(duì)時(shí)鐘管理器送來(lái)的50MHz方波信號(hào)進(jìn)行分頻得到一個(gè)0.25Hz的方波信號(hào),并送入D觸發(fā)器。4)閘門(mén)信號(hào)同步電路使用D觸發(fā)器產(chǎn)生與被測(cè)信號(hào)同步的閘門(mén)信號(hào),并分別送到兩個(gè)32位計(jì)數(shù)器的使能端和MC8051單片機(jī)內(nèi)部。在閘門(mén)高電平期間,計(jì)數(shù)器能正常計(jì)數(shù)。單片機(jī)能通過(guò)對(duì)閘門(mén)信號(hào)感應(yīng)的做出正確的反饋。5)32位計(jì)數(shù)器在同步閘門(mén)信號(hào)的使能下,計(jì)算被測(cè)信號(hào)、時(shí)基信號(hào)的個(gè)數(shù)。6)64選8多路選擇器通過(guò)單片輸出的選擇信號(hào)選擇送哪

9、8位數(shù)據(jù)。2.2.3 引腳分配以及下載將上述元件按照框圖用top.vhd文件連接,分配引腳并將無(wú)用的管腳拉高后,進(jìn)行綜合、布局布線,生成對(duì)FPGA進(jìn)行配置的bit文件,使用ISE里的iMPACT工具下載至開(kāi)發(fā)板上的FPGA內(nèi)即可。以上就是數(shù)字電路硬件部分的工作。2.3 軟件系統(tǒng)的設(shè)計(jì)軟件部分應(yīng)該包括清零信號(hào)的控制、數(shù)據(jù)的處理、顯示控制三部分。圖3是本次設(shè)計(jì)程序部分的流程圖。圖3 程序流程圖一、程序功能說(shuō)明:1)在啟動(dòng)程序后,進(jìn)行信號(hào)判斷。若switchsignal=0&cal_flag=0,單片機(jī)輸出多路選擇器選擇信號(hào),將數(shù)據(jù)接收進(jìn)來(lái),將cal_flag、clr賦值為1,實(shí)現(xiàn)32位計(jì)數(shù)

10、器的清零。在延時(shí)1ms后,將clr賦值為0,讓32位計(jì)數(shù)器做好下次計(jì)數(shù)準(zhǔn)備。然后進(jìn)行數(shù)據(jù)的計(jì)算,算出被測(cè)信號(hào)的頻率,并且判斷頻率的單位,使相應(yīng)的指示燈點(diǎn)亮。在得到頻率后分離各個(gè)位的數(shù)字(同時(shí)判斷小數(shù)點(diǎn)的位數(shù))。最后轉(zhuǎn)到顯示程序。若switchsignal=1,將cal_flag賦值為0,直接轉(zhuǎn)到顯示程序。2)在顯示程序中,先送位選碼后送段選碼,延時(shí)1ms,接著送下位數(shù)實(shí)現(xiàn)數(shù)碼管的動(dòng)態(tài)顯示。在送完所以數(shù)后?;氐叫盘?hào)判斷處以實(shí)現(xiàn)程序的無(wú)限循環(huán)。二、MC8051 IP核中運(yùn)行的軟件應(yīng)該實(shí)現(xiàn)的功能如下:1)閘門(mén)信號(hào)的接收與計(jì)數(shù)器clr信號(hào)的管理根據(jù)輸入的同步閘門(mén)信號(hào),處理好接收多路選擇器的送數(shù)、32位

11、計(jì)數(shù)器的清零、計(jì)數(shù)器計(jì)數(shù)前的再次準(zhǔn)備三者的前后時(shí)序關(guān)系。2)數(shù)據(jù)計(jì)算對(duì)采集來(lái)的數(shù)據(jù)進(jìn)行處理。通過(guò)對(duì)兩位數(shù)的乘除運(yùn)算得到被測(cè)信號(hào)的頻率,判斷被測(cè)頻率的單位并送出相應(yīng)有效的LED指示燈點(diǎn)亮信號(hào),分離各個(gè)位的數(shù)字,包括小數(shù)點(diǎn)位置的確定。3)溢出判斷再計(jì)算出頻率后,當(dāng)頻率大于100MHz時(shí),判斷溢出,并送出有效的低電平信號(hào)使overflow指示燈點(diǎn)亮。4)結(jié)果顯示將計(jì)算的結(jié)果顯示出來(lái),分別包括MHz、KHz、Hz三種單位以及溢出的指示LED,以及在數(shù)碼管上顯示數(shù)字以及小數(shù)點(diǎn)的控制。通過(guò)位選碼選位后段選碼送顯示,以動(dòng)態(tài)顯示的方法實(shí)現(xiàn)。程序編寫(xiě)好之后,通過(guò)Keil進(jìn)行編譯、生成可執(zhí)行文件,通過(guò)在線仿真驗(yàn)證

12、設(shè)計(jì)功能。三、數(shù)據(jù)分析3.1數(shù)據(jù)分析完成整體頻率計(jì)的制作之后,使用信號(hào)源進(jìn)行測(cè)試,測(cè)試結(jié)果如表1所示實(shí)際頻率/Hz0.51.052080100300測(cè)量頻率/HZ0.499980.999984.9999819.999880.000099.9999300.000相對(duì)誤差/10-5-4-2-0.4-10-10實(shí)際頻率/KHz1.138906.2810016.420029.4260153.445712.360900測(cè)量頻率/KHZ1.138886.2809416.419429.4252153.440712.340900.000相對(duì)誤差/10-5-1.75608-0.9955262-3.65408-2

13、.71868-3.2585-2.807570實(shí)際頻率/MHz1.0234.06.2531016.23025.62429.9999測(cè)量頻率/MHZ1.022903.999986.2527610.000016.229425.623929.9990相對(duì)誤差/10-5-9.77517-0.5-3.838160-3.6968-0.3902-3.00001表1 頻率分析表由表1可知,測(cè)量數(shù)據(jù)的相對(duì)誤差的量度都在10-5上,所以該設(shè)計(jì)方案滿足要求,且測(cè)量精度很高,測(cè)量范圍很廣,具有很大的實(shí)用價(jià)值。3.2誤差來(lái)源分析3.2.1石英振蕩器帶來(lái)的誤差本次所用的石英振蕩器輸出的頻率雖然是50MHz,但是這震蕩頻率也

14、會(huì)有輕微的波動(dòng),在10-6誤差范圍內(nèi),所以也會(huì)為我們數(shù)據(jù)的測(cè)量帶來(lái)一定的誤差。3.2.2 浮點(diǎn)型運(yùn)算的舍入誤差Keil編譯器能編譯float型變量,float型變量是以8為指數(shù)、23位尾數(shù)的形式存儲(chǔ)。即其單次計(jì)算的相對(duì)誤差為±2-23=±1.192*10-8,分析此次使用的C程序,共使用了三次浮點(diǎn)型計(jì)算(包含兩次強(qiáng)制類型轉(zhuǎn)換與一次除法),帶來(lái)的相對(duì)誤差應(yīng)小于±3.576*10-8。四、實(shí)驗(yàn)結(jié)論及總結(jié)從實(shí)測(cè)誤差來(lái)看,相對(duì)誤差大約為0.004%,同時(shí)在極低或極高頻率上的相對(duì)誤差規(guī)律不同,遠(yuǎn)超過(guò)了理論上由量化誤差帶來(lái)的頻率誤差和浮點(diǎn)運(yùn)算的舍入誤差的總和,推測(cè)主要誤差是由

15、石英晶振與測(cè)試用信號(hào)源頻率的相對(duì)誤差帶來(lái)。經(jīng)查閱資料,標(biāo)定此次頻率計(jì)使用的信號(hào)源的頻率準(zhǔn)確度為±(50ppm+1Hz),忽略1Hz的絕對(duì)誤差后,相對(duì)誤差±50ppm,即±0.005%,遠(yuǎn)大于以上兩種誤差帶來(lái)的相對(duì)誤差。信號(hào)源輸出頻率的誤差已經(jīng)與比測(cè)試數(shù)據(jù)誤差范圍更大,可以得出結(jié)論:測(cè)試數(shù)據(jù)符合理論誤差的分析。本次實(shí)驗(yàn)設(shè)計(jì)了基于SOPC系統(tǒng)的數(shù)字頻率計(jì),并在實(shí)驗(yàn)板上實(shí)現(xiàn)。最終完成的頻率計(jì)擁有0.5Hz30MHz的量程,并在整個(gè)量程之內(nèi)都能獲得10-5范圍的誤差。同時(shí),受實(shí)驗(yàn)條件的限制,無(wú)法對(duì)其進(jìn)行更加準(zhǔn)確的標(biāo)定,如果使用更加準(zhǔn)確的儀器進(jìn)行標(biāo)定,可以繼續(xù)使精度提高。通

16、過(guò)此次頻率計(jì)的設(shè)計(jì)實(shí)驗(yàn),對(duì)頻率的測(cè)量方法有了更深的認(rèn)識(shí)。此外,還學(xué)習(xí)了VHDL硬件描述語(yǔ)言與51單片機(jī)C語(yǔ)言開(kāi)發(fā)的相關(guān)知識(shí)。通過(guò)對(duì)于整體SOPC系統(tǒng)的設(shè)計(jì)與對(duì)FPGA的編程實(shí)現(xiàn),培養(yǎng)了一定的對(duì)于數(shù)字系統(tǒng)的整體設(shè)計(jì)的能力與思想。五、參考文獻(xiàn)1. 姜立東. VHDL語(yǔ)言程序設(shè)計(jì)及應(yīng)用 (第二版). 北京郵電出版社 (中).2. 蔣煥文,孫續(xù). 電子測(cè)量(第二版). 中國(guó)計(jì)量出版社 (中).3. 郭天祥. 51單片機(jī)C語(yǔ)言教程. 電子工業(yè)出版社(中).4. Spartan-3 Generation User Guide (美).5.萬(wàn)福君,潘松峰,劉芳.MCS-51單片機(jī)原理、系統(tǒng)設(shè)計(jì)與應(yīng)用.清華大

17、學(xué)出版社(中).附錄附錄1:C51描述:#include <reg51.h>/包含8051的SFR寄存器定義頭文件#include <ABSACC.H>/管腳申明/數(shù)據(jù)選擇器的位選控制端口接P00、P01、P02/計(jì)數(shù)器使能信號(hào)端接P03: switchsignal/三個(gè)指示單位的LED燈:1Hz:P04、1KHz:P05、1MHZ:P06、overflow:P07/數(shù)據(jù)選擇器的輸出口接P1/6個(gè)數(shù)碼管的位選線接P20、P21、P22/計(jì)數(shù)器清零信號(hào)端接P27: clr/數(shù)碼管的段選接P3/全局變量申明 sbit switchsignal = P03;sbit clr=

18、P27;#define N 50000000/共陽(yáng)極char num = 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90; / 7-seg codes char dot = 0xFF,0x7F; / point /控制數(shù)碼管的段選和片選char buf =0,0,0,0,0,0;char dpn =0,0,0,0,0,0;char chose =0x1F,0x2F,0x37,0x3B,0x3D,0x3E;/sbit led=P04; /清零信號(hào)sbit no_in=P26;int cal_flag=0;/函數(shù)申明void disp();voi

19、d datain();void Cal(unsigned long data1,unsigned long data2);void Divi(long freq,int Mul);void Delay(unsigned int t)doTH0 = 0xFA;TL0 = 0x24;/設(shè)置定時(shí)器初值(對(duì)應(yīng)0.001s)TR0 = 1;/啟動(dòng)定時(shí)器while ( !TF0 );/等待定時(shí)器溢出TR0 = 0;/停止定時(shí)器TF0 = 0;/清除溢出標(biāo)志 while ( -t != 0 );/循環(huán)t次void main()TMOD &= 0x0F;TMOD |= 0x01;/將定時(shí)器T0設(shè)置為方

20、式1,即16位定時(shí)器for (;) datain(); disp();void disp() unsigned char i; for (i=0;i<6;i+) P3=numbufi&dotdpni; P2&=0x80; P2|=chose5-i; Delay(1); void datain()unsigned long data1,data2;unsigned char i;if(no_in=0) for(i=0;i<6;i+) dpni=0; bufi=0;else if(switchsignal=1) cal_flag=0; if(switchsignal=0

21、&&cal_flag=0) Delay(1);for (i=0;i<4;i+) P0&=0xF8; P0|=(0x03-i); data1<<=8; data1+=P1; for (i=0;i<4;i+) P0&=0xF8; P0|=(0x07-i); data2<<=8; data2+=P1; Cal(data1,data2);cal_flag=1;clr=1;Delay(1);clr=0; void Cal(unsigned long data1,unsigned long data2) float freq; int i

22、; freq=(float)data1/data2; freq=freq*50000000; if(freq<1) P0&=0x0F;P0|=0xE0;freq=freq*10000000; Divi(unsigned long)freq,7);for(i=5;i>=1;i-) bufi=bufi-1;buf0=0;dpn0=1; else if(freq<1000) P0&=0x0F;P0|=0xE0;freq=freq*10000000; Divi(unsigned long)freq,7); else if(freq<1000000) P0&

23、;=0x0F;P0|=0xD0; freq=freq*1000; Divi( unsigned long)freq,6); else if(freq<=100000000) P0&=0x0F;P0|=0xB0; Divi(unsigned long)freq,6); else P0&=0x0F;P0|=0x70; void Divi(unsigned long freq,int Mul)int i=0;int temp20;int j;unsigned long lfreq=freq; for (j=0;j<6;j+)dpnj=0;while(lfreq!=0) t

24、empi=lfreq%10; i+; lfreq=lfreq/10;if(i-Mul-1<6&&i-Mul-1>=0) dpni-Mul-1=1; for (j=0;j<6;j+)bufj=tempi-1;i-;附錄2:32位計(jì)數(shù)器VHDL描述:library IEEE;use IEEE.STD_LOGIC_1164.ALL;use IEEE.STD_LOGIC_UNSIGNED.ALL;entity Counter isPort(clk:in std_logic; clr:in std_logic; en:in std_logic; counter_out:

25、out std_logic_vector(31 downto 0);end Counter;architecture Behavioral of Counter issignal counter:std_logic_vector(31 downto 0):= (others => '0');beginprocess(clk,clr) beginif clr='1' thencounter<=(others => '0');else if en='1' thenif rising_edge(clk)thencoun

26、ter<=counter+1;end if;end if;end if;end process;counter_out<=counter;end Behavioral;附錄3:分頻器VHDL描述library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity FreDiv isport(clk:in std_logic; -50MHz時(shí)基信號(hào)輸入 clkout1:out std_logic);-產(chǎn)生2個(gè)信號(hào)輸出周期4s、50MHzend FreDiv;architecture Behavioral of FreDiv issignal tmp: int

27、eger range 1 to 100000000:=1;signal a_var:std_logic:='0'beginprocess (clk)begin-分頻器產(chǎn)生周期為3s的信號(hào)if rising_edge(clk) thenif tmp = 100000000 thena_var<= not a_var;tmp <= 1;elsetmp <= tmp + 1;end if;end if;end process;clkout1<=a_var;-clkout2<=clk;end Behavioral;附錄4:D觸發(fā)器VHDL描述library

28、 IEEE;use IEEE.STD_LOGIC_1164.ALL;entity D_Trigger is Port ( D : in STD_LOGIC; clk : in STD_LOGIC; Q : out STD_LOGIC; no_in1:out std_logic);end D_Trigger;architecture Behavioral of D_Trigger issignal biaoshi: std_logic;begin process(clk) begin if rising_edge(clk)then Q<=D;biaoshi<='1'e

29、nd if;end process;no_in1<= biaoshi;end Behavioral;附錄5:多路選擇器VHDL描述library IEEE;use IEEE.STD_LOGIC_1164.ALL;entity mux is Port ( count:in std_logic_vector(2 downto 0); data1 : in STD_LOGIC_VECTOR (31 downto 0); data2 : in STD_LOGIC_VECTOR (31 downto 0); y_out : out STD_LOGIC_VECTOR (7 downto 0);end

30、 mux;architecture Behavioral of mux isbegin process(count) begin case count is when"000"=>y_out<=data1(7 downto 0);when"001"=>y_out<=data1(15 downto 8);when"010"=>y_out<=data1(23 downto 16);when"011"=>y_out<=data1(31 downto 24);when&quo

31、t;100"=>y_out<=data2(7 downto 0);when"101"=>y_out<=data2(15 downto 8);when"110"=>y_out<=data2(23 downto 16);when"111"=>y_out<=data2(31 downto 24);when others=>NULL;end case;end process;end Behavioral;附錄6:MC8051VHDL描述library IEEE;use IEEE.

32、STD_LOGIC_1164.ALL;entity mc8051 is port ( clk : in std_logic; reset : in std_logic; addr_out_user : out STD_LOGIC_VECTOR (13 downto 0); data_in_user : in STD_LOGIC_VECTOR (7 downto 0); wr_user : out STD_LOGIC; int0_i : in std_logic; int1_i : in std_logic; all_t0_i : in std_logic; all_t1_i : in std_

33、logic; all_rxd_i : in std_logic_vector (0 downto 0); p0_i : in std_logic_vector (7 downto 0); p1_i : in std_logic_vector (7 downto 0); p2_i : in std_logic_vector (7 downto 0); p3_i : in std_logic_vector (7 downto 0); p0_o : out std_logic_vector (7 downto 0); p1_o : out std_logic_vector (7 downto 0);

34、 p2_o : out std_logic_vector (7 downto 0); p3_o : out std_logic_vector (7 downto 0); all_txd_o : out std_logic_vector (0 downto 0); le : out std_logic_vector (1 downto 0); wr_rs : out std_logic_vector (1 downto 0); ramx_data_o : out std_logic_vector (7 downto 0); end mc8051;architecture Behavioral o

35、f mc8051 iscomponent mc8051_core_onchip port ( clk : in std_logic; reset : in std_logic; addr_out_user : out STD_LOGIC_VECTOR (13 downto 0); data_in_user : in STD_LOGIC_VECTOR (7 downto 0); wr_user : out STD_LOGIC; int0_i : in std_logic; int1_i : in std_logic; all_t0_i : in std_logic; all_t1_i : in

36、std_logic; all_rxd_i : in std_logic_vector (0 downto 0); p0_i : in std_logic_vector (7 downto 0); p1_i : in std_logic_vector (7 downto 0); p2_i : in std_logic_vector (7 downto 0); p3_i : in std_logic_vector (7 downto 0); p0_o : out std_logic_vector (7 downto 0); p1_o : out std_logic_vector (7 downto

37、 0); p2_o : out std_logic_vector (7 downto 0); p3_o : out std_logic_vector (7 downto 0); all_txd_o : out std_logic_vector (0 downto 0); le : out std_logic_vector (1 downto 0); wr_rs : out std_logic_vector (1 downto 0); ramx_data_o : out std_logic_vector (7 downto 0); end component;beginuu1 : mc8051_

38、core_onchip port map ( clk =>clk, reset=>reset, addr_out_user=> addr_out_user, data_in_user=> data_in_user, wr_user=> wr_user, int0_i =>int0_i, int1_i =>int1_i, all_t0_i =>all_t0_i, all_t1_i =>all_t1_i, all_rxd_i(0) =>all_rxd_i(0), p0_i(7 downto 0)=>p0_i, p1_i(7 down

39、to 0)=>p1_i, p2_i(7 downto 0)=>p2_i, p3_i(7 downto 0)=>p3_i, p0_o(7 downto 0)=>p0_o, p1_o(7 downto 0)=>p1_o, p2_o(7 downto 0)=>p2_o, p3_o(7 downto 0)=>p3_o, all_txd_o(0) =>all_txd_o(0), le =>le, wr_rs =>wr_rs, ramx_data_o=> ramx_data_o); end Behavioral;附錄7:topVHDL描述l

40、ibrary ieee;use ieee.std_logic_1164.ALL;entity top isport (reset:in std_logic;clkbasic: in std_logic;clkbeen: in std_logic;segchose:out std_logic_vector(7 downto 0);bitchose:out std_logic_vector(5 downto 0);Led1Hz:out std_logic;Led1KHz:out std_logic;Led1MHz:out std_logic;Ledoverflow:out std_logic;ga

41、te:out std_logic;all_rxd_i : in std_logic_vector (0 downto 0); all_txd_o : out std_logic_vector (0 downto 0) -clr:out std_logic;-int0_i: in std_logic; -int1_i: in std_logic;-wr_rs_o: out std_logic_vector (1 downto 0); end top;architecture BEHAVIORAL of top issignal addr_user_r : std_logic_vector (13

42、 downto 0);signal data_userin_r : std_logic_vector (7 downto 0);signal data_userout_r : std_logic_vector (7 downto 0);signal wr_user_r : std_logic_vector (0 downto 0);signal XLXN_1: std_logic_vector (31 downto 0); -Muxsignal XLXN_2: std_logic_vector (31 downto 0); -Muxsignal XLXN_3: std_logic_vector

43、 (7 downto 0); -p0_isignal XLXN_4: std_logic_vector (7 downto 0); -p1_isignal XLXN_5: std_logic_vector (7 downto 0); -p2_isignal XLXN_6: std_logic_vector (7 downto 0); -p3_isignal XLXN_7: std_logic_vector (7 downto 0); -p0_osignal XLXN_8: std_logic_vector (7 downto 0); -p1_osignal XLXN_9: std_logic_

44、vector (7 downto 0); -p2_osignal XLXN_10: std_logic_vector (7 downto 0); -p3_osignal XLXN_11: std_logic; -計(jì)數(shù)器使能信號(hào)signal XLXN_12: std_logic; -3s周期信號(hào)-signal XLXN_13: std_logic;signal XLXN_14: std_logic; -18MHzsignal XLXN_15: std_logic; -50MHzsignal reset_r: std_logic; -resetcomponent mc8051port ( clk

45、: in std_logic; reset : in std_logic; addr_out_user : out STD_LOGIC_VECTOR (13 downto 0); data_in_user : in STD_LOGIC_VECTOR (7 downto 0); wr_user : out STD_LOGIC; int0_i : in std_logic; int1_i : in std_logic; all_t0_i : in std_logic; all_t1_i : in std_logic; all_rxd_i : in std_logic_vector (0 downt

46、o 0); p0_i : in std_logic_vector (7 downto 0); p1_i : in std_logic_vector (7 downto 0); p2_i : in std_logic_vector (7 downto 0); p3_i : in std_logic_vector (7 downto 0); p0_o : out std_logic_vector (7 downto 0); p1_o : out std_logic_vector (7 downto 0); p2_o : out std_logic_vector (7 downto 0); p3_o

47、 : out std_logic_vector (7 downto 0); all_txd_o : out std_logic_vector (0 downto 0); le : out std_logic_vector (1 downto 0); wr_rs : out std_logic_vector (1 downto 0); ramx_data_o : out std_logic_vector (7 downto 0); end component; component mc8051_ram port ( addra : in std_logic_vector (6 downto 0)

48、; dina : in std_logic_vector (7 downto 0); ena : in std_logic; wea : in std_logic_vector (0 downto 0); clka : in std_logic; douta : out std_logic_vector (7 downto 0); end component; component mc8051_ramx_mon51port (clka: IN std_logic;wea: IN std_logic_VECTOR(0 downto 0);addra: IN std_logic_VECTOR(12 downto 0);dina: IN std_logic_VECTOR(7 downto 0);douta: OUT std_log

溫馨提示

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

評(píng)論

0/150

提交評(píng)論