DDS和Qt在“所見即所得”波形發(fā)生器的應用
出處:張康康 王中訓 王 恒 劉建英 發(fā)布于:2011-08-25 12:02:52
波形發(fā)生器是一種數(shù)據(jù)信號發(fā)生器,在調試硬件時,常常需要加入一些信號,以觀察電路工作是否正常。用一般的信號發(fā)生器,不但笨重,而且只發(fā)一些簡單的波形,不能滿足需要。例如用戶要調試串口通信程序時,就要在計算機上寫好一段程序,再用線連接計算機和用戶實驗板,如果不正常,不知道是通訊線有問題還是程序有問題。用E2000/L的波形發(fā)生器功能,就可以定義串口數(shù)據(jù)。通過邏輯探勾輸出,調試起來簡單快捷。將邏輯探勾接在J3插槽上,波形發(fā)生器通過J3可以輸出8路自定義數(shù)字波形,每路可以單獨加在用戶板的任何輸入端。波形發(fā)生器可以選擇不同的時間基數(shù),做為定義波形的短間。E2000/L可產(chǎn)生短時基為50ns.可自定義波形長度為 時基x 32767.波形發(fā)生器可自動返回, 循環(huán)產(chǎn)生波形。
DDS同 DSP(數(shù)字信號處理)一樣,是一項關鍵的數(shù)字化技術。DDS是直接數(shù)字式頻率合成器(Direct Digital Synthesizer)的英文縮寫。與傳統(tǒng)的頻率合成器相比,DDS具有低成本、低功耗、高分辨率和快速轉換時間等優(yōu)點,廣泛使用在電信與電子儀器領域,是實現(xiàn)設備全數(shù)字化的一個關鍵技術。一塊DDS芯片中主要包括頻率控制寄存器、高速相位累加器和正弦計算器三個部分(如Q2220)。頻率控制寄存器可以串行或并行的方式裝載并寄存用戶輸入的頻率控制碼;而相位累加器根據(jù)頻率控制碼在每個時鐘周期內進行相位累加,得到一個相位值;正弦計算器則對該相位值計算數(shù)字化正弦波幅度(芯片一般通過查表得到)。DDS芯片輸出的一般是數(shù)字化的正弦波,因此還需經(jīng)過高速D/A轉換器和低通濾波器才能得到一個可用的模擬頻率信號。
1 DDS模塊的設計
1.1 DDS在FPGA中的實現(xiàn)
FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。 FPGA一般來說比ASIC(專用集成芯片)的速度要慢,無法完成復雜的設計,而且消耗更多的電能。但是他們也有很多的優(yōu)點比如可以快速成品,可以被修改來改正程序中的錯誤和更便宜的造價。廠商也可能會提供便宜的但是編輯能力差的FPGA.
DDS由相位累加器,波形存儲器,D/A轉換器,低通濾波器等部分組成。該系統(tǒng)的DDS模塊根據(jù)需要做了適當?shù)男薷摹F浣Y構框圖如圖1所示。

?。?)增加了通信接口電路和DD8控制模塊用于接收用戶數(shù)據(jù)和控制DDS的運行狀態(tài)。
(2)基準時鐘采用5 MHz,經(jīng)過可控分頻器分頻后作為DDS的時鐘信號,周期分辨率可達200 ns(即分頻為1)。
?。?)相位累加器的頻率控制字固定為1,相位控制字固定為0.
(4)波形存儲器采用RAM,可以寫入用戶自定義的波形數(shù)據(jù)以產(chǎn)生任意波形,其地址寬度設置為11 b,這樣存儲深度可達2K點。
(5)電平偏移電路用于消除D/A輸出信號中疊加的無效直流分量,對于有效的直流分量會保留。
1.2 通信接口及控制寄存器的設計
DDS控制寄存器控制整個DDS模塊的運行參數(shù)和狀態(tài),并通過通信接口接收來自ARM的數(shù)據(jù)。根據(jù)需要共設置了8個寄存器,地址從O~7.其功能和分配如表1所示。

表1其中:
?。?)0~3 B存儲分頻參數(shù),占用32位,因此分頻范圍為1~232.
(2)4~5 B存儲相位累加器的參數(shù),用于控制波形點數(shù)和觸發(fā)模式,其各位的含義如表2所示。

?。?)6 B只使用了位,為1啟動DDS,為0則停止DDS.
(4)地址7是一個虛地址,并不對應著實際的物理寄存器,而是與相位累加器組合指向RAM的某一個單元,通過對地址7的寫操作就間接的實現(xiàn)了對整個RAM的操作,這樣大大簡化了對DDS的控制操作。
1.3 電平偏移及放大電路
電平偏移及放大電路用于消除輸出信號中疊加的無效直流分量(允許有效直流量輸出)和調整信號增益,其電路圖如圖2所示。

根據(jù)圖2電路有:
![]()
式中:Rv是R4兩部分的并聯(lián)電阻,當
![]()

2 Qt程序設計
2.1 GUI設計
圖形用戶界面(Graphical User Interface,簡稱 GUI,又稱圖形用戶接口)是指采用圖形方式顯示的計算機操作用戶界面。與早期計算機使用的命令行界面相比,圖形界面對于用戶來說在視覺上更易于接受。GUI 是 Graphical User Interface 的簡稱,即圖形用戶界面,通常人機交互圖形化用戶界面設計經(jīng)常讀做"goo-ee",準確來說 GUI 就是屏幕產(chǎn)品的視覺體驗和互動操作部分。GUI 是一種結合計算機科學、美學、心理學、行為學,及各商業(yè)領域需求分析的人機系統(tǒng)工程,強調人-機-環(huán)境三者作為一個系統(tǒng)進行總體設計。該系統(tǒng)的GUI設計見圖3.

左側為工具欄,右側黃色區(qū)域為繪圖區(qū)。繪圖區(qū)提供了滾動條,用于繪制超出屏幕范圍的波形??梢岳L制較長的序列信號。工具欄從上到下分為繪圖模式選擇區(qū),波形輸出設定區(qū),時間設定區(qū)及清屏和退出按鈕。波形的繪制只允許從左向右進行,一個時刻只對應一個數(shù)據(jù)點;已繪制波形允許修改,修改過程中自動變成紅色,修改完畢自動變成默認顏色。
2.2 Qt編程原理和方法
Qt程序設計采用面向對象和事件驅動的方法,整個GUI程序劃分為兩個類,其中主窗口為一個類,類名為MainWindow,繼承自Qt的QMa-inWindow類,它提供了工具條(toolbar)和一個主窗口(mainwindow);另一個類是DrawWidget,提供了一個繪圖區(qū)域,有4種事件,分別為觸摸筆按下(mousePressEvent),移動(mouseMoveEvent),松開(mouseReleaseEvent)和繪圖區(qū)重繪事件(paintEvent)。同時提供了處理波形的函數(shù)waveProcess和調用底層驅動的接口。滾動條是通過QScrollView類提供的視圖功能來實現(xiàn)的。延遲輸出功能通過Qtimer類來實現(xiàn),延遲范圍0~999 s.觸摸筆的3個事件的發(fā)生順序和處理過程見圖4.

信號/槽機制是Qt的一個中心特征,用于對象間的通訊。繪圖事件(paintEvent)采用雙緩沖機制。雙緩沖技術是一種GUI編程技術,它指的是在一個不在屏幕上的位圖上渲染一個物件并把此位圖拷貝到屏幕上,常用于消除閃爍和提供一個快速用戶界面。該程序采用了Qpixmap類來實現(xiàn)雙緩沖。
2.3 驅動程序設計
Linux設備驅動程序是系統(tǒng)內核的一部分,運行于內核態(tài)。其可以以兩種方式被編譯和加載:直接編譯進Linux內核和編譯成一個可加載和刪除的模塊,通過modprobe/insmod和rmmod來加載和卸載驅動模塊。該系統(tǒng)即采用字符設備驅動。在系統(tǒng)內部,I/O設備的存/取通過一組固定的入口點來進行,具體到Linux系統(tǒng),設備驅動程序所提供的這組入口點由一個文件操作結構file_operation來向系統(tǒng)進行說明。該系統(tǒng)的驅動函數(shù)需要提供3個函數(shù)調用,read函數(shù)用于讀取DDS運行狀態(tài),write函數(shù)用于向DDS寫入?yún)?shù)和波形數(shù)據(jù),ioctl函數(shù)用于復位/啟動/停止DDS.另外還需要打開(open)和關閉設備函數(shù)(close)。File_operatio的定義如下:

驅動程序在wave_ioctl,wave_wirte,wave-read等幾個函數(shù)中具體實現(xiàn)。所需的波形參數(shù)和數(shù)據(jù)通過Qt程序打包,調用write函數(shù)(對應驅動程序中的wave_wrtie函數(shù))性寫入DDS模塊。終將驅動程序編譯為模塊文件(*.ko),通過命令modprobe和rmmod來加載和卸載驅動模塊。
3 系統(tǒng)操作及測試
?。?)設置波形參數(shù),包括繪圖模式,時間軸刻度,輸出延時等。
?。?)繪制波形,并作相應的修改,終完成波形繪制。在松開觸摸筆之后Qt程序根據(jù)所選擇的波形繪制模式對波形進行處理和優(yōu)化并重新顯示出來。
(3)點擊單次觸發(fā)模式或重復(循環(huán))觸發(fā)模式,此時Qt程序提取時間軸刻度參數(shù),轉換為DDS中可控分頻器的分頻參數(shù),并將這些參數(shù)和處理后的波形數(shù)據(jù)打包傳輸給DDS模塊,輸出延時完畢則啟動DDS,即產(chǎn)生與所繪波形相同的實際電信號,達到"所見即所得"的效果,如圖5所示(時間刻度為100μs)。

4 結語
任意波形發(fā)生器是現(xiàn)代電子技術的一個新發(fā)展,本文給出了一種基于DDS和Qt的任意波形發(fā)生器的整體設計方案,分析了DDS在FPGA中的實現(xiàn)和Linux下Qt程序的設計。該設計的特點是"所見即所得",即繪制何種波形就可立即產(chǎn)生何種波形,非常直觀,從而以滿足各種電路測試,通信等領域快速產(chǎn)生任意波形信號的要求。
版權與免責聲明
凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權均屬于維庫電子市場網(wǎng),轉載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關法律責任。
本網(wǎng)轉載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內容的真實性,不承擔此類作品侵權行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉載時,必須保留本網(wǎng)注明的作品出處,并自負版權等法律責任。
如涉及作品內容、版權等問題,請在作品發(fā)表之日起一周內與本網(wǎng)聯(lián)系,否則視為放棄相關權利。
- 數(shù)字電源控制與傳統(tǒng)模擬控制的深度對比2026/2/2 11:06:56
- 模擬信號調理電路技術設計與選型運維指南2025/12/30 10:08:16
- 運算放大器壓擺率的核心要點2025/9/5 16:27:55
- 深度剖析放大器穩(wěn)定系數(shù) K 與 Mu 的差異2025/9/2 16:44:05
- 什么是運算放大器失調電流2025/9/1 17:01:22









