在通信系統中分析計算系統抗噪聲性能時,經常假定信道噪聲為加性高斯型白噪聲(AGWN)。本文就是通過分析AGWN的性質,采用自頂向下的設計思路,將AGWN信號分成若干模塊,最終使用Verilog硬件描述語言,完成了通信系統中AGWN信號發生電路的設計和仿真,其實質上是設計一個AGWN信號發生器。該信號主要應用在數字通信系統中,所以只需要產生數字形式的AGWN信號,這樣既便于信號產生,也便于在數字通信系統中運用。
1 AGWN信號的產生
AWGN信號指同時滿足白噪聲和高斯噪聲的條件的信號。白噪聲功率密度函數在整個頻率域內是常數,即服從均勻分布。完全理想的白噪聲不存在。高斯噪聲指概率密度函數服從高斯分布(即正態分布)。AGWN信號其實就是一個具有確定功率譜密度和概率分布函數的隨機信號。
由隨機過程的理論可以知道,不相關隨機序列的功率譜密度為常數(白噪聲),偽隨機序列(PN)就是這樣的不相關序列。再由中心極限定理,獨立同分布的隨機變量的和收斂于高斯隨機變量。這樣就可根據PN序列的性質和中心極限定理來設計AWGN信號。
為簡單起見,設計用8個PN序列發生器產生8個獨立的偽隨機序列(每個分為實部和虛部),根據中心極限定理,將8個信號相加之后的信號,更加接近于AG-WN信號,最后再乘以一個可變系數,就產生了可在數字通信系統中直接引用的AGWN信號。AGWN信號生成的總體框圖如圖1所示。
在FPGA內部產生n位并行偽隨機序列,可由n個并行的結構相同但初始態互不相同的線性反饋移位寄存器(LFSR)產生。結構相同的LFSR在不同初始狀態下產生的序列之間存在著一種移位關系,導致n個序列并非相互獨立。如果所期望的序列長度為k,那么只有在保證任一狀態在k次移位操作之內都不會與其他狀態發生重復后,這種方法才是可取的。
在通信中,信號一般都表示為復數形式,所以該設計采用了實部與虛部的表示方法,AGWN信號分為實部與虛部,它們滿足正交關系。
2 模塊的設計與實現
設計主要分為三大模塊:PN序列產生模塊,產生符合高斯型白噪聲偽隨機序列;加法器模塊,將產生的8個PN序列相加產生更加符合AGWN信號的偽隨機序列;乘法器模塊,將加法器產生的偽隨機序列乘以一個可變系數,得到最終的符合數字信號的偽隨機序列。
2.1 n個PN序列發生器的設計與實現
PN序列產生模塊的主要功能就是產生PN序列。而PN序列中m序列又是周期最大,偽隨機性最好的一種移位寄存器序列。m序列的自相關性、隨機性特性很好地滿足了AGWN信號的要求,故用其產生的序列可以來產生該設計中的信號。
要產生m序列,就要求移位寄存器的反饋鏈路滿足本原多項式,由,n個并行的結構相同但初始態互不相同的線性反饋移位寄存器(LFSR)產生的序列在其周期足夠長的情況下可以把它們看作是獨立的。
設計中選取n=8,移位寄存器位數選取為25位,其m序列周期為33 554 431。其信號實部抽頭選取3,0,虛部抽頭選取3,2,1,0,分別對應PN序列的特征多項式。這樣選取是因為一個移位寄存器的本原多項式有很多種,這里選取的兩個抽頭比較簡單,對電路實現在資源、結構上都有優勢。PN發生器選擇8個是考慮到資源利用率方面的問題,這樣選取可使資源利用率達到最大。
2.2 疊加電路設計與實現
根據中心極限定理,對于若干個獨立同分布的隨機變量,其和的極限分布是標準正態分布。這樣將產生的8個序列疊加將產生符合高斯特性的序列。發生器串行輸出的實部,虛部8個獨立的碼相異或。即每8個一位二進制數相異或。
2.3 乘法系數電路的設計與實現
2.3.1 設計思想
乘法器設計是FPGA設計中的一個難點,有很多種算法來實現它??梢圆捎靡莆患訉崿F,在GF(28)域上乘法是這樣進行的:乘以2相當于將該8位二進制數向高位移一位,如果此8位二進制數的最高位為1,則需要將移位結果異或8位二進制數00000001。還有一種方法就是,在代碼中直接將乘法寫成*,讓綜合工具自己去綜合出可用的硬件電路。本文采用綜合工具自帶的模塊電路。
2.3.2 電路實現
設計對時序要求較嚴格。乘法器電路必須用到三個寄存器以用來保存加法器串行輸出的連續8個PN碼,乘法系數和乘積。
在reset之后,PN序列發生電路已經產生第一個輸出碼,同時加法器也將結果運算出來,但這時乘數寄存器中只有最低位是有用的剛傳進來的一位碼,其他位還是無用信號,只有到了8個時鐘信號之后,乘數寄存器中才保存了8個連續的有用的PN碼,這時必須很快地進行乘法運算并將結果保存在乘積寄存器中,第9個時鐘信號到來時乘法運算必須進行完畢,空閑出來的乘數寄存器用來寄存后面的8個連續的PN碼,然后一直這樣循環工作。8個乘數寄存器保存PN碼時鐘信號后,立即進行乘法運算并保存乘積,這就要求乘積寄存器空出來,為了空出乘積寄存器,第8個時鐘到來時必須將乘積寄存器中的數據一位一位串行輸出。乘積寄存器中有16位二進制數,這就要求一個時鐘信號的2倍頻信號作為乘積寄存器串行輸出的時鐘信號?;谝陨蠁栴}的考慮,乘法電路用綜合工具自己生成的8位乘法器,該模塊電路中還要用到一個2倍頻電路,這也用綜合工具自帶的模塊電路。
3 綜合、仿真結果
在QuartusⅡ集成了多種設計輸入方式,并可使用Assignment Editor(分配編輯器)方便地設定管腳約束和時序約束,正確地使用時序約束可以得到設計的詳細時序報告,便于分析設計是否滿足時序要求。在整個設計流程中,完成了設計輸入以及成功綜合、布局布線,只能說明設計符合一定的語法規范,但其是否滿足設計者的功能要求并不能保證,這需要通過仿真進行驗證。
3.1 功能仿真
功能仿真(前仿真),不帶時延信息,對電路物理行為進行仿真,速度較快。
圖2是對頂層模塊(AGWN模塊)進行功能仿真后在不同時段的波形。由圖中可以看出,輸出序列具有隨機性。
圖3~圖5分別是對各個分模塊進行前仿真后的波形圖。圖3是8個PN序列發生器的仿真波形圖。
圖4是加法器模塊的仿真波形:因為reset之后的第一個clk上升沿輸出的是PN序列的第二個碼字,第一個碼字在reset同時已經輸出,加法電路是一個組合電路,所以加法器的輸出(addi/addq)在系統剛啟動時不會出現不確定值。
圖5是系統正常運行后乘法模塊的仿真波形。值得注意的是在系統剛開始運轉時,reset信號之后,由于PN序列發生器和加法器中的串行輸出數據,還沒有傳遞到乘法器模塊中的被乘數寄存器(multiregi/multi-regq)和乘積寄存器中,這時從乘積寄存器中串行輸出一些不確定值。
3.2 綜合、布局布線
綜合是指將HDL語言,原理圖等設計輸入翻譯成由與、或、非門,RAM,觸發器等基本邏輯單元組成的邏輯連接,并根據目標及要求優化所生成的邏輯,最后輸出edf或vqm網表文件供布局布線用。
布局布線是將綜合生成的邏輯網表適配到具體器件中,并把工程的邏輯和時序要求與器件的可用資源相匹配,它將每個邏輯功能分配給最好的邏輯單元位置,進行布線和時序,并選擇相應的互邊路徑和管腳分配。
3.3 時序仿真
時序仿真也稱后仿真,即通過加入綜合后網表及時延信息對電路進行綜合仿真,速度較慢。前后仿真與綜合、布局布線的關系是一脈相承的,又相輔相成。功能仿真與綜合、時序分析形成一個反饋工作過程,只有過程收斂之后的綜合、布局布線等環節才有意義,孤立的功能仿真即使通過也是沒有意義的,如果在時序分析中發現時序不滿足需要更改代碼,則功能仿真必須重新進行。圖6是在QuartusⅡ中綜合布局布線之后的時序仿仿真波形。由于用了2倍頻電路,所以系統只用了一個時鐘信號clk,a為8位的系數。為觀察產生的AGWN的隨機性,截取的圖形是同一仿真在不同時段的波形圖。
4 結 語
本文使用Verilog硬件設計語言,采用自頂下的設計思路,將整個設計分為了不同的小模塊,分別實現每一個模塊的功能,最終設計出AGWN信號產生的Ver-ilog電路,并實現了功能仿真、綜合、布局布線、時序仿真。該電路實現了在數字通信系統中常用的AGWN信號,由于數字通信系統中用到的是數字信號,可以直接在數字通信系統中加載所產生的數字信號使用。如果需要用到模擬的AGWN信號,可將產生的數字信號通過A/D轉換器轉換為模擬信號再進行使用。
評論
查看更多