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

2021-09-10 06:07:43 字數 2784 閱讀 3346

**一.**基本要求如下:

一.任務

設計製作乙個程式控制訊號發生器,能產生幅度和頻率可變的正弦波、方波、三角波和自定義波形。示意圖如下:

圖一:整體框圖

二.基本要求

(1)具有產生正弦波、方波、三角波訊號的功能;

(2)可通過鍵盤操作輸出頻率範圍為20hz~100khz的波形;分三波段調節,分別為:20hz~1khz步進間隔10hz,1khz~10khz步進間隔50hz,10khz~100khz步進間隔100hz;

(3)輸出波形幅度為4v;

(4)能顯示訊號的週期、p-p值等資訊;

(5)波形無明顯失真;

三.發揮部分

(1)輸出波形的頻率範圍為20hz~1mhz;

(2)輸出波形的p-p值為0—4v可調,步進0.1v,可以通過鍵盤直接輸入頻率值;

(3)具有掉電儲存功能,可以儲存使用者設定;

(4)可以用鍵盤或擴充套件pc介面實現使用者自定義波形輸出;

二,

第一部分確定方案:1,採用使用stm32微控制器內建序列dac實現1m的輸出,發現stm32的頻率很難上去,三角波和方波以及鋸齒波頻率到400khz使嚴重失真,所以我們換方案。----扎心了!!!

2.採用dds方法實現,使用fpga作為訊號發生部分,stm32作為控制和測量部分,採用並行的dac實現,並行dac900產生的波形可以輕鬆鬆上1m理論來說可以上到15mhz關鍵是要有乙個好的濾波器。

三,

我們分模組實現其功能:

2023年1月23日
首先我們現在fpga 上對軟體進行除錯,基本沒什麼問題,實現了波形的切換和頻率的步進功能

2023年1月24日
第一塊dac900板子新鮮出爐,剛開始遇到乙個小問題,就是出來的波很難看即使是頻率很低的時候,後來發現是dac數字電源端用fphga供電時,文波很大,後來用基準源供電,紋波明顯減小,波形變得好看。波形到4mhz時三角波和方波以及鋸齒波失真,我們使用的時dac900內建的1.24v基準源,對波形的幅值不好改變,所以我們決定再外接乙個dactlv5636,通過stm32實現對tlv5636的控制實現可控輸出。

不過我們遇到了玄學問題(哭笑.jpg)不多說,上圖:

問題是,當我一上電tlv5636的輸出腳和地就短路,相當於tlv5636沒有輸出電壓

剛開始我以為是tlv5636晶元燒壞了,於是將tlv5636單獨拿出來測試發現沒有壞,

然後我將tlv5636從板子上卸下來,發現兩條路沒有短,但是晶元一上電就短路,

於是我們又懷疑是dac900壞了,我們dac900int/ext引腳拉低,使用其內部基準源發現其輸出電壓正常,

又懷疑是其內部電壓拉高較慢導致導致其輸出電壓始終處於低電壓,我們先將int/ext單獨拉高,再接給dac商店上電,發現問題依舊存在

然後我們懷疑是電流倒灌導致電壓減小,於是我們在輸出路上串聯乙個1m歐的電阻,發現電阻之後的電路沒有短路,而之前的短路,相當於電阻將電路分為兩個部分,一部分短路,另一部分沒有短路,真的玄學!但是我相信我們一定能找到問題所在!

2023年1月25日
實在沒轍,於是我決定將dac900換乙個但是由於手頭只剩下一塊dac904,所以我將dac904焊上去

換了dac9004後可以實現幅值可控輸出,同時要注意dac9004使用外部基準源的時候一定要先將int/ext拉高,再給外部基準源上電,不然dac9004內部阻態無法準確判斷當前狀態!

但是我們又遇到了新的問題,就是輸出的波形,上圖:

圖四:波形圖

剛開始以為是輸出電壓過大擺幅不夠導致的,後來發現是因為資料線插錯了

目前為止,波形發生部分基本實現,有幾個發現:

1.dac900int/ext引腳3.3v足夠使能

2.串聯電阻不能防止電流倒灌,反而會因為分壓倒是過電阻後電壓減小

2023年1月26日
剛開始做了乙個 巴特沃茨濾波器發現效果不太理想,因為阻抗匹配什麼的都沒有調,後來用filter_solutions設計了乙個七階的橢圓濾波器(注意電感和電容值將精度調到百分之20),後來發現訊號經過濾波器效果不是很好,但是經過運放後波形很好看。

設計濾波器時要注意阻抗匹配,輸出端是看出去50歐姆,訊號傳輸是看進去50歐姆。畫pcb時注意介面距離問題,後端的運放阻抗匹配依舊要考慮,相當於輸出端。

如上圖,先讓r1和r3並為50歐姆,再讓r7並r5+r6等於50歐姆,先確定r1,然後是r3再根據放大倍數調r2,r6和r5的值可以確定,最後確定r7(模電知識,不展開解釋)。

但是問題又來了:就是頻率和tlv5636輸出電壓一大,tlv5636電壓就往下掉。

猜想:dac904內部運放增益頻寬積不夠導致的。

我們增大了外部的ref果然問題得到了解決 通過后級放大增大放大倍數。

最後我們在輸出端用電阻分壓將訊號給stm32adc測量,並做了乙個電源板給整個系統供電,使系統得到完善!

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

頻率控制 許久沒有更新csdn,這兩個月一直在弄訊號源,使用的是上海安陸集團的fpga eg4s20fpga,用了他的小核心板lichee tang。話不多說,講下原理吧 我們使用的所謂的dds,我覺得就是查表,我們用matlab生成乙個mif檔案,然後控制fpga來讀表,在rom中每乙個位置都有對...

基於FPGA的任意訊號發生器

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

基於NE555的方波訊號發生器

基於ne555的方波訊號發生器 一 功能簡介 該電路是基於ne555晶元的多諧振盪器,用於產生我們所需要的方波訊號,並且振盪頻率在1到10khz可調,占空比保持不變。二 電路圖及工作原理分析 所以充電時間為 對c1放電時,電流通過c1,r4,vd2,r2 放電時間為 充放電週期 振盪頻率為 占空比為...