基于Qt/Embedded的多功能信号发生器设计与实现
2016-10-27杨文宵王光义田先春
杨文宵,王光义,田先春
(杭州电子科技大学电子信息学院,浙江 杭州 310018)
基于Qt/Embedded的多功能信号发生器设计与实现
杨文宵,王光义,田先春
(杭州电子科技大学电子信息学院,浙江 杭州 310018)
基于Qt/Embedded技术设计了一种嵌入式多功能信号发生器.该信号发生器通过Qt/Embedded与Linux触摸屏驱动程序来实现对功能界面的触摸操作,可实现连续混沌信号、数字伪随机信号和正弦波与方波的输出.连续与数字的伪随机信号分别由Lorenz映射以及改进型Tent混沌映射生成,采用DDS芯片AD9850实现正弦波与方波信号的输出.实际测试表明,该信号发生器可输出满足NIST标准的混沌随机序列、0~20 MHz的正弦信号和0~1 MHz的方波信号.
信号发生器;混沌;Qt/Embedded
0 引 言
随机信号发生器在通信、雷达、密码学以及自动控制、数字式跟踪和数字网络系统故障检测以及高校实验教学等领域均有广泛的应用[1-2].由于混沌信号具有高度的初值敏感性和良好的随机性,因此与传统的随机信号发生器相比,混沌是一种码源众多、性能良好的伪随机信号源,混沌伪随机信号发生器的设计成为国内外研究的热点.目前混沌伪随机信号的实现方法主要有模拟电路和数字电路两种,模拟电路的参数难以匹配且混沌信号频率很难做大范围的调整;数字电路实现主要采用FPGA或DSP等专用数字信号处理器,这些实现方法也较为复杂,成本较高.此外,目前混沌信号发生器只产生单一的连续或数字混沌信号,而传统的函数信号发生器又往往只能产生一些正弦波、方波等周期信号,且各种传统信号发生器不易便携.因此设计一种既可以同时产生连续与数字混沌伪随机信号,又可以产生传统周期信号的多功能信号发生器是必要的,同时,目前尚未见到集混沌伪随机信号与传统周期信号于一体的实验室专用信号源.
本文利用Qt/Embedded,DDS技术和混沌映射,设计了一种便携式多功能信号发生器,通过触摸控制使其能够分别输出连续和数字的混沌伪随机序列、正弦波和方波信号,混沌伪随机序列的随机特性满足美国国家标准与技术研究院(National Institute of Standards and Technology,NIST)标准.
1 信号发生器系统原理及功能实现
系统分别采用Lorenz混沌映射和文献[3]中所提出的改进型Tent混沌映射以及AD9850来生成连续和数字伪随机序列、正弦波以及方波.
Lorenz混沌映射是一个三维混沌系统,其动力学方程为:
(1)
式中:a,b,c为系统参数.当Lorenz混沌映射保持a和b为定值,c>24.74时,系统呈现混沌状态.利用适当的离散化算法对式(1)做离散化处理,将离散化后的信号输入到数模转换器进行数模转换处理,转换后即得到连续混沌信号.
Tent混沌映射是一种算法简单的离散映射,其产生的伪随机序列具有运算速度快、序列分布均匀等特性.但传统Tent混沌映射存在参数少、映射范围小等缺陷,将直接导致产生的伪随机序列密钥空间小,安全性差.文献[3]中提出了一种改进型Tent混沌映射:
(2)
式中:x(n)∈(0,a),μ1∈(0,2),μ2=(0,2),a∈R.改进型Tent混沌映射增大了满映射幅度的同时也增加了复杂的动力学特性.文献[3]中指出当μ1∈(1,2),μ2∈(1,2)时,映射是混沌的,将在此区间内得到的混沌序列进行量化得到相应的混沌伪随机序列.
AD9850芯片采用DDS技术来实现正弦波与方波信号的发生.AD9850核心是一个相位累加器,由1个加法器和1个32位的相位控制寄存器构成.每经过1次时钟脉冲,累加器将频率控制字K与累加器寄存器输出的累加相位数据相加,把相加后的结果送到累加寄存器.累加寄存器将加法器在上1个时钟脉冲作用后所产生的新相位数据反馈到加法器的输入端.相位累加器每经过1次时钟脉冲就把把频率控制字累加1次,相位累加器的溢出频率就是DDS输出的信号频率.之后信号再经过相位幅度变换以及D/A转换输出正弦波信号,输出的正弦波信号再接入比较器端得到方波信号.
多功能信号发生器的工作流程如图1所示.开机后对LCD上的Qt/Embedded界面进行触摸操作,选择要输出的信号类型.信号类型有连续混沌信号、数字伪随机序列、正弦波、方波4种.信号类型选定后需要对改进型Tent混沌映射的参数和初始值或是对正弦波、方波的频率单位以及频率值进行设定,设定完毕之后点击Apply键开始输出相应信号.
图1 多功能信号发生器工作流程
2 硬件系统
多功能信号发生器硬件系统主要包括ARM9微处理器S3C2440、JTAG接口、存储器、LCD显示模块、AD9850模块、DAC0832模块以及必要的外围设备.
2.1连续混沌信号发生电路
Lorenz混沌映射经过实值计算后输出的是离散的混沌序列,需要对该信号进行数模转换,此处选用DAC0832作为数模转换芯片.由于DAC0832输出为电流信号,需要经过运放转换为电压信号,继而得到要求的连续混沌序列.
2.2正弦波与方波发生电路
正弦波与方波发生模块采用Analog Device公司生产的型号为AD9850的DDS芯片,其时钟频率为125 MHz,片上有10位的DAC和高速比较器.
由于AD9850得到的正弦波是由数字量化产生的,杂散寄生分量很大,因此需要在输出之前经过低通滤波.常用的低通滤波器中,椭圆滤波器有相对较好的滤波曲线,因此在设计中采用此种滤波电路,滤波器采用7阶,如图2所示.
图2 椭圆滤波电路
3 软件系统
软件部分主要包括嵌入式操作系统的移植、设备驱动开发、连续混沌信号及伪随机序列生成函数的实现、Qt/Embedded环境的建立与系统界面的开发.
3.1Linux操作系统的移植
鉴于Linux操作系统具有开源、方便移植等特性,故把嵌入式Linux系统作为设备的操作系统.Linux操作系统移植主要包括3个方面:BootLoader的移植、Linux内核移植、挂载根文件系统.设计中选用友善之臂公司的Supervivi作为BootLoader.根据实际需要及外设硬件的要求对Linux内核进行适当的裁剪,通过修改内核顶层的Makefile文件来选择目标平台和交叉编译器以及相关文件,完成配置裁剪后对内核进行编译,使其能够运行在嵌入式开发平台上.设计采用YAFFS文件系统作为根文件系统,YAFFS是第一个专门为NAND Flash设计的嵌入式文件系统,能够有效的解决嵌入式设备的时效性问题.
3.2设备驱动实现
嵌入式Linux操作系统中附带有LCD显示驱动和触摸屏驱动,需要自己实现的主要是DAC0832和AD9850芯片驱动程序.DAC0832和AD9850芯片驱动程序为应用程序实现信号输出以及转换控制提供系统调用接口.为了使设计简便,在驱动程序设计过程中将这两种芯片驱动程序合二为一.
DAC0832具备单缓冲、双缓冲和直通3种信号输入方式.由于设计只输出1路连续混沌信号且通过GPIO控制片选端,所以采用单缓冲方式.模数转换之前先将片选信号引脚电平拉高,依次对8个信号输入引脚进行赋值后将片选信号引脚电平拉低,输出模拟信号.考虑到传输过程中数据建立需要一定时间,所以对片选引脚操作之前延时一定时间.
AD9850有串行和并行两种工作方式.出于节省GPIO资源的考虑,设计中采用串行工作方式.AD9850芯片串行工作方式流程:芯片上电后准备进行传输频率控制字以及相位控制字之前先要对RESET引脚进行复位操作,频率控制器从D7引脚传入,开始传输频率控制字后,每传输8位数据,W_CLK引脚电平状态转换1次,输入40位数据后FQ_UD引脚电平状态转换1次,此时完成1次频率控制字输入,从而改变正弦波与方波的输出信号频率.再次改变输出信号频率时仍要对RESET引脚进行复位操作.
驱动程序主要包括设备的注册、初始化和卸载、AD9850频率控制字的输入控制等功能函数.
1)主要数据结构(struct file_operations).Linux操作系统通过FILE结构来识别设备,通过file_operations结构提供文件系统的入口函数.本设计的file_operations定义如下:
static struct file_operations dev_fops={
.owner=THIS_MOUDLE,
.ioctl=mydev_ioctl,
};
2)设备注册.设计中将DAC0832和AD9850注册为混杂设备,这样可以实现动态分配设备号以及省去实现open方法以及release方法的麻烦.结构定义如下:
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连续混沌信号的产生
连续混沌信号是由Lorenz混沌系统产生的实值离散序列经数模转换得到的.Lorenz三维连续混沌系统离散化和数字化通常有3种主要算法:简单Euler算法、改进Euler算法、Runge-Kutta算法[4].考虑到算法计算量及精度要求,选用简单Euler算法.利用Euler算法对式(1)进行离散化处理,得到离散化后的迭代方程为:
(5)
式中:T=0.001,为取样时间;a=10,b=28,c=8/3.
3.4数字伪随机序列的产生
数字伪随机序列的产生主要通过对改进型Tent混沌映射生成的离散序列进行量化来实现的.常用以下3种方法来实现对离散序列的二进制化[5].
1)阈值法.令离散混沌序列中大于序列平均值的元素为1,小于平均值的元素为0.
2)二进制法[6].首先选取离散混沌序列中的元素xn进行取整操作得到yn,如下:
xn-yn=0.b1(xn)b2(xn)…bi(xn),bi(xn)∈{0,1}.
(6)
式中:xn为离散序列中的第n位元素.然后令zn=xn-yn,此步的目的是为了将得到的序列元素中的小数部分进行二进制化表示.由此可知每个处理过的元素为
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].首先根据式(6),将离散混沌序列的每个元素二进制化,表示为zn,然后选取中间L位作为转化为二进制混沌伪随机序列的值,即bi(xn)bi+1(xn)…bi+L-1(xn),这样每次迭代就可以得到L位二进制序列.经过N次迭代就可以得到固定长度的混沌伪随机序列bi(x1)…bi+L-1(x1)……bi(xN)…bi+L-1(xN).
综合以上3种离散序列二进制化方法,L位二进制法有防止逆向迭代重构和运算量小等特点,设计中也采用了这种方法.
3.5Qt/Embedded界面开发
设计中界面开发工具采用Qt/Embedded 4.6.3,使用C++作为开发语言.Qt/Embedded为界面开发提供了丰富的控件类和界面修饰工具,作为嵌入式平台专用库,Qt/Embedded提供了丰富的驱动接口,方便开发者调用,开发人员有更多的精力在界面的设计上.
系统界面开发过程主要包括主控制界面的设计、软键盘的实现,控制函数的调用.
3.5.1主控制界面的设计
图3 主控制界面
Qt/Embedded内部集成了Qt Creator和Qt Designer,其中Qt Creator作为Qt/Embedded开发的IDE,能够完成代码的编辑与编译等工作.Qt Designer为简化图形化界面开发提供了可能.在主控制界面的布局设计中采用了Qt Designer设计界面的方法,针对不同的控件,根据实际功能的不同调用相应的槽函数.其中使用4个Radio Button来实现输出信号类型的选择;另外3个Radio Button来实现正弦波与方波频率单位的选择;1个Double SpinBox用来输入相应频率单位的频率值;2个LineEdit来实现对数字伪随机序列参数与初始值的设置;1个PushButton来确定输入并进行信号输出.主控制界面如图3所示.
3.5.2信号输出的实现过程
当Apply按键按下,系统检测设置的是哪种信号以及信号设定的频率值或是改进型Tent混沌映射的参数和初始值,然后执行相应的函数调用,使用Tektronix MSO2014数字示波器测试结果如图4~7所示,其中正弦波与方波信号频率的精度优于0.05%,稳定度优于10-3.
图4 连续混沌信号
图5 数字伪随机序列
图6 正弦波信号
图7 方波信号
4 结束语
本文基于Qt/Embedded技术设计实现了一种多功能信号发生器,既能产生连续和数字的伪随机信号,也可以按照设定的输出频率值生成相应的正弦波或方波信号.本信号发生器采用了触摸控制调节参数和频率的方法,其操作易便性以及频率调节精度较传统的按键或旋钮式有较好的改善,其中频率调节最小单位为0.01 Hz,生成的混沌伪随机序列其随机性满足NIST标准,正弦波与方波频率的稳定度优于10-3.本信号发生器的多功能性可使其应用于对精度要求不高、但又应用十分广泛的高校基础类实验室,可提供周期的正弦和方波信号,以及连续和二值的伪随机信号,用其进行周期信号实验和伪随机信号实验.尤其目前高校基础类实验室主要采用周期信号源,缺乏随机信号源,无法进行与伪随机信号相关的硬件实验,如伪随机信号性能测试、信息加密、保密通信等,因此本信号发生器对其将是一个补充.本信号发生器基于嵌入式技术,具有操作方便且易便携性特点,可为学生在课外进行各种实验提供一种携带方便的多功能信号源.
[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映射及其动力学特性研究[J].杭州电子科技大学学报,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实现[J].现代电子技术,2009,32(7):11-14.
[7]朱志良,吴艳芹,刘向东,等.中间多比特量化混沌扩频序列及其性能分析[J].东北大学学报(自然科学版),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
国家自然科学基金资助项目(60971046,61271064);浙江省自然科学基金重点项目(LZ12F01001)
杨文宵(1989-),男,河南焦作人,硕士研究生,非线性电路域智能信息处理.通信作者:王光义教授,E-mail:wanggyi@163.com.
TN74
A
1001-9146(2016)01-0001-06