一種基于FPGA的AGWN信號生成器的設(shè)計(jì)
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ì)對時(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)來的一位碼,其他位還是無用信號,只有到了8個(gè)時(shí)鐘信號之后,乘數(shù)寄存器中才保存了8個(gè)連續(xù)的有用的PN碼,這時(shí)必須很快地進(jìn)行乘法運(yùn)算并將結(jié)果保存在乘積寄存器中,第9個(gè)時(shí)鐘信號到來時(shí)乘法運(yùn)算必須進(jìn)行完畢,空閑出來的乘數(shù)寄存器用來寄存后面的8個(gè)連續(xù)的PN碼,然后一直這樣循環(huán)工作。8個(gè)乘數(shù)寄存器保存PN碼時(shí)鐘信號后,立即進(jìn)行乘法運(yùn)算并保存乘積,這就要求乘積寄存器空出來,為了空出乘積寄存器,第8個(gè)時(shí)鐘到來時(shí)必須將乘積寄存器中的數(shù)據(jù)一位一位串行輸出。乘積寄存器中有16位二進(jìn)制數(shù),這就要求一個(gè)時(shí)鐘信號的2倍頻信號作為乘積寄存器串行輸出的時(shí)鐘信號?;谝陨蠁栴}的考慮,乘法電路用綜合工具自己生成的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)證。
3.1 功能仿真
功能仿真(前仿真),不帶時(shí)延信息,對電路物理行為進(jìn)行仿真,速度較快。
圖2是對頂層模塊(AGWN模塊)進(jìn)行功能仿真后在不同時(shí)段的波形。由圖中可以看出,輸出序列具有隨機(jī)性。
圖3~圖5分別是對各個(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)不確定值。
評論