林愛英 黨建亮 吳莉莉 鄭寶周
摘 要:提出一種新的基于FPGA的高斯白噪聲生成器的設(shè)計(jì)和實(shí)現(xiàn)方法,給出設(shè)計(jì)的總體框圖和分模塊設(shè)計(jì)中的一些要點(diǎn),闡述了主要部分的原理和電路實(shí)現(xiàn)方法。這種高斯噪聲生成器與傳統(tǒng)數(shù)字電路所組成的噪聲生成器相比,通過利用Quartus Ⅱ中的一些既有功能電路(PLL),大大降低了設(shè)計(jì)的難度,提高了電路調(diào)試的靈活性,可用于多種環(huán)境下的通信系統(tǒng)性能分析與測(cè)試。
關(guān)鍵詞:加性高斯白噪聲;PN序列;前仿真;后仿真
中圖分類號(hào):TN914 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2009)21-112-03
Signal Generator with Additive Gaussine White Noise(AGWN) Based on FPGA
LIN Aiying,DANG Jianliang,WU Lili,ZHENG Baozhou
(College of Science,Henan Agricultural University,Zhengzhou,450002,China)
Abstract:A new method is proposed for designing and implementing additive Gaussian white noise generator based on FPGA.In addition,there is a system block diagram and some key points in the module designing.Comparing with the traditional noise generator,this kind of Gaussine noise generator by using some given circuits such as PLL circuits from the Quartus Ⅱ software to reduce the design difficulty,thus improving the flexibility of circuit debugging,and it can be used in the performance analyzing and testing of communication system under many circumstances.
Keywords:additive Gaussine white noise;PN sequence;pre-simulation;post-simulation
在通信系統(tǒng)中分析計(jì)算系統(tǒng)抗噪聲性能時(shí),經(jīng)常假定信道噪聲為加性高斯型白噪聲(AGWN)。本文就是通過分析AGWN的性質(zhì),采用自頂向下[1]的設(shè)計(jì)思路,將AGWN信號(hào)分成若干模塊,最終使用Verilog硬件描述語言,完成了通信系統(tǒng)中AGWN信號(hào)發(fā)生電路的設(shè)計(jì)和仿真,其實(shí)質(zhì)上是設(shè)計(jì)一個(gè)AGWN信號(hào)發(fā)生器。該信號(hào)主要應(yīng)用在數(shù)字通信系統(tǒng)中,所以只需要產(chǎn)生數(shù)字形式的AGWN信號(hào),這樣既便于信號(hào)產(chǎn)生,也便于在數(shù)字通信系統(tǒng)中運(yùn)用。
1 AGWN信號(hào)的產(chǎn)生
AWGN信號(hào)指同時(shí)滿足白噪聲和高斯噪聲的條件的信號(hào)[2]。白噪聲功率密度函數(shù)在整個(gè)頻率域內(nèi)是常數(shù),即服從均勻分布。完全理想的白噪聲不存在。高斯噪聲指概率密度函數(shù)服從高斯分布(即正態(tài)分布)。AGWN信號(hào)其實(shí)就是一個(gè)具有確定功率譜密度和概率分布函數(shù)的隨機(jī)信號(hào)。
由隨機(jī)過程的理論可以知道,不相關(guān)隨機(jī)序列的功率譜密度為常數(shù)[2](白噪聲),偽隨機(jī)序列(PN)就是這樣的不相關(guān)序列。再由中心極限定理,獨(dú)立同分布的隨機(jī)變量的和收斂于高斯隨機(jī)變量[3]。這樣就可根據(jù)PN序列的性質(zhì)和中心極限定理來設(shè)計(jì)AWGN信號(hào)。
為簡(jiǎn)單起見,設(shè)計(jì)用8個(gè)PN序列發(fā)生器產(chǎn)生8個(gè)獨(dú)立的偽隨機(jī)序列(每個(gè)分為實(shí)部和虛部),根據(jù)中心極限定理,將8個(gè)信號(hào)相加之后的信號(hào),更加接近于AGWN信號(hào),最后再乘以一個(gè)可變系數(shù),就產(chǎn)生了可在數(shù)字通信系統(tǒng)中直接引用的AGWN信號(hào)。AGWN信號(hào)生成的總體框圖如圖1所示。
在FPGA 內(nèi)部產(chǎn)生n位并行偽隨機(jī)序列,可由n個(gè)并行的結(jié)構(gòu)相同但初始態(tài)互不相同的線性反饋移位寄存器(LFSR) 產(chǎn)生。結(jié)構(gòu)相同的LFSR 在不同初始狀態(tài)下產(chǎn)生的序列之間存在著一種移位關(guān)系,導(dǎo)致n個(gè)序列并非相互獨(dú)立。如果所期望的序列長(zhǎng)度為k,那么只有在保證任一狀態(tài)在k次移位操作之內(nèi)都不會(huì)與其他狀態(tài)發(fā)生重復(fù)后,這種方法才是可取的。
在通信中,信號(hào)一般都表示為復(fù)數(shù)形式,所以該設(shè)計(jì)采用了實(shí)部與虛部的表示方法,AGWN信號(hào)分為實(shí)部與虛部,它們滿足正交關(guān)系[4]。
2 模塊的設(shè)計(jì)與實(shí)現(xiàn)
設(shè)計(jì)主要分為三大模塊:PN序列產(chǎn)生模塊,產(chǎn)生符合高斯型白噪聲偽隨機(jī)序列;加法器模塊,將產(chǎn)生的8個(gè)PN序列相加產(chǎn)生更加符合AGWN信號(hào)的偽隨機(jī)序列;乘法器模塊,將加法器產(chǎn)生的偽隨機(jī)序列乘以一個(gè)可變系數(shù),得到最終的符合數(shù)字信號(hào)的偽隨機(jī)序列。
2.1 n個(gè)PN序列發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[4]
PN序列產(chǎn)生模塊的主要功能就是產(chǎn)生PN序列。而PN序列中m序列又是周期最大,偽隨機(jī)性最好的一種移位寄存器序列[2]。m序列的自相關(guān)性、隨機(jī)性特性很好地滿足了AGWN信號(hào)的要求,故用其產(chǎn)生的序列可以來產(chǎn)生該設(shè)計(jì)中的信號(hào)。
要產(chǎn)生m序列,就要求移位寄存器的反饋鏈路滿足本原多項(xiàng)式,由n個(gè)并行的結(jié)構(gòu)相同但初始態(tài)互不相同的線性反饋移位寄存器(LFSR) 產(chǎn)生的序列在其周期足夠長(zhǎng)的情況下可以把它們看作是獨(dú)立的。
設(shè)計(jì)中選取n=8,移位寄存器位數(shù)選取為25位,其m序列周期為33 554 431。其信號(hào)實(shí)部抽頭選取3,0,虛部抽頭選取3,2,1,0,分別對(duì)應(yīng)PN序列的特征多項(xiàng)式。這樣選取是因?yàn)橐粋€(gè)移位寄存器的本原多項(xiàng)式有很多種,這里選取的兩個(gè)抽頭比較簡(jiǎn)單,對(duì)電路實(shí)現(xiàn)在資源、結(jié)構(gòu)上都有優(yōu)勢(shì)。PN發(fā)生器選擇8個(gè)是考慮到資源利用率方面的問題,這樣選取可使資源利用率達(dá)到最大。
2.2 疊加電路設(shè)計(jì)與實(shí)現(xiàn)
根據(jù)中心極限定理,對(duì)于若干個(gè)獨(dú)立同分布的隨機(jī)變量,其和的極限分布是標(biāo)準(zhǔn)正態(tài)分布。這樣將產(chǎn)生的8個(gè)序列疊加將產(chǎn)生符合高斯特性的序列。發(fā)生器串行輸出的實(shí)部,虛部8個(gè)獨(dú)立的碼相異或。即每8個(gè)一位二進(jìn)制數(shù)相異或。
2.3 乘法系數(shù)電路的設(shè)計(jì)與實(shí)現(xiàn)
2.3.1 設(shè)計(jì)思想
乘法器設(shè)計(jì)是FPGA設(shè)計(jì)中的一個(gè)難點(diǎn),有很多種算法來實(shí)現(xiàn)它??梢圆捎靡莆患訉?shí)現(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 電路實(shí)現(xiàn)
設(shè)計(jì)對(duì)時(shí)序要求較嚴(yán)格。乘法器電路必須用到三個(gè)寄存器以用來保存加法器串行輸出的連續(xù)8個(gè)PN碼,乘法系數(shù)和乘積。
在reset之后,PN序列發(fā)生電路已經(jīng)產(chǎn)生第一個(gè)輸出碼,同時(shí)加法器也將結(jié)果運(yùn)算出來,但這時(shí)乘數(shù)寄存器中只有最低位是有用的剛傳進(jìn)來的一位碼,其他位還是無用信號(hào),只有到了8個(gè)時(shí)鐘信號(hào)之后,乘數(shù)寄存器中才保存了8個(gè)連續(xù)的有用的PN碼,這時(shí)必須很快地進(jìn)行乘法運(yùn)算并將結(jié)果保存在乘積寄存器中,第9個(gè)時(shí)鐘信號(hào)到來時(shí)乘法運(yùn)算必須進(jìn)行完畢,空閑出來的乘數(shù)寄存器用來寄存后面的8個(gè)連續(xù)的PN碼,然后一直這樣循環(huán)工作。8個(gè)乘數(shù)寄存器保存PN碼時(shí)鐘信號(hào)后,立即進(jìn)行乘法運(yùn)算并保存乘積,這就要求乘積寄存器空出來,為了空出乘積寄存器,第8個(gè)時(shí)鐘到來時(shí)必須將乘積寄存器中的數(shù)據(jù)一位一位串行輸出。乘積寄存器中有16位二進(jìn)制數(shù),這就要求一個(gè)時(shí)鐘信號(hào)的2倍頻信號(hào)作為乘積寄存器串行輸出的時(shí)鐘信號(hào)。
基于以上問題的考慮,乘法電路用綜合工具自己生成的8位乘法器,該模塊電路中還要用到一個(gè)2倍頻電路,這也用綜合工具自帶的模塊電路。
3 綜合、仿真結(jié)果
在Quartus Ⅱ集成了多種設(shè)計(jì)輸入方式,并可使用Assignment Editor(分配編輯器)方便地設(shè)定管腳約束和時(shí)序約束,正確地使用時(shí)序約束可以得到設(shè)計(jì)的詳細(xì)時(shí)序報(bào)告,便于分析設(shè)計(jì)是否滿足時(shí)序要求。在整個(gè)設(shè)計(jì)流程中,完成了設(shè)計(jì)輸入以及成功綜合、布局布線,只能說明設(shè)計(jì)符合一定的語法規(guī)范,但其是否滿足設(shè)計(jì)者的功能要求并不能保證,這需要通過仿真進(jìn)行驗(yàn)證[5]。
3.1 功能仿真
功能仿真(前仿真),不帶時(shí)延信息,對(duì)電路物理行為進(jìn)行仿真,速度較快。
圖2是對(duì)頂層模塊(AGWN模塊)進(jìn)行功能仿真后在不同時(shí)段的波形。由圖中可以看出,輸出序列具有隨機(jī)性。
圖3~圖5分別是對(duì)各個(gè)分模塊進(jìn)行前仿真后的波形圖。圖3是8個(gè)PN序列發(fā)生器的仿真波形圖。
圖4是加法器模塊的仿真波形:因?yàn)閞eset之后的第一個(gè)clk上升沿輸出的是PN序列的第二個(gè)碼字,第一個(gè)碼字在reset同時(shí)已經(jīng)輸出,加法電路是一個(gè)組合電路,所以加法器的輸出(addi/addq)在系統(tǒng)剛啟動(dòng)時(shí)不會(huì)出現(xiàn)不確定值。
圖5是系統(tǒng)正常運(yùn)行后乘法模塊的仿真波形。值得注意的是在系統(tǒng)剛開始運(yùn)轉(zhuǎn)時(shí),reset信號(hào)之后,由于PN序列發(fā)生器和加法器中的串行輸出數(shù)據(jù),還沒有傳遞到乘法器模塊中的被乘數(shù)寄存器(multiregi/multiregq)和乘積寄存器中,這時(shí)從乘積寄存器中串行輸出一些不確定值。
3.2 綜合、布局布線[6]
綜合是指將HDL語言,原理圖等設(shè)計(jì)輸入翻譯成由與、或、非門,RAM,觸發(fā)器等基本邏輯單元組成的邏輯連接,并根據(jù)目標(biāo)及要求優(yōu)化所生成的邏輯,最后輸出edf或vqm網(wǎng)表文件供布局布線用。
布局布線是將綜合生成的邏輯網(wǎng)表適配到具體器件中,并把工程的邏輯和時(shí)序要求與器件的可用資源相匹配,它將每個(gè)邏輯功能分配給最好的邏輯單元位置,進(jìn)行布線和時(shí)序,并選擇相應(yīng)的互邊路徑和管腳分配。
3.3 時(shí)序仿真
時(shí)序仿真也稱后仿真,即通過加入綜合后網(wǎng)表及時(shí)延信息對(duì)電路進(jìn)行綜合仿真,速度較慢。前后仿真與綜合、布局布線的關(guān)系是一脈相承的,又相輔相成。功能仿真與綜合、時(shí)序分析形成一個(gè)反饋工作過程,只有過程收斂之后的綜合、布局布線等環(huán)節(jié)才有意義,孤立的功能仿真即使通過也是沒有意義的,如果在時(shí)序分析中發(fā)現(xiàn)時(shí)序不滿足需要更改代碼,則功能仿真必須重新進(jìn)行。
圖6是在Quartus Ⅱ中綜合布局布線之后的時(shí)序仿仿真波形。由于用了2倍頻電路,所以系統(tǒng)只用了一個(gè)時(shí)鐘信號(hào)clk,a為8位的系數(shù)。為觀察產(chǎn)生的AGWN的隨機(jī)性,截取的圖形是同一仿真在不同時(shí)段的波形圖。
4 結(jié) 語
本文使用Verilog硬件設(shè)計(jì)語言,采用自頂下的設(shè)計(jì)思路,將整個(gè)設(shè)計(jì)分為了不同的小模塊,分別實(shí)現(xiàn)每一個(gè)模塊的功能,最終設(shè)計(jì)出AGWN信號(hào)產(chǎn)生的Verilog電路,并實(shí)現(xiàn)了功能仿真、綜合、布局布線、時(shí)序仿真。該電路實(shí)現(xiàn)了在數(shù)字通信系統(tǒng)中常用的AGWN信號(hào),由于數(shù)字通信系統(tǒng)中用到的是數(shù)字信號(hào),可以直接在數(shù)字通信系統(tǒng)中加載所產(chǎn)生的數(shù)字信號(hào)使用。如果需要用到模擬的AGWN信號(hào),可將產(chǎn)生的數(shù)字信號(hào)通過A/D轉(zhuǎn)換器轉(zhuǎn)換為模擬信號(hào)再進(jìn)行使用。
參考文獻(xiàn)
[1]潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2002.
[2]趙樹杰.信號(hào)檢測(cè)與估值理論[M].西安:西安電子科技大學(xué)出版社,1998.
[3]John G Proakis.數(shù)字通信[M].4版.張力軍,張宗橙,譯.北京:電子工業(yè)出版社,2005.
[4]張瑞華,劉慶華.偽隨機(jī)噪聲產(chǎn)生方法及其DSP實(shí)現(xiàn)[J].聲學(xué)與電子工程,2003(2):22-24.
[5]王誠(chéng),吳繼華,范麗珍.Altera FPGA/CPLD設(shè)計(jì)(基礎(chǔ)篇)[M].北京:人民郵電出版社,2005.
[6]杜慧敏,趙全良,李宥謀.基于Verilog的FPGA設(shè)計(jì)基礎(chǔ)[M].西安:西安電子科技大學(xué)出版社,2002.
作者簡(jiǎn)介
林愛英 女,1969年出生,碩士研究生,講師。研究方向?yàn)樾盘?hào)處理、圖像處理及移動(dòng)通信。