摘 要: 混沌序列的產(chǎn)生是混沌理論應(yīng)用于保密通信領(lǐng)域的一個(gè)重要問(wèn)題,。通過(guò)對(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)用是近年來(lái)非線性科學(xué)研究領(lǐng)域的一個(gè)熱點(diǎn)課題,。自Pecora和Carroll提出了混沌同步概念,,使混沌應(yīng)用于保密通信技術(shù)領(lǐng)域成為可能。但要進(jìn)行有效的混沌通信,,首先必須產(chǎn)生穩(wěn)定的混沌序列信號(hào),。
混沌序列信號(hào)發(fā)生器最初是利用分立模擬電子元件來(lái)實(shí)現(xiàn)的,這種方法能有效地產(chǎn)生混沌信號(hào),,但降低了集成度,,增大了體積,且在通信應(yīng)用時(shí),,因?yàn)樵?shù)較大的離散性,,容易造成收發(fā)系統(tǒng)之間的電路參數(shù)失配。相比而言,,用數(shù)字元件實(shí)現(xiàn),,能簡(jiǎn)化系統(tǒng)并提高抗干擾能力,例如,,在DSP和FPGA等數(shù)字平臺(tái)上產(chǎn)生混沌序列,,是一種較為有效的方法。
對(duì)于產(chǎn)生形式簡(jiǎ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)有一定的影響,,精度過(guò)低會(huì)將混沌系統(tǒng)強(qiáng)制性帶出混沌,。理論上,,x(n)值的精確度越大越好,但實(shí)際上不可能選取無(wú)窮精度,。在Matlab仿真時(shí),,軟件采用雙精度浮點(diǎn)的形式進(jìn)行數(shù)值運(yùn)算。
考慮到單片機(jī)處理浮點(diǎn)數(shù)的能力較差,,通過(guò)線性映射:
將x(n)∈(0,,1)的值映射到X(n)∈(0,65 536)的區(qū)間上,,而這屬于一個(gè)無(wú)符號(hào)整型變量的表數(shù)范圍,。通過(guò)該映射,就能在保證變換前的數(shù)值精確到小數(shù)點(diǎn)后4位的情況下,,用無(wú)符號(hào)整型變量代替雙精度浮點(diǎn)型變量的運(yùn)算,,并且能在一定程度上反映小數(shù)點(diǎn)后第5位的情況。
經(jīng)過(guò)映射變換后的Logistic映射方程變?yōu)椋?br />
式中X(n)∈(0,,65 536),。數(shù)值仿真結(jié)果如圖4所示。由此可知,,變換只改變了x(n)值的幅度,,并沒(méi)有改變系統(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為L(zhǎng)ogistic混沌信號(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)并在示波器上顯示出來(lái),,對(duì)D/A轉(zhuǎn)換器的精度有一定的要求[5]。數(shù)模轉(zhuǎn)換器的精度過(guò)低,,會(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í),,每來(lái)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),通過(guò)以下幾個(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位的值,,因此賦予長(zhǎng)整型變量M32,;
(3)乘法運(yùn)算結(jié)果要除以65 536,該值是2的16次方(65 536=216),,故可通過(guò)將M32的值右移16位來(lái)替換除法運(yùn)算,;
(4)在單片機(jī)指令系統(tǒng)中,除法運(yùn)算的結(jié)果是個(gè)16位的值,,但移位運(yùn)算并不會(huì)改變變量的數(shù)據(jù)類(lèi)型,,故仍為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位無(wú)效位清零,,而把有效值保存在低12位,。根據(jù)MAX538的信號(hào)時(shí)序,可得如圖8所示的流程圖,。
混沌系統(tǒng)方程中,,均為小數(shù)形式的運(yùn)算,增加了產(chǎn)生混沌信號(hào)時(shí)的硬件復(fù)雜程度,。因此,,通過(guò)對(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ī)測(cè)控系統(tǒng)設(shè)計(jì)大全[M].北京:北京航空航天大學(xué)出版社,,1998.
[7] 唐秋玲,,覃團(tuán)發(fā),姚海濤,,等.?dāng)?shù)字語(yǔ)音混沌保密通信系統(tǒng)及硬件實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,,2000(2):58-60.