實驗二 頻率計_第1頁
實驗二 頻率計_第2頁
實驗二 頻率計_第3頁
實驗二 頻率計_第4頁
實驗二 頻率計_第5頁
已閱讀5頁,還剩30頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、實驗二 Xilinx_ISE 軟件使用與數(shù)字系統(tǒng)設(shè)計相關(guān)實驗一、 實驗?zāi)康? 學(xué)習(xí)并理解 利用Xilinx IP核生成應(yīng)用系統(tǒng)的原理。. 學(xué)習(xí)并理解 Xilinx DDS核和除法器核。. 學(xué)習(xí)并理解 波形發(fā)生器原理。. 學(xué)習(xí)并理解頻率計的原理。 二、 實驗條件PC機(jī)Xilinx ISE13.1 軟件USB下載線Digilent Adept軟件(2.0或更新版)Xilinx大學(xué)計劃開發(fā)板Basys2三、 預(yù)習(xí)要求閱讀實驗原理及參考資料,了解利用Xilinx IP核生成應(yīng)用系統(tǒng)的原理,學(xué)習(xí)Xilinx DDS核和除法器核實現(xiàn)的基本原理,了解Xilinx DDS核和除法器核的基本用法,學(xué)習(xí)并理解利用

2、可編程器件實現(xiàn)波形發(fā)生器與頻率計的原理,四、 實驗原理1. Xilinx IP core基本操作IP Core就是預(yù)先設(shè)計好、經(jīng)過嚴(yán)格測試和優(yōu)化過的電路功能模塊,如乘法器、FIR濾波器、PCI接口等,并且一般采用參數(shù)可配置的結(jié)構(gòu),方便用戶根據(jù)實際情況來調(diào)用這些模塊。隨著FPGA規(guī)模的增加,使用IP core完成設(shè)計成為發(fā)展趨勢。 IP Core生成器(Core Generator)是Xilinx FPGA設(shè)計中的一個重要設(shè)計工具,提供了大量成熟的、高效的IP Core為用戶所用,涵蓋了基本單元、調(diào)試與驗證、FPGA結(jié)構(gòu)與特征、標(biāo)準(zhǔn)總線接口、數(shù)字信號處理、視頻與圖像處理、汽車與工業(yè)、通信、無線等

3、大類,從簡單的基本設(shè)計模塊到復(fù)雜的處理器一應(yīng)俱全。能夠大幅度減輕設(shè)計人員的工作量,提高設(shè)計可靠性。 Core Generator最重要的配置文件的后綴是.xco,既可以是輸出文件又可以是輸入文件,包含了當(dāng)前工程的屬性和IP Core的參數(shù)信息。啟動Core Generato有兩種方法,一種是在ISE中新建IP類型的源文件,另一種是雙擊運行開始 程序 Xilinx ISE 9.1i Accessories Core Generator。限于篇幅,本節(jié)只以調(diào)用加法器IP Core為例來介紹第一種方法。 在工程管理區(qū)單擊鼠標(biāo)右鍵,在彈出的菜單中選擇New Source,選中IP類型,在File Na

4、me文本框中輸入adder(注意:該名字不能出現(xiàn)英文的大寫字母),然后點擊Next按鍵,進(jìn)入IP Core目錄分類頁面,如圖4-13所示。4.1. 直接數(shù)字式頻率合成-DDS原理直接數(shù)字式頻率合成( Direct Digital Frequency synthesis, 簡稱 DDS) 相對于直接頻率合成( DS) 和鎖相頻率合成( PLL) 等頻率合成方式具有頻率轉(zhuǎn)換時間短, 頻率,相位和幅度均可程序控制以及頻率分辨率高和穩(wěn)定度好、實現(xiàn)方便靈活等優(yōu)點。因此利用DDS 芯片或 FPGA 進(jìn)行設(shè)計,可以簡化設(shè)計流程、 提高設(shè)計效率。隨著集成電路工藝水平的飛速發(fā)展, DDS 技術(shù)已在工程中得到了廣

5、泛應(yīng)用。圖 1是 DDS的基本原理圖。在每個 fclk 到來時, 相位累加器將上一時鐘周期的累加結(jié)果和頻率增量( 頻率控制字) 進(jìn)行累加, 累加結(jié)果的高位作為正/ 余弦查表( LU T )的地址, 輸出對應(yīng)地址上的波形數(shù)據(jù) sin( n) ) 或cos(n) ) , 由外部數(shù)模轉(zhuǎn)換器 DA C針對所生成的數(shù)字信號重構(gòu)波形, 經(jīng)低通濾波后輸出平滑的模擬信號波形。DDS的輸出頻率為:f out = f clk / 2B(n ) ( 1)頻率分辨率為:f = f clk / 2B(n ) ( 2)傳統(tǒng)基于FPGA 的 DDS設(shè)計方法是利用硬件描述語言 VHDL 或 Verilog 來設(shè)計相位累加器、

6、 LUT ( 數(shù)據(jù)查表)以及控制邏輯。此方式程序代碼量較大、 設(shè)計效率偏低且使用較多 FPGA 資源?;?Xilinx 公司系列 FPGA IP CORE 的 DDS 設(shè) 計方 法, 直 接從 CoreGenerator 中調(diào)用 DDS IP CORE 即可實現(xiàn)DDS 核心功能,無需編寫內(nèi)部代碼,設(shè)計簡單方便。4.2. FPGA IP CORECore Generator 是Xilinx 公司系列FPGA 集成開發(fā)環(huán)境 ISE的子設(shè)計工具, 其將原有重復(fù)使用的設(shè)計思路或方法模塊化、 集成化、 標(biāo)準(zhǔn)化后進(jìn)行封裝 IP CORE, 供以后設(shè)計直接使用。Core Generator 中的所有 IP

7、 CORE 都是Xilinx 以及第三方合作伙伴提供并經(jīng)過驗證的, 其中有些復(fù)雜的 IP CORE 需要另行付費才能使用, 絕大部分簡單IP 只要有集成開發(fā)環(huán)境 ISE 使用授權(quán)就可以使用。為保護(hù)知識產(chǎn)權(quán), 所有 IP 都不公開內(nèi)部代碼, 只提供外部接口定義和操作技術(shù)文檔。4.3. Xilinx DDS核圖 2 是啟動 ISE Core Generator 調(diào)用的 DDS IPCORE 界面 C:Xilinx13.1ISE_DSISEcoregenipxilinxdspcomxilinxipdds_compiler_v4_0doc dds_ds558.pdfC:Xilinx13.1ISE_DS

8、ISEcoregenipxilinxdspcomxilinxipdiv_gen_v3_0docdiv_gen_ds530.pdf。在設(shè)置選項中 DDS Clock Rate( DDS時鐘)、Frequency Resolution( 頻率分辨率)、 輸出數(shù)據(jù)寬度要設(shè)定固定值; Out put Frequency( 輸出頻率) 是可編程的, 只需設(shè)置初始值。Core Generator 會根據(jù) DDS 時鐘和頻率分辨率自動配置累加器數(shù)據(jù)寬度和數(shù)據(jù)表深度。圖 3為 DDS IP CORE模塊外部接口定義。模塊定義了輸入端口(DAT A)和輸出端口( SINE、 COSINE) 、 地址端口( A)

9、 、 時鐘使能端口( CE)、 RDY 和 RFD 握手信號( 可選) 、 SCLR (同步清零端, 可選) 、 CHANNEL ( 輸出通道指示, 用于多通道 DDS) 。圖 2 ISE DDS IPCORE使用界面圖 4為單通道 DDS 時序圖。模塊在 CE 為0 ( 無效) 、 WE 為1 時, 分別將相位增量( 頻率控制字) 和初始相位( PHASE OFFSET )讀入, 在CE 有效(CE 為1 ) 后的一個時鐘周期內(nèi)輸出DDS 數(shù)據(jù),同時RDY 有效。4.3.1 頻率調(diào)節(jié)通過修改DDS 的控制字即可實現(xiàn)輸出頻率的調(diào)節(jié),本電路設(shè)計的頻率輸出范圍為 300 600 Hz, DDS 時

10、鐘 f clk為 10 MHz, 由外部有源 50 MHz晶振提供, 經(jīng)FPGA 內(nèi)部5分頻得到, DDS相位累加器寬度B (n) 為28 bits。根據(jù)式( 1 ) , 可計 算出相應(yīng)的頻率 控制字范圍為 8053110 16106110 ,由 DSP 將控制字發(fā)送給 FPGA 實現(xiàn)頻率的調(diào)節(jié)。據(jù)式( 2) 可知, 本設(shè)計的頻率分辨率為 0. 04 Hz。4.3. 2 相位調(diào)節(jié)由于本例中IP CORE 的密封性, 不能實現(xiàn)對直接累加寄存器 D2的操作, 通常通過改變累加寄存器的狀態(tài)來實現(xiàn)相位調(diào)節(jié)的方法不適合本設(shè)計??紤]到 DDS 時鐘 f clk也是影響相位的因素, 本設(shè)計采用“吞時鐘”方法

11、來實現(xiàn)對信號相位的調(diào)節(jié)。FPGA 中實現(xiàn)“吞時鐘”調(diào)相的原理如圖 5所示。用 DDS 數(shù)據(jù)輸出最高位 S INE( 7) 采用邊沿觸發(fā)方式觸發(fā)DSP 中斷 INT 0, 分頻時鐘Cclk 觸發(fā)DSP 中斷INT 1。DSP 在 INT 0相鄰兩次中斷時間內(nèi),對 Cclk進(jìn)行計數(shù)得到一個波形周期內(nèi)計數(shù)值 N360 , 此數(shù)值對應(yīng)相位為 360。0 360之間的任意相位對應(yīng)的計數(shù)值 N可以由此得到。當(dāng)調(diào)整相位時, DSP將 N寫至 FPGA 中定義的預(yù)置減法計數(shù)器, 計數(shù)器開始計數(shù), 當(dāng)計數(shù)器輸出 Qn Q0 不全為零時,與門A1輸出為0 , DDS停止運行;當(dāng)計數(shù)輸出Qn Q0全為零時, 計數(shù)器

12、停止計數(shù), 等待下一次預(yù)置值, 與門A1輸出 fclk= Cclk, DDS繼續(xù)運行, 此時波形相位已延遲了 。 本設(shè)計相位分辨率為 0. 02 。4.3. 3 幅度調(diào)節(jié)輸出波形的重構(gòu)與幅度調(diào)節(jié)是通過雙通道 DAC 芯片TLC7528實現(xiàn)的,原理圖如圖 6 所示。DAC 采用直通模式( 使能 CS信號和寫WR 信號已經(jīng)接地) , 通道 A 的輸出作為通道 B的參考電壓來控制通道 B的輸出幅度。通道A、 B 根據(jù)通道選擇信號 select 分時使用總線 DB, 其VHDL 語言描述為:DBAmp) , ( Amp為通道 A 輸出幅度值) 。通道 A 的參考電壓為+ 5 V, 電壓調(diào)節(jié)分辨率為 5

13、/ 255 &0. 02 V, 即通道 B 波形幅度控制精度為0. 02 V。4.4. 直接測頻方法常用的直接測頻方法主要有測頻法和測周期法兩種。 測頻法就是在確定的閘門時間 Tw 內(nèi),記錄被測信號的變化周期數(shù)(或脈沖個數(shù))Nx,則被測信號的頻率為:fx=Nx/Tw。 測周期法需要有標(biāo)準(zhǔn)信號的頻率 fs,在待測信號的一個周期Tx內(nèi),記錄標(biāo)準(zhǔn)頻率的周期數(shù) Ns,則被測信號的頻率為:fx=fs/Ns。 這兩種方法的計數(shù)值會產(chǎn)生1個字誤差,并且測試精度與計數(shù)器中記錄的數(shù)值 Nx或 Ns有關(guān)。為了保證測試精度,一般對于低頻信號采用測周期法;對于高頻信號采用測頻法。本實驗采用的是測頻法。首先給出閘門開啟

14、信號(預(yù)置閘門上升沿),此時計數(shù)器并不開始計數(shù),而是等到被測信號的上升沿到來時,計數(shù)器才真正開始計數(shù)。 然后預(yù)置閘門關(guān)閉信號(下降沿)到時,計數(shù)器并不立即停止計數(shù),而是等到被測信號的上升沿到來時才結(jié)束計數(shù),完成一次測量過程??梢钥闯?,實際閘門時間與預(yù)置閘門時間并不嚴(yán)格相等,但差值不超過被測信號的一個周期 設(shè)在一次實際閘門時間中計數(shù)器對被測信號的計數(shù)值為 Nx,對標(biāo)準(zhǔn)信號的計數(shù)值為 Ns。 標(biāo)準(zhǔn)信號的頻率為 fs,則被測信號的頻率為 (1)由式(1)可知,若忽略標(biāo)頻 fs的誤差,則等精度測頻可能產(chǎn)生的相對誤差為(2)其中 fxe為被測信號頻率的準(zhǔn)確值。在測量中,由于fx 計數(shù)的起停時間都是由該信

15、號的上升測觸發(fā)的,在閘門時間內(nèi)對 fx 的計數(shù)Nx 無誤差(=NxTx); 對 fs的計數(shù)Ns最多相差一個數(shù)的誤差,即|Ns|1,其測量頻率為 (3)將式(1)和(3)代入式(2),并整理得: =|Ns|/Ns1/Ns=1/(fs) 由上式可以看出,測量頻率的相對誤差與被測信號頻率的大小無關(guān),僅與閘門時間和標(biāo)準(zhǔn)信號頻率有關(guān),即實現(xiàn)了整個測試頻段的等精度測量。 閘門時間越長,標(biāo)準(zhǔn)頻率越高,測頻的相對誤差就越小。 標(biāo)準(zhǔn)頻率可由穩(wěn)定度好、精度高的高頻率晶體振蕩器產(chǎn)生,在保證測量精度不變的前提下,提高標(biāo)準(zhǔn)信號頻率,可使閘門時間縮短,即提高測試速度。 為了減少運算,本實驗將閘門時間設(shè)置為 1s,那么所測

16、頻率Fx = Nx, 即只要在1s 內(nèi)對所測信號的周期進(jìn)行計數(shù)即可.4.5 實驗步驟舉例1) 點擊WINDOWS 桌面上的圖標(biāo),雙擊打開。 2) 如果第一次使用會出現(xiàn)一個啟動說明,可取消。然后點擊左上角的標(biāo)題欄,點擊File New Project ,輸入工程名稱 freq。 3) 選擇對應(yīng)開發(fā)板的上的器件,封裝,速度等級。 4) 新建好工程后,在Project選項中選擇Add Source,添加top.v、 freq.v、 data_process1.v 、data_process2.v、test_wave.v和 2 個 IP 核gen_dds.xco 及 freq_chufaqi_2.xc

17、o。工程主要包括 4個模塊:生成測試信號模塊 test_wave、 計算最大值和最小值模塊data_process1、波形轉(zhuǎn)化模塊 data_process2以及頻率計計算并譯碼顯示模塊 freq。 系統(tǒng)管腳定義 input clk, input reset, input switch, output 6:0 segdat, output 3:0 sl, output dpTest_wave模塊:生成三角波和利用DDS生成正弦波,位數(shù)為12bit (可自行設(shè)置); 利用系統(tǒng)提供的IP核DDS生成gen_dds.xco,在輸入時鐘信號clk,復(fù)位信號reset與控制選擇信號switch的控制下生

18、成正弦波與三角波;信號輸出為12位數(shù)據(jù)data_out。Freq 模塊:生成閘門信號1s,對輸入波形的頻率做計數(shù)計算,并譯碼顯示。在輸入時鐘信號clk,復(fù)位信號reset的控制下, 對輸入信號clk_test進(jìn)行計數(shù),生成計數(shù)信號en,生成閘門信號1s-second,在閘門信號內(nèi)對輸入波形的頻率計數(shù)進(jìn)行處理,產(chǎn)生計數(shù)結(jié)果,并生成輸出信號en_out與數(shù)碼管顯示控制信號3:0 sl,與數(shù)碼管7段分段數(shù)據(jù)控制信號6:0 segdat 。 input clk, input reset,input clk_test,output en_out, output 3:0 sl,output 6:0 seg

19、dat注意: 置低有效!Data_process1 模塊:計算輸入波形的最大值和最小值; 在輸入時鐘信號clk,復(fù)位信號reset, 輸入使能信號enable的控制下,對輸入信號11:0 data_in進(jìn)行計數(shù),在當(dāng)前閘門周期,產(chǎn)生輸入波形的最大值11:0data_max_out和最小值11:0 data_min_out作為輸出信號供給data_process2模塊使用; input clk, input reset, input enable, input 11:0 data_in, output reg11:0 data_max_out, output reg11:0 data_min_o

20、utData_process2 模塊: input clk, input reset, input enable, input 11:0 data_in, input 11:0 data_max, input 11:0 data_min, output test_clk將輸入波形的數(shù)據(jù)做處理,轉(zhuǎn)化為脈沖波的形式以便計數(shù);在輸入時鐘信號clk,復(fù)位信號reset, 輸入使能信號enable的控制下,對輸入信號11:0 data_in根據(jù)輸入數(shù)據(jù) 11:0 data_max和 11:0 data_min產(chǎn)生輸出信號test_clk供給Freq 模塊使用; 5) 利用系統(tǒng)提供的IP核DIVIDER生

21、成gen_dds.xco和freq_chufaqi_2.xco, 6) 添加完文件我們可以從原文件窗口看到被添加的文件,如下圖所示。7) 進(jìn)行綜合后可得整個工程的電路模塊連接圖。4.6 實驗仿真為了更快地仿真,將閘門信號設(shè)為設(shè)為 0.01s,輸入波形正弦波其頻率為1000hz,則輸出頻率為10hz。4.6.1 Test_wave模塊生成三角波和利用DDS生成正弦波,位數(shù)為12bitData_process1 模塊(計算最大值和最小值)將模塊 U3 的信號添加到波形窗口,然后讓仿真時間達(dá)到 20ms以上,如上圖所示,當(dāng)enable=1時,對輸入數(shù)據(jù) data_in進(jìn)行比較處理,尋找最大值和最小值

22、;當(dāng) enable=0且 en=1時,將最大值傳遞給data_max_out,將最小值傳遞給 data_min_out,可得最大值為 4094,最小值為 2.4.6.2 data_process2(生成測試脈沖信號 test_clk )最大值 data_max=4094,最小值 data_min=2,則 data_average= data_max+ data_min )/2,data_average=2048。當(dāng) enable=0時,當(dāng) data_in = data_average,en = 1;否則,en=0。從而,將輸入波形轉(zhuǎn)化為脈沖波(方波)的形式,以便計數(shù)。4.6.3 freq 模塊

23、(計算頻率并譯碼顯示)當(dāng) second=0時且 en=1時,fosc_flash信號開始進(jìn)行計數(shù)+1。因為閘門信號我們在仿真時設(shè)置為 0.01s,輸入波形的頻率為 1000hz,所以得到的理論值應(yīng)該是 10hz。如上圖所示,fosc_flash 計數(shù)到 10 則停止計數(shù),說明結(jié)果是正確的。然后當(dāng) second=1時,將 fosc_flash信號傳遞給 fosc信號。接著,通過一個掃描信號 count111:10不斷將 fosc信號的值傳遞給 disp_dat以做譯碼,并顯示在 4位數(shù)碼管上。由上圖可得,最終譯碼的結(jié)果是正確的。4.7 創(chuàng)建約束 1) 添加top.ucf文件到工程中,其部分管腳約

24、束如下所示:NET clk LOC = B8; #MCLK 100m/50m/25m#NET clk LOC = M6; #UCLK NET clk TNM_NET = clk; /?TIMESPEC TS_clk = PERIOD clk 20 ns HIGH 50 %; /?NET reset LOC = P11; #SW0 NET switch LOC = L3; #SW1 /?NET sl3 LOC = K14; #AN3 NET sl2 LOC = M13; #AN2NET sl1 LOC = J12; #AN1NET sl0 LOC = F12; #AN0NET dp LOC =

25、N13; #DPNET segdat0 LOC = M12; #CGNET segdat1 LOC = L13; #CFNET segdat2 LOC = P12; #CENET segdat(3) LOC = N11; #CD NET segdat4 LOC = N14; #CCNET segdat5 LOC = H12; #CBNET segdat6 LOC = L14; #CA# PlanAhead generated IO constraints NET dp IOSTANDARD = LVCMOS33; NET segdat0 IOSTANDARD = LVCMOS33;NET se

26、gdat1 IOSTANDARD = LVCMOS33;NET segdat2 IOSTANDARD = LVCMOS33;NET segdat3 IOSTANDARD = LVCMOS33;NET segdat4 IOSTANDARD = LVCMOS33;NET segdat5 IOSTANDARD = LVCMOS33;NET segdat6 IOSTANDARD = LVCMOS33;NET sl0 IOSTANDARD = LVCMOS33;NET sl1 IOSTANDARD = LVCMOS33;NET sl2 IOSTANDARD = LVCMOS33;NET sl3 IOST

27、ANDARD = LVCMOS33;NET clk IOSTANDARD = LVCMOS33;NET reset IOSTANDARD = LVCMOS33; 2) 點擊top.vhd頂層文件,直接雙擊process窗口里的generate programming file,生成top.bit下載文件 4.8 下載實驗及結(jié)果 1) 通過Adept軟件把設(shè)計的 bit文件下載到目標(biāo)器件中。2) 下載成功后,將 SW0 和 SW1 都撥在 LOW 的位置,就可以在開發(fā)板的數(shù)碼管上看到顯示“1000”。注意,在下載到板子上之前,將閘門信號改為 1s。五、 實驗內(nèi)容與步驟1. 學(xué)習(xí)及驗證實驗項目:按

28、照實驗指導(dǎo)書4.5節(jié)所示步驟,建立工程項目,生成DDS及除法器核,進(jìn)行時序仿真,驗證所設(shè)計功能,然后進(jìn)行編譯,正確生成所需下載.bit類型文件。下載配置文件到實驗板BASYS2上,觀察驗證實驗現(xiàn)象。2. 設(shè)計實驗項目 功能要求:基本要求1) 使用Digilent Basys 開發(fā)板可輸出2KHZ正弦波信號(仿真),2) 輸出正弦波信號的同時,可輸出同頻方波信號,并用示波器驗證。3) 可對該信號進(jìn)行計數(shù),并在Digilent Basys 開發(fā)板上顯示頻率計數(shù)結(jié)果(精確到Hz)。發(fā)揮部分1) 可通過撥碼或按鍵輸入指定所生成輸出信號的頻率;2) 增加輸出波形的路數(shù)(各路之間可手動設(shè)置同步關(guān)系);3)

29、 實現(xiàn)輸出信號的DA轉(zhuǎn)換(附加必要外圍電路);4) 增加輸出波形的種類(如三角波、鋸齒波等)。5) 幅度可調(diào);6) 輸出信號類型、頻率、幅度的手動設(shè)置輸入控制;7) 可測量外部輸入到Digilent Basys 開發(fā)板允許的電壓信號的頻率(注意校驗信號幅度峰值3.3V與注意共地與連接關(guān)系!),并在Digilent Basys 開發(fā)板上顯示頻率計數(shù)結(jié)果。8) 利用Digilent Basys 開發(fā)板VGA輸出接口實現(xiàn)波形發(fā)生器與頻率計用戶界面。9) 增加輸入計數(shù)信號波形的路數(shù);10) 提高所設(shè)計實現(xiàn)的波形發(fā)生器與頻率計的量程與精度;11) 用戶自定義波形的輸入與產(chǎn)生12) 其他功能與性能。 設(shè)計

30、步驟與要求:1) 簡要說明所實現(xiàn)系統(tǒng)的基本原理。2) 在Xilinx ISE13.1 軟件中,編寫輸入所設(shè)計的源程序文件。3) 對源程序進(jìn)行編譯及仿真分析(注意合理設(shè)置,以便能夠在驗證邏輯的基礎(chǔ)上盡快得出仿真結(jié)果)。4) 輸入管腳約束文件,對設(shè)計項目進(jìn)行編譯與邏輯綜合,生成下載所需.bit類型文件。5) 在Basys2實驗板上下載所生成的.bit文件,觀察驗證所設(shè)計的電路功能。附錄:生成DDS核流程(1) 點擊“project- New Source”,輸入要生成的核的名稱 gen_dds。(2) 點擊“next”,找到 DDS核(3) 點擊 next并點擊 finish,出現(xiàn)DDS Comp

31、iler的參數(shù)編輯界面選擇50MHz時鐘;通道數(shù)為1(多通道用途;用法?)參數(shù)選擇選擇為系統(tǒng)參數(shù)(?)Spurious Free Dynamic Range =70dB(?) 決定輸出位寬;頻率分辨率取0.004Hz(?,好像0.4Hz所得結(jié)果不行?)決定相位位寬;這兩個系統(tǒng)參數(shù)配合選擇確定系統(tǒng)數(shù)據(jù)位寬!(如何配合確定?)(4)設(shè)置好相應(yīng)參數(shù),時鐘為50m,輸出數(shù)據(jù)的位數(shù)為 12 位,點擊next(5) 對相移和 offset做設(shè)置,并輸出正弦波,點擊 next(6) 可設(shè)置生成 DDS 的類型和輸出指示信號,用戶可自行設(shè)置。點擊 next(7) 設(shè)置生成波形的頻率為1KHz(即0.001MH

32、z),點擊 nexttop.vmodule top( input clk, input reset, input switch,/選擇正弦波與三角波?;頻率不同;1000 v.s. 1526? output 6:0 segdat, output 3:0 sl,/數(shù)碼管選擇信號; output dp ); wire 11:0 data_temp,data_max_temp,data_min_temp;/initial data_temp = 12h0;/initial data_max_temp = 12h0;/initial data_min_temp = 12h1;wire test_clk

33、,enable;assign dp = 1b1;test_wave U1 (/?-層次化設(shè)計方式?;單元定義? .clk(clk), /?管腳定義? .reset(reset), .switch(switch), /波形選擇; .data_out(data_temp)/所產(chǎn)生的正弦波或三角波; ); freq U2 ( .clk(clk), .reset(reset), .clk_test(test_clk), /來自data_process2 .en_out(enable), .sl(sl), .segdat(segdat) ); data_process1 U3 ( .clk(clk),

34、.reset(reset), .enable(enable), .data_in(data_temp), .data_max_out(data_max_temp), .data_min_out(data_min_temp) ); data_process2 U4 ( .clk(clk), .reset(reset), .enable(enable), .data_in(data_temp), .data_max(data_max_temp), .data_min(data_min_temp), .test_clk(test_clk) );Endmoduletest_wave.vmodule t

35、est_wave( input clk, input reset, input switch, output 11:0 data_out/所產(chǎn)生的正弦波或三角波; );reg 15:0 data_temp;/計數(shù)器?wire 11:0 sine_data;reg 11:0 data_out_temp;wire rdy;gen_dds U6 (/引用IP核DDS單元產(chǎn)生所需正弦信號;.clk(clk), / input clk.rdy(rdy), / ouput rdy.sine(sine_data); / ouput 11 : 0 sinealways (posedge clk or pose

36、dge reset)begin if (reset) data_temp = 16h0; else data_temp = data_temp +1;/正常時鐘下計數(shù);endalways (posedge clk or posedge reset)begin if (reset) data_out_temp = 12h0; else if (switch) data_out_temp = data_temp14:3;/?開關(guān)為1取三角波? else data_out_temp = sine_data;/開關(guān)為0取sine?endassign data_out = data_out_temp;/

37、數(shù)據(jù)輸出; endmoduleDDS IP核文檔參見:C:Xilinx13.1ISE_DSISEcoregenipxilinxdspcomxilinxipdds_compiler_v4_0docdds_ds558.pdfTable 1: Core Signal Pinout NameDirectionDescriptionCLKInputRising edge clockREG_SELECT(1)InputAddress select for writing DATA to the phase increment (PINC) and the phase offset (POFF) regis

38、ters. When REG_SELECT = 0, PINC registers are selected. When REG_SELECT = 1, POFF registers are selected. This pin will only exist if both POFF and PINC are programmable.ADDRM-1:0(1)InputThis bus is used to address up to 16 channels. The number of bits in ADDR is 1 for 2 channels, 2 for 3 or 4 chann

39、els, 3 for 5 to 8 channels, and 4 for 9 to 16 channels. This bus will exist if either PINC or POFF is programmable and there are multiple channels. WE(1)InputWrite enable - active High. Enables a write operation to the PINC or POFF registers. CE(1)InputClock enable - active High. CE must be High dur

40、ing normal core operation, but it is not required to be active during a write access to the PINC or POFF registers.DATAN-1:0 (1)InputTime shared data bus. The DATA port is used for supplying values to the PINC or POFF memories. The value input to DATA describes a phase angle. DATA port width (N) is

41、determined by the Phase Width parameter, selected or displayed on the GUI. If the bus is N bits wide, a full circle is cut into 2N phase segments, so the ranges 0, 2N -1 and -2N-1, 2N-1 -1 both describe a full circle. Because of this it makes no difference if this port is considered signed or unsign

42、ed.Both PINC and POFF registers are fixed point. So, if lower precision values are all that is required for one or the other, these values must be right-justified and input to the upper bits of the DATA bus. For example, if DATA width is 8 bits, but POFF only needs to be 1/8, 2/8, 3/8, etc., the 3 b

43、its used to describe the phase offset must be bits 7:5 of the DATA port.SCLR(1)InputSynchronous clear - active High. When SCLR is asserted, the accumulator and channel counter are reset. Depending upon the Latency of the core, RDY may also deasserted (further details given later). The outputs of the

44、 core, CHANNEL, SINE, COSINE and PHASE_OUT are undefined following SCLR until RDY is active. SCLR does not reset PINC or POFF registers, and a write to these registers may occur when SCLR is active.PINC_INN-1:0(1)InputStreaming input for Phase Increment. This input allows DDS output frequency to be

45、modulated.POFF_INN-1:0(1)InputStreaming input for Phase Offset. This input allows DDS output phase to be modulated.PHASE_INN-1:0(1)InputFor use when the DDS is configured as SIN/COS LUT only. This is the phase input to the SIN/COS LUT.RDY(1)OutputOutput data ready - active High. Indicates when the o

46、utput samples are valid.RFD(1)OutputReady for data - active High. RFD is a dataflow control signal present on many Xilinx LogiCORE cores. In the context of the DDS, it is supplied only for consistency with other LogiCORE cores. This optional port is always tied High.CHANNELM-1:0(1)OutputChannel inde

47、x. Indicates which channel is currently available at the output when the DDS is configured for multi-channel operation. This is an unsigned signal. Its width is determined by the number of channels. It is qualified by RDY.SINEP-1:0(1)OutputSine time-series. Port width (P) is determined by the Output Width parameter.COSINEP-1:0(1)OutputCosine time-ser

溫馨提示

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

最新文檔

評論

0/150

提交評論