91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

相位累加器的實現原理

FPGA設計論壇 ? 來源:FPGA設計論壇 ? 2025-05-16 13:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

相位累加器

關于相位累加器的使用,我不確定放在FPGA專題中是否合適,但是因為確實很多應用都是在FPGA上面的,所以暫時先這樣定吧。

標題中所提到的DDS,我感覺這兩個放一起也可以,因為DDS的核心思想就是使用的相位累加器。那么這玩意兒的作用是啥?簡單來說就是在FPGA工作主頻之下,可以生成任意頻率的周期信號出來。

定義一個32bit的頻率字Acc

定義一個32bit的頻率控制字F_word

假設系統時鐘(準確的說法應該是相位累加器的參考時鐘)fclk

需要產生的時鐘頻率 fout

根據公式:

729e5854-3098-11f0-afc8-92fbcf53809c.jpg

上面兩個公式可以在已知需要獲得的輸出頻率的基礎上,計算得到需要的頻率控制字。

然后看下頻率控制字是怎么用的,這里就是用的相位累加器的原理。

72ac3e88-3098-11f0-afc8-92fbcf53809c.jpg

上式是一個累加的過程,實現的原理是在一個32bit的數據范圍內,即在(0~2^32-1)這個范圍內進行累加,累加的步進是F_word;完成這一個范圍內的累加之后,用時為T,那么這個T的倒數就是我們需要的fout了。完成一次累加之后,頻率字Acc會溢出,然后進入下一次累加,形成下一個周期信號;如此重復進行后就是一個振蕩的周期信號了。

那么這個周期信號該怎么表示出來呢?上面說了,完成(0~2^32-1)的累加過程是一個周期T,那么在這個周期里面,應該會有一次信號翻轉。即高電平時間T/2,低電平時間也是T/2。

對于一個32bit的數,當低31位不斷累加,直到第32bit從0跳轉到1的時間段內,就是用了T/2的時間;當第32bit變成1之后,低31位又開始累加,直到數據溢出,又是T/2的時間。

如果不能理解,結合下圖

72bd68d4-3098-11f0-afc8-92fbcf53809c.jpg

也就是說,在整個累加過程中,我們只要判斷Acc的最高的情況,在0~T/2時間內,最高位為0;

在T/2~T的時間內,最高位為1;這樣就是會產生一個fout的方波信號了。

assign clk_out=Acc(31);

這樣的clk_out就是需要的fout了。

亦或者,直接對Acc的值進行判斷

always@(posedgeclkornegedgerst)if(!rst) clk_out <=?1'b0;elseif(Acc <=?32'h7fffffff) clk_out <=?1'b0;elseif(Acc >32'h7fffffff) clk_out <=?1'b1;

同樣可以輸出fout。

采樣率

同時,想說一下關于采樣率的問題。

常見于ADC這類芯片中,例如,某ADC芯片的采樣率為1MHz,意思是每秒可以采樣1M個點,那么采一個點所要花的時間是(1/1M) 秒。

在做FFT的時候,通常需要采集一個完整的正弦波,來進行FFT,這里就會涉及采樣率的問題。

假如一個正弦波的頻率為fsig=50KHz,我們需要用128個點來進行FFT,那就是要128個點采集完成這個正弦波。根據正弦波的頻率可以計算出正弦波的周期Tsig=1/fsig;那么這128個點所占的時間就應該是這個周期Tsig。也就是說,采樣芯片需要在Tsig時間內采集完成128個點,那么這個就可以計算出需要的采樣率了。采樣率設為Fs,則采一個點的時間是1/Fs;采128個點的時間就是128/Fs;則

128/Fs=1/fsig;會得出采樣率Fs=128fsig;得到的是和被采樣信號頻率的關系;

根據奈奎斯特定律,采樣頻率至少要是被采樣信號頻率的2倍,才能獲得被采樣信號的有效信息,否則就會出現失真。這里其實就可以分析得到,這里的128個點其實是可以人為設定的,假如設置為N;那么最后的公式就是Fs=Nfsig 。當然,保證這里的N>2是非常有必要的。

一般來說,我們的N會取的比較大。

FFT

說到上面的信息,不得不再說下FFT

其中的參數就包括上面說的Fs、N、fsig

FFT是一種計算,采樣到一個點,進行一系列的運算后,輸出一個復數,假設為A+Bi;這個復數中就包含這個被采樣信號sig的信息,對A和B求平方和再開根號,就是當前采樣點在頻譜上的幅值(注意并不是在正弦波形上的幅值),頻譜上幅值最大的點出現在fsig頻率處。

對于一個未知頻率的正弦波信號,對其進行采樣,然后進行頻譜幅值的最大值篩選,可以計算出這個信號的頻率。

Fs/N的意思是,對所有的N個采樣點,用Fs的采樣率來采樣,則在每個點處的頻率值(這個是在頻域上的信息)。假設fsig出現在從0~N之間的某個點n處,則會有Fs/N*(n-1)=fsig;同樣是可以計算出這個n。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • FPGA
    +關注

    關注

    1645

    文章

    22040

    瀏覽量

    618222
  • 時鐘
    +關注

    關注

    11

    文章

    1898

    瀏覽量

    133199
  • 相位累加器
    +關注

    關注

    0

    文章

    11

    瀏覽量

    9276

原文標題:相位累加器

文章出處:【微信號:gh_9d70b445f494,微信公眾號:FPGA設計論壇】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    基于相位累加器的任意分頻原理解析

    在大部分的教科書中,都會提到如何分頻,包括奇數分頻,偶數分頻,小數分頻等。 1、DDS相位累加器 (1)DDS合成流程 首先講述DSS(直接頻率合成法)的原理。 DDS是重要的頻率合成方法,在波形
    的頭像 發表于 11-29 10:19 ?5635次閱讀

    累加器verilog語言編程問題

    剛剛接觸FPGA,編程方面也不是很擅長。今天做了一個累加器的verilog編程,仿真波形圖一直出錯,想請大神指教一下錯誤的原因,十分感謝!我要實現累加器功能是:連續輸入幾百個gary_value
    發表于 05-23 20:09

    FPGA實現NCO中相位累加器的輸出和查找表地址什么關系?

    ,這么理解是否正確,怎樣實現?Q3: NCO的性能與相位累加器的位數有關,但與正弦表的精確程度有什么關系,能否采用更小的正弦表。相位累加器
    發表于 03-10 20:10

    請問AD9910并行端口控制相位時,并行數據是輸入到相位累加器中還是輸入到相位偏移字中?

    請問一下AD9910并行端口控制相位時,并行數據是輸入到相位累加器中還是輸入到相位偏移字中?
    發表于 12-25 14:02

    dds相位累加器沒有提高采樣頻率

    用流水線技術設計相位累加器,時序上可以工作在更高工作頻率,但需要n個周期才能到達反饋(假設是n級流水線),也就是說實際相位輸出頻率是clk/n ,還是沒有提高采樣頻率不是嗎,怎么改進呢
    發表于 04-21 22:58

    控制累加器

    怎么由布爾控件控制開始和停止累加器的運行
    發表于 06-04 22:09

    累加器的簡單使用和自定義累加器

    累加器使用的注意點及自定義累加器
    發表于 04-02 09:31

    計算機累加器有加法器功能嗎,累加器是什么_累加器的作用及原理介紹 精選資料推薦

    ,也許馬上就得讀回來。然而存取主存的速度是比從算術邏輯單元到有直接路徑的累加器存取更慢。相位累加器原理一個正弦波,雖然它的幅度不是線性的,但是它的相位卻是線性增加的。DDS正是利用了這
    發表于 08-30 08:57

    相位累加器原理

    相位累加器一個正弦波,雖然它的幅度不是線性的,但是它的相位卻是線性增加的。DDS 正是利用了這一特點來產生正弦信號。如圖 2,根據
    發表于 09-03 08:43 ?8325次閱讀
    <b class='flag-5'>相位</b><b class='flag-5'>累加器</b>原理

    累加器是什么_累加器的作用及原理介紹

    本文開始介紹了累加器的概念和相位累加器原理,其次介紹了累加器的作用,最后介紹了流水線相位累加器
    發表于 04-11 11:40 ?7.6w次閱讀
    <b class='flag-5'>累加器</b>是什么_<b class='flag-5'>累加器</b>的作用及原理介紹

    累加器是寄存嗎_寄存累加器、暫存有什么區別

    本文首先對寄存累加器、暫存做個哥介紹,其次解答了累加器是不是寄存,最后闡述了寄存
    發表于 04-11 16:31 ?9893次閱讀

    累加器A的主要作用是什么_一文解析累加器a和acc的區別

    在中央處理中,累加器(accumulator) 是一種寄存,用來儲存計算產生的中間結果。如果沒有像累加器這樣的寄存,那么在每次計算 (
    發表于 04-11 16:46 ?2.3w次閱讀

    32位數字相位累加器的程序和工程文件免費下載

    累加器 (accumulator) 是一種寄存,用來儲存計算產生的中間結果。如果沒有像累加器這樣的寄存,那么在每次計算 (加法,乘法,移位等等) 后就必須要把結果寫回到 內存,也許
    發表于 10-14 16:00 ?8次下載
    32位數字<b class='flag-5'>相位</b><b class='flag-5'>累加器</b>的程序和工程文件免費下載

    Arduino的累加器實驗程序和工程文件免費下載

    本文檔的主要內容詳細介紹的是Arduino的累加器實驗程序和工程文件免費下載。
    發表于 01-13 17:24 ?6次下載

    數字設計筆試Verilog手撕代碼—累加器

    實現累加器的加法器例化的個數。按照原文大佬的設計方法,因為數據連續且加法器的延遲周期是2,使用使用一個實現累加,會有一半的數據丟失。
    的頭像 發表于 06-02 16:35 ?3757次閱讀
    數字設計筆試Verilog手撕代碼—<b class='flag-5'>累加器</b>
    主站蜘蛛池模板: 国产视频一区二 | аⅴ资源中文在线天堂 | 上课被同桌强行摸下面小黄文 | 欧美婷婷六月丁香综合色 | 狠狠色噜噜噜噜狠狠狠狠狠狠奇米 | 黄色成人毛片 | 欧美国产在线一区 | 国产一区二区三区夜色 | 永久免费看黄 | 欧美午夜在线播放 | 手机看片免费永久在线观看 | 天天天天添天天拍天天谢 | 中文字幕一区二区三区四区五区人 | nxgx欧美| 午夜黄页网站在线播放 | 三级黄色免费网站 | 国产精品美女久久久久网 | 女bbbbxxxx毛片视频丶 | 丁香综合在线 | 久久艹综合 | 狠狠色狠狠色综合婷婷tag | 老头天天吃我奶躁我的动图 | 日本动漫在线看 | 你懂的在线观看网站 | 久久精品美女久久 | 国产一区在线播放 | 1024视频在线观看国产成人 | 一级片a | 色狠狠成人综合网 | 在线观看二区三区午夜 | 二区三区视频 | 亚洲欧洲日韩综合 | 特黄一级 | 一级特黄aaa大片29 | 手机看片1024手机在线观看 | 久久99久久精品国产99热 | 特黄aa级毛片免费视频播放 | 人人干视频 | 99久久婷婷国产综合精品电影 | 韩国三级视频在线观看 | 国产小视频在线 |