直接數字頻率合成器的_第1頁
直接數字頻率合成器的_第2頁
直接數字頻率合成器的_第3頁
直接數字頻率合成器的_第4頁
直接數字頻率合成器的_第5頁
已閱讀5頁,還剩29頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

直接數字頻率合成器的第一頁,共三十四頁,編輯于2023年,星期三11.1系統(tǒng)設計要求1971年,美國學者J.Tierncy、C.M.Reader和B.Gold提出了以全數字技術從相位概念出發(fā)直接合成所需波形的一種新的頻率合成原理。隨著技術和水平的提高,一種新的頻率合成技術——直接數字頻率合成(DDS,DirectDigtalSynthesis)技術得到了飛速發(fā)展。第二頁,共三十四頁,編輯于2023年,星期三

DDS技術是一種把一系列數字形式的信號通過DAC轉換成模擬形式的信號合成技術,目前使用最廣泛的一種DDS方式是利用高速存儲器作查找表,然后通過高速DAC輸出已經用數字形式存入的正弦波。第三頁,共三十四頁,編輯于2023年,星期三

DDS技術具有頻率切換時間短(<20ns),頻率分辨率高(0.01Hz),頻率穩(wěn)定度高,輸出信號的頻率和相位可以快速程控切換,輸出相位可連續(xù),可編程以及靈活性大等優(yōu)點,它以有別于其他頻率合成方法的優(yōu)越性能和特點成為現代頻率合成技術中的姣姣者。DDS廣泛用于接受機本振、信號發(fā)生器、儀器、通信系統(tǒng)、雷達系統(tǒng)等,尤其適合跳頻無線通信系統(tǒng)。

第四頁,共三十四頁,編輯于2023年,星期三11.2系統(tǒng)設計方案

11.2.1DDS的工作原理圖11.1是DDS的基本原理圖,頻率控制字M和相位控制字分別控制DDS輸出正(余)弦波的頻率和相位。DDS系統(tǒng)的核心是相位累加器,它由一個累加器和一個N位相位寄存器組成。每來一個時鐘脈沖,相位寄存器以步長M增加。第五頁,共三十四頁,編輯于2023年,星期三圖11.1DDS基本原理圖設正弦查找表ROM的地址數為,頻率控制字為M,輸入信號頻率為(周期:),輸出信號頻率為(周期:)。依據上述電路,ROM得到的實際地址數為,輸出信號的周期為:,即:,因而,輸出信號的頻率為:

第六頁,共三十四頁,編輯于2023年,星期三

11.2.2DDS的FPGA實現設計根據圖11.1,并假定相位控制字為0,這時DDS的核心部分相位累加器的FPGA的設計可分為如下幾個模塊:相位累加器adder32b、相位寄存器reg32b、相位調制器adder10b、同步寄存器reg10b、正弦查找表sin_rom,其內部組成框圖如圖11.2所示。圖中,輸入信號有時鐘輸入CLK,頻率控制字FWORD,相位控制字PWORD,輸出信號為FOUT。第七頁,共三十四頁,編輯于2023年,星期三圖11.2DDS內部組成框圖第八頁,共三十四頁,編輯于2023年,星期三首先利用MATLAB或C語言編程對正弦函數進行采樣;然后對采樣數據進行二進制轉換,其結果作為查找表地址的數值。用MATLAB語言編寫的正弦函數數據采集程序如下:第九頁,共三十四頁,編輯于2023年,星期三CLEARTIC;T=2*PI/1024;t=[0:T:2*pi];y=255*sin(t);round(y);用C語言編寫的正弦函數數據采樣程序”ROMDATA”如下:#include"stdio.h"#include"math.h"Main(){intI;Floats;第十頁,共三十四頁,編輯于2023年,星期三

For(i=0;i<1024;i++){s=sin(actan(1)*8*i/1024);Printf("%d,%d;\n",(int)((s+1)*1023/2));}}兩個程序運行之后所得結果是一致的。在DOS下輸入:ROMDATA>rom_data.mif生成ROM數據文件。第十一頁,共三十四頁,編輯于2023年,星期三11.3主要VHDL源程序(有改動)11.3.1相位累加器adder32b的VHDL源程序--adder32b.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYadder32bISPORT(a:INSTD_LOGIC_VECTOR(31DOWNTO0);b:INSTD_LOGIC_VECTOR(31DOWNTO0);s:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDadder32b;ARCHITECTUREARTOFadder32bISBEGIN s<=a+b;ENDART;第十二頁,共三十四頁,編輯于2023年,星期三11.3.2相位寄存器reg32b的VHDL源程序--reg32b.VHD(REG2.VHD與reg32b.VHD相似)LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYreg32bISPORT(load:INSTD_LOGIC;din:INSTD_LOGIC_VECTOR(31DOWNTO0);dout:OUTSTD_LOGIC_VECTOR(31DOWNTO0));ENDreg32b;ARCHITECTUREARTOFreg32bISBEGINPROCESS(load,din)BEGIN IFload'EVENTandload='1'THENdout<=din;endif;ENDPROCESS;ENDART;第十三頁,共三十四頁,編輯于2023年,星期三11.3.1相位調制器adder10b的VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYadder10bISPORT(a:INSTD_LOGIC_VECTOR(9DOWNTO0);b:INSTD_LOGIC_VECTOR(9DOWNTO0);s:OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDadder10b;ARCHITECTUREARTOFadder10bISBEGIN s<=a+b;ENDART;第十四頁,共三十四頁,編輯于2023年,星期三11.3.1同步寄存器reg10b的VHDL源程序LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYreg10bISPORT(load:INSTD_LOGIC;din:INSTD_LOGIC_VECTOR(9DOWNTO0);dout:OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDreg10b;ARCHITECTUREARTOFreg10bISBEGINPROCESS(load,din)BEGIN IFload'EVENTandload='1'THENdout<=din;endif;ENDPROCESS;ENDART;第十五頁,共三十四頁,編輯于2023年,星期三11.3.3正弦查找表ROM的VHDL源程序--lpm_rom0.VHDLIBRARYieee;USEieee.std_logic_1164.all;LIBRARYaltera_mf;USEaltera_mf.all;ENTITYlpm_rom0IS PORT (address:INSTD_LOGIC_VECTOR(9DOWNTO0); clock :INSTD_LOGIC; q:OUTSTD_LOGIC_VECTOR(9DOWNTO0));ENDlpm_rom0;第十六頁,共三十四頁,編輯于2023年,星期三ARCHITECTURESYNOFlpm_rom0IS SIGNALsub_wire0 :STD_LOGIC_VECTOR(9DOWNTO0); COMPONENTaltsyncram GENERIC( clock_enable_input_a :STRING; clock_enable_output_a :STRING; init_file :STRING; intended_device_family :STRING; lpm_hint :STRING; lpm_type :STRING; numwords_a :NATURAL; operation_mode :STRING;第十七頁,共三十四頁,編輯于2023年,星期三

outdata_aclr_a :STRING; outdata_reg_a :STRING; widthad_a :NATURAL; width_a :NATURAL; width_byteena_a :NATURAL); PORT( clock0 :INSTD_LOGIC; address_a :INSTD_LOGIC_VECTOR(9DOWNTO0); q_a :OUTSTD_LOGIC_VECTOR(9DOWNTO0) ); ENDCOMPONENT;第十八頁,共三十四頁,編輯于2023年,星期三

BEGIN q<=sub_wire0(9DOWNTO0); altsyncram_component:altsyncram GENERICMAP( clock_enable_input_a=>"BYPASS", clock_enable_output_a=>"BYPASS", init_file=>"rom_data.mif", intended_device_family=>"CycloneII", lpm_hint=>"ENABLE_RUNTIME_MOD=NO", lpm_type=>"altsyncram", numwords_a=>1024,第十九頁,共三十四頁,編輯于2023年,星期三

operation_mode=>"ROM", outdata_aclr_a=>"NONE", outdata_reg_a=>"CLOCK0", widthad_a=>10, width_a=>10, width_byteena_a=> ) PORTMAP( clock0=>clock, address_a=>address, q_a=>sub_wire0);ENDSYN;第二十頁,共三十四頁,編輯于2023年,星期三11.3.4系統(tǒng)的整體組裝DDS的圖形設計第二十一頁,共三十四頁,編輯于2023年,星期三11.4系統(tǒng)仿真/硬件驗證

11.4.1系統(tǒng)的有關仿真系統(tǒng)的有關仿真如圖11.3~11.5所示,請讀者自己對仿真結果進行分析。從仿真結果可以看出,對應模塊的設計是正確的。第二十二頁,共三十四頁,編輯于2023年,星期三圖11.5整個系統(tǒng)DDS的仿真結果第二十三頁,共三十四頁,編輯于2023年,星期三

11.4.2系統(tǒng)的硬件驗證

DDS的輸入頻率控制字K有8位數據,輸出數據Q為32位,并且ROM需1024個存儲單元,需要占用的系統(tǒng)比較大。但我們所擁有的實驗開發(fā)系統(tǒng)所配的適配板的資源可能有限,如我們在進行該實驗時所用的芯片為ALTERA公司的EP2C35F484I8N芯片,這時我們直接進行硬件驗證會遇到困難。因此我們需要進行變通,想辦法進行硬件驗證或部分驗證。第二十四頁,共三十四頁,編輯于2023年,星期三在本設計的硬件驗證過程中,針對實驗開發(fā)系統(tǒng)所提供的輸入、輸出資源的限制及芯片邏輯資源的限制,我們采取了如下變通辦法:(1)在DDS的前端增加一個頻率、相位控制字輸入模塊,可以通過開關設置頻率控制字及相位控制字,用來改變輸出頻率與出相位。VHDL源程序如下:第二十五頁,共三十四頁,編輯于2023年,星期三--DATAINPUT.VHDLIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITYDATAINPUTISPORT(clk:INSTD_LOGIC;--計數時鐘=1HzINH,INL:INSTD_LOGIC;--A,B數輸入使能

sel:INSTD_LOGIC;--A,B數輸入選擇:1=輸入A數;0=輸入B數

DisplayInput:OUTSTD_LOGIC_VECTOR(7DOWNTO0);--輸入數據顯示輸出

AOUT,BOUT:OUTSTD_LOGIC_VECTOR(7DOWNTO0));--輸出ENDDATAINPUT;第二十六頁,共三十四頁,編輯于2023年,星期三

ARCHITECTUREbehavOFDATAINPUTISsignala1,a2,b1,b2:STD_LOGIC;signalAOUT1,BOUT1:STD_LOGIC_VECTOR(7DOWNTO0);BEGINPROCESS(sel)--時鐘分配輸出選擇,sel=1,時鐘分配給A計數器,同時顯示A數據;sel=0,時鐘分配給B計數器,同時顯示B數據;

BEGINifsel='1'THEN a1<=INLandclk;b1<=INHandclk;DisplayInput<=AOUT1; else a2<=INLandclk;b2<=INHandclk;DisplayInput<=BOUT1; endif;ENDPROCESS;第二十七頁,共三十四頁,編輯于2023年,星期三

PROCESS(b1)--A數計數器高位

variableq1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINifb1'EVENTANDb1='1'THEN q1:=q1+1; endif; AOUT1(7DOWNTO4)<=q1;ENDPROCESS;PROCESS(a1)--A數計數器低位

variableq2:STD_LOGIC_VECTOR(3DOWNTO0);BEGINifa1'EVENTANDa1='1'THEN IFQ2="1111"THENq2:="0001";ELSE q2:=q2+1;endif; endif;第二十八頁,共三十四頁,編輯于2023年,星期三 AOUT1(3DOWNTO0)<=q2;ENDPROCESS;PROCESS(b2)--B數計數器高位 variableq1:STD_LOGIC_VECTOR(3DOWNTO0);BEGINifb2'EVENTANDb2='1'THEN q1:=q1+1; endif; BOUT1(7DOWNTO4)<=q1;ENDPROCESS;第二十九頁,共三十四頁,編輯于2023年,星期三

PROCESS(a2)--B數計數器低位 variableq2:STD_L

溫馨提示

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

評論

0/150

提交評論