用FPGA技術(shù)實現(xiàn)某新型通信設(shè)備中PCM碼流處理
摘 要:本文根據(jù)FPGA器件的特點,介紹了應(yīng)用FPGA設(shè)計某通信設(shè)備中PCM碼流處理模塊的一種方案。并就設(shè)計中遇到的問題進行了分析。
關(guān)鍵詞:FPGA;RAM
引言
由于FPGA器件可實現(xiàn)所有數(shù)字電路功能 ,具有結(jié)構(gòu)靈活、設(shè)計周期短、硬件密度高和性能好等優(yōu)點,在高速信號處理領(lǐng)域顯示出愈來愈重要的作用。本文研究了基于FPGA技術(shù)對PCM碼流進行處理的實現(xiàn)方法。變換后的數(shù)據(jù)寫入RAM,與DSP配合可完成復雜的信號處理功能。
設(shè)計方案
某新型通信設(shè)備中,在完成調(diào)度功能的板子上,需要進行PCM碼流處理,實現(xiàn)串/并轉(zhuǎn)換、m律編解碼以及產(chǎn)生地址等功能。
功能模塊的組成
模塊結(jié)構(gòu)如圖1所示。PCM碼流被送入FPGA,進行并/串轉(zhuǎn)換、串/并轉(zhuǎn)換、地址碼產(chǎn)生和時序控制信號產(chǎn)生,由線性/m律、m律/線性轉(zhuǎn)換完成PCM碼流到RAM中線性數(shù)據(jù)及RAM中線性數(shù)據(jù)到PCM碼流的轉(zhuǎn)換工作。標準JTAG接口供與PC機并行口相連 ,用于下載設(shè)計數(shù)據(jù)至FPGA中。
由于本設(shè)計的電路規(guī)模并不十分大,所以采用了原理圖和硬件描述語言相結(jié)合的混合方法來設(shè)計。
設(shè)計實現(xiàn)
設(shè)定FPGA接收到的PCM碼流為32路調(diào)度用戶數(shù)據(jù)。
1. 首先要完成串/并轉(zhuǎn)換使串行碼流變成8位并行輸出數(shù)據(jù),根據(jù)話音分布特性再將這8位線性數(shù)據(jù)以m律轉(zhuǎn)換成16位數(shù)據(jù)。同時產(chǎn)生地址并將變換后的數(shù)據(jù)寫入RAM送給DSP處理。FPGA的功能框圖如圖2所示。
計數(shù)器CB8CLE的時鐘及鎖存器X74-273的時鐘CS1等都通過FPGA實現(xiàn)。數(shù)據(jù)的線性與m律的相互轉(zhuǎn)換是運用ABLE語言描述實現(xiàn)的。程序如下:
Declarations
INN7..INN0 PIN;
INN = [INN7..INN0];
OUU15..OUU0 PIN istype 'COM';
OUU = [OUU15..OUU0];
A = [INN6,INN5,INN4];
B = [INN7..INN4];
Equations
WHEN((A==0)&(B<8)) THEN OUU=[0,0,0,0,0,0,0,0,0,0,0,INN3,INN2,INN1,INN0,0];
WHEN((A==0)&(B>=8)) THEN OUU=[1,1,1,1,1,1,1,1,1,1,1,!INN3,!INN2,!INN1,!INN0,1];
……
test_vectors
([INN7..INN0]-> [OUU15..OUU0])
^B00001000->^B0000000000010000;
^B00010100->^B0000000001010000;
^B00101010->^B0000000011010000;
……
end WE00
2. DSP處理完16位數(shù)據(jù)后,以m律解碼成8位線性數(shù)據(jù),最后完成并/串轉(zhuǎn)換送回處理過的PCM碼流。同時送出地址。功能框圖如圖3所示。
3. 數(shù)據(jù)準備好后,寫入RAM及從RAM中讀取數(shù)據(jù)所需要的讀/寫信號、片選信號也由FPGA產(chǎn)生。
4. 模塊提供了2MHz的時鐘晶振和FRAM幀同步信號。設(shè)計將2MHz作為FPGA的工作時鐘 ,經(jīng)分頻器X74-163進行2分頻、4分頻和8分頻后產(chǎn)生作為并聯(lián)輸出的8位取數(shù)觸發(fā)時鐘CS1。同理可產(chǎn)生經(jīng)DSP處理后的、將并行8位數(shù)據(jù)轉(zhuǎn)換回8位串行數(shù)據(jù)的取數(shù)觸發(fā)時鐘CS2。邏輯圖及觸發(fā)時鐘波形圖如圖4、圖5所示。
5. 在FPGA內(nèi)部,F(xiàn)RAM幀同步到來后 ,打開計數(shù)器開始計數(shù) ,并將計數(shù)結(jié)果作為地址送入外接RAM等待DSP讀取。這樣,數(shù)據(jù)就可與相應(yīng)的地址一同被送入RAM中,而不會出現(xiàn)錯位的現(xiàn)象。此處應(yīng)注意:FRAM到來后,來第一個用戶數(shù)據(jù),計數(shù)器要先置數(shù)產(chǎn)生地址,裝入相應(yīng)的數(shù)據(jù)。而這個數(shù)據(jù)并不是第一個用戶的數(shù)據(jù),而是此刻以前的數(shù)據(jù),即第32個用戶數(shù)據(jù)。所以地址置為31(共有32個地址,設(shè)為0~31)。CPU處理完16位數(shù)據(jù)后將其送回。地址置成1,因為FRAM同步信號到來時經(jīng)過第一個用戶數(shù)據(jù),只好從第2用戶處開始讀取完整數(shù)據(jù)。所以置對應(yīng)地址為1。
6. 設(shè)計編譯和設(shè)計驗證
進行設(shè)計錯誤檢查,綜合邏輯,將設(shè)計與FPGA器件匹配以及測試邏輯。實現(xiàn)線性與m律相互轉(zhuǎn)換設(shè)計的ABLE語言程序經(jīng)調(diào)試成功后,與編譯后的原理圖一起被載入基于 XC95108芯片設(shè)計的真實硬件系統(tǒng)中。經(jīng)實際檢測和驗證表明同理論設(shè)計結(jié)果完全吻合。
遇到的問題與解決
在運用FPGA技術(shù)的過程中,遇到一些應(yīng)用上的問題,并且在實踐摸索中找到了化解的方法。
毛刺問題
輸入某一器件的信號同時變化時,產(chǎn)生功能冒險 ,即會出現(xiàn)毛刺。毛刺對數(shù)字通信是十分有害的。通常采用取樣的方法加以消除。但是簡單的與或取樣電路在加了取樣脈沖后的輸出將不是電平信號而是脈沖信號。在取樣期間,有輸出脈沖表示組合電路的輸出為“1”,無脈沖則表示輸出為“0”??梢酝ㄟ^加數(shù)據(jù)鎖存器的方法消除毛刺。某信碼穩(wěn)定后讀至鎖存器 ,鎖存器在下一個時鐘周期將信號輸出。輸出雖延遲一個時鐘周期 ,但是信碼序列與時鐘的相位關(guān)系沒有發(fā)生變化 ,并且毛刺完全消除 ,信碼質(zhì)量得到提高。如圖6所示,從圖中可以看出,波形2比波形1滯后一個時鐘周期,毛刺已消失。
資源利用問題
1. 使用一個反相器將信號反相后驅(qū)動多個負載往往會多占資源,而且延遲也增加了。所以輸入信號需要反相 ,但應(yīng)盡可能地調(diào)用輸入帶反相功能的符號 ,而不是用分離的反相器對輸入信號進行反相。
2. 由于FPGA芯片的引腳比較多,引腳處走線密度大,所以引腳超過 1 0 0時,最好采用多層板,對于引腳數(shù)目較少的情況,可以盡量將用戶使用的引腳固定在外圍引腳上,減少走線密度。
其他
FPGA的每一對電源和地線引腳之間必須并聯(lián)一個 0 .1 mF的無感電容,用以進行電源濾波和去耦。
結(jié)語
使用 FPGA進行設(shè)計,工作大都在計算機上完成 ,PCB板只是最后的驗證。它采用設(shè)計輸入、功能仿真和設(shè)計修改等可以反復循環(huán)的流程 ,使設(shè)計過程具有較強的靈活性和高效性 ,硬件具有了一定的設(shè)計柔性 ,工作效率得到很大提高?!?/p>
參考文獻
1朱明程編. Xilinx數(shù)字系統(tǒng)現(xiàn)場集成技術(shù). 東南大學出版社,2001.10
2朱明程. FPGA原理及應(yīng)用設(shè)計. 電子工業(yè)出版社,1994.5
評論