0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于ROM的任意波形發(fā)生器(DDS)

FPGA學(xué)習(xí)交流 ? 2018-06-18 19:24 ? 次閱讀

設(shè)計(jì)背景:

DDS(Direct Digital Synthesizer)直接數(shù)字式頻率合成器,是一種新型頻率合成技術(shù),具有低成本、低功耗、高分辨率、相對(duì)帶寬大和頻率轉(zhuǎn)換時(shí)間短等優(yōu)點(diǎn)。較容易實(shí)現(xiàn)頻率、相位以及幅度的數(shù)控調(diào)制,廣泛應(yīng)用在電信與電子儀器和通信領(lǐng)域。波形發(fā)生器是一種數(shù)據(jù)信號(hào)發(fā)生器,在調(diào)試硬件時(shí),常常需要加入一些信號(hào),以觀察電路工作是否正常。加入的信號(hào)有:正弦波、三角波、方波和任意波形等。

設(shè)計(jì)原理:

相位(phase)是對(duì)于一個(gè)波,特定的時(shí)刻在它循環(huán)周期中的位置:一種它是否在波峰、波谷或它們之間的某點(diǎn)的標(biāo)度。相位描述信號(hào)波形變化的度量,通常以度 (角度)作為單位,也稱作相角。 當(dāng)信號(hào)波形以周期的方式變化,波形循環(huán)一周即為360°。那么相位可調(diào)也可以簡(jiǎn)單的理解為:改變初始相位。

頻率,是單位時(shí)間內(nèi)完成周期性變化的次數(shù),是描述周期運(yùn)動(dòng)頻繁程度的量,常用符號(hào)fν表示,單位為秒分之一,符號(hào)為s-1。頻率可調(diào)也就是改變單位時(shí)間內(nèi)完成周期性變化的次數(shù)。

本設(shè)計(jì)采用DDS技術(shù)設(shè)計(jì)相位頻率可調(diào)的波形發(fā)生器,已經(jīng)知道了相位和頻率可調(diào)分別代表什么,那么接下來(lái)就要知道怎樣依靠DDS技術(shù)實(shí)現(xiàn)波形發(fā)生器,并且相位和頻率可以調(diào)控。DDS的基本結(jié)構(gòu)如下圖所示:

image.png

根據(jù)上圖可以看出:DDS主要由相位累加器、波形數(shù)據(jù)表(ROM)、D/A轉(zhuǎn)換器構(gòu)成,本設(shè)計(jì)暫時(shí)不涉及D/A轉(zhuǎn)換部分。相位累加器位寬為N,波形數(shù)據(jù)表的大小為2^P,累加器的高P位則用于尋址波形數(shù)據(jù)表,即ROM,從ROM中輸出的數(shù)據(jù)則是產(chǎn)生的波形。如果累加器在系統(tǒng)時(shí)鐘(CLOCK)的作用下,以步進(jìn)為M累加直至溢出,則M為頻率控制字(即圖中的FWORD),相位控制字(PWORD)則作為累加器的輸入初始值。這里的累加器,也可以理解為ROM的地址發(fā)生器。

上段所述我們可具體理解為:改變地址的初值(PWORD)就可以改變初始的相位,由于我們?cè)O(shè)計(jì)中,ROM的數(shù)據(jù)為256,所以PWORD的值在0~255之間,PWORD= 256*(初始相位/360度)。

我們?cè)O(shè)計(jì)的系統(tǒng)時(shí)鐘(CLOCK)為50MHz,周期為20ns,而正弦波被分成了256個(gè)點(diǎn),波形發(fā)生器的頻率就是195.31KHz。若想要輸出別的頻率,則可通過(guò)改變輸出的點(diǎn)的個(gè)數(shù),即改變有效地址的數(shù)量。我們用位寬為N位的累加器,假設(shè)FWORD為1,要產(chǎn)生一個(gè)完整波形的周期則為20ns*2^N,則產(chǎn)生波形的頻率=系統(tǒng)時(shí)鐘/2^N,即Fout = Fclk/2^N,如果FWORD為B,每次步進(jìn)的間隔提高了B倍,所以計(jì)滿一個(gè)波形周期的時(shí)間就縮小了B倍,即頻率就提高了B倍。則波形頻率的公式為:Fout = B*(Fclk/2^N)。之后我們?nèi)±奂悠鞯母?位,去尋址波形數(shù)據(jù),對(duì)應(yīng)點(diǎn)的還是個(gè)數(shù)一樣的。本設(shè)計(jì)中我們將N取為32,當(dāng)B=1,F(xiàn)out約為0.012Hz,0.012就相當(dāng)于最小精度,所以我們就實(shí)現(xiàn)了頻率為0.012倍數(shù)的調(diào)制,但因?yàn)?.012值很小了,所以可以說(shuō)基本實(shí)現(xiàn)了所有頻率的調(diào)制。

設(shè)計(jì)架構(gòu)圖:

根據(jù)上述的原理圖分析,本設(shè)計(jì)的架構(gòu)如下圖:

image.png

架構(gòu)圖中的端口功能描述如下表:

image.png

dds_addr模塊是實(shí)現(xiàn)相位累加器的模塊,這里用參數(shù)來(lái)調(diào)制FWORD和PWORD的值,累加之后,將地址高八位(addr_out)輸出到rom模塊,從而產(chǎn)生波形數(shù)據(jù)。

設(shè)計(jì)代碼:

在具體寫(xiě)代碼之前,我們需要先制作載有波形數(shù)據(jù)的mif文件,這時(shí)需要一個(gè)小軟件(Mif_Maker2010),軟件的鏈接如下:

鏈接:http://pan.baidu.com/s/1gfzcOzL密碼:ietw

具體操作步驟如下

打開(kāi)Mif_Maker2010,在查看中點(diǎn)擊全局參數(shù),如下圖:

image.png

將全局參數(shù)設(shè)置如下圖:數(shù)據(jù)長(zhǎng)度為256,數(shù)據(jù)位寬為8,數(shù)據(jù)格式為無(wú)符號(hào)10進(jìn)制,采樣頻率為1000。

image.png

點(diǎn)擊設(shè)定波形,選擇想要生成的波形,這里我們以正弦波為例,如需要其他波形,都可進(jìn)行修改:

image.png

之后點(diǎn)擊保存,則可生成mif文件,這里我們命名為sin.mif。打開(kāi)sin.mif后,如下圖所示:

image.png

dds_addr模塊代碼:

這里我們以初始相位為180度,頻率為5KHz為例:

0moduledds_addr (clk,rst_n,addr_out);

1

2inputclk,rst_n;//系統(tǒng)時(shí)鐘復(fù)位

3output[7:0]addr_out;//輸出的地址,對(duì)應(yīng)到ROM內(nèi)的數(shù)據(jù)

4

5parameterN =32;

6parameterPWORD =128;//相位控制字 (x/360)*256

7parameterFWORD =429497;//頻率控制字F_out=B*(F_clk/2**32),fword=B

8//5KHZ

9reg[N-1:0]addr;//32位累加器

10

11always@(posedgeclk ornegedgerst_n)

12begin

13if(!rst_n)

14begin

15addr <=0;

16end

17else

18begin

19/*每隔fword的大小,輸出一位地址,若頻率控制字FWORD等于2,那么地址計(jì)數(shù)器輸出的就依次是0,24.....*/

20addr <=addr +FWORD;

21end

22end

23/*將累加器器的地址的高八位賦值給輸出的地址(ROM的地址*/

24assignaddr_out =addr[N-1:N-8]+ PWORD;

25

26endmodule

rom模塊為調(diào)用的IP核,該rom IP核中存儲(chǔ)了sin.mif的數(shù)據(jù)。

dds頂層模塊代碼:

0moduledds (clk,rst_n,q);

1

2inputclk,rst_n;//系統(tǒng)時(shí)鐘復(fù)位

3output[7:0]q;//輸出波形數(shù)據(jù)

4

5wire[7:0]addr_out;//8位地址,對(duì)應(yīng)到ROM內(nèi)的數(shù)據(jù)

6

7/*****相位累加器模塊*****/

8dds_addr dds_addr_inst(

9.clk(clk),

10.rst_n(rst_n),

11.addr_out(addr_out)

12);

13

14/*****波形數(shù)據(jù)模塊*****/

15rom rom_inst (

16.address (addr_out ),

17.clock (clk ),

18.q (q )

19);

20

21endmodule

dds_tb頂層模塊的測(cè)試模塊:

0`timescale1ns/1ps

1

2moduledds_tb;

3

4regclk,rst_n;

5wire[7:0]q;

6

7initialbegin

8clk =1;

9rst_n =0;

10#200.1

11rst_n =1;

12

13#50_000_000$stop;

14end

15

16dds dds_dut(

17.clk(clk),

18.rst_n(rst_n),

19.q(q)

20);

21

22always#10clk =~clk;

23

24endmodule

仿真圖:

image.png

根據(jù)上圖可知,我們的設(shè)計(jì)正確。并且可以實(shí)現(xiàn)相位和頻率可調(diào)

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • DDS
    DDS
    +關(guān)注

    關(guān)注

    21

    文章

    625

    瀏覽量

    152288
  • 波形發(fā)生器
    +關(guān)注

    關(guān)注

    3

    文章

    288

    瀏覽量

    31306
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    任意波形發(fā)生器和矢量信號(hào)發(fā)生器有什么區(qū)別

    在電子測(cè)試與測(cè)量領(lǐng)域,任意波形發(fā)生器(Arbitrary Waveform Generator,簡(jiǎn)稱AWG)和矢量信號(hào)發(fā)生器是兩種常見(jiàn)的信號(hào)源設(shè)備。它們各自具有獨(dú)特的功能和應(yīng)用場(chǎng)景,對(duì)
    的頭像 發(fā)表于 05-30 16:02 ?1286次閱讀

    什么是任意波形發(fā)生器

    在電子測(cè)量、通信、科研以及音樂(lè)創(chuàng)作等多個(gè)領(lǐng)域中,波形發(fā)生器作為一種能夠產(chǎn)生特定波形信號(hào)的電子設(shè)備,發(fā)揮著不可或缺的作用。而任意波形
    的頭像 發(fā)表于 05-30 15:53 ?602次閱讀

    任意波形發(fā)生器波形生成方法

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡(jiǎn)稱AWG)作為電子測(cè)試領(lǐng)域的重要工具,能夠生成各種復(fù)雜波形信號(hào),以滿足不同的測(cè)試需求。在通信、音頻處理、雷達(dá)
    的頭像 發(fā)表于 05-29 17:13 ?470次閱讀

    任意波形發(fā)生器如何設(shè)置和調(diào)整輸出波形呢?

    任意波形發(fā)生器(AWG)是一種高級(jí)的測(cè)試設(shè)備,它能夠生成用戶定義的復(fù)雜波形,廣泛應(yīng)用于電子設(shè)計(jì)、測(cè)試和研究領(lǐng)域。
    的頭像 發(fā)表于 05-28 16:27 ?841次閱讀

    什么是任意波形發(fā)生器?任意波形發(fā)生器是干什么用的?

    任意波形發(fā)生器是一種高度靈活的電子測(cè)試設(shè)備,它能夠生成幾乎任何類型的電信號(hào)波形
    的頭像 發(fā)表于 05-28 16:19 ?527次閱讀

    任意波形發(fā)生器的使用方法

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡(jiǎn)稱AWG)是現(xiàn)代電子測(cè)試與測(cè)量領(lǐng)域中不可或缺的重要工具。它能夠產(chǎn)生復(fù)雜、非周期性的波形信號(hào),為電子系統(tǒng)的研發(fā)
    的頭像 發(fā)表于 05-21 17:26 ?695次閱讀

    任意波形發(fā)生器的定義、特點(diǎn)及應(yīng)用

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡(jiǎn)稱AWG)是電子測(cè)試與測(cè)量領(lǐng)域中的一種重要設(shè)備。隨著電子技術(shù)的飛速發(fā)展,對(duì)信號(hào)源的需求也日益復(fù)雜和多樣化。傳統(tǒng)的信號(hào)源設(shè)備
    的頭像 發(fā)表于 05-21 17:19 ?901次閱讀

    任意波形發(fā)生器如何輸出電壓

    任意波形發(fā)生器(Arbitrary Waveform Generator,簡(jiǎn)稱AWG)是一種電子測(cè)試設(shè)備,它能夠產(chǎn)生各種形狀、頻率和振幅的電壓信號(hào),以滿足電子電路、自動(dòng)控制以及教學(xué)實(shí)驗(yàn)等領(lǐng)域的多種
    的頭像 發(fā)表于 05-15 15:38 ?530次閱讀

    任意波形發(fā)生器與示波器怎么連接

    在電子測(cè)試領(lǐng)域中,任意波形發(fā)生器和示波器是兩種非常重要的測(cè)試設(shè)備。任意波形發(fā)生器能夠產(chǎn)生多種
    的頭像 發(fā)表于 05-15 15:38 ?550次閱讀

    任意波形發(fā)生器可以產(chǎn)生哪些波形

    在電子測(cè)試和測(cè)量領(lǐng)域,任意波形發(fā)生器是一種功能強(qiáng)大的電子測(cè)試設(shè)備。它能夠產(chǎn)生各種復(fù)雜且多變的波形信號(hào),為電子產(chǎn)品的設(shè)計(jì)、調(diào)試和測(cè)試提供了極大的便利。本文將詳細(xì)介紹
    的頭像 發(fā)表于 05-15 15:10 ?442次閱讀

    任意波形發(fā)生器的主要原理和關(guān)鍵技術(shù)

    任意波形發(fā)生器是現(xiàn)代電子測(cè)試與測(cè)量領(lǐng)域中不可或缺的一種儀器。它能夠生成幾乎任何用戶自定義的波形,為科學(xué)研究、產(chǎn)品開(kāi)發(fā)、教學(xué)實(shí)驗(yàn)等提供了極大的便利。本文將深入探討
    的頭像 發(fā)表于 05-15 14:50 ?1193次閱讀

    淺談任意波形發(fā)生器及通道合并功能

    淺談任意波形發(fā)生器及通道合并功能? 任意波形發(fā)生器(AWG)是一種能夠產(chǎn)生各種復(fù)雜
    的頭像 發(fā)表于 01-19 15:54 ?448次閱讀

    任意發(fā)生器如何輸出波形、帶調(diào)制的信號(hào)?

    任意發(fā)生器,如何輸出波形、帶調(diào)制的信號(hào)? 任意發(fā)生器是一種用于產(chǎn)生各種波形的信號(hào)
    的頭像 發(fā)表于 01-19 15:54 ?522次閱讀

    任意波形發(fā)生器如何輸出電壓?

    任意波形發(fā)生器如何輸出電壓? 任意波形發(fā)生器是一種能夠產(chǎn)生各種形狀、頻率和振幅的電壓信號(hào)的設(shè)備。
    的頭像 發(fā)表于 12-21 14:13 ?568次閱讀

    ADI任意波形發(fā)生器解決方案

    電子發(fā)燒友網(wǎng)站提供《ADI任意波形發(fā)生器解決方案.pdf》資料免費(fèi)下載
    發(fā)表于 11-22 16:47 ?0次下載
    ADI<b class='flag-5'>任意</b><b class='flag-5'>波形</b><b class='flag-5'>發(fā)生器</b>解決方案