曾舒雅,黃 成,范 龍,張 卅
(江蘇理工學院電氣信息工程學院,江蘇 常州 213001)
近年來隨著DSP或FPGA技術的飛速發(fā)展,嵌入式語音處理系統(tǒng)中也越來越多的使用了FPGA芯片。語音信號的數(shù)字化主要利用A/D、D/A轉換芯片完成,還可以采用專用PCM編解碼芯片實現(xiàn)[1-3]。本文介紹一種利用FPGA實現(xiàn)PCM編解碼芯片接口的設計方案,針對PCM編解碼芯片MC14LC5480設計FPGA接口電路,同時引入紅外發(fā)射和接收電路,實現(xiàn)語音信號的實時無線傳輸。
本文設計的PCM編解碼芯片接口主要應用于紅外無線語音傳輸系統(tǒng)。系統(tǒng)采用“FPGA+音頻編解碼芯片”的硬件結構。FPGA主要采用Altera公司的低成本CycloneII系列芯片EP2C8Q208C8;音頻編解碼芯片采用Motorola公司的MC14LC5480,主要用于對語音信號的A/D、D/A轉換,可實現(xiàn)8位單聲道語音信號的PCM編解碼,該芯片具有低功耗、低噪聲等特點,片內(nèi)全差分模擬電路設計,集成發(fā)送帶通濾波器和接收低通濾波器,具有RC預/后濾波器,μ/A律可選[2]①。系統(tǒng)硬件結構框圖如圖1所示。
在發(fā)送端,語音信號源提供相應的語音信號,通過語音PCM編碼芯片MC14LC5480將模擬的語音信號轉換為數(shù)字信號形成PCM編碼格式,產(chǎn)生數(shù)據(jù)幀同步信號FST、位時鐘信號BCLKT、語音數(shù)據(jù)信號DT,經(jīng)FPGA加入同步頭,最后將每一個編碼信號前加同步頭傳輸?shù)郊t外線發(fā)送電路,通過發(fā)送電路將語音數(shù)據(jù)DT”發(fā)送出去。為了保證數(shù)字化傳輸?shù)耐?,需要在PCM編碼格式中加入同步頭,本文采用固定同步頭的方式,即采用巴克碼序列信號“01110010”。發(fā)送端采用有源晶振產(chǎn)生2.048MHz的主時鐘信號,供給FPGA和MC14LC5480,通過FPGA產(chǎn)生128 kHz和8kHz位同步時鐘和幀同步時鐘供給MC14LC5480。
接收端通過S5821高速紅外接收管接收到數(shù)據(jù)[5],送到接收端FPGA通過數(shù)字鎖相環(huán)PLL恢復128 kHz的位時鐘、8kHz的幀同步時鐘,通過分頻產(chǎn)生2.048MHz的主時鐘信號;同時將幀同步頭從數(shù)據(jù)信號中去除。然后將三路時鐘及數(shù)據(jù)信號送到PCM語音編解碼芯片MC14LC5480解碼并轉換為模擬音頻信號,經(jīng)耳機插孔送入耳機,另外一路接LM386功放電路驅動8歐姆揚聲器。
圖1 系統(tǒng)硬件結構框圖
加入同步頭的語音數(shù)據(jù)結構如圖2所示。將MC14LC5480接成長幀模式。MC14LC5480使用采樣率為8kHz,量化精度為8位時,其數(shù)據(jù)比特速率為64Kbps。圖2中發(fā)/收幀同步(FST/FSR)時鐘頻率固定為8kHz,發(fā)/收位同步(BCLKT/BCLKR)時鐘頻率可選擇為128kHz。由于采用單向紅外傳輸,僅傳送數(shù)據(jù)信號而不傳送時鐘信號。因此,在接收端需要產(chǎn)生幀同步時鐘和位時鐘,且發(fā)送端需要加入同步信號以解決數(shù)據(jù)信號自同步的問題,以保證數(shù)據(jù)的正確傳輸。一個周期內(nèi)幀同步時鐘的高電平寬度等8個位同步時鐘周期,其上升沿驅動8位PCM語音數(shù)據(jù)的收/發(fā),數(shù)據(jù)為8位;一個周期內(nèi)幀同步時鐘的低電平寬度等8個位同步時鐘周期,對應數(shù)據(jù)幀同步頭“01110010”。
圖2 語音數(shù)據(jù)結構
發(fā)送端程序的總體結構如圖3所示。發(fā)送端程序流程如圖4所示。發(fā)送端程序包括三個底層模塊采用VHDL語言編寫,分別為:CNT4——巴克碼產(chǎn)生模塊;CNT25——分頻模塊,用來產(chǎn)生幀同步信號FST和位時鐘BCLKT;MUX21A——用來在語音數(shù)據(jù)信號中加入同步頭數(shù)據(jù)。頂層模塊采用原理圖設計,程序與硬件電路的接口如下:
·PCM 碼流輸入端DATAIN——DT輸入
·2.048MHz的時鐘信號輸入端MCLK——語音芯片時鐘MCLK
·加同步頭的PCM碼流輸出端PCM——DT輸出
·幀同步信號輸出端FST8K——FST
·位時鐘輸出端BCLK128K——BCLKT
圖3 發(fā)送端程序的總體結構
圖4 發(fā)送端程序流程
圖5 接收端程序流程
接收端程序流程如圖5所示。接收端程序的總體結構如圖6所示。接收端程序包括四個底層模塊采用VHDL語言編寫,分別為:ZONG——位時鐘鎖相環(huán),用來產(chǎn)生位時鐘FSR;CNT25——分頻模塊,用來產(chǎn)生語音芯片時鐘;JianMaQi——用來在語音數(shù)據(jù)信號中檢測出同步頭數(shù)據(jù),以便后續(xù)電路去除同步頭數(shù)據(jù);ZHENGTONG——用來去除同步頭數(shù)據(jù)。頂層模塊采用原理圖設計,程序與硬件電路的接口如下:
·50MHz的時鐘信號輸入端CLK——主時鐘
·接收PCM碼流輸入端DATA——DR輸入
·2.048MHz的時鐘信號輸出端CLK2M——語音芯片時鐘輸出MCLK
·PCM 碼流輸出端DOUT——DR輸出
·幀同步信號輸出端FSR——FSR輸出
·位時鐘輸出端BCK——BCLKR
圖6 接收端程序的總體結構
利用QURATUS II軟件對上述程序進行波形仿真。輸入MCLK時鐘信號和DATAIN數(shù)據(jù)信號,由圖7可看出,在FST8K低電平處對應數(shù)據(jù)為“01110010”,在高電平處對應數(shù)據(jù)為DATAIN數(shù)據(jù),和圖2語音數(shù)據(jù)結構基本一致,說明發(fā)送端程序可正常工作。
圖7 發(fā)送端波形
輸入CLK時鐘信號和DATA數(shù)據(jù)信號,由圖8可看出,在FSR低電平處對應數(shù)據(jù)為全“0”,在高電平處對應數(shù)據(jù)為DATA數(shù)據(jù)延遲一個周期,和圖2語音數(shù)據(jù)結構基本一致,說明接收端程序也可正常工作。
圖8 接收端波形
采用“FPGA+音頻編解碼芯片”的硬件結構設計一個數(shù)字語音通信系統(tǒng),具備紅外通信模塊,可無線傳輸語音信號。使用硬件描述語言設計FPGA控制程序,采用原理圖和VHDL文本相結合的編程方式,直觀性好;通過軟件波形仿真,功能實現(xiàn)后再下載到FPGA硬件上,編程速度快,并且修改方便。實驗表明:該系統(tǒng)工作穩(wěn)定,傳輸語音聽不出失真。增加大紅外發(fā)射功率或者使用光學透鏡系統(tǒng),可增加發(fā)射接收距離。由于紅外線方式的最大優(yōu)點是不受無線電干擾,這一方案可用于無線電干擾比較嚴重的場合實現(xiàn)遠程無線語音通信。
注釋:
①Motorola,Inc.Datasheet:MC14LC5480,1996.
[1]沈佐峰,陳曦.一種多路音頻編解碼系統(tǒng)的設計與實現(xiàn)[J].通信技術,2012,45(03):79-81.
[2]方子樵.用P89LPC932A1驅動PCM 語音芯片MC14LC5480[J].單片機與嵌入式系統(tǒng)應用,2007(11):41-43.
[3]王杰玉,杜煒,潘紅兵.基于FPGA的音頻編解碼芯片接口設計[J].現(xiàn)代電子技術,2009(5):179-181.
[4]錢敏,曹云鵬,章敏,等.基于FPGA/HDL的紅外遙控接收信號解碼器設計[J].通信技術,2009,42(08):219-221.