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