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