目前,擴頻技術因其良好的隱蔽性和抗干擾性,從而在通信和測控領域得到了廣泛運用。直接序列擴頻是擴頻的一種主要方式,它是用PN碼和二元信息數字序列模2相加后成復合碼去調制載波?1?。在一些使用長序列PN碼擴頻的場合,如統一擴頻測控及圖象傳輸系統中,PN碼即用來對上行遙控指令進行擴頻,又用來作為上行測距碼?2?。為了實現無模糊測距所使用的PN 碼的碼長較長,若用寄存器及其反饋支路來構成PN碼發生器,則所需寄存器級數較多,且電路做好后,所產生的PN碼就固定了。這一點對于某些保密性要求很高的通信或測控系統來說很不方便,因為在這種系統中往往需要多組PN碼序列備用,以便隨時更換擴頻碼增強保密性。解決這一問題的簡單方法就是將所有的PN碼存儲在EPROM中,以供隨時調用。但由于PN碼的碼長較長或個數較多,將這些數據燒錄進EPROM中也比較麻煩。如果利用MATLAB軟件來產生所需的PN碼序列,并通過簡單的矩陣變化,形成一個?.hex文件,將其下載到EPROM中,就使得這一過程大大簡化。 1 擴頻電路框圖及波形 圖1(a)為PN碼直接序列擴頻電路框圖。首先從數據流中提取位同步時鐘,經分頻后送往計數器作為記數脈沖,計數器就是EPROM的地址產生器。由EPROM輸出的PN碼對數據進行擴頻。圖1(a)中各點波形如圖1(b)所示。 圖1(b)中波形a為輸入數據,波形b為從數據中提取的位同步時鐘,經分頻后得到如波形c所示的PN碼chip時鐘(計數器的記數脈沖),波形d為從EPROM中讀出的PN碼序列。從圖1中可以看出,用EPROM存儲PN碼序列,以計數器作為地址碼產生器所構成的直接序列擴頻電路,其結構非常簡單。 2 用MATLAB產生PN碼及數據文件 若PN序列碼長較長,直接用手工錄入EPROM中容易出錯,且要花費較多的時間。如果用仿真軟件MATLAB中的SIMULINK模塊來構成PN碼發生器(也可用編程的方法),并將其產生的PN序列燒錄進EPROM中,就可以大大簡化這一過程。SIMULINK是實現動態系統建模、仿真的一個集成環境。它的存在使MATLAB的功能得到進一步擴展,即實現了可視化建模和多工作環境間文件互用和數據交換。 下面以r =11的PN碼發生器為例加以說明。 圖2是一個用SIMULINK模塊組成的m序列發生器,對應的本原多項式為: F x =1+x2+x1 PN碼的初始狀態可根據需要進行設置,即將移位寄存器設置為相應的初始狀態(1或0)。若輸出到MATLAB工作空間的PN碼應是完整的一周期序列,且將移位寄存器的取樣時間定為1單位時間,那么仿真時間就應設為N-1個單位時間(N為碼長),依上例則應設為2046個單位時間進行仿真。圖中"To Workspace"模塊的作用是將仿真后得到的PN序列以列向量的形式輸出到MATLAB工作空間。 PN= 10101010101110... ′2047 只要將該PN序列存儲到EPROM中連續2r-1(r=11)個單元的同一BIT位,即可在計數器(地址產生器)的作用下從該BIT位輸出這個PN碼序列。那么一片EPROM就可以同時輸出8個PN碼,用n片EPROM就可以同時輸出nX8個PN碼。在實際中可選擇其一用來對信息數字序列進行擴頻。怎樣將PN碼序列組下載到一片EPROM中呢?如前所述,先用SIMULINK模塊分別組成8個(或者更多,視EPROM的存儲長度或數量而定)PN碼發生器,仿真后將各自的PN碼序列輸出到MATLAB工作空間,得到8組列向量。 通過矩陣變換將這8個列向量合成一個新矩陣,矩陣的列就由這8個列向量組成。 PN=?PN1,PN2,PN3,PN4,PN5,PN6,PN7,PN8? PN= 用reshape指令將矩陣變維,得到一個(4094X4)的矩陣,再將每一個行向量用一個十六進制數表示,最后用fprintf指令形成一個 .hex文件?3 直接將該文件下載到EPROM中就可以由EPROM同時提供8個PN碼。 3 實際電路和波形 在實際中采用了HC4040(12bit) 計數器和CD6740(EPROM)組成了一個PN碼發生器。發生器電路圖如圖3所示。 4040在5V電壓下最高輸入時鐘頻率為3.5MHz,在15V電壓下可達到12MHz,滿足一般情況下的PN碼速率要求。由于將PN碼碼長定為2047,因此當Q1~Q11均為高電平時將計數器清0。圖中D觸發器的作用是對輸出數據起整形作用以去掉數據流中的毛刺。通過讓EPROM的高位地址線A12、A13分別接高、低電平,能夠使該電路產生32組不同的PN碼序列。 圖4(a)中的圖是運用本文提出的擴頻電路設計方案所得到的實驗電路輸出的PN碼波形(包括PN碼時鐘波形),圖4 b 是SIMULINK仿真波形。二者選取了PN序列中的同一段以便對照。 本文所提出的直接序列擴頻電路方案有三個特點:①PN碼的產生及固化迅速而準確。②電路結構簡單,幾乎不需要調試。③使用方便,即可根據實際需要同時輸出多組PN碼序列,也可以從若干PN碼序列中選取一組輸出。 |