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