文档库 最新最全的文档下载
当前位置:文档库 › 基于TMS320C5402的混沌信号产生器

基于TMS320C5402的混沌信号产生器

基于TMS320C5402的混沌信号产生器1

张北斗,徐冬亮,马义德

兰州大学信息科学与工程学院(730000)

email: zbd01@https://www.wendangku.net/doc/c516679739.html,

摘要:采用数字信号处理器(DSP)设计实现了可以产生各种非线性微分方程的混沌信号模块,系统参数可调,可用于各种混沌应用的信号产生源。系统设计简单,容易实现,可移植性强,并可独立于PC机运行。对采用DSP产生的混沌信号,本文还提出了简单有效的信号混沌性检测方法。

关键词:混沌DSP 混沌信号源混沌检测

1.引言

混沌信号产生器是混沌保密的心脏,人们一直在探索产生混沌信号的新方法。文献[1]综述了现有的各种产生混沌信号的方法。随着混沌的理论和应用研究的深入,人们对混沌信号的产生有了新的要求。传统的采用模拟电路产生混沌信号的方法虽然有很多优点,但仍存在着器件精度达不到要求而难以有效使用的问题。

使用DSP构造混沌信号产生器,其产生机理与物理电路和FPGA产生电路有着很大的区别。电阻等分立电子元件组成的模拟系统对温度变化等特别敏感,而DSP系统受到温度等外界环境对元件参数精度的影响却很小[2]。只要DSP的浮点精度相同并且采用相同的数据类型,得到的结果是一致的。

本文提出了采用TMS320C5402 DSP产生混沌信号的方法,并对产生的信号进行分析,验证了产生的信号是混沌信号;并且,混沌信号的精度可以根据需要进行调节。经过实验测试,采用本文的设计方法,DSP可以产生已知系统微分方程的各种混沌信号。

2.DSP综述

自1982年世界上诞生首枚DSP芯片以来,DSP发展大致经历了三个阶段:理论先行的70年代,产品普及的80年代,突飞猛进的90年代。DSP是当今发展最为迅速的和最有发展前景的技术之一。与普通CPU和MCU相比,DSP在数字信号处理方面有着无可比拟的优势,特别适合网络、通信、控制等需要进行大量数字信号处理的应用场合。现在,DSP 已经成为通信、计算机、网络、工业控制以及家用电器等电子产品中不可或缺的基础器件,获得越来越广泛的应用。

DSP分定点型与浮点型两种。一般地,定点DSP速度快,功耗低,价格便宜,浮点DSP 则具有计算精确,动态范围大的优点。DSP的主要技术特点主要有:(1)采用哈佛结构;(2)专用的硬件乘法器;(3)流水线操作;(4)特殊的DSP指令;(5)多芯片可并行运行。与ARM、FPGA等器件相比,DSP优势是较高的运行速度和强大的数据处理能力,而ARM具有比较

11本课题得到甘肃省自然科学基金(项目编号:3ZS041-A25-017)资助

- 1 -

- 2 -强的事务管理功能,可以用来跑界面以及应用程序等,其优势主要体现在控制方面;FPGA 可以用VHDL 或verilogHDL 来编程,当电路有少量改动时,更能显示出FPGA 的灵活性强的优势。

对设计者来说,算法是DSP 应用的核心。一个优秀的DSP 工程师应该具备判别算法的优劣并优化算法的能力。

3.系统总体设计

本设计采用TI 公司的TMS320C5402[3]作为核心器件,系统框图如图1所示。这款芯片的主频达到了100MIPS ,是TI 公司的16 位定点、低功耗、高性能的信号处理器,尤其它极高的性价比,使得TMS320C5402在企业界获得了广泛的应用。图2描述了系统设计的总体流程。在本设计中,DSP 主要用于微分数值的迭代运算,计算性能的高低将对信号产生速度产生决定性的影响。

首先是根据需要选取混沌信号产生的混沌方程。经过多年的发展,混沌方程是很丰富的

[4]:(1) 李纳德(Lienard )方程;(2) 范德坡(Van Der Pol)方程;(3) 杜芬(Duffing )方程;

(4) 洛伦茨(Lorenz)方程;(5) 蔡氏电路(Chua’s Cuicut ,蔡少棠)方程;(6) 洛斯勒(Rossler )方程;(7) 陈氏(Chen’s ,陈关荣)方程;(8) 负阻尼振荡器;(9) 依侬(Henon )迭代方程;

(10) 逻辑斯蒂(Logistic )映射;(11) 圆周映射(Circle Map );(12) 曼德波特复数映射(Mandelbrot map )。式(1)和式(2)就是其中的两个典型方程:Lorenz 方程式和变形蔡氏电路方程。

()(1)x y x y

x y xz z xy z σρβ=???=????=??

选取参数为:σ=16,ρ=45.2,β=4。

图1. 系统硬件框图

- 3 -

312()(2)x y k x k x y

x y xz z y αβ?=+??=????=??

选取参数α=5.5,β=-7.4,K1=0.25,K2=0.1。

我们可以根据需要选择需要的混沌微分方程,本文选取Lorenz 方程、杜芬方程和洛斯勒方程产生混沌信号。

方程确定之后,是确定方程系数以及初值,这一步也是不可缺少的。与采用分立元件设计不同的是:分立元件设计混沌信号源时不必设定初值,而采用DSP 设计混沌信号源时方程的初值是不可缺少的。初值的选取可以是不为零的任意数,但最好能选取在系统混沌吸引子中,这样可以使系统快速地进入混沌状态。

DSP 产生的混沌信号,在输出端幅值有限,可以根据需要增加一级放大电路。采用何种芯片对总体设计不会产生大的影响,本模块设计可以根据应用的不同,如对混沌信号产生速率的需求、功耗需求等而选用不同的芯片。所以本设计还有很大的通用性和灵活性。

4.混沌信号的产生

混沌信号的产生主要借助于DSP 强大的运算能力,采用数值计算的方法。混沌方程的微分数值计算方法主要有:欧拉方法、改进欧拉方法和四阶龙格-库塔法。这三种方法精度由低到高,计算量同样由低到高。运算量的大小直接决定运算速度,也就决定了混沌信号的产生速率。选用何种计算方法取决于对精度和速率的要求以及对运算量的承受能力。图3是DSP 产生混沌信号的流程图。下面以欧拉法和改进的欧拉法为例,叙述DSP 产生混沌信号的原理。

图3. 信号产生框图

图2. 系统总体流程

- 4 -4.1 欧拉法

以Lorenz 方程(1)为例,定义x 、y 、z 为双精度型,选取初值x=0.15、y=0.1、z=0.1。方程参数值选取A=16、B=45.2、C=4,并定义步长为k ,在给定初值的情况下,运用下面三个方程产生混沌信号:

x = x + k * (-A* x + A * y)/1000 y = y + k * (-1 * x * z +B * x - y)/1000

(1)'z = z + k * (x * y - C * z)/1000?????

对于变形蔡氏电路方程(2)采取同样的方法,通过调整方程和参数,可以得到混沌信号。

4.2 改进的欧拉法

以Lorenz 方程(1)为例,定义x 、y 、z 为双精度型,选取初值x=10.0、y= -12.0、z=26.0。方程参数值选取a=10.0、b=28.0、c=2.67,定义k=0.002。程序的主要代码如下:

double a=10.0;

double b=28.0;

double c=2.67;

double k=0.002;

double x=10.0, y=-12.0, z=26.0;

double T01,T02,T03,T11,T12,T13;

double T21,T22,T23,T31,T32,T33;

double f1(double x,double y,double z)

{

return(a*(y-x));

}

double f2(double x,double y,double z)

{

return(b*x-y-x*z);

}

double f3(double x,double y,double z)

{

return(x*y-c*z);

}

…… for(i=0;i

类似地,我们可以用杜芬方程和洛斯勒方程的改进欧拉法产生混沌信号,代码如下:

(a) 杜芬(duffing)方程:

double x1=1.20, x2=0.70, x3=0.5, x4=0.2;

double k=0.1;

double T01,T02,T03,T04, T11,T12,T13,T14; double T21,T22,T23,T24,T31,T32,T33,T34;

double f1(double x1,double x2,double x3,double x4)

{ return(x2);}

double f2(double x1,double x2,double x3,double x4)

{ return(-0.3*x2-x1*x1*x1+39.0*x3);}

double f3(double x1,double x2,double x3,double x4)

{ return(-x4);}

double f4(double x1,double x2,double x3,double x4)

{ return(x3);}

……

for(i=0;i

{

T01=f1(x1,x2,x3,x4);

T02=f2(x1,x2,x3,x4);

T03=f3(x1,x2,x3,x4);

T04=f4(x1,x2,x3,x4);

T11=f1(x1+k*T01/2.0,x2+k*T02/2.0,x3+k*T03/2.0,x4+k*T04/2.0); T12=f2(x1+k*T01/2.0,x2+k*T02/2.0,x3+k*T03/2.0,x4+k*T04/2.0); T13=f3(x1+k*T01/2.0,x2+k*T02/2.0,x3+k*T03/2.0,x4+k*T04/2.0); T14=f4(x1+k*T01/2.0,x2+k*T02/2.0,x3+k*T03/2.0,x4+k*T04/2.0); T21=f1(x1+k*T11/2.0,x2+k*T12/2.0,x3+k*T13/2.0,x4+k*T14/2.0); T22=f2(x1+k*T11/2.0,x2+k*T12/2.0,x3+k*T13/2.0,x4+k*T14/2.0); T23=f3(x1+k*T11/2.0,x2+k*T12/2.0,x3+k*T13/2.0,x4+k*T14/2.0); T24=f4(x1+k*T11/2.0,x2+k*T12/2.0,x3+k*T13/2.0,x4+k*T14/2.0); T31=f1(x1+k*T21,x2+k*T22,x3+k*T23,x4+k*T24);

T32=f2(x1+k*T21,x2+k*T22,x3+k*T23,x4+k*T24);

T33=f3(x1+k*T21,x2+k*T22,x3+k*T23,x4+k*T24);

T34=f4(x1+k*T21,x2+k*T22,x3+k*T23,x4+k*T24);

x1=x1+k*(T01+2*T11+2*T21+T31)/6.0;

x2=x2+k*(T02+2*T12+2*T22+T32)/6.0;

x3=x3+k*(T03+2*T13+2*T23+T33)/6.0;

x4=x4+k*(T04+2*T14+2*T24+T34)/6.0;

}

(b) 洛斯勒(Rosslor)方程:

double x1=1.0,x2=-1.0,x3=2.0;

double k=0.001;

double T01,T02,T03,T11,T12,T13,T21,T22,T23,T31,T32,T33; double f1(double x1,double x2,double x3)

{ return(-x2-x3);}

double f2(double x1,double x2,double x3)

{ return(x1+0.2*x2);}

double f3(double x1,double x2,double x3)

{ return(0.2+x3*(x1-5.7));}

- 5 -

……

for(i=0;i

{

T01=f1(x1,x2,x3);

T02=f2(x1,x2,x3);

T03=f3(x1,x2,x3);

T11=f1(x1+k*T01/2.0,x2+k*T02/2.0,x3+k*T03/2.0);

T12=f2(x1+k*T01/2.0,x2+k*T02/2.0,x3+k*T03/2.0);

T13=f3(x1+k*T01/2.0,x2+k*T02/2.0,x3+k*T03/2.0);

T21=f1(x1+k*T11/2.0,x2+k*T12/2.0,x3+k*T13/2.0);

T22=f2(x1+k*T11/2.0,x2+k*T12/2.0,x3+k*T13/2.0);

T23=f3(x1+k*T11/2.0,x2+k*T12/2.0,x3+k*T13/2.0);

T31=f1(x1+k*T21,x2+k*T22,x3+k*T23);

T32=f2(x1+k*T21,x2+k*T22,x3+k*T23);

T33=f3(x1+k*T21,x2+k*T22,x3+k*T23);

x1=x1+k*(T01+2*T11+2*T21+T31)/6.0;

x2=x2+k*(T02+2*T12+2*T22+T32)/6.0;

x3=x3+k*(T03+2*T13+2*T23+T33)/6.0;

}

5.信号验证

产生的信号是不是混沌的关系着本设计的成败,所以信号的测试是必要的。判断信号是否是混沌的方法很多。文献[5]中列举了很多判断方法,但都存在着运算复杂的问题。一般情况下,通过示波器显示的单通道波形,我们还是很难判断其混沌性。有一种测试方案是采用MATLAB和TI公司联合开发的MATLAB Link for CCS Development Tool(简称CCSlink)工具箱[3, 6],但这个工具箱适用于程序的调试,对混沌信号的验证不够灵活。

本文采用一种简单有效的方法判断DSP产生的信号是否混沌。运用JTAG测试技术和CCS的在线调试功能,直接访问DSP内存。例如,Lorenz混沌信号的测试中,在CCS编译环境的程序部分设定,将数据x存于DSP的地址0x0088,y存于地址0x0099,z存于地址0x00A0,使用探针功能对内存中数据进行了采集,并将数据存为DAT文件格式,然后通过MATLAB强大的图形显示能力对数据进行了显示,通过分析相图判断信号是否是混沌信号。

以Lorenz混沌信号的测试为例,运用JTAG,通过CCS直接访问DSP内存,采集并存储98047点数据。采集的数据(取前100点)如下:

0.10645 0.11328 0.11963 0.12598 0.13281 0.13867 0.14551 0.15234 0.15820

0.16504 0.17090 0.17773 0.18457 0.19043 0.19727 0.20410 0.20996 0.21680

0.22363 0.23047 0.23730 0.24414 0.25000 0.25781 0.26367 0.27148 0.27734

0.28516 0.29297 0.30078 0.30664 0.31445 0.32227 0.33008 0.33789 0.34570

0.35352 0.36133 0.36914 0.37891 0.38672 0.39453 0.40430 0.41211 0.42188

0.42969 0.43945 0.44922 0.45898 0.46875 0.47852 0.48828 0.49805 0.50781

0.51953 0.52734 0.53906 0.55078 0.56250 0.57422 0.58594 0.59766 0.60938

0.62109 0.63281 0.64844 0.66016 0.67188 0.68750 0.69922 0.71484 0.73047

- 6 -

- 7 -

0.74219 0.75781 0.77344 0.78906 0.80469 0.82031 0.83594 0.85156 0.87109 0.88672 0.90234 0.92188 0.94141 0.95703 0.97656 0.99609 1.01560 1.03130 1.05470 1.07810 1.09380 1.11720 1.14060 1.16410 1.18750 1.21090 1.23440

1.25780

图4是用MATLAB 的图形显示函数,用DSP 产生的数据做出的波形图和相图。由相图可见,DSP 产生的信号是混沌的,验证了设计的正确性。

图5和图6是用杜芬方程和洛斯勒方程产生的混沌信号与相图。

图4. DSP 产生的Lorenz 混沌信号与相图

图5. 杜芬方程产生的混沌信号与相图

- 8 -

6.结论

本文针对模拟电路设计的混沌信号模块结构复杂、噪声高等缺点,使用TMS320C5402 DSP 实现了可调精度的混沌信号产生模块,给出了设计方法,并叙述了模块的通用性。最后,利用一种基于CCS 与MATLAB 结合的DSP 混沌信号测试方法,验证结果的正确性。

参考文献

[1] Delgado-Restituto M, Rodrguez-Vazquez A. Integrated Chaos Generators[J]. Proceedings of the IEEE, 2002,

90(5): 747

[2] Rulph Chassaing. DSP Applications Using C and the TMS320C6x DSK[M]. John Wiley & Sons, Inc. 2002

[3] Texas Instruments. TMS320C54x DSP Design Workshop[M]. 2000, 5.

[4] 张新国,马义德,杜桂芳. 现代非线形电路—分析、仿真、设计、及应用[M]. 北京:清华大学出版社,

2006.

[5] 吕金虎,陆君安,陈士华. 混沌时间序列分析及应用[M]. 武汉:武汉大学出版社,2002

[6] 刘瑞华,潘建军. 基于MATLAB 的DSP 调试方法[J]. 测控技术, 2004, 23(z1): 341

Chaotic Signal Generator With TMS320C5402 DSP

Beidou ZHANG Dongliang XU Yide MA

School of Information Science & Engineering,

Lanzhou University, Lanzhou, Gansu, 730000

图6. 洛斯勒方程产生的混沌信号与相图

1.Abstract

A chaotic signal generator model is implemented using DSP and nonlinear differential equation. The precision of this model can be regulated, and can be used as chaos signal generator in chaos systems. The design is simple, digital and easy to realize. An effective testing method of chaotic signal is also proposed in this paper.

Keywords:Chaos DSP Chaos signal generator Chaos testing

张北斗:男,江苏徐州人,在读硕士研究生,主要研究方向为数字图像处理、神经网络、嵌入式系统设计等。

徐冬亮:男,江苏连云港人,在读硕士研究生,主要研究方向为混沌电路、嵌入式系统等。

马义德:男,甘肃临夏人,现为兰州大学信息与科学学院教授,博士生导师,长期从事计算机应用系统、生物信息数字图像处理、通信与信息、DSP与信号处理等方面的教学与科研工作,并出版著作5部,在SCI、EI以及国内外核心期刊等发表文章50余篇。

- 9 -

相关文档