基於國產FPGA的DDS訊號源(一)

2021-09-02 17:24:33 字數 2182 閱讀 4010

頻率控制

許久沒有更新csdn,這兩個月一直在弄訊號源,使用的是上海安陸集團的fpga eg4s20fpga,用了他的小核心板lichee tang。話不多說,講下原理吧

我們使用的所謂的dds,我覺得就是查表,我們用matlab生成乙個mif檔案,然後控制fpga來讀表,在rom中每乙個位置都有對應的資料值,這些離散的資料值的包絡也就是sin函式,說的簡單一點就是說我將sin函式的值存在表中,然後再讀取表中的資料,這樣我的離散sin函式就是最標準的,然後再過乙個低通濾波器,重建波形後就可以得到標準的罪函式。

那麼我怎麼控制頻率呢?

思想是是這樣的,我需要訪問rom的每乙個位置來得到sin函式的值。起初,我們應該是每乙個位置都要讀到,即序列為0,1,2,3 ...... 1021,1022,1023每個點我們都將讀出來給我們的dac。那麼我現在要隔乙個位置讀rom,即序列為1,3,5 ...... .1021,2023。我們的點數會少一半,而我們生成乙個週期的罪函式時間變短了一倍,即只有原來的1/2。也就說我原來乙個週期需要1024點,也就是需要訪問1024點的時間,現在乙個週期只有512個點,也就是訪問512點的時間。

那我們怎麼調節呢?

我們只需要調整每次讀取rom到底間隔幾個點,就可以得到對應的頻率,舉個例子,比方說我現在要得到原來的4倍頻率,即我只需要讀四分之一千○二十四= 256個點就可以實現原來頻率的4倍,也就是我隔3個點讀一次rom,當中「隔幾個點」也就是我們的頻率控制字,我們當前讀的點就是我們的相位控制字(注意:後面還給大家將如何調節相位,該相位說的讀rom的點的相位,非輸出函式的相位)

我們設頻率控制字為k,相位累加器字長為n,時鐘頻率為fc,則累加器長度為2

n,每次累加所需時間為1

f c  ,當相位累加次數為2

k / k時,累加器溢位,所消耗的總時間即為輸出波形的乙個週期,於是就可以得到dds的輸出頻率為

f out

= f

c 2

n k.

我們這樣雖然是可以修改頻率,但所帶來的問題也是有的。比如我初始的頻率是1mhz時,我需要10mhz的頻率的訊號,那麼我需要得到十分之一千○二十四= 102個點,那我需要30mhz的頻率的訊號,那麼我需要得到三十分之一千零二十四= 34個點。隨著我頻率越來越高,我乙個週期函式的點數會越來越少,所帶來的波形失真也會越來越嚴重。

我們怎麼解決這個問題呢方法一:可以在生成sin函式的mif檔案的點數取多一點,比如4096個,8192個等等......但也帶來了更嚴重的問題,是我們的rom只有那麼大,沒辦法存下這麼大的資料量。

我們採用的解決措施一是:sin函式是乙個非常特殊的函式,是關於中心對稱的,我們可以將它分成4份,以π/ 2為單位,0到π/ 2我們存1024個點,如圖:

我們的π/ 2到π的圖形可以用0到π/ 2影象得到,即函式= t / 2-sinx的。

π到3π/ 2的影象可以用0到π/ 2影象得到,即函式= -sinx。

同理得到最後乙個部分的。

這樣我的每乙個π/ 2都是1024點,整個週期就是4096個點,就實現了我rom表還是存放1024點的空間,而我們使用卻有4096個點。

理論分析一波

若相位累加器為q位,若相位累加器為r,則相位累加器的輸出經過截尾後,取到rom中的資料為

ü 2

[r] =

罪2π

2 q

· [r

,r = 0,1,2,...,

2 q -1

其中相位累加器r = k·n(n = 0,1,2,3,...,n-1),頻率控制字k =

2 q

n =

2 q

f x

f s

。(0≤k<

2 q -1

)由於相位累加器的位數q與取樣頻率˚f小號固定,所以產生的頻率fx與頻率控制字ķ成正比。˚f

ç =

˚f 小號

2 q k,由於1 ≤ ķ ≤

2 q -1,所以˚f

小號2

q ≤

˚f ç

≤ ˚f

小號2,頻率由給dac的時鐘決定。

頻率的控制原理就算理清楚了

基於DDS的多波形程式控制訊號發生器

一.基本要求如下 一 任務 設計製作乙個程式控制訊號發生器,能產生幅度和頻率可變的正弦波 方波 三角波和自定義波形。示意圖如下 圖一 整體框圖 二 基本要求 1 具有產生正弦波 方波 三角波訊號的功能 2 可通過鍵盤操作輸出頻率範圍為20hz 100khz的波形 分三波段調節,分別為 20hz 1k...

基於FPGA的任意訊號發生器

隨著科學技術的日新月異的發展,各種各樣的電子產品也正在逐步向著高精尖技術方向發展。電子技術廣泛的應用於工業 農業 交通運輸 航空航天 國防建設等國民經濟的諸多領域中,數字電子技術已經滲透到了人們生活的各個層面,訊號發生器是一種常用的訊號源,廣泛應用於電子電路 自動控制和科學試驗等領域。它是一種為電子...

基於FPGA的跨時鐘域訊號處理 同步設計的重要

fpga 跨時鐘域訊號 非同步時鐘 上次提出了乙個處於非同步時鐘域的mcu與fpga直接通訊的實現方式,其實在這之前,特權同學想列舉乙個非同步時鐘域 現的很典型的問題。也就是要用乙個反例來說明沒有足夠重視非同步通訊會給整個設計帶來什麼樣的危害。特權同學要舉的這個反例是真真切切的在某個專案上發生過的,...