李盤(pán)文 王 亮 蔣宏娜
基于FPGA 的PCM解調(diào)器設(shè)計(jì)
李盤(pán)文 王 亮 蔣宏娜
針對(duì)航空測(cè)試中常用的PCM數(shù)據(jù)流,提出一種雙通道PCM解調(diào)器設(shè)計(jì)。系統(tǒng)以FPGA為控制器,實(shí)現(xiàn)兩路PCM數(shù)據(jù)流的實(shí)時(shí)解析。PCM解碼過(guò)程中進(jìn)行,幀同步和位同步的檢測(cè),幀和位都同步則此幀數(shù)據(jù)有效。解析出一幀完整數(shù)據(jù)后通過(guò)USB發(fā)送給終端。
在航空測(cè)試領(lǐng)域,PCM作為數(shù)據(jù)傳輸和遙測(cè)的數(shù)據(jù)格式被廣泛使用。信息接收端需要解調(diào)器,對(duì)PCM進(jìn)行解調(diào),以便進(jìn)行數(shù)據(jù)處理和數(shù)據(jù)記錄。FPGA具有結(jié)構(gòu)靈活,設(shè)計(jì)周期短,可擴(kuò)展性強(qiáng),接口豐富等優(yōu)點(diǎn),在高速信號(hào)實(shí)時(shí)處理領(lǐng)域越來(lái)越重要。本文提出使用FPGA同時(shí)對(duì)兩路輸入的PCM 數(shù)據(jù)流進(jìn)行解析,解析出一幀完整數(shù)據(jù)后放入FPGA內(nèi)部RAM緩存,通過(guò)USB接口發(fā)送給外部設(shè)備。
系統(tǒng)硬件由RS232電平轉(zhuǎn)換芯片,RS422電平轉(zhuǎn)換芯片,EEPROM芯片,USB驅(qū)動(dòng)芯片和FPGA組成。上位機(jī)通過(guò)串口對(duì)系統(tǒng)進(jìn)行配置,PCM數(shù)據(jù)流經(jīng)過(guò)RS422電平轉(zhuǎn)換芯片轉(zhuǎn)換為T(mén)TL電平,F(xiàn)PGA將解析出的PCM數(shù)據(jù)通過(guò)USB芯片發(fā)送出去。
控制器FPGA
FPGA選用altera公司的 EP3C80F484I7,此FPGA自帶多種接口的IP核,內(nèi)部有2810880位的存儲(chǔ)空間可以使用,可用IO 296個(gè)。此款芯片資源滿(mǎn)足系統(tǒng)需求。
電平轉(zhuǎn)換模塊
上位機(jī)通過(guò)串口對(duì)系統(tǒng)進(jìn)行配置,使用MAX232將電平轉(zhuǎn)換為T(mén)TL電平供FPGA使用。PCM數(shù)據(jù)流為422電平,使用MAX3490將電平轉(zhuǎn)換為T(mén)TL電平供FPGA使用。
存儲(chǔ)器控制模塊
存儲(chǔ)器使用二線(xiàn)制I2C串行EEPROM AT24C02,此芯片有兩種寫(xiě)入方式,一種是字節(jié)寫(xiě),一種是頁(yè)寫(xiě),允許一個(gè)周期內(nèi)同時(shí)對(duì)一個(gè)字節(jié)到一頁(yè)的若干字節(jié)進(jìn)行編程寫(xiě)入。
USB驅(qū)動(dòng)模塊
此模塊使用FTDI公司的USB接口芯片F(xiàn)T245BM,此芯片支持USB協(xié)議與并行I/O協(xié)議之間的轉(zhuǎn)換。使用時(shí)無(wú)需考慮固件設(shè)計(jì)以及驅(qū)動(dòng)程序的編寫(xiě),從而能大大縮短產(chǎn)品的開(kāi)發(fā)周期。FT245BM支持USB2.0規(guī)范,數(shù)據(jù)傳輸速度可達(dá)12M bps。
軟件按模塊進(jìn)行設(shè)計(jì)。系統(tǒng)的運(yùn)行由FPGA控制完成,軟件由以下模塊:UART收發(fā)模塊,PCM解析模塊,控制模塊,數(shù)據(jù)緩存模塊,接口模塊。各功能模塊在控制模塊的控制下工作,來(lái)完成對(duì)PCM數(shù)據(jù)的采集和處理工作。組合模塊如圖2所示。
UART收發(fā)模塊
系統(tǒng)選用9600bit/s的波特率傳輸數(shù)據(jù),上位機(jī)按照表1所示的格式將配置信息下發(fā)給FPGA,經(jīng)過(guò)奇校驗(yàn)數(shù)據(jù)無(wú)誤,將數(shù)據(jù)通過(guò)I2C總線(xiàn)寫(xiě)入EEPROM。
表1 配置信息格式
在接收串口數(shù)據(jù)時(shí),如圖3所示,在每個(gè)數(shù)據(jù)中間進(jìn)行采樣,此時(shí)數(shù)據(jù)最為穩(wěn)定,第0位數(shù)據(jù)時(shí)起始位忽略,接下來(lái)是8位數(shù)據(jù)位和一位奇偶校驗(yàn)位都被采集,最后一位是停止位忽略。在每個(gè)碼元的每個(gè)采樣點(diǎn)處間隔兩個(gè)時(shí)鐘連續(xù)采樣三次,然后將這三次的采樣值兩兩按位與,再將相與的結(jié)果相或便得到該采樣點(diǎn)處的真實(shí)值,有效地防止了干擾造成的信號(hào)誤判。取到數(shù)據(jù)后將每一位按位取異或后與接受到的奇偶校驗(yàn)位對(duì)比,一致則數(shù)據(jù)正確有效,否則數(shù)據(jù)錯(cuò)誤,給上位機(jī)回發(fā)aaaa。
PCM解析模塊
圖1 系統(tǒng)硬件結(jié)構(gòu)圖
圖2 組合模塊結(jié)構(gòu)圖
圖3 串口接受數(shù)據(jù)時(shí)序
PCM幀結(jié)構(gòu)如圖4所示,一個(gè)主幀有多個(gè)子幀組成,每個(gè)子幀由同步頭,幀計(jì)數(shù)器,數(shù)據(jù)字構(gòu)成。字長(zhǎng)度為4~16,同步頭長(zhǎng)度為4~32位,且同步頭長(zhǎng)度是字長(zhǎng)度的倍數(shù)。
圖4 PCM幀格式
圖5 狀態(tài)轉(zhuǎn)移圖
圖6 數(shù)據(jù)接收流程
圖7 數(shù)據(jù)緩存
圖8 PCM解析功能仿真
PCM解析流程
PCM解析模塊負(fù)責(zé)完成位同步,子幀同步,串并轉(zhuǎn)換功能。PCM解析如圖5按如下步驟進(jìn)行:
(1)Idle狀態(tài)初始化計(jì)數(shù)器
(2)進(jìn)入SYN1狀態(tài)檢測(cè)同步頭
(3)當(dāng)檢測(cè)到同步頭時(shí),進(jìn)入RX_PCM 狀態(tài)檢測(cè)是否為第一幀
(4)當(dāng)一幀數(shù)據(jù)接收完畢,進(jìn)入SYNX狀態(tài)檢測(cè)后面跟著的是否是同步頭
(5)當(dāng)檢測(cè)到同步頭時(shí),判斷主幀數(shù)據(jù)是否接收完畢
(6)一主幀數(shù)據(jù)接受完畢,進(jìn)入下一次數(shù)據(jù)接收
幀同步頭檢測(cè)
同步頭檢測(cè)分為兩種,一種主幀開(kāi)始的同步頭檢測(cè)即SYN1狀態(tài),如圖6左圖所示。一種是子幀數(shù)據(jù)接收完成后同步頭檢測(cè)即SYNX狀態(tài),如圖6中圖所示。
PCM數(shù)據(jù)接收
PCM有多種編碼模式,系統(tǒng)設(shè)計(jì)有NRZL和BiΦL兩種碼型,以NRZL為例。數(shù)據(jù)在時(shí)鐘上升沿發(fā)生變化,在時(shí)鐘的下降沿處于穩(wěn)定狀態(tài),所以當(dāng)檢測(cè)到時(shí)鐘下降沿時(shí)進(jìn)行采樣,每個(gè)采樣點(diǎn)處間隔兩個(gè)時(shí)鐘連續(xù)采樣三次,然后將這三次的采樣值兩兩按位與,再將相與的結(jié)果相或便得到該采樣點(diǎn)處的真實(shí)值。
如圖6右圖所示,接收PCM數(shù)據(jù),一子幀數(shù)據(jù)接收完畢后需檢測(cè)后面的數(shù)據(jù)是否為同步頭,如果不是則將此幀數(shù)據(jù)丟棄并重新檢測(cè)主幀同步頭。
數(shù)據(jù)緩存模塊
數(shù)據(jù)在被處理的同時(shí)被寫(xiě)入雙口RAM,當(dāng)一主幀數(shù)據(jù)處理完畢,產(chǎn)生一個(gè)完成標(biāo)志,同時(shí)將高位地a16 取反。系統(tǒng)檢測(cè)到完成標(biāo)志就將數(shù)據(jù)從RAM通過(guò)USB接口發(fā)出去,同時(shí)繼續(xù)接收下一幀PCM數(shù)據(jù)。
通過(guò)modesim進(jìn)行功能仿真。,對(duì)系統(tǒng)配置,同步頭FE6B2840,字長(zhǎng)16,一幀有4個(gè)字,一主幀有三個(gè)子幀。如圖8所示,系統(tǒng)在處理數(shù)據(jù)時(shí)將有效的數(shù)據(jù)寫(xiě)入RAM。
通過(guò)對(duì)PCM格式進(jìn)行研究,設(shè)計(jì)了基于FPGA的兩路PCM解調(diào)器,解調(diào)器可以在接受PCM數(shù)據(jù)的同時(shí),進(jìn)行位同步和幀同步的檢測(cè)并將數(shù)據(jù)寫(xiě)入RAM。處理后的數(shù)據(jù)通過(guò)USB發(fā)給外部設(shè)備。經(jīng)過(guò)調(diào)試系統(tǒng)工作正常,可以實(shí)現(xiàn)PCM解調(diào)功能,滿(mǎn)足設(shè)計(jì)要求。
DOI:10.3969/j.issn.1001-8972.2016.06.024