楊文宵,王光義,田先春
(杭州電子科技大學(xué)電子信息學(xué)院,浙江 杭州 310018)
?
基于Qt/Embedded的多功能信號發(fā)生器設(shè)計與實現(xiàn)
楊文宵,王光義,田先春
(杭州電子科技大學(xué)電子信息學(xué)院,浙江 杭州 310018)
基于Qt/Embedded技術(shù)設(shè)計了一種嵌入式多功能信號發(fā)生器.該信號發(fā)生器通過Qt/Embedded與Linux觸摸屏驅(qū)動程序來實現(xiàn)對功能界面的觸摸操作,可實現(xiàn)連續(xù)混沌信號、數(shù)字偽隨機信號和正弦波與方波的輸出.連續(xù)與數(shù)字的偽隨機信號分別由Lorenz映射以及改進型Tent混沌映射生成,采用DDS芯片AD9850實現(xiàn)正弦波與方波信號的輸出.實際測試表明,該信號發(fā)生器可輸出滿足NIST標(biāo)準(zhǔn)的混沌隨機序列、0~20 MHz的正弦信號和0~1 MHz的方波信號.
信號發(fā)生器;混沌;Qt/Embedded
隨機信號發(fā)生器在通信、雷達、密碼學(xué)以及自動控制、數(shù)字式跟蹤和數(shù)字網(wǎng)絡(luò)系統(tǒng)故障檢測以及高校實驗教學(xué)等領(lǐng)域均有廣泛的應(yīng)用[1-2].由于混沌信號具有高度的初值敏感性和良好的隨機性,因此與傳統(tǒng)的隨機信號發(fā)生器相比,混沌是一種碼源眾多、性能良好的偽隨機信號源,混沌偽隨機信號發(fā)生器的設(shè)計成為國內(nèi)外研究的熱點.目前混沌偽隨機信號的實現(xiàn)方法主要有模擬電路和數(shù)字電路兩種,模擬電路的參數(shù)難以匹配且混沌信號頻率很難做大范圍的調(diào)整;數(shù)字電路實現(xiàn)主要采用FPGA或DSP等專用數(shù)字信號處理器,這些實現(xiàn)方法也較為復(fù)雜,成本較高.此外,目前混沌信號發(fā)生器只產(chǎn)生單一的連續(xù)或數(shù)字混沌信號,而傳統(tǒng)的函數(shù)信號發(fā)生器又往往只能產(chǎn)生一些正弦波、方波等周期信號,且各種傳統(tǒng)信號發(fā)生器不易便攜.因此設(shè)計一種既可以同時產(chǎn)生連續(xù)與數(shù)字混沌偽隨機信號,又可以產(chǎn)生傳統(tǒng)周期信號的多功能信號發(fā)生器是必要的,同時,目前尚未見到集混沌偽隨機信號與傳統(tǒng)周期信號于一體的實驗室專用信號源.
本文利用Qt/Embedded,DDS技術(shù)和混沌映射,設(shè)計了一種便攜式多功能信號發(fā)生器,通過觸摸控制使其能夠分別輸出連續(xù)和數(shù)字的混沌偽隨機序列、正弦波和方波信號,混沌偽隨機序列的隨機特性滿足美國國家標(biāo)準(zhǔn)與技術(shù)研究院(National Institute of Standards and Technology,NIST)標(biāo)準(zhǔn).
系統(tǒng)分別采用Lorenz混沌映射和文獻[3]中所提出的改進型Tent混沌映射以及AD9850來生成連續(xù)和數(shù)字偽隨機序列、正弦波以及方波.
Lorenz混沌映射是一個三維混沌系統(tǒng),其動力學(xué)方程為:
(1)
式中:a,b,c為系統(tǒng)參數(shù).當(dāng)Lorenz混沌映射保持a和b為定值,c>24.74時,系統(tǒng)呈現(xiàn)混沌狀態(tài).利用適當(dāng)?shù)碾x散化算法對式(1)做離散化處理,將離散化后的信號輸入到數(shù)模轉(zhuǎn)換器進行數(shù)模轉(zhuǎn)換處理,轉(zhuǎn)換后即得到連續(xù)混沌信號.
Tent混沌映射是一種算法簡單的離散映射,其產(chǎn)生的偽隨機序列具有運算速度快、序列分布均勻等特性.但傳統(tǒng)Tent混沌映射存在參數(shù)少、映射范圍小等缺陷,將直接導(dǎo)致產(chǎn)生的偽隨機序列密鑰空間小,安全性差.文獻[3]中提出了一種改進型Tent混沌映射:
(2)
式中:x(n)∈(0,a),μ1∈(0,2),μ2=(0,2),a∈R.改進型Tent混沌映射增大了滿映射幅度的同時也增加了復(fù)雜的動力學(xué)特性.文獻[3]中指出當(dāng)μ1∈(1,2),μ2∈(1,2)時,映射是混沌的,將在此區(qū)間內(nèi)得到的混沌序列進行量化得到相應(yīng)的混沌偽隨機序列.
AD9850芯片采用DDS技術(shù)來實現(xiàn)正弦波與方波信號的發(fā)生.AD9850核心是一個相位累加器,由1個加法器和1個32位的相位控制寄存器構(gòu)成.每經(jīng)過1次時鐘脈沖,累加器將頻率控制字K與累加器寄存器輸出的累加相位數(shù)據(jù)相加,把相加后的結(jié)果送到累加寄存器.累加寄存器將加法器在上1個時鐘脈沖作用后所產(chǎn)生的新相位數(shù)據(jù)反饋到加法器的輸入端.相位累加器每經(jīng)過1次時鐘脈沖就把把頻率控制字累加1次,相位累加器的溢出頻率就是DDS輸出的信號頻率.之后信號再經(jīng)過相位幅度變換以及D/A轉(zhuǎn)換輸出正弦波信號,輸出的正弦波信號再接入比較器端得到方波信號.
多功能信號發(fā)生器的工作流程如圖1所示.開機后對LCD上的Qt/Embedded界面進行觸摸操作,選擇要輸出的信號類型.信號類型有連續(xù)混沌信號、數(shù)字偽隨機序列、正弦波、方波4種.信號類型選定后需要對改進型Tent混沌映射的參數(shù)和初始值或是對正弦波、方波的頻率單位以及頻率值進行設(shè)定,設(shè)定完畢之后點擊Apply鍵開始輸出相應(yīng)信號.
圖1 多功能信號發(fā)生器工作流程
多功能信號發(fā)生器硬件系統(tǒng)主要包括ARM9微處理器S3C2440、JTAG接口、存儲器、LCD顯示模塊、AD9850模塊、DAC0832模塊以及必要的外圍設(shè)備.
2.1連續(xù)混沌信號發(fā)生電路
Lorenz混沌映射經(jīng)過實值計算后輸出的是離散的混沌序列,需要對該信號進行數(shù)模轉(zhuǎn)換,此處選用DAC0832作為數(shù)模轉(zhuǎn)換芯片.由于DAC0832輸出為電流信號,需要經(jīng)過運放轉(zhuǎn)換為電壓信號,繼而得到要求的連續(xù)混沌序列.
2.2正弦波與方波發(fā)生電路
正弦波與方波發(fā)生模塊采用Analog Device公司生產(chǎn)的型號為AD9850的DDS芯片,其時鐘頻率為125 MHz,片上有10位的DAC和高速比較器.
由于AD9850得到的正弦波是由數(shù)字量化產(chǎn)生的,雜散寄生分量很大,因此需要在輸出之前經(jīng)過低通濾波.常用的低通濾波器中,橢圓濾波器有相對較好的濾波曲線,因此在設(shè)計中采用此種濾波電路,濾波器采用7階,如圖2所示.
圖2 橢圓濾波電路
軟件部分主要包括嵌入式操作系統(tǒng)的移植、設(shè)備驅(qū)動開發(fā)、連續(xù)混沌信號及偽隨機序列生成函數(shù)的實現(xiàn)、Qt/Embedded環(huán)境的建立與系統(tǒng)界面的開發(fā).
3.1Linux操作系統(tǒng)的移植
鑒于Linux操作系統(tǒng)具有開源、方便移植等特性,故把嵌入式Linux系統(tǒng)作為設(shè)備的操作系統(tǒng).Linux操作系統(tǒng)移植主要包括3個方面:BootLoader的移植、Linux內(nèi)核移植、掛載根文件系統(tǒng).設(shè)計中選用友善之臂公司的Supervivi作為BootLoader.根據(jù)實際需要及外設(shè)硬件的要求對Linux內(nèi)核進行適當(dāng)?shù)牟眉?,通過修改內(nèi)核頂層的Makefile文件來選擇目標(biāo)平臺和交叉編譯器以及相關(guān)文件,完成配置裁剪后對內(nèi)核進行編譯,使其能夠運行在嵌入式開發(fā)平臺上.設(shè)計采用YAFFS文件系統(tǒng)作為根文件系統(tǒng),YAFFS是第一個專門為NAND Flash設(shè)計的嵌入式文件系統(tǒng),能夠有效的解決嵌入式設(shè)備的時效性問題.
3.2設(shè)備驅(qū)動實現(xiàn)
嵌入式Linux操作系統(tǒng)中附帶有LCD顯示驅(qū)動和觸摸屏驅(qū)動,需要自己實現(xiàn)的主要是DAC0832和AD9850芯片驅(qū)動程序.DAC0832和AD9850芯片驅(qū)動程序為應(yīng)用程序?qū)崿F(xiàn)信號輸出以及轉(zhuǎn)換控制提供系統(tǒng)調(diào)用接口.為了使設(shè)計簡便,在驅(qū)動程序設(shè)計過程中將這兩種芯片驅(qū)動程序合二為一.
DAC0832具備單緩沖、雙緩沖和直通3種信號輸入方式.由于設(shè)計只輸出1路連續(xù)混沌信號且通過GPIO控制片選端,所以采用單緩沖方式.模數(shù)轉(zhuǎn)換之前先將片選信號引腳電平拉高,依次對8個信號輸入引腳進行賦值后將片選信號引腳電平拉低,輸出模擬信號.考慮到傳輸過程中數(shù)據(jù)建立需要一定時間,所以對片選引腳操作之前延時一定時間.
AD9850有串行和并行兩種工作方式.出于節(jié)省GPIO資源的考慮,設(shè)計中采用串行工作方式.AD9850芯片串行工作方式流程:芯片上電后準(zhǔn)備進行傳輸頻率控制字以及相位控制字之前先要對RESET引腳進行復(fù)位操作,頻率控制器從D7引腳傳入,開始傳輸頻率控制字后,每傳輸8位數(shù)據(jù),W_CLK引腳電平狀態(tài)轉(zhuǎn)換1次,輸入40位數(shù)據(jù)后FQ_UD引腳電平狀態(tài)轉(zhuǎn)換1次,此時完成1次頻率控制字輸入,從而改變正弦波與方波的輸出信號頻率.再次改變輸出信號頻率時仍要對RESET引腳進行復(fù)位操作.
驅(qū)動程序主要包括設(shè)備的注冊、初始化和卸載、AD9850頻率控制字的輸入控制等功能函數(shù).
1)主要數(shù)據(jù)結(jié)構(gòu)(struct file_operations).Linux操作系統(tǒng)通過FILE結(jié)構(gòu)來識別設(shè)備,通過file_operations結(jié)構(gòu)提供文件系統(tǒng)的入口函數(shù).本設(shè)計的file_operations定義如下:
static struct file_operations dev_fops={
.owner=THIS_MOUDLE,
.ioctl=mydev_ioctl,
};
2)設(shè)備注冊.設(shè)計中將DAC0832和AD9850注冊為混雜設(shè)備,這樣可以實現(xiàn)動態(tài)分配設(shè)備號以及省去實現(xiàn)open方法以及release方法的麻煩.結(jié)構(gòu)定義如下:
static struct miscdevice misc={
.minor=MISC_DYNAMIC_MINOR,
.name=DEVICE_NAME,
.fops=&dev_ops,
};
3)頻率控制.AD9850輸出信號頻率由頻率控制字以及外部時鐘頻率決定,其輸出頻率fout為:
fout=finK/2N,
(3)
輸出信號頻率的分辨率f為:
f=fin/2N,
(4)
其中,N=32,fin=125 MHz.
3.3連續(xù)混沌信號的產(chǎn)生
連續(xù)混沌信號是由Lorenz混沌系統(tǒng)產(chǎn)生的實值離散序列經(jīng)數(shù)模轉(zhuǎn)換得到的.Lorenz三維連續(xù)混沌系統(tǒng)離散化和數(shù)字化通常有3種主要算法:簡單Euler算法、改進Euler算法、Runge-Kutta算法[4].考慮到算法計算量及精度要求,選用簡單Euler算法.利用Euler算法對式(1)進行離散化處理,得到離散化后的迭代方程為:
(5)
式中:T=0.001,為取樣時間;a=10,b=28,c=8/3.
3.4數(shù)字偽隨機序列的產(chǎn)生
數(shù)字偽隨機序列的產(chǎn)生主要通過對改進型Tent混沌映射生成的離散序列進行量化來實現(xiàn)的.常用以下3種方法來實現(xiàn)對離散序列的二進制化[5].
1)閾值法.令離散混沌序列中大于序列平均值的元素為1,小于平均值的元素為0.
2)二進制法[6].首先選取離散混沌序列中的元素xn進行取整操作得到y(tǒng)n,如下:
xn-yn=0.b1(xn)b2(xn)…bi(xn),bi(xn)∈{0,1}.
(6)
式中:xn為離散序列中的第n位元素.然后令zn=xn-yn,此步的目的是為了將得到的序列元素中的小數(shù)部分進行二進制化表示.由此可知每個處理過的元素為
z0=0.b1(x0)b2(x0)…bi(x0)…,z1=0.b1(x1)b2(x1)…bi(x1)…,…,zn=0.b1(xn)b2(xn)…bi(xn)….
最后取zn中的第i位作為該元素二進制化的值,即為{bi(xn)},bi(xn)∈{0,1},n=0,1,2,….
3)L位二進制法[7].首先根據(jù)式(6),將離散混沌序列的每個元素二進制化,表示為zn,然后選取中間L位作為轉(zhuǎn)化為二進制混沌偽隨機序列的值,即bi(xn)bi+1(xn)…bi+L-1(xn),這樣每次迭代就可以得到L位二進制序列.經(jīng)過N次迭代就可以得到固定長度的混沌偽隨機序列bi(x1)…bi+L-1(x1)……bi(xN)…bi+L-1(xN).
綜合以上3種離散序列二進制化方法,L位二進制法有防止逆向迭代重構(gòu)和運算量小等特點,設(shè)計中也采用了這種方法.
3.5Qt/Embedded界面開發(fā)
設(shè)計中界面開發(fā)工具采用Qt/Embedded 4.6.3,使用C++作為開發(fā)語言.Qt/Embedded為界面開發(fā)提供了豐富的控件類和界面修飾工具,作為嵌入式平臺專用庫,Qt/Embedded提供了豐富的驅(qū)動接口,方便開發(fā)者調(diào)用,開發(fā)人員有更多的精力在界面的設(shè)計上.
系統(tǒng)界面開發(fā)過程主要包括主控制界面的設(shè)計、軟鍵盤的實現(xiàn),控制函數(shù)的調(diào)用.
3.5.1主控制界面的設(shè)計
圖3 主控制界面
Qt/Embedded內(nèi)部集成了Qt Creator和Qt Designer,其中Qt Creator作為Qt/Embedded開發(fā)的IDE,能夠完成代碼的編輯與編譯等工作.Qt Designer為簡化圖形化界面開發(fā)提供了可能.在主控制界面的布局設(shè)計中采用了Qt Designer設(shè)計界面的方法,針對不同的控件,根據(jù)實際功能的不同調(diào)用相應(yīng)的槽函數(shù).其中使用4個Radio Button來實現(xiàn)輸出信號類型的選擇;另外3個Radio Button來實現(xiàn)正弦波與方波頻率單位的選擇;1個Double SpinBox用來輸入相應(yīng)頻率單位的頻率值;2個LineEdit來實現(xiàn)對數(shù)字偽隨機序列參數(shù)與初始值的設(shè)置;1個PushButton來確定輸入并進行信號輸出.主控制界面如圖3所示.
3.5.2信號輸出的實現(xiàn)過程
當(dāng)Apply按鍵按下,系統(tǒng)檢測設(shè)置的是哪種信號以及信號設(shè)定的頻率值或是改進型Tent混沌映射的參數(shù)和初始值,然后執(zhí)行相應(yīng)的函數(shù)調(diào)用,使用Tektronix MSO2014數(shù)字示波器測試結(jié)果如圖4~7所示,其中正弦波與方波信號頻率的精度優(yōu)于0.05%,穩(wěn)定度優(yōu)于10-3.
圖4 連續(xù)混沌信號
圖5 數(shù)字偽隨機序列
圖6 正弦波信號
圖7 方波信號
本文基于Qt/Embedded技術(shù)設(shè)計實現(xiàn)了一種多功能信號發(fā)生器,既能產(chǎn)生連續(xù)和數(shù)字的偽隨機信號,也可以按照設(shè)定的輸出頻率值生成相應(yīng)的正弦波或方波信號.本信號發(fā)生器采用了觸摸控制調(diào)節(jié)參數(shù)和頻率的方法,其操作易便性以及頻率調(diào)節(jié)精度較傳統(tǒng)的按鍵或旋鈕式有較好的改善,其中頻率調(diào)節(jié)最小單位為0.01 Hz,生成的混沌偽隨機序列其隨機性滿足NIST標(biāo)準(zhǔn),正弦波與方波頻率的穩(wěn)定度優(yōu)于10-3.本信號發(fā)生器的多功能性可使其應(yīng)用于對精度要求不高、但又應(yīng)用十分廣泛的高?;A(chǔ)類實驗室,可提供周期的正弦和方波信號,以及連續(xù)和二值的偽隨機信號,用其進行周期信號實驗和偽隨機信號實驗.尤其目前高?;A(chǔ)類實驗室主要采用周期信號源,缺乏隨機信號源,無法進行與偽隨機信號相關(guān)的硬件實驗,如偽隨機信號性能測試、信息加密、保密通信等,因此本信號發(fā)生器對其將是一個補充.本信號發(fā)生器基于嵌入式技術(shù),具有操作方便且易便攜性特點,可為學(xué)生在課外進行各種實驗提供一種攜帶方便的多功能信號源.
[1]GEORGE S N,PATTATHIL D P.A novel approach for secure compressive sensing of images using multiple chaotic maps[J].Journal of Optics,2014,43(1):1-17.
[2]KIANI-B A,FALLAHI K,PARIZ N,et al.A chaotic secure communication scheme using fractional chaotic systems based on an extended fractional Kalman filter[J].Communications in Nonlinear Science and Numerical Simulation,2009,14(3):863-879.
[3]熊青輝,王光義.改進的Tent映射及其動力學(xué)特性研究[J].杭州電子科技大學(xué)學(xué)報,2014,34(4):14-17.
[4]BEYHAN S. Runge-Kutta model-based nonlinear observer for synchronization and control of chaotic systems[J]. ISA transactions, 2013, 52(4):501-509.
[6]張波,王光義,韓春艷.基于改進型Logistic混沌映射PN序列的FPGA實現(xiàn)[J].現(xiàn)代電子技術(shù),2009,32(7):11-14.
[7]朱志良,吳艷芹,劉向東,等.中間多比特量化混沌擴頻序列及其性能分析[J].東北大學(xué)學(xué)報(自然科學(xué)版),2002,23(8):733-737.
Design and Realization of Multifunctional Signal Generator Based on Qt/Embedded
YANG Wenxiao, WANG Guangyi, TIAN Xianchun
(SchoolofElectronicsInformation,HangzhouDianziUniversity,HangzhouZhejiang310018,China)
This paper designs a multifunctional signal generator. This signal generator which can realize touch operating by Qt/Embedded and touch screen drivers can generate continuous and digital chaotic pseudo random signals, sine waves and square waves via touch operations of functional interfaces. Continuous and digital pseudo random signals are respectively generated by Lorenz mapping and the modified Tent chaos mapping, while sine waves and square waves are generated by controlling DDS chip, AD9850. Practical test results show that the signal generator not only can generate chaotic pseudo random signals which can match the standards of NIST but also can output sine waves and square waves.
signal generator; chaos; Qt/Embedded
10.13954/j.cnki.hdu.2016.01.001
2015-06-23
國家自然科學(xué)基金資助項目(60971046,61271064);浙江省自然科學(xué)基金重點項目(LZ12F01001)
楊文宵(1989-),男,河南焦作人,碩士研究生,非線性電路域智能信息處理.通信作者:王光義教授,E-mail:wanggyi@163.com.
TN74
A
1001-9146(2016)01-0001-06