999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

一種基于DDS和Qt的“所見即所得”波形發(fā)生器

2010-04-12 00:00:00張康康,王中訓(xùn),王恒,劉建英
現(xiàn)代電子技術(shù) 2010年22期

摘 要: 提出一種基于直接數(shù)字頻率合成(DDS)技術(shù)和Qt編程的任意波形發(fā)生器(AWG)的整體設(shè)計方案。完成了DDS在FPGA中的硬件修改設(shè)計以及在Linux環(huán)境下Qt程序的軟件設(shè)計和內(nèi)核驅(qū)動程序的開發(fā),并給出實驗結(jié)果。實驗結(jié)果表明:通過觸摸筆繪制任意波形,即可產(chǎn)生與所繪波形在時間和電壓上均相同的實際電信號,達(dá)到“所見即所得”的效果,以滿足各種測試和試驗的要求。關(guān)鍵詞:任意波形發(fā)生器;DDS; FPGA; Qt

中圖分類號:TN911-34文獻(xiàn)標(biāo)識碼:A

文章編號:1004-373X(2010)22-0028-03

\"What You See is What You Get\" Waveform Generator Based on DDS and Qt

ZHANG Kang-kang, WANG Zhong-xun, WANG Heng, LIU Jian-ying

(Institute of Science and Technology for Optoelectronics Information, Yantai University, Yantai 264005, China)

Abstract: A total design scheme of the arbitrary waveform generator (AWG) which is based on direct digital frequency synthesizer (DDS) technology and Qt programming is proposed. The DDS hardware modification on FPGA, the software design of Qt program and the development of the kernel driver in Linux environment were finished. The experimental results are presented. The experimental results indicate that the signal which is same as the practical electrical signal in time and voltage can be obtained through drawing an arbitrary waveform by the touching pen, the result of \"What you see is what you get\" is achieved, and the requirements of various tests are fulfilled. Keywords: arbitrary waveform generator;DDS; FPGA; Qt

0 引 言

隨著電路設(shè)計的多樣化,電路測試也對信號源提出了更高的要求。傳統(tǒng)的信號源只能產(chǎn)生幾種固定的波形,靈活度較差[1]。任意信號發(fā)生器(AWG)很好地滿足了這個要求,它不僅可以輸出標(biāo)準(zhǔn)信號,而且可以方便地產(chǎn)生任意波形,在測控、通信,醫(yī)療等領(lǐng)域有著廣泛的應(yīng)用。任意信號發(fā)生器通常采用直接數(shù)字頻率合成(direct digital frequency synthesizer,DDS)技術(shù)實現(xiàn)。DDS技術(shù)是J.Tiemev在1971年首次提出的一種以全數(shù)字技術(shù),它從相位概念出發(fā)直接合成所需波形的一種新的合成原理[2]。

Qt是一個跨平臺的C++圖形用戶界面應(yīng)用程序框架。它提供給應(yīng)用程序開發(fā)者建立圖形用戶界面所需的所用功能。Qt是完全面向?qū)ο蟮模K化程度非常高,很容易擴(kuò)展,并且允許真正地組件編程[3]。Qt具有優(yōu)良的跨平臺特性,支持多種系統(tǒng)和平臺,包括Windows系統(tǒng),所有的UNIX系統(tǒng)以及嵌入式系統(tǒng)等。Qt遵循GPL(general public license)協(xié)議,開放主要的源代碼,用戶可以在GPL的規(guī)定下自由添加新特性。

1 DDS模塊[4]的設(shè)計

1.1 DDS在FPGA中的實現(xiàn)

DDS由相位累加器,波形存儲器,D/A轉(zhuǎn)換器,低通濾波器[5]等部分組成。該系統(tǒng)的DDS模塊根據(jù)需要做了適當(dāng)?shù)男薷摹F浣Y(jié)構(gòu)框圖如圖1所示。

圖1 DDS模塊

(1) 增加了通信接口電路和DDS控制模塊用于接收用戶數(shù)據(jù)和控制DDS的運行狀態(tài)。

(2) 基準(zhǔn)時鐘采用5 MHz,經(jīng)過可控分頻器分頻后作為DDS的時鐘信號,周期分辨率最高可達(dá)200 ns(即分頻為1)。

(3) 相位累加器的頻率控制字固定為1,相位控制字固定為0。

(4) 波形存儲器采用RAM[6],可以寫入用戶自定義的波形數(shù)據(jù)以產(chǎn)生任意波形,其地址寬度設(shè)置為11 b,這樣存儲深度可達(dá)2K點。

(5) 電平偏移電路用于消除D/A輸出信號中疊加的無效直流分量,對于有效的直流分量會保留。

1.2 通信接口及控制寄存器的設(shè)計

DDS控制寄存器控制整個DDS模塊的運行參數(shù)和狀態(tài),并通過通信接口接收來自ARM的數(shù)據(jù)。根據(jù)需要共設(shè)置了8個寄存器,地址從0~7。其功能和分配如表1所示。

表1 控制寄存器的功能及分配

ADDR01234567

DATA分頻參數(shù)波形點個數(shù)及觸發(fā)模式控制位啟動/停止RAM控制及間接尋址

表1其中:

(1) 0~3 B存儲分頻參數(shù),占用32位,因此分頻范圍為1~232。

(2) 4~5 B存儲相位累加器的參數(shù),用于控制波形點數(shù)和觸發(fā)模式,其各位的含義如表2所示。

(3) 6 B只使用了最低位,為1啟動DDS,為0則停止DDS。

(4) 地址7是一個虛地址,并不對應(yīng)著實際的物理寄存器,而是與相位累加器組合指向RAM的某一個單元,通過對地址7的寫操作就間接的實現(xiàn)了對整個RAM的操作,這樣大大簡化了對DDS的控制操作。

表2 相位累加器各位含義

Bit1514~1110~0

含義觸發(fā)模式0:單次觸發(fā)

1:循環(huán)觸發(fā)保留波形點數(shù)

1.3 電平偏移及放大電路

電平偏移及放大電路用于消除輸出信號中疊加的無效直流分量(允許有效直流量輸出)和調(diào)整信號增益,其電路圖如圖2所示。

圖2 電平偏移及放大電路

根據(jù)圖2電路有:

uo1=-R2R1×ui+1+R2+R8R1R3R3+Rvuref

式中:Rv是R4兩部分的并聯(lián)電阻,當(dāng)R2+R8R1=R3Rv=AU1時,有:uo1=AU1×(uref-ui)

uo2=-AU2×AU1×(uref-ui)=AU2AU1(ui-uref)

式中:AU2=R6+R9R5。

2 Qt程序設(shè)計

2.1 GUI設(shè)計

GUI(圖形用戶界面)是人機(jī)交互的窗口,GUI的設(shè)計直接關(guān)系到產(chǎn)品的可操作性,是軟件設(shè)計中非常重要部分。考慮到觸摸屏面板的空間有限,因此控件(Widgets)的設(shè)計盡量緊湊。該系統(tǒng)的GUI設(shè)計見圖3。

圖3 GUI設(shè)計

左側(cè)為工具欄,右側(cè)黃色區(qū)域為繪圖區(qū)。繪圖區(qū)提供了滾動條,用于繪制超出屏幕范圍的波形。可以繪制較長的序列信號。工具欄從上到下分為繪圖模式選擇區(qū),波形輸出設(shè)定區(qū),時間設(shè)定區(qū)及清屏和退出按鈕。

波形的繪制只允許從左向右進(jìn)行,一個時刻只對應(yīng)一個數(shù)據(jù)點;已繪制波形允許修改,修改過程中自動變成紅色,修改完畢自動變成默認(rèn)顏色。

2.2 Qt編程原理和方法

Qt程序設(shè)計[7]采用面向?qū)ο蠛褪录?qū)動的方法,整個GUI程序劃分為兩個類,其中主窗口為一個類,類名為MainWindow,繼承自Qt的QMainWindow類,它提供了工具條(toolbar)和一個主窗口(mainwindow);另一個類是DrawWidget,提供了一個繪圖區(qū)域,有4種事件,分別為觸摸筆按下(mousePressEvent),移動(mouseMoveEvent),松開(mouseReleaseEvent)和繪圖區(qū)重繪事件(paintEvent)。同時提供了處理波形的函數(shù)waveProcess和調(diào)用底層驅(qū)動的接口。

滾動條是通過QScrollView類提供的視圖功能來實現(xiàn)的。延遲輸出功能通過Qtimer類來實現(xiàn),延遲范圍0~999 s。觸摸筆的3個事件的發(fā)生順序和處理過程見圖4。

圖4 觸摸筆的事件及發(fā)生順序

信號/槽機(jī)制是Qt的一個中心特征,用于對象間的通訊[8]。繪圖事件(paintEvent)采用雙緩沖機(jī)制。雙緩沖技術(shù)是[9]一種GUI編程技術(shù),它指的是在一個不在屏幕上的位圖上渲染一個物件并把此位圖拷貝到屏幕上,常用于消除閃爍和提供一個快速用戶界面。該程序采用了Qpixmap類來實現(xiàn)雙緩沖。

2.3 驅(qū)動程序設(shè)計

Linux設(shè)備驅(qū)動程序[10]是系統(tǒng)內(nèi)核的一部分,運行于內(nèi)核態(tài)。其可以以兩種方式被編譯和加載:直接編譯進(jìn)Linux內(nèi)核和編譯成一個可加載和刪除的模塊,通過modprobe/insmod和rmmod來加載和卸載驅(qū)動模塊。該系統(tǒng)即采用字符設(shè)備驅(qū)動。

在系統(tǒng)內(nèi)部,I/O設(shè)備的存/取通過一組固定的入口點來進(jìn)行,具體到Linux系統(tǒng),設(shè)備驅(qū)動程序所提供的這組入口點由一個文件操作結(jié)構(gòu)file_operation來向系統(tǒng)進(jìn)行說明。

該系統(tǒng)的驅(qū)動函數(shù)需要提供3個函數(shù)調(diào)用,read函數(shù)用于讀取DDS運行狀態(tài),write函數(shù)用于向DDS寫入?yún)?shù)和波形數(shù)據(jù),ioctl函數(shù)用于復(fù)位/啟動/停止DDS。另外還需要打開(open)和關(guān)閉設(shè)備函數(shù)(close)。File_operatio的定義如下:

static struct file_operations dev_fops = {

.owner = THIS_MODULE,

.ioctl = wave_ioctl,//對DDS復(fù)位/啟動/停止等控制操作

.write = wave_write,//寫入數(shù)據(jù)

.read = wave_read,//讀取狀態(tài)

};

驅(qū)動程序在wave_ioctl,wave_wirte,wave_read等幾個函數(shù)中具體實現(xiàn)。

所需的波形參數(shù)和數(shù)據(jù)通過Qt程序打包,調(diào)用write函數(shù)(對應(yīng)驅(qū)動程序中的wave_wrtie函數(shù))一次性寫入DDS模塊。

最終將驅(qū)動程序編譯為模塊文件(*.ko),通過命令modprobe和rmmod來加載和卸載驅(qū)動模塊。

3 系統(tǒng)操作及測試

(1) 設(shè)置波形參數(shù),包括繪圖模式,時間軸刻度,輸出延時等。

(2) 繪制波形,并作相應(yīng)的修改,最終完成波形繪制。在松開觸摸筆之后Qt程序根據(jù)所選擇的波形繪制模式對波形進(jìn)行處理和優(yōu)化并重新顯示出來。

(3) 點擊單次觸發(fā)模式或重復(fù)(循環(huán))觸發(fā)模式,此時Qt程序提取時間軸刻度參數(shù),轉(zhuǎn)換為DDS中可控分頻器的分頻參數(shù),并將這些參數(shù)和處理后的波形數(shù)據(jù)打包傳輸給DDS模塊,輸出延時完畢則啟動DDS,即產(chǎn)生與所繪波形相同的實際電信號,達(dá)到“所見即所得”的效果,如圖5所示(時間刻度為100 μs)。

圖5 實驗截圖

4 結(jié) 語

任意波形發(fā)生器是現(xiàn)代電子技術(shù)的一個新發(fā)展,本文給出了一種基于DDS和Qt的任意波形發(fā)生器的整體設(shè)計方案,分析了DDS在FPGA中的實現(xiàn)和Linux下Qt程序的設(shè)計。該設(shè)計最大的特點是“所見即所得”,即繪制何種波形就可立即產(chǎn)生何種波形,非常直觀,從而以滿足各種電路測試,通信等領(lǐng)域快速產(chǎn)生任意波形信號的要求。

參考文獻(xiàn)

[1]江偉,王元中.基于FPGA的DDS的設(shè)計與實現(xiàn)[J].山西電子技術(shù),2007(2):24-25,40.

[2]高玉良,李延輝.現(xiàn)代頻率合成與控制技術(shù)[M].北京:航空工業(yè)出版社,2002.

[3]Xteam(中國)軟件技術(shù)有限公司.Qt程序設(shè)計[M].北京:清華大學(xué)出版社,2002.

[4]周國富.利用FPGA實現(xiàn)DDS專用集成電路[J].電子技術(shù)應(yīng)用,1998(3):31-32.

[5]潘松,黃繼業(yè).SoPC技術(shù)使用教程[M].北京:清華大學(xué)出版社,2005.

[6]王曉升,沙勝賢.基于DDS的任意波形發(fā)生器實現(xiàn)[J].長春工程學(xué)院學(xué)報:自然科學(xué)版,2005(2):56-58.

[7]倪繼利.Qt及Linux操作系統(tǒng)窗口設(shè)計[M].北京:電子工業(yè)出版社,2006.

[8]唐新華.QT的信號與槽機(jī)制介紹[EB/OL].[2008-03-06].http://www.ibm.com/developerworks/cn/linux/guitoolkit/qt/signal-slot/.

[9]劉光照.雙緩沖技術(shù)[EB/OL].[2009-07-11].http://www.qtchina.net/?q=node/176.

[10]CORBET Jonathan, ALESSANDRO R. Linux device dri-vers 3rd ed [M]. [S.l.]: O′Reilly,2005:6-7.

主站蜘蛛池模板: 欧美日本二区| 国产91小视频| 久久黄色毛片| 日韩欧美国产精品| 亚洲高清在线播放| 五月天综合婷婷| 久久成人国产精品免费软件| 亚洲国产午夜精华无码福利| 国产精品性| 亚洲妓女综合网995久久| 亚洲日韩图片专区第1页| 久久久亚洲国产美女国产盗摄| 自拍偷拍欧美| 久一在线视频| 精品综合久久久久久97超人| 亚洲国产精品不卡在线| 无码国产偷倩在线播放老年人| 伊人久久综在合线亚洲2019| 亚洲全网成人资源在线观看| 97在线观看视频免费| 成人午夜在线播放| 伊人激情综合网| 国产永久免费视频m3u8| 在线欧美a| 国产又粗又猛又爽视频| 久久婷婷人人澡人人爱91| 91九色国产在线| 999精品视频在线| 91精品免费久久久| 在线日韩日本国产亚洲| 国产成人亚洲无吗淙合青草| 欧美一区二区福利视频| 国产精品久久久久鬼色| 亚洲精品无码av中文字幕| 久久性视频| 国产免费网址| 国产91精品最新在线播放| 亚洲va在线观看| 国产一级毛片高清完整视频版| 女人天堂av免费| 三上悠亚在线精品二区| 久久一色本道亚洲| 亚洲一级毛片在线观播放| 亚洲国产中文精品va在线播放| 精品一区二区无码av| jizz在线免费播放| 色哟哟国产成人精品| 日韩天堂视频| 久无码久无码av无码| 四虎影视国产精品| 77777亚洲午夜久久多人| 久久香蕉国产线看观看式| 美女被操91视频| 国产又粗又猛又爽视频| 久久这里只精品国产99热8| 伊人久久大香线蕉成人综合网| 天天操精品| 大香伊人久久| 国产亚洲视频在线观看| 亚洲国产日韩一区| 在线观看无码av免费不卡网站| 一本一本大道香蕉久在线播放| 无码区日韩专区免费系列| 99久久精品国产自免费| 亚洲欧美日韩中文字幕一区二区三区| 中文字幕乱码二三区免费| 婷婷开心中文字幕| 欧美精品1区2区| 日本免费一级视频| 美女国内精品自产拍在线播放 | 亚洲有码在线播放| 亚洲人精品亚洲人成在线| 极品国产在线| 不卡的在线视频免费观看| 91网在线| 免费欧美一级| 日韩精品无码免费专网站| 精品国产一二三区| 91久久精品国产| 亚洲精品爱草草视频在线| 91无码视频在线观看| 亚洲第一页在线观看|