<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > DDS直接數字合成3 - 相位累加器

DDS直接數字合成3 - 相位累加器

作者: 時(shí)間:2024-01-16 來(lái)源:EEPW編譯 收藏

的第二個(gè)技巧是長(cháng)。 它允許來(lái)自輸出的信號頻率非常靈活。

本文引用地址:http://dyxdggzs.com/article/202401/454851.htm

我們將通過(guò)一個(gè)示例了解它是如何工作的。 讓我們從這個(gè)簡(jiǎn)單的代碼開(kāi)始。

reg [10:0] cnt;   // 11bit counter
always @(posedge clk) cnt <= cnt + 11'h1;

sine_lookup my_sine(.clk(clk), .addr(cnt), .value(sine_lookup_output));

計數器實(shí)際上是一個(gè)“”。 那是因為它每次遞增,它都會(huì )將正弦波移動(dòng) 360°/2048=0.175°

因此,讓我們將計數器重命名為更好的名稱(chēng)。

reg [10:0] phase_acc;   // 11bit
always @(posedge clk) phase_acc <= phase_acc + 11'h1;

sine_lookup my_sine(.clk(clk), .addr(phase_acc), .value(sine_lookup_output));

現在,如果我們想將正弦輸出的頻率提高一倍,我們將增加 2 而不是 1。

always @(posedge clk) phase_acc <= phase_acc + 11'h2;

但是,如果我們想將頻率減半呢?我們運氣不好,因為我們不能將相位累加器增加 0.5(Verilog 僅支持整數)。 我們需要的是相位累加器的更高分辨率。

讓我們看看如何通過(guò)向相位累加器添加更多位來(lái)完成它,但現在以提供與 11 位相位累加器相同的輸出的方式完成。

reg [14:0] phase_acc;   // 4 more bits, for a total of 15 bits
always @(posedge clk) phase_acc <= phase_acc + 15'd16;   // increment by 16 instead of 1

sine_lookup my_sine(.clk(clk), .addr(phase_acc[14:4]), .value(sine_lookup_output));   // shifted lookup address

由于我們將計數器遞增 16 并在查找地址中使用 phase_acc[14:4],因此我們沒(méi)有更改輸出。 但是多四個(gè)位為我們提供了一個(gè)具有更好分辨率的相位累加器。 現在,我們當然可以將輸出頻率減半(通過(guò)將相位累加器增加 8 而不是 16)。

將相位累加器分辨率提高 16 后,我們可以以 1/16 步長(cháng)獲得原始正弦頻率的任意倍數。 我們當然可以在相位累加器上增加四個(gè)以上的位。 典型的實(shí)現使用非常長(cháng)的位相位累加器,以在可用的輸出頻率中具有極高的精度和分辨率。

例如,使用32位相位累加器和100MHz時(shí)鐘,輸出的頻率分辨率為0.023Hz!
這是一個(gè) 32 位相位累加器,用于從 440MHz 時(shí)鐘生成 100Hz 信號。

reg [31:0] phase_acc;   // 32bit phase accumulator
always @(posedge clk) phase_acc <= phase_acc + 18898;   // 440Hz output when clocked at 100MHz

sine_lookup my_sine(.clk(clk), .addr(phase_acc[31:21]), .value(sine_lookup_output));

雖然 440Hz 相當慢,但使用上述代碼可以實(shí)現高達 50MHz(或接近 <>MHz)的輸出頻率。 只需修改相位累加器增量即可。

上一篇:DDS直接數字合成2 - 任意信號

下一篇:DDS直接數字合成4 - 插值



關(guān)鍵詞: FPGA DDS 相位累加器

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>