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