日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

直接序列扩频通信系统

發布時間:2024/1/8 windows 56 豆豆
生活随笔 收集整理的這篇文章主要介紹了 直接序列扩频通信系统 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

代碼下載:https://download.csdn.net/download/xvrixingkong/10968192

一、系統功能描述:

實現如下圖所示的直接序列擴頻通信系統。

信源——不斷發送簡單的四一零碼,即反復發送“11110”
擾碼——用偽隨機對數據比特進行擾碼,可利用移位寄存器產生擾碼序列,擾碼序列的生成多項式為 ,移位寄存器的初始狀態為“100101010000000”。擾碼模塊的結構框圖如下圖所示。

交織——采用簡單的塊交織,交織深度為64,交織器為8行8列,橫向讀入,縱向讀出,可采用雙RAM結構實現(即兩個RAM,一個讀,一個寫,并交替讀寫),也可只采用一塊RAM實現(自己思考方法,可加分)。以交織深度為16的塊交織為例,輸入數據比特的序號為1-16,寫入的順序為1、2、3、4、5、6、7、8、9、10、11、12、13、14、15、16,讀出的順序為1、5、9、13、2、6、10、14、3、7、11、15、4、8、12、16。
直擴——將數據比特與偽隨機序列相乘,擴頻比為63(即偽碼速率為數據率的63倍),擴頻序列為1+X+X6和1+X+ X2+ X5+ X6構成的Gold序列
BPSK——比特‘0’對應為符號“01111111”,‘1’對應為“10000000”
解調——BPSK解調,將符號對應為比特
相關——將接收數據與擴頻序列相乘,并判決為‘0’或‘1’
解交織——交織的逆操作(實現方法與交織器相同)
解擾——擾碼的逆操作(實線方法與擾碼器相同)
附加功能:
在BPSK調制和解調之間加入噪聲模塊,檢驗直接序列擴頻系統的抗干擾能力。

二、功能描述:

1、分頻模塊——Odiv_freq

功能描述:用于時鐘分頻,可以實現任意奇數分頻。
輸入輸出解釋

表2.1 分頻模塊的端口定義 端口名稱信號模式信號類型信號說明
num_divgenericinteger分頻數
clkINstd_logic時鐘
resetINstd_logic復位信號
div_clkOUTstd_logic分頻輸出

2、信源模塊——Source

功能描述:生成連續的四一零碼數據 “11110”。
輸入輸出解釋

表2.2 信源模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
doutOUTstd_logic信號輸出

3、擾碼模塊——Scrambling

功能描述:用偽隨機碼對數據比特進行擾碼。
輸入輸出解釋

表2.3 擾碼模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
enINstd_logic使能信號
idataINstd_logic輸入信號
odataOUTstd_logic輸出信號
o_validOUTstd_logic輸出有效信號

4、交織模塊——Interweave

功能描述:對數據碼進行交織,采用簡單的塊交織,交織深度為64,交織器8行8列,橫向讀入縱向讀出。
輸入輸出解釋

表2.4 交織模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
idataINstd_logic輸入信號
i_validINstd_logic輸入有效信號
odataOUTstd_logic輸出信號
o_validOUTstd_logic輸出有效信號

5、Gold碼生成模塊——Gold_code

功能描述:生成直擴模塊和解擴模塊需要用到的gold碼。
輸入輸出解釋

表2.5 Gold碼生成模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
enINstd_logic使能信號
odataOUTstd_logic輸出信號
o_validOUTstd_logic輸出有效信號

6、直擴模塊——Spread

功能描述:利用Gold碼生成模塊得到的gold碼對數據比特進行擴頻。
輸入輸出解釋

表2.6 直擴模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
idataINstd_logic輸入信號
i_goldINstd_logic輸入gold碼
odataOUTstd_logic輸出信號

7、BPSK調制模塊——Bpsk_modu

功能描述:對直擴模塊輸出的數據進行BPSK調制。
輸入輸出解釋

表2.7 BPSK調制模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
enINstd_logic使能信號
idataINstd_logic輸入信號
odataOUTstd_logic_vector輸出信號
o_validOUTstd_logic輸出有效信號

8、BPSK解調模塊——Bpsk_demodu

功能描述:對接收到的數據進行BPSK解調。
輸入輸出解釋

表2.8 BPSK解調模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
enINstd_logic使能信號
idataINstd_logic_vector輸入信號
odataOUTstd_logic輸出信號
o_validOUTstd_logic輸出有效信號

9、相關模塊——Correlation

功能描述:數據同步后,在一個數據比特內將解調后的數據與gold碼相乘并求和,若和大于判決門限判決為‘1’,否則判決為‘0’。
輸入輸出解釋

表2.9 相關模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
enINstd_logic使能信號
idataINstd_logic輸入信號
i_goldINstd_logic輸入Gold碼
odataOUTstd_logic輸出信號
o_validOUTstd_logic輸出有效信號

10、解交織模塊——De_Interweave

功能描述:將相關解擴后的數據比特進行解交織得到發射端的原數據序列。實現過程與交織器相同。
輸入輸出解釋

表2.10 解交織模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
i_validINstd_logic輸入有效信號
idataINstd_logic輸入信號
odataOUTstd_logic輸出信號
o_validOUTstd_logic輸出有效信號

11、解擾模塊——De_Scrambling

功能描述:將交織后的數據比特進行擾碼的逆操作得到信源輸出的原信號。
輸入輸出解釋

表2.11 解擾模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
enINstd_logic使能信號
i_validINstd_logic輸入有效信號
idataINstd_logic輸入信號
odataOUTstd_logic輸出信號

12、信號延遲模塊——Delay

功能描述:可以實現將輸入信號延遲任意需要的時鐘周期。
輸入輸出解釋

表2.12 信號延遲模塊的端口定義 端口名稱信號模式信號類型信號說明
numgenericinteger延遲的時鐘周期數
clkINstd_logic時鐘
sigINstd_logic輸入待延遲信號
del_sigOUTstd_logic延遲后的輸出信號

13、發射模塊——Transmitter

功能描述:將信源、擾碼、交織、直擴和BPSK調制等功能模塊組合在一起,構成發射機模塊。
輸入輸出解釋

表2.13 發射模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
enINstd_logic使能信號
odataOUTstd_logic_vector發射的BPSK信號
syn_sigOUTstd_logic同步信號

14、接收模塊——Receiver

功能描述:將BPSK解調、相關、解交織和解擾等功能模塊組合在一起,構成接收機模塊。
輸入輸出解釋

表2.14 接收模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
resetINstd_logic復位信號
enINstd_logic使能信號
syn_sigINstd_logic同步信號
idataINstd_logic_vector接收的BPSK信號
odataOUTstd_logic解調出的信源信號

15、測試模塊——Transmitter_tb和Receiver_tb

功能描述:Transmitter_tb對發射模塊進行測試。Receiver_tb對發射模塊和接收模塊進行綜合測試。

16、噪聲模塊——Noise

功能描述:利用本原生成多項式 生成一個m序列,將m序列最高為與BPSK輸出數據的低位進行異或,相當于給BPSK輸出數據一個干擾。
輸入輸出解釋

表2.15 接收模塊的端口定義 端口名稱信號模式信號類型信號說明
clkINstd_logic時鐘
idataINstd_logic_vectorBPSK模塊輸出信號
odataOUTstd_logic_vector加干擾后的BPSK信號

17、測試模塊——Noise_Receiver_tb

功能描述:Noise_Receiver_tb對發射模塊、噪聲模塊和接收模塊進行綜合測試。

三、仿真結果:

1、分頻模塊仿真測試:

實驗中實現了一個任意奇數分頻器,為便于測試分析,設置其為5分頻得到的仿真結果如圖1所示。

圖1 分頻模塊仿真測試結果

從圖1中可以看出,設置的分頻數為5。圖中紅色方框內為分頻后的一個周期,可以看出里面有5個原時鐘周期。即該模塊功能完好。

2、信源模塊仿真測試:

信源模塊要生成連續的四一零碼數據 “11110”,得到的仿真結果如圖2所示。

圖2 信源模塊仿真測試結果

從圖2中可以看出,信源模塊輸出為連續的“11110”,紅色方框內為一個周期。即該模塊功能完好。

3、擾碼模塊仿真測試:

擾碼模塊用偽隨機碼對信源得到的數據進行擾碼,得到的仿真結果如圖3所示。

圖3 擾碼模塊仿真測試結果

從圖3中可以看出,擾碼模塊的輸入idata為連續的“11110”,輸出odata被擾碼成隨機序列。根據擾碼結構框圖可知,當en為‘1’時,輸出是輸入與移位寄存器左端異或的結果,在圖3紅色方框內第1個周期,idata為‘1’,寄存器左端為‘0’,異或的結果在下一個時鐘周期賦給odata即‘1’。

4、交織模塊仿真測試:

交織模塊用塊交織器對擾碼模塊輸出的數據進行交織處理,得到的仿真結果如圖4.1所示。

圖4.1 交織模塊仿真測試結果

該模塊在實現過程中進行了三版修改。
第一版Interweave3的設計思路是:使用3個RAM,第一個RAM寫數據,寫滿64個數據后賦給第二個RAM,然后對第二個RAM中的數據進行交織變換,變換后將數據傳送給第三個RAM用于讀出。
第二版Interweave2的設計思路是:使用2個RAM,第一個RAM按順序寫入數據,寫滿64個數據后賦給第二個RAM,然后直接改變第二個RAM的數據讀出順序。
第三版Interweave的設計思路是:使用1個RAM,邊讀邊寫,每讀出一個數據就在該地址重新寫入一個數據。每64次讀寫為一個周期,每過一個周期調換一次讀寫順序。
數據讀寫順序用下面兩句代碼描述:
odata <= data_rom( Index_IIndex_a + Index_JIndex_b );
data_rom( Index_IIndex_a + Index_JIndex_b ) <= idata;
其中, Index_I和Index_J是一個雙層循環,Index_I是外循環從7到0,Index_J是內循環從7到0。
如第一個周期內,Index_a = 8;Index_b = 1;則下一個周期內 Index_a = 1;Index_b = 8。
如果用交織深度為16,即4行4列來演示讀寫順序如圖4.2和圖4.3表示。

圖4.2 上一周期讀寫順序

圖4.3 下一周期讀寫順序

5、Gold碼生成模塊仿真測試:

Gold碼生成模塊利用移位寄存器實現,得到的仿真結果如圖5所示。

圖5 Gold碼生成模塊仿真測試結果

從圖5中可以看出,Gold碼生成模塊的輸出是寄存器g1的高位與寄存器g1的高位異或得到,如紅色方框內,異或結果延遲一個時鐘周期賦給odata。

6、直擴模塊仿真測試:

直擴模塊將Gold碼與交織模塊的輸出數據進行異或,得到的仿真結果如圖6所示。

圖6 直擴模塊仿真測試結果

從圖6中可以看出,直擴模塊輸出odata是輸入idata與Gold碼異或并延遲一個時鐘周期。圖6中紅色方框內為一個數據比特,對應63個Gold碼,滿足擴頻比63.

7、BPSK調制模塊仿真測試:

BPSK調制模塊實現對直擴模塊輸出的數據進行BPSK調制,得到的仿真結果如圖7所示。

圖7 BPSK調制模塊仿真測試結果

圖7中,BPSK調制結果odata比輸出數據idata延遲一個時鐘周期,由此可以看出idata為‘1’時,odata輸出“10000000”,idata為‘0’時,odata輸出“01111111”。

8、BPSK解調模塊、解交織模塊、解擾模塊

BPSK解調模塊、解交織模塊、解擾模塊分別與BPSK調制模塊、交織模塊和擾碼模塊功能實現相似,為其逆操作,故這里不再一一給出仿真測試結果。

9、相關模塊仿真測試:

相關模塊是將BPSK解調模塊的輸出數據與Gold碼做異或并求和,然后進行數據比特判決,得到的仿真結果如圖8所示。

圖8 相關模塊仿真測試結果

因直擴模塊中擴頻比為63,即一個數據比特與63個Gold碼異或,所以在相關模塊中,使同步之后,將一個數據比特內的63個數據分別與對應的Gold碼異或求和。若原數據比特為1,兩次和Gold碼異或后仍為1則理論上求和為63;若原數據比特為0,兩次和Gold碼異或后仍為0,則理論上求和為0;因此設置一個門限值如本次實驗設置門限值為30,當求和sum大于30是將數據比特判決為‘1’,否則判決為‘0’,由此也可以得到擴頻通信的抗干擾原理,允許傳輸過程中若一些數據錯誤,并不會影響數據判決進而影響結果。

10、延遲模塊仿真測試:

為了在設計過程中將特定的信號進行延遲和在仿真調試過程中將關注的信號進行延遲和另一個信號比較便于分析,故設計了延遲模塊,其可以實現任意時鐘周期的延遲,為觀察方便這里將延遲周期數設為3,得到的仿真結果如圖9所示。

圖9 延遲模塊仿真測試結果

從圖9中可以看出,延遲模塊的輸出del_sig比輸入信號sig延遲了3個時鐘周期,與設置的延遲周期數num為3相符。

11、發射模塊和接收模塊聯合仿真測試:

利用testbench文件——Receiver_tb對發射模塊和接收模塊進行聯合測試,得到的仿真結果如圖10所示。

圖10 發射模塊和接收模塊的仿真結果

圖10中,temp_data0為信源模塊輸出、temp_data1為擾碼模塊輸出、temp_data2為交織模塊輸出、gold_data為Gold碼生成模塊輸出、temp_data3為直擴模塊輸出、temp_data4為BPSK調制模塊輸出、temp_data5為BPSK解調模塊輸出、temp_data6為相關模塊輸出、temp_data7為解交織模塊輸出,U1/odata為解擾模塊即最終解調結果輸出。從圖中可以看出左上角紅色方框內為“11110”的信源,右下角紅色方框內為“11110”的解調數據。可以看出該仿真系統最終完全解調出了信源數據。

12、加入噪聲模塊后的聯合仿真測試:

利用testbench文件——Noise_Receiver_tb對發射模塊、噪聲模塊和接收模塊進行聯合測試,得到的仿真結果如圖11、圖12和圖13所示。

圖11 噪聲模塊數據輸入和數據輸出對比

從圖11可以看出,經過噪聲模塊加干擾后,BPSK模塊輸出的數據部分發生改變,即idata和odata的數據存在不同。

圖12 加入噪聲模塊后相關模塊相關結果及判決

從圖12可以看出,經過噪聲模塊加干擾后,當數據比特為‘1’時,相關模塊的相關結果不再是63,當數據比特為‘0’時,相關模塊的相關結果不再是0,是因為噪聲干擾后存在誤碼,但是因為相關模塊設置的判決門限為30,因此仍能正確判決,如圖12中當U2/sum為44時判決為‘1’即U2/odata輸出為‘1’;當U2/sum為16時判決為‘0’即U2/odata輸出為‘0’。這在一定程度上驗證了擴頻通信的抗干擾能力。

圖13 加入噪聲模塊后接收機最終解調輸出

從圖13中可以看出最終解調輸出仍為連續的“11110”。
系統的VHDL代碼及報告下載,請點擊這里.

總結

以上是生活随笔為你收集整理的直接序列扩频通信系统的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。