摘 要: 混沌序列的產(chǎn)生是混沌理論應(yīng)用于保密通信領(lǐng)域的一個(gè)重要問題。通過對(duì)Logistic映射進(jìn)行變換處理,利用整數(shù)運(yùn)算代替小數(shù)運(yùn)算,使程序便于在MCS-51系列單片機(jī)平臺(tái)上運(yùn)行,由此產(chǎn)生Logistic-Map混沌序列。
關(guān)鍵詞: 混沌序列;Logistic-Map;單片機(jī)
混沌及其應(yīng)用是近年來非線性科學(xué)研究領(lǐng)域的一個(gè)熱點(diǎn)課題。自Pecora和Carroll提出了混沌同步概念,使混沌應(yīng)用于保密通信技術(shù)領(lǐng)域成為可能。但要進(jìn)行有效的混沌通信,首先必須產(chǎn)生穩(wěn)定的混沌序列信號(hào)。
混沌序列信號(hào)發(fā)生器最初是利用分立模擬電子元件來實(shí)現(xiàn)的,這種方法能有效地產(chǎn)生混沌信號(hào),但降低了集成度,增大了體積,且在通信應(yīng)用時(shí),因?yàn)樵?shù)較大的離散性,容易造成收發(fā)系統(tǒng)之間的電路參數(shù)失配。相比而言,用數(shù)字元件實(shí)現(xiàn),能簡化系統(tǒng)并提高抗干擾能力,例如,在DSP和FPGA等數(shù)字平臺(tái)上產(chǎn)生混沌序列,是一種較為有效的方法。
對(duì)于產(chǎn)生形式簡單并且應(yīng)用廣泛的Logistic-Map混沌序列[1]信號(hào),可在速度較慢、資源有限的51系列單片機(jī)硬件平臺(tái)[2]上實(shí)現(xiàn)。由于Logistic映射中產(chǎn)生的迭代數(shù)據(jù)全是小數(shù),而單片機(jī)處理浮點(diǎn)數(shù)的能力較差,故需對(duì)Logistic-Map方程進(jìn)行映射變換,以便于在單片機(jī)上運(yùn)行實(shí)現(xiàn)。
1 Logistic方程的變換處理
Logistic方程是目前應(yīng)用較為廣泛的一種混沌映射,其迭代方程的數(shù)學(xué)表達(dá)式為
由于單片機(jī)并不適合于處理小數(shù),故為了方便于單片機(jī)的運(yùn)行處理,系數(shù)盡可能地選擇整數(shù),這里選取參數(shù)μ=4,其時(shí)域仿真波形如圖3所示。
Logistic方程中,x(n)的值均為0~1之間的小數(shù),而x(n)值的精確度對(duì)系統(tǒng)是否處于混沌狀態(tài)有一定的影響,精度過低會(huì)將混沌系統(tǒng)強(qiáng)制性帶出混沌。理論上,x(n)值的精確度越大越好,但實(shí)際上不可能選取無窮精度。在Matlab仿真時(shí),軟件采用雙精度浮點(diǎn)的形式進(jìn)行數(shù)值運(yùn)算。
考慮到單片機(jī)處理浮點(diǎn)數(shù)的能力較差,通過線性映射:
將x(n)∈(0,1)的值映射到X(n)∈(0,65 536)的區(qū)間上,而這屬于一個(gè)無符號(hào)整型變量的表數(shù)范圍。通過該映射,就能在保證變換前的數(shù)值精確到小數(shù)點(diǎn)后4位的情況下,用無符號(hào)整型變量代替雙精度浮點(diǎn)型變量的運(yùn)算,并且能在一定程度上反映小數(shù)點(diǎn)后第5位的情況。
經(jīng)過映射變換后的Logistic映射方程變?yōu)椋?br />
式中X(n)∈(0,65 536)。數(shù)值仿真結(jié)果如圖4所示。由此可知,變換只改變了x(n)值的幅度,并沒有改變系統(tǒng)的性質(zhì)。
2 硬件設(shè)計(jì)
在硬件設(shè)計(jì)中,選用了51系列中的增強(qiáng)型單片機(jī)AT89S52。這款單片機(jī)內(nèi)置了8 KB的Flash,8個(gè)256 bit的片內(nèi)RAM,對(duì)于存儲(chǔ)程序和臨時(shí)數(shù)據(jù)值有足夠的空間,因此可采用單片工作模式,不需擴(kuò)展外圍存儲(chǔ)器。
圖5為Logistic混沌信號(hào)發(fā)生器的硬件電路圖。單片機(jī)的P1.6、P1.7分別輸出轉(zhuǎn)換控制信號(hào)和控制時(shí)鐘信號(hào);P1.4、P1.5則將Logistic方程的迭代結(jié)果串行地送入數(shù)模轉(zhuǎn)換器。
要較好地將單片機(jī)計(jì)算結(jié)果還原成模擬信號(hào)并在示波器上顯示出來,對(duì)D/A轉(zhuǎn)換器的精度有一定的要求[5]。數(shù)模轉(zhuǎn)換器的精度過低,會(huì)使許多不同的計(jì)算結(jié)果被轉(zhuǎn)換為相同的模擬電壓值,導(dǎo)致波形質(zhì)量的嚴(yán)重下降。這里選用了廉價(jià)高速的12位精度數(shù)模轉(zhuǎn)換器MAX538[2,6]。這款D/A轉(zhuǎn)換器是電壓輸出型,串行輸入方式,由單5 V電源供電。它采用菊花鏈結(jié)構(gòu),1次接收16位的數(shù)據(jù),其中只有低12位有效,而高四位只在構(gòu)成菊花鏈時(shí)使用。圖6為MAX538的時(shí)序圖,當(dāng)轉(zhuǎn)換控制信號(hào)為高電平時(shí),D/A轉(zhuǎn)換器不接收新值,而將數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào),輸出的模擬信號(hào)電壓值:
式中,VREF為基準(zhǔn)電壓,取為2.5 V;當(dāng)其為低點(diǎn)平時(shí),每來1個(gè)控制時(shí)鐘脈沖就讀入1位值。
3 軟件流程設(shè)計(jì)
根據(jù)(3)式可知,程序中涉及到了減法、乘法和除法運(yùn)算。在單片機(jī)指令系統(tǒng)中,這3種運(yùn)算指令均為多周期指令,會(huì)占用較多的運(yùn)行時(shí)間,尤其是除法運(yùn)算。相對(duì)而言,賦值指令、移位指令與邏輯運(yùn)算指令則較為快速,因此,在保證準(zhǔn)確性的前提下,可用移位運(yùn)算代替乘、除運(yùn)算[7]。
在設(shè)計(jì)程序時(shí),利用循環(huán)迭代,使單片機(jī)不斷地計(jì)算出Logistic方程的當(dāng)前值。程序流程圖如圖7所示。在整個(gè)循環(huán)體內(nèi),通過以下幾個(gè)步驟完成1次迭代運(yùn)算:
(1)將公式(3)中的減法運(yùn)算[65536-X(n)]用“異或”運(yùn)算[X(n)⊕0xFFFF]代替,所得值送入變量y所指向的存儲(chǔ)空間;
(2)將y的值與x相乘,實(shí)現(xiàn)[X(n)[65536-X(n)]],而這個(gè)乘法運(yùn)算的結(jié)果是一個(gè)32位的值,因此賦予長整型變量M32;
(3)乘法運(yùn)算結(jié)果要除以65 536,該值是2的16次方(65 536=216),故可通過將M32的值右移16位來替換除法運(yùn)算;
(4)在單片機(jī)指令系統(tǒng)中,除法運(yùn)算的結(jié)果是個(gè)16位的值,但移位運(yùn)算并不會(huì)改變變量的數(shù)據(jù)類型,故仍為32位的數(shù)據(jù)。所以,要令M32和0xFFFF相“與”,取出M32的低16位值存入與整型變量相對(duì)應(yīng)的存儲(chǔ)空間;
(5)用y的值左移2位替代乘以系數(shù)μ=4的運(yùn)算,計(jì)算出Logistic方程的當(dāng)前值;
(6)將計(jì)算結(jié)果送入數(shù)模轉(zhuǎn)換器。
數(shù)模轉(zhuǎn)換芯片MAX538是串行輸入的,上述步驟計(jì)算的結(jié)果是一個(gè)整型數(shù)值,不能1次送入D/A芯片,要將數(shù)值按權(quán)位的高低逐個(gè)取出并傳送。并且MAX538是12位的D/A芯片,只有低12數(shù)據(jù)有效。計(jì)算結(jié)果的16位數(shù)據(jù)中,對(duì)信號(hào)幅度影響較大的是高12位數(shù)據(jù),故要將x(n)的值右移4位,將高4位無效位清零,而把有效值保存在低12位。根據(jù)MAX538的信號(hào)時(shí)序,可得如圖8所示的流程圖。
混沌系統(tǒng)方程中,均為小數(shù)形式的運(yùn)算,增加了產(chǎn)生混沌信號(hào)時(shí)的硬件復(fù)雜程度。因此,通過對(duì)Logistic方程進(jìn)行線性變換,采用整數(shù)運(yùn)算替代浮點(diǎn)數(shù)運(yùn)算,可以在保證一定數(shù)值精度的情況下,提高程序的運(yùn)行速度,為利用51系列單片機(jī)產(chǎn)生混沌序列信號(hào)提供了一種實(shí)際可行的實(shí)現(xiàn)方法。
參考文獻(xiàn)
[1] 呂金虎,陸君安,陳士華.混沌時(shí)間序列分析及其應(yīng)用[M].武漢:武漢大學(xué)出版社,2002.
[2] 李群芳,張士軍,黃?。畣纹⑿陀?jì)算機(jī)與接口技術(shù)(第2版)[M].北京:電子工業(yè)出版社,2005.
[3] 趙艷紅,張春,吳楚.?dāng)U頻通信中數(shù)字混沌序列的產(chǎn)生[J].信息工程大學(xué)學(xué)報(bào),2000(3):40-43.
[4] 劉文波.Logistic映射的電路實(shí)現(xiàn)及應(yīng)用[J].?dāng)?shù)據(jù)采集與處理,2001(1):129-132.
[5] 趙耿,鄭德玲,董冀媛.Logistic映射數(shù)字混沌產(chǎn)生器[J].北京科技大學(xué)學(xué)報(bào),2001(2):173-176.
[6] 王福瑞.單片微機(jī)測控系統(tǒng)設(shè)計(jì)大全[M].北京:北京航空航天大學(xué)出版社,1998.
[7] 唐秋玲,覃團(tuán)發(fā),姚海濤,等.?dāng)?shù)字語音混沌保密通信系統(tǒng)及硬件實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2000(2):58-60.