九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

基于fpga的直接數(shù)字頻率合成器的設(shè)計(jì) 本科畢業(yè)設(shè)計(jì)

  • 資源ID:29105204       資源大?。?span id="24d9guoke414" class="font-tahoma">1.14MB        全文頁數(shù):55頁
  • 資源格式: DOC        下載積分:15積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要15積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號:
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

基于fpga的直接數(shù)字頻率合成器的設(shè)計(jì) 本科畢業(yè)設(shè)計(jì)

河南理工大學(xué)畢業(yè)設(shè)計(jì)(論文)說明書畢業(yè)設(shè)計(jì)論文基于FPGA的直接數(shù)字頻率合成器的設(shè)計(jì)摘要 在頻率合成領(lǐng)域,常用的頻率合成技術(shù)有直接模擬合成、模擬鎖相環(huán)、小數(shù)分頻鎖相環(huán)等,直接數(shù)字頻率合成(Direct Digital Frequency Synthesis ,DDFS,簡稱DDS)是近年來的新的頻率合成技術(shù)。本文介紹了直接數(shù)字頻率合成器的基本組成及設(shè)計(jì)原理,給出了基于FPGA的具體設(shè)計(jì)方案及編程實(shí)現(xiàn)方法。仿真結(jié)果表明,該設(shè)計(jì)簡單合理,使用靈活方便,通用性好,可寫入各種FPGA芯片,最高可將頻率提高100萬倍。具有良好的性價(jià)比。關(guān)鍵詞 直接數(shù)字頻率合成器(DDS) FPGA Design of direct digital frequency synthesizer based on FPGAAbstract In Frequency domain, the common Synthesis technology has Direct simulation, phase lock loop simulation, decimal Frequency and phase lock loop, Direct Digital Frequency Synthesis (as some DDFS, Digital, referred to as spurious bio-synthesis) in recent years is the new Frequency Synthesis technology. The structure and principles of Direct Digital Frequency Synthesizer is introduced. Also a detailed design and the method of program realization based on FPGA are introduced. The result of simulation shows that the design is simple and feasible, convenient and flexible, high universality, writeable various FPGA chip, the highest frequency can be 100 million times. Ratiofor quality to price.Keywords Direct Digital frequency Synthesizer(DDS) FPGA前言在頻率合成領(lǐng)域,常用的頻率合成技術(shù)有直接模擬合成、模擬鎖相環(huán)、小數(shù)分頻鎖相環(huán)等,直接數(shù)字頻率合成(DDS)是近年來的新的頻率合成技術(shù)。DDS以穩(wěn)定度高的參考時鐘為參考源,通過精密的相位累加器和數(shù)字信號處理,再通過高速D/A變換器產(chǎn)生所需的數(shù)字波形,這個數(shù)字濾波經(jīng)過一個模擬濾波器后,得到最終的模擬信號波形。DDS是產(chǎn)生高精度、快速頻率變換、輸出波形失真小的優(yōu)先選用技術(shù)。隨著可編程邏輯器件的飛速發(fā)展,使用FPGA(FieldProgrammable Gate Array)設(shè)計(jì)DDS系統(tǒng)成為一種很好的選擇,由于FPGA現(xiàn)場可編程,設(shè)計(jì)復(fù)雜或者簡單系統(tǒng)完全從實(shí)際需要出發(fā),通過重寫RAM/ROM數(shù)據(jù),可以做到任意波形輸出和動態(tài)波形輸出,這是其他方法所無法比擬的。本章提出了一種基于FPGA的直接數(shù)字頻率合成設(shè)計(jì)方法,并利用比例乘法器,將頻率分辨率提高到驚人的程度。目錄1 DDS原理11.1 直接模擬(DAS)11.2 間接式頻率合成(PLL)11.3 直接數(shù)字頻率合成(DDS)22 系統(tǒng)設(shè)計(jì)62.1微控制器接口模塊82.2 相位累加寄存器82.3雙端口RAM83模塊設(shè)計(jì)與實(shí)現(xiàn)153.1 微控制器接口模塊153.1.1分頻寄存器(FWORD1-FWORD4)163.1.2控制寄存器(DDSCR)163.1.3數(shù)據(jù)輸入寄存器(DATA)173.2 比例乘法器模塊313.3 相位累加器模塊373.4 雙端口RAM模塊39致 謝48參考文獻(xiàn)49511 DDS原理 顧名思義頻率合成技術(shù),就是能從一個高穩(wěn)定和準(zhǔn)確度的標(biāo)準(zhǔn)頻率中產(chǎn)生千百萬個同一高穩(wěn)定度和準(zhǔn)確度的頻率。頻率合成技術(shù)廣泛地應(yīng)用于通信、導(dǎo)航、雷達(dá)、儀器儀表、軍事裝備等領(lǐng)域、現(xiàn)代的電子系統(tǒng)對頻率合成器提出越來越高的要求,主要表現(xiàn)在:轉(zhuǎn)換速度快、頻段寬、步進(jìn)間隔小、雜散小、體積小、重量輕、功耗低等。隨著大規(guī)模集成電路的發(fā)展,頻率合成技術(shù)日趨完善,目前,主要有以下幾種方式。1.1 直接模擬(DAS)直接模擬合成技術(shù)是通過對標(biāo)準(zhǔn)參考頻率進(jìn)行加、減、乘、除運(yùn)算而合成一系列相干頻率,其換頻率速度主要由電路部件響應(yīng)速度決定,相位噪聲指標(biāo)也還不錯。主要技術(shù)問題是雜波干擾,由于直接模擬合成引入了大量的混頻器、倍頻器、分頻器,這些非線性的部件使得雜波抑制相當(dāng)困難、在實(shí)際應(yīng)用中,這種技術(shù)的電路結(jié)構(gòu)比較復(fù)雜,體積、重量、成本等方面缺點(diǎn)大大限制其應(yīng)用、1.2 間接式頻率合成(PLL)間接式頻率合成技術(shù)重要有鑒頻器、環(huán)路濾波器、壓控振蕩器、分頻器等4個基本部件構(gòu)成,如下圖1-1所示。鎖相環(huán)是一個相位誤差反饋控制系統(tǒng),它比較輸入信號和壓控振蕩器經(jīng)分頻后輸出信號之間的相位差,從而產(chǎn)生誤差控制電壓來調(diào)整壓控制振蕩器的輸出頻率,以達(dá)到與輸入信號倍頻的關(guān)系。鎖相環(huán)的頻率轉(zhuǎn)換速度與環(huán)路濾波器的帶寬有關(guān),環(huán)路帶寬越寬,轉(zhuǎn)換速度越快,而環(huán)路帶寬又取決于鑒相器頻率。才用這種技術(shù)產(chǎn)生的頻譜較純,系統(tǒng)體積小、重量輕、成本低、易集成,具有廣泛的應(yīng)用前景。但是,它也有一個致命的缺點(diǎn),就是在高分辨率情況下,換頻速度較慢。分頻器鑒相器壓控振蕩器低通濾波器合成頻率參考頻率圖 1-1 鎖相環(huán)電路基本結(jié)構(gòu)為了解決高分辨率于高鑒相頻率之間的矛盾,可以采用多環(huán)技術(shù)或者小數(shù)分頻技術(shù)。如果要求分辨率很高,那么采用多環(huán)PLL就顯得電路結(jié)構(gòu)復(fù)雜、成本高、調(diào)試?yán)щy;而采用小數(shù)分頻技術(shù),可以輕易解決高分辨率問題,但是小數(shù)分頻的主要問題是“尾數(shù)難抑”,國內(nèi)外對這方面的研究不少,但是還沒有徹底解決。1.3 直接數(shù)字頻率合成(DDS) DDS的概念最初是有美國學(xué)者J.Tierncy,C.M.Rader 和 B.Gold 提出的,它是以全數(shù)字技術(shù),從相位概念出發(fā)直接合成所需波形的一種新的頻率合成技術(shù),典型的DDS系統(tǒng)由相位累加器,波形查找表(ROM/RAM),D/A,低通濾波器(Low Pass Filter簡稱LPF)構(gòu)成,如圖 1-2所示。低通濾波器m相位累加器波形查找表D/A圖 1-2 DDS原理框圖圖中,m為相位累加器步長,也有資料稱為頻率控制字,是參考頻率,是合成頻率。其系統(tǒng)的核心是相位累加器,它由一個累加器和一個n位相位寄存器組成(也可用帶有輸出鎖存的累加器代替),如圖1-3所示。每來一個時鐘脈沖,相位累加器以步長m累加,其結(jié)果作為波形查找表地址。當(dāng)相位累加器加滿量程,就會產(chǎn)生一次溢出,完成一個周期性的動作,這個周期是合成信號的一個周期,換句話說,累加器的溢出頻率也就是DDS的合成信號頻率。相位累加器的輸出數(shù)據(jù)作為波形查找表地址,進(jìn)行波形的相位幅值的轉(zhuǎn)換,即可在給定的時間上確定輸出波形的抽樣幅值,如圖1-4所示。n位的尋址RAM/ROM相當(dāng)于把正弦信號離散成具有個樣值的序列,以二進(jìn)制數(shù)值形式存儲在個地址單元,按照地址不同輸出相應(yīng)的信號幅值。D/A轉(zhuǎn)換器的作用是把合成的數(shù)字波形轉(zhuǎn)換成模擬波形。離散量化幅度序列S(n)經(jīng)D/A轉(zhuǎn)換后變成了階梯波S(t),值得注意的是,頻率合成系統(tǒng)對D/A轉(zhuǎn)換器的分辨率有一定要求,D/A轉(zhuǎn)換器的分辨率越高,合成的階梯波S(t)臺階數(shù)越多,輸出的波形的精度也就越高,減少了量化失真。寄存器累加器步長m參考時鐘相位碼序列圖 1-3 相位累加器波形存儲器(ROM/RAM)幅度量化序列數(shù)據(jù)相位嗎序列地址圖 1-4 相位幅度變換原理圖 低通濾波器的作用不容忽視。對D/A輸出的階梯波S(t)進(jìn)行頻譜分析,可知S(t)中除了主頻外,還存在分布在,2兩邊處的非諧波分量。因此,為了取出主頻,必須在D/A轉(zhuǎn)換器的輸出端接入截止頻率為的低通濾波器。DDS具有以下特點(diǎn):(1) 頻率分辨率高。DDS的頻率分辨率在固定時,取決于相位累加器的位數(shù)n,只要n足夠大,理論上就可以獲得相應(yīng)的分辨率精度,這是傳統(tǒng)方法難以實(shí)現(xiàn)的。(2) 頻率變換速度快。在DDS中,一個頻率的建立時間通常取決于濾波器的帶寬。影響因素為相位累加器,ROM/RAM的工藝結(jié)構(gòu),D/A轉(zhuǎn)換器及它信號處理過程中可能產(chǎn)生的時延。其中,信號處理的時延與時鐘周期相關(guān)。由于DDS中不要相位反饋控制,頻率建立及切換快,與頻率分辨率,頻譜純度相互獨(dú)立,明顯優(yōu)于PLL。(3) DDS中相位改變是線性過程。數(shù)字相位累加器是優(yōu)良的線性數(shù)字增值發(fā)生器。因此,DDS的相位誤差主要依賴于時鐘的相位特性,相位誤差小。另外,DDS的相位是連續(xù)變化的,形成的信號具有良好的頻譜特性,這是傳統(tǒng)的直接頻率合成法所無法實(shí)現(xiàn)的。(4)輸出頻率范圍寬。 理論上,DDS輸出的頻率范圍在,實(shí)際上,考慮到低通濾波器的設(shè)計(jì),為,而FPGA的時鐘頻率可達(dá)到100MHz,因此,利用FPGA,可以實(shí)現(xiàn)輸出頻率范圍很寬的信號。根據(jù)前面的講述,可以得到一下公式: 其中,是輸出波形的周期,n是相位累加器位數(shù),m是相位累加器步長,是輸入波形周期。是參考頻率,是輸出波形頻率,是最小分辨率,是最高合成頻率。根據(jù)奈奎斯特(Nyquist)定理,即采樣頻率必須不小于被采樣信號的最高頻率,否則原信號不能被恢復(fù),所以當(dāng)時,得到最高合成頻率,當(dāng)然,這僅是理論值,實(shí)際上與D/A精度、轉(zhuǎn)換速度,濾波網(wǎng)絡(luò)性能密切相關(guān),一般取,例如,晶振時鐘為100MHz時,可知輸出合成波頻率將出現(xiàn)在較寬頻段上。2 系統(tǒng)設(shè)計(jì) 本章所需要設(shè)計(jì)的直接數(shù)字頻率合成系統(tǒng)與前面介紹的DDS原理完全一致。從實(shí)現(xiàn)方式上看,有如下特色:(1) 引入8級級聯(lián)的BCD比例乘法器,將頻率分辨率提高100萬倍!(2) 利用FPGA內(nèi)部嵌入式存儲單元,在FPGA內(nèi)部集成了2Kbit容量雙端口RAM,降低了硬件難度,提高了系統(tǒng)可靠性。從前面的介紹中可以知道,增加相位累加器的位數(shù)n,可以提高頻率分辨率,最低輸出頻率可達(dá)Hz、mHz甚至是Hz,即DDS的最低合成頻率接近零頻。有人計(jì)算過,如果為50MHz,那么當(dāng)n為48位時,其分辨率可達(dá)179nHz。但是,增加相位累加器的位數(shù)n將使加法算法過于龐大,消耗驚人的FPGA資源。何不從入手,對實(shí)現(xiàn)任意可分頻,利用降低來換取高分辨率呢?事實(shí)證明,使用比例乘法器是可行的,經(jīng)過8級BCD比例乘法器的分頻,分頻比達(dá)到,例如,晶振頻率為100MHz,經(jīng)過分頻可以是Hz任意整數(shù)頻率,整個分頻模塊僅消耗65個宏單元?,F(xiàn)代FPGA內(nèi)部集成了存儲單元,這些是寶貴的存儲資源,通常只有通過利用開發(fā)商提供的知識產(chǎn)權(quán)核(IP CORE)才能使用,這些知識產(chǎn)權(quán)核經(jīng)過嚴(yán)格的測試和優(yōu)化,可以在特定器件上發(fā)揮最大效能,利用這些模塊,就是將優(yōu)秀EDA開發(fā)人員的硬件成果嵌入到自己設(shè)計(jì)中,縮短了開發(fā)時間,提高了效率。本章設(shè)計(jì)的參數(shù)選取如下。由相位累加器位數(shù)n=8,存儲容量2568=2048 bit,晶振頻率為100MHz,可知:(1) 頻率分辨率 Hz(2) 最高合成頻率MHZ前面講過,這僅是理論值,實(shí)際中與具體電路(D/A,濾波器)有關(guān)。(3) 相位步進(jìn) 本設(shè)計(jì)按照模塊化層次化設(shè)計(jì)方法,根據(jù)結(jié)構(gòu)功能,可以劃分出3個功能模塊,即微控制器接口模塊、相位累加器模塊、雙端口RAM模塊,其連接關(guān)系如圖2-1所示。圖 2-12.1 微控制器接口模塊微控制器接口模塊向微控制器提供友好,方便的操作接口,MCU可通過片選(CS)、地址選通(AS)、數(shù)據(jù)選通(DS)、數(shù)據(jù)總線和地址總線來操作其內(nèi)部寄存器。微控制器接口模塊內(nèi)部實(shí)現(xiàn)了6個寄存器,其中,4個位分頻寄存器,1個位控制寄存器,1個位數(shù)據(jù)輸入寄存器。此外,8級比例乘法器組成的分頻模塊以端口映射的方式例化在控制器接口模塊中,對外輸出參考時鐘頻率fclk。2.2 相位累加寄存器相位累加寄存器是系統(tǒng)的核心模塊,使用經(jīng)過分頻器分頻后的時鐘,范圍相當(dāng)寬廣。相位累加器輸出相位碼序列,作為查尋地址送入雙端口RAM,相應(yīng)地,還有讀使能和讀時鐘信號。相位累加步長m可取,n=0,1,2, ,7這里,為了減小失真,一般m取值不超過322.3 雙端口RAM 利用ALtera提供的Mega Wizard Plug-In Manager定制了數(shù)據(jù)線和地址線寬度均為8位,存儲容量為2048bit的雙端口RAM,獨(dú)立的兩套讀/寫接口,有興趣的讀者不妨使用Mega Wizard Plug-In Manager定制其他的存儲器,看看哪種存儲器使用起來最方便。接口信號說明如下:RESET,系統(tǒng)復(fù)位,低電平有效;CS,片選信號,低電平有效;AS,地址選通信號,低電平有效;DS,數(shù)據(jù)選通信號,低電平有效;DATABUS,數(shù)據(jù)總線;寬度為8位;ADDRBUS,地址總線,寬度為3位。頂層實(shí)體的VHDL程序如下:- dds.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY dds ISPORT(- 與微控制器接口信號- 全局復(fù)位reset: INSTD_LOGIC;- 全局時鐘clk: INSTD_LOGIC;- 地址總線addrbus: INSTD_LOGIC_VECTOR(2 DOWNTO 0);- 數(shù)據(jù)總線databus: INSTD_lOGIC_VECTOR(7 DOWNTO 0);- 片選cs: INSTD_LOGIC;- 地址選通as: INSTD_LOGIC;- 數(shù)據(jù)選通ds: INSTD_LOGIC;- 數(shù)據(jù)輸出,送至D/A轉(zhuǎn)換器q: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END dds;ARCHITECTURE rtl of dds IS- 元件說明- 接口模塊COMPONENT interfaceport(- 與微控制器接口信號- 全局復(fù)位reset: INSTD_LOGIC;- 全局時鐘clk: INSTD_LOGIC;- 地址總線addrbus: INSTD_LOGIC_VECTOR(2 DOWNTO 0);- 數(shù)據(jù)總線databus: INSTD_lOGIC_VECTOR(7 DOWNTO 0);- 片選cs: INSTD_LOGIC;- 地址選通as: INSTD_LOGIC;- 數(shù)據(jù)選通ds: INSTD_LOGIC;- 與內(nèi)部模塊接口信號- DDS掃頻使能ddsen: OUTSTD_LOGIC;- 經(jīng)比例乘法器分頻后的時鐘fclk: OUT STD_LOGIC;- 步長m: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 數(shù)據(jù)輸出,送至雙端口RAMdataout: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 地址輸出,送至雙端口RAMaddrout: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 雙端口RAM寫使能wren: OUTSTD_LOGIC;- 雙端口RAM寫時鐘wrclock: OUTSTD_LOGIC);END COMPONENT;- 雙端口RAMCOMPONENT ramdpPORT(wren: IN STD_LOGIC;wrclock: INSTD_LOGIC;rden: IN STD_LOGIC;rdclock: INSTD_LOGIC;data: INSTD_LOGIC_VECTOR(7 DOWNTO 0);wraddress:INSTD_LOGIC_VECTOR(7 DOWNTO 0);rdaddress:INSTD_LOGIC_VECTOR(7 DOWNTO 0);q: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;- 相位累加器COMPONENT phasesumPORT(- 全局復(fù)位reset: INSTD_LOGIC;- 分頻時鐘fclk: INSTD_LOGIC;- 掃頻使能ddsen: INSTD_LOGIC;- 相位累加步長m: INSTD_LOGIC_VECTOR(7 DOWNTO 0);- 讀RAM時鐘rdclock: OUTSTD_LOGIC;- 讀RAM使能rden: OUTSTD_LOGIC;- 讀RAM地址rdaddress:OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;- 信號說明SIGNAL ddsen: STD_LOGIC;SIGNAL fclk: STD_LOGIC;SIGNAL wren: STD_LOGIC;SIGNAL wrclock: STD_LOGIC;SIGNAL rdclock: STD_LOGIC;SIGNAL rden: STD_LOGIC;SIGNAL dataout: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL addrout: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL m: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL rdaddress: STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN- 元件例化 -INTER_CONTROL: interfacePORT MAP(- 與微控制器接口信號- 全局復(fù)位reset=> reset,- 全局時鐘clk=> clk,- 地址總線addrbus=> addrbus,- 數(shù)據(jù)總線databus=> databus,- 片選cs=> cs,- 地址選通as=> as,- 數(shù)據(jù)選通ds=> ds,- 與內(nèi)部模塊接口信號- DDS掃頻使能ddsen=> ddsen,- 經(jīng)比例乘法器分頻后的時鐘fclk=> fclk,- 步長m=> m,- 數(shù)據(jù)輸出,送至雙端口RAMdataout=> dataout,- 地址輸出,送至雙端口RAMaddrout=> addrout,- 雙端口RAM寫使能wren=> wren,- 雙端口RAM寫時鐘wrclock=> wrclock);- 雙端口RAMDP_RAM: ramdpPORT MAP(wren=> wren, wrclock=> wrclock,rden=> rden,rdclock=> rdclock,data=> dataout,wraddress=>addrout,rdaddress=>rdaddress,q=> q);- 相位累加器PHASE_ADDER: phasesumPORT MAP(- 全局復(fù)位reset=> reset,- 分頻時鐘fclk=> fclk,- 掃頻使能ddsen=> ddsen,- 相位累加步長m=> m,- 讀RAM時鐘rdclock=> rdclock,- 讀RAM使能rden=> rden,- 讀RAM地址rdaddress=>rdaddress);END rtl; 圖 2-2是頂層實(shí)體仿真波形,由圖中可以看到,首先,向地址為000的寄存器寫數(shù)據(jù)00010000,表示將晶振頻率10分頻,然后向地址為100的寄存器寫數(shù)據(jù)10000000,表示相位累加器使能,隨后,輸出波形。讀者可能暫時還不能理解整個系統(tǒng)的工作原理,這里只需了解系統(tǒng)的輪廓即可,后面會詳細(xì)介紹各模塊的設(shè)計(jì)與實(shí)現(xiàn)。3 模塊設(shè)計(jì)與實(shí)現(xiàn)如前面所述,頂層實(shí)體由3個模塊構(gòu)成:微控制器接口模塊、相位累加器模塊及雙端口RAM模塊。由8個比例乘法器級聯(lián)組成的分頻器模塊以端口定義的形式例化在微控制器模塊中,屬于后者的子模塊,但是由于比例乘法器的本設(shè)計(jì)中所發(fā)揮的作用很大,加之相關(guān)資料少之又少,為了加深讀者的領(lǐng)悟,決定單獨(dú)作為一節(jié)。3.1 微控制器接口模塊微控制器接口向8位、16位、32位微處理器級微控制器提供友好的操作接口,如圖3-1所示。其輸入引腳前面已經(jīng)介紹過,這里不再重復(fù)。現(xiàn)在,介紹一下輸出引腳。圖 3-1ddsen:相位累加器使能,有效時為高電平;fclk:分頻時鐘,作為相位累加器的輸入時鐘;m:相位累加步長,m=,n=0,1,2, ,7;dataout:數(shù)據(jù)輸出,作為RAM輸入數(shù)據(jù);addrout:地址輸出,作為RAM輸入地址;wern:RAM寫使能信號;wrclock:RAM寫時鐘信號。前面已經(jīng)提到,DDS內(nèi)部實(shí)現(xiàn)了6個寄存器,其中,4個位分頻寄存器,1個位控制寄存器,1個位數(shù)據(jù)輸入寄存器,這些寄存器的地址在表3-1中。表 3-1 寄存器地址名稱訪問屬性地址FWORD1Write000FWORD2Write001FWORD3Write010FWORD4Write011DDSCRWrite100DATAWrite1013.1.1 分頻寄存器(FWORD1-FWORD4)以FWORD1為例,如表3-2所示。分頻寄存器用于存儲分頻系數(shù),分頻模塊由8個BCD比例乘法器構(gòu)成。每一個比例乘法器需要4位二進(jìn)制碼來確定分頻系數(shù),48=32 bit,也就是4 byte。FWORD1對應(yīng)第一級和第二級比例乘法器,F(xiàn)WORD2對應(yīng)第三級和第四級比例乘法器,以此類推,F(xiàn)WORD4對應(yīng)第七級和第八級比例乘法器。表3-2 分頻寄存器FWORD1BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT03.1.2 控制寄存器(DDSCR)如表3-3所示,控制寄存器只有4位是有意義的,ddsen為相位累加器使能,當(dāng)其為有效時(邏輯1),相位累加器工作,輸出波形。m2、m1、m0是相位累加步長控制字,由于系統(tǒng)設(shè)計(jì)中規(guī)定相位累加步長m=,n=0,1,2, ,7,所以使用3位表示他們足夠了,對應(yīng)的累加步長值如表3-4所示。表 3-3 控制寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0DDSEN0000M2M1M0表 3-4 m2m1m0與相位累加步長m對照表m2m1m0m00010012010401181001610132110641111283.1.3 數(shù)據(jù)輸入寄存器(DATA)如表3-5所示,微控制器通過數(shù)據(jù)輸入寄存器緩沖,將數(shù)據(jù)寫入雙端口RAM中。復(fù)位時,地址為0,每向DATA寄存器寫一次數(shù)據(jù),地址自動加1,直到地址寫滿,自動清零,準(zhǔn)備下一次寫入過程。這意味著可以重復(fù)多次寫波形數(shù)據(jù),從而實(shí)現(xiàn)任意波形輸出和動態(tài)波形輸出的功能。表 3-5 控制寄存器BIT7BIT6BIT5BIT4BIT3BIT2BIT1BIT0DATA7DATA6DATA5DATA4DATA3DATA2DATA1DATA0本模塊通過片選信號、地址選通信號、數(shù)據(jù)選通信號來鎖定地址和數(shù)據(jù),當(dāng)片選信號CS和地址選通信號AS有效時,根據(jù)地址總線內(nèi)容使能對應(yīng)寄存器。在檢測到數(shù)據(jù)選通信號DS下降沿后,在系統(tǒng)時鐘的上升沿將數(shù)據(jù)寫入選中的寄存器中。微控制器接口模塊的狀態(tài)機(jī)如圖3-2所示:(1) IDLE。當(dāng)系統(tǒng)上電或復(fù)位后,微控制器接口處于此狀態(tài)。此狀態(tài)等待片選信號有效和AS信號的下降沿,當(dāng)條件滿足時,狀態(tài)機(jī)切換到STROBE狀態(tài)。(2) STROBE。當(dāng)片選信號有效時,狀態(tài)機(jī)在此狀態(tài)等待,直到DS信號出現(xiàn)下降時沿,切換到DATA_LAUNCH狀態(tài);當(dāng)片選信號無效時,狀態(tài)機(jī)切換到IDLE狀態(tài)。(3) DATA_LAUNCH。 此狀態(tài)只持續(xù)1個時鐘周期,在時鐘上升沿寫入數(shù)據(jù),返回IDLE狀態(tài)。圖 3-2 微控制器接口狀態(tài)機(jī)文件interface內(nèi)部的各進(jìn)程說明:第一個進(jìn)程延遲信號,目的是檢測信號跳變。第二個進(jìn)程是狀態(tài)寄存器,同步狀態(tài)。第三個進(jìn)程是主狀態(tài)機(jī)。第四個進(jìn)程是寫RAM狀態(tài)機(jī)。第五個進(jìn)程根據(jù)地址譯碼,使能對應(yīng)寄存器。第六個進(jìn)程根據(jù)使能,寫對應(yīng)寄存器。描述微控制器接口模塊的VHDL程序如下:- interface.vhdLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY interface ISport(- 與微控制器接口信號- 全局復(fù)位reset: INSTD_LOGIC;- 全局時鐘clk: INSTD_LOGIC;- 地址總線addrbus: INSTD_LOGIC_VECTOR(2 DOWNTO 0);- 數(shù)據(jù)總線databus: INSTD_lOGIC_VECTOR(7 DOWNTO 0);- 片選cs: INSTD_LOGIC;- 地址選通as: INSTD_LOGIC;- 數(shù)據(jù)選通ds: INSTD_LOGIC;- 與內(nèi)部模塊接口信號- DDS掃頻使能ddsen: OUTSTD_LOGIC;- 經(jīng)比例乘法器分頻后的時鐘fclk: OUT STD_LOGIC;- 步長m: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 數(shù)據(jù)輸出,送至雙端口RAMdataout: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 地址輸出,送至雙端口RAMaddrout: OUTSTD_LOGIC_VECTOR(7 DOWNTO 0);- 雙端口RAM寫使能wren: OUTSTD_LOGIC;- 雙端口RAM寫時鐘wrclock: OUTSTD_LOGIC);END interface;ARCHITECTURE rtl of interface IS- 元件說明- 8個比例乘法器級聯(lián)COMPONENT fre_divPORT(- 輸入時鐘FIN: IN STD_LOGIC;- 分頻系數(shù)BCD1: INSTD_LOGIC_VECTOR(3 DOWNTO 0); BCD2: INSTD_LOGIC_VECTOR(3 DOWNTO 0);BCD3: INSTD_LOGIC_VECTOR(3 DOWNTO 0); BCD4: INSTD_LOGIC_VECTOR(3 DOWNTO 0);BCD5: INSTD_LOGIC_VECTOR(3 DOWNTO 0); BCD6: INSTD_LOGIC_VECTOR(3 DOWNTO 0);BCD7: INSTD_LOGIC_VECTOR(3 DOWNTO 0); BCD8: INSTD_LOGIC_VECTOR(3 DOWNTO 0);- 分頻時鐘FOUT: OUTSTD_LOGIC);END COMPONENT;- 常數(shù)聲明CONSTANT RESET_ACTIVE : STD_LOGIC := 0;CONSTANT FWORD1_ADDR : STD_LOGIC_VECTOR(2 downto 0) := "000" CONSTANT FWORD2_ADDR : STD_LOGIC_VECTOR(2 downto 0) := "001" CONSTANT FWORD3_ADDR : STD_LOGIC_VECTOR(2 downto 0) := "010" CONSTANT FWORD4_ADDR : STD_LOGIC_VECTOR(2 downto 0) := "011"CONSTANT DDSCR_ADDR: STD_LOGIC_VECTOR(2 downto 0) := "100"CONSTANT DATA_ADDR: STD_LOGIC_VECTOR(2 downto 0) := "101"- 信號聲明SIGNAL as_delay: STD_LOGIC; SIGNAL ds_delay: STD_LOGIC;SIGNAL bcd8: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd7: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd6: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd5: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd4: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd3: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd2: STD_LOGIC_VECTOR(3 downto 0);SIGNAL bcd1: STD_LOGIC_VECTOR(3 downto 0);- 狀態(tài)機(jī)定義TYPE STATE_TYPE IS (IDLE,STROBE,DATA_LAUNCH); - 狀態(tài)機(jī)信號SIGNAL prs_state, next_state : STATE_TYPE;- 狀態(tài)機(jī)定義TYPE WR_STATE_TYPE IS (wr_idle,wr_high,wr_low); - 狀態(tài)機(jī)信號SIGNAL wr_state : WR_STATE_TYPE;SIGNAL DDSCR_reg: STD_LOGIC_VECTOR(7 downto 0);SIGNAL wrclock_reg: STD_LOGIC;SIGNAL wren_reg: STD_LOGIC;SIGNAL ramaddress: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ramdata: STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL fout: STD_LOGIC;- FWORD1寄存器使能SIGNAL f1_en : STD_LOGIC;- FWORD2寄存器使能SIGNAL f2_en: STD_LOGIC;- FWORD3寄存器使能SIGNAL f3_en: STD_LOGIC;- FWORD4寄存器使能SIGNAL f4_en: STD_LOGIC;- DDSCR 寄存器使能SIGNAL cr_en: STD_LOGIC;- DDSDATA寄存器使能SIGNAL data_en: STD_LOGIC;BEGIN- Delayed Signals Detection Process- 檢測延遲信號 Delay_Signals_Proc:PROCESS(reset,clk)BEGINIF(reset = RESET_ACTIVE) THEN as_delay <= 1; ds_delay <= 1;ELSIF rising_edge(clk) THEN as_delay <= as; ds_delay <= ds;END IF;END PROCESS;- Status Register Process- 狀態(tài)寄存器- 同步狀態(tài)State_Register_Proc: PROCESS (clk, reset)BEGINIF reset = RESET_ACTIVE THENprs_state <= IDLE;ELSIF rising_edge(clk) THENprs_state <= next_state;END IF;END PROCESS;- Next Status Logic Process- 次態(tài)邏輯 Next_Logic_Proc: PROCESS (prs_state, as,as_delay,ds,ds_delay,cs)BEGINnext_state <= prs_state;CASE prs_state IS - 空閑狀態(tài) (00) -WHEN IDLE =>- 等待as的下降沿 IF cs = 0 THEN - 片選,低有?IF as = 0 AND as_delay = 1 THEN next_state <= STROBE;END IF;END IF; - 選通狀態(tài) (01) -WHEN STROBE =>- 等待ds的下降沿IF cs = 0 THENIF ds = 0 AND ds_delay = 1 THEN next_state <= DATA_LAUNCH; ELSIF ds = 1 THEN next_state <= STROBE; END IF;ELSE next_state <= IDLE;END IF; - 讀/寫狀態(tài) (10) -WHEN DATA_LAUNCH =>- 回到空閑狀態(tài) next_state <= IDLE;END CASE;END PROCESS;- wr state Process- wr信號狀態(tài)機(jī)Wr_Logic_Proc: PROCESS (clk,reset)BEGINIF reset = RESET_ACTIVE THENwren_reg <= 0;wrclock_reg <= 0;ramaddress <= "00000000"wr_state <= wr_idle;ELSIF rising_edge(clk) THEN CASE wr_state IS- 空閑狀態(tài) (00) -WHEN wr_idle =>wren_reg <= 0;wrclock_reg <= 0;IF prs_state = DATA_LAUNCH THENIF data_en = 1 THENwren_reg <= 1;ramdata <= databus;wr_state <= wr_high;END IF;END IF;- 低狀態(tài) (01) -WHEN wr_high =>- 產(chǎn)生wr上升沿wrclock_reg <= 1;wr_state <= wr_low; - 高狀態(tài) (10) -WHEN wr_low =>wrclock_reg <= 0;- 計(jì)算RAM地址IF ramaddress = "11111111" THENramaddress <= "00000000"ELSEramaddress <= ramaddress + 1;END IF;- 回到空閑狀態(tài) wr_state <= wr_idle;END CASE;END IF;END PROCESS;- 寫雙端口RAM的信號-wrclock <= wrclock_reg;wren <= wren_reg;dataout <= ramdata;addrout <= ramaddress;- ADDR_DECODE Process- 地址譯碼Addr_Decode_Proc: PROCESS (reset, clk, addrbus, cs, as)BEGINIF reset = RESET_ACTIVE THEN f1_en <= 0;f2_en <= 0;f3_en <= 0;f4_en <= 0;cr_en <= 0;data_en<=0; - 在時鐘的上升沿同步ELSIF rising_edge(clk) THEN IF cs = 0 AND as = 0 THEN - 根據(jù)地址,使能對應(yīng)寄存器 CASE addrbus IS WHEN FWORD1_ADDR =>f1_en <= 1;f2_en <= 0;f3_en <= 0;f4_en <= 0;cr_en <= 0;data_en<=0; WHEN FWORD2_ADDR =>f1_en <= 0;f2_en <= 1;f3_en <= 0;f4_en <= 0;cr_en <= 0;data_en<=0; WHEN FWORD3_ADDR =>f1_en <= 0;f2_en <= 0;f3_en <= 1;f4_en <= 0;cr_en <= 0;data_en<=0; WHEN FWORD4_ADDR =>f1_en <= 0;f2_en <= 0;f3_en <= 0;f4_en <= 1;cr_en <= 0;data_en<=0;WHEN DDSCR_ADDR =>f1_en <= 0;f2_en <= 0;f3_en <= 0;f4_en <= 0;cr_en <= 1;data_en<=0; WHEN DATA_ADDR =>f1_en <= 0;f2_en <= 0;f3_en <= 0;f4_en <= 0;cr_en <= 0;data_en<=1; WHEN others => f1_en <= 0;f2_en <= 0;f3_en <= 0;f4_en <= 0;cr_en <= 0;data_en<=0; END CASE; ELSEf1_en <= 0;f2_en <= 0;f3_en <= 0;f4_en <= 0;cr_en <= 0;data_en<=0; END IF;END IF;END PROCESS;-

注意事項(xiàng)

本文(基于fpga的直接數(shù)字頻率合成器的設(shè)計(jì) 本科畢業(yè)設(shè)計(jì))為本站會員(仙***)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!