基于FPGA和RTOS的嵌入式碼流分析設計方案
——
如果采用DVB_ASI接口,也可以通過Altera提供的IP核來實現(xiàn)串/并和并/串轉(zhuǎn)換。所以,原則上除去傳輸變壓器和保護電路無需其他接口邏輯芯片。DVB標準的輸入接口有ASI和SPI兩種,兩者的定義和標準不盡相同。針對輸入接口的不同需要對輸入信號進行調(diào)整和統(tǒng)一。要從ASI接口的信息中提取TS碼流同步信號,調(diào)整信號脈沖的占空比使ASI的輸出接口信號和SPI的相類似。另外,ASI接口輸出有平滑和突發(fā)2種數(shù)據(jù)串數(shù)模式。為了滿足突發(fā)模式的工作需要,可以將FPGA片內(nèi)的RAM BLOCK定義成FIFO進行高速緩存,使接口滿足不同速率的突發(fā)輸入,最高應該可以滿足27MHz并行突發(fā)方式(ASI接口216MHz)的輸入要求。
在FPGA的碼流過濾邏輯單元部分需要設計一些重要的硬件控制模塊。MPEG2標準規(guī)定了各壓縮級別TS碼流的速率。經(jīng)過TS碼流復用后實際應用中傳輸?shù)拇写a流速率可能>200MHz。因此考慮到NIOS的工作主頻和加載操作系統(tǒng)后的實際工作效率,我們需要將輸入碼流降低后輸入分析系統(tǒng)。故而硬件中設計多種硬件觸發(fā)機制和硬件過濾器來滿足這種需求。
根據(jù)ETR290的標準定義,碼流分析功能不是并行處理的模式,而是有先后次序的相對關(guān)系。根據(jù)不同的優(yōu)先級,先完成同步和連續(xù)性的分析,然后提取PSI信息,最后根據(jù)解析后的PSI信息對不同PID的節(jié)目TS流進行解碼,分析詳細的PES流信息。輸入信息量的控制可以通過軟件控制的方式實現(xiàn)。FPGA過濾邏輯設計了各種TS流的PID過濾器,將這些豐富的PID過濾器有機地組合在一起??刂颇K可以通過寫入命令來控制這些PID過濾器的工作方式和組合結(jié)構(gòu)。
根據(jù)分析流程控制要求,當分析不同的信息部分時控制模塊可以按需要發(fā)送命令改變硬件組合,保證輸入的碼流只與當前分析工作有關(guān)。這樣可以完成對輸入碼流流量的控制而不影響完成設計要求。當然,這樣設計是以犧牲分析實時性為代價的平衡措施,但是獲得的好處也是可預見的。
Altera公司的FPGA上提供了純軟件設計的CPU內(nèi)核NIOS模塊。針對該內(nèi)核Altera同時提供了相應的編譯器和調(diào)試工具。在NIOS內(nèi)核上我們可以移植一個小的操作系統(tǒng)。在這個實時操作系統(tǒng)上實現(xiàn)多任務調(diào)度和復雜的計算。該公司還提供用于FPGA設計的其他功能模塊如:UART、TIMER等。軟件支持方面提供了在NIOS內(nèi)核上工作的TCP/IP協(xié)議等。
這些資源很方便的滿足了設計要求,利用它們實現(xiàn)分析結(jié)果的輸出要求。我們可以根據(jù)不同的應用場合選擇采用不同的通訊接口如RS232/RS485、以太網(wǎng)等。同時,我們可以進一步在操作系統(tǒng)上設計SNMP協(xié)議,使碼流分析模塊能夠在網(wǎng)絡環(huán)境和現(xiàn)有的管理系統(tǒng)進行連接。這有利于網(wǎng)絡管理和控制。同樣,在操作系統(tǒng)上設計簡單的WEB SERVER功能也是可行的。用戶通過瀏覽器可以馬上得到分析結(jié)果而無需安裝任何分析軟件。這些功能設計為用戶的實際應用提供了方便,用戶可以根據(jù)不同的現(xiàn)場環(huán)境選擇不同的控制方法。
軟件結(jié)構(gòu)
軟件設計基于一個實時操作系統(tǒng)。目前,有很多商業(yè)化的RTOS供選擇,同時,也有Altera的第三方開發(fā)商提供的可在NIOS上運行的操作系統(tǒng)。本文介紹另外一種完整的嵌入式的實時內(nèi)核μC/OS-II以及應用程序結(jié)構(gòu)。μC/OS-II源代碼絕大部分是用C語言寫的,匯編部分只有200行左右。這說明該實時內(nèi)核可以方便的移植到幾乎所有的嵌入式應用類CPU上。事實上它已經(jīng)被成功的移植在DSP、16/32位MCU上。通過針對堆棧指針、出入堆棧管理、中斷控制等匯編的修改,可以將μC/OS-II移植到NIOS的平臺上。如圖3所示,軟件設計基于μC/OS-II操作系統(tǒng),設計給出了多進程設計的軟件設計結(jié)構(gòu)。
下面簡單分析不同進程的主要功能:
1.TS流處理進程。該進程完成TS輸入,輸出和內(nèi)存管理的功能。類似于通信系統(tǒng)的物理層,面對硬件系統(tǒng)的傳輸控制。一般情況下,完成從FIFO中讀取數(shù)據(jù)存儲在SRAM的不同部分中,并提交地址指針。同時將需要輸出的碼流從SRAM中讀取,按要求寫入輸出FIFO中。在特殊情況下,根據(jù)輸入碼流速率和內(nèi)存情況,調(diào)整輸入數(shù)據(jù)量。
2.MPEGII系統(tǒng)層分析器。根據(jù)MPEG2系統(tǒng)層標準對輸入碼流的PSI信息進行分析。對提取的各種表格和PID信息進行分類存儲。同時按照SNMP定義的數(shù)據(jù)結(jié)構(gòu)類型重組數(shù)據(jù),根據(jù)需要刷新數(shù)據(jù),將結(jié)果提交給ETR290錯誤事件觸發(fā)進程。
3.ETR290錯誤監(jiān)測進程。按照ETR290的標準進行三個優(yōu)先級分析和統(tǒng)計。根據(jù)系統(tǒng)時鐘分析實時信息如PCR抖動延時,信息插入間隔等。將分析結(jié)果的數(shù)據(jù)存儲成數(shù)據(jù)結(jié)構(gòu)提交給通信模塊。通過預先設計的故障模式實現(xiàn)故障提示和報警。故障模式通過軟件設定可以是單個ETR290的錯誤產(chǎn)生一個報警,也可以是一組錯誤產(chǎn)生一個報警。太多的錯誤報警會導致信息堵塞,因此,將相關(guān)的錯誤組合成一個高級的報警信息將有利于問題的判斷。
4.通信服務進程。按照TCP/IP協(xié)議和SNMP協(xié)議完成以太網(wǎng)的傳輸控制設計。數(shù)據(jù)輸出按照標準的SNMP協(xié)議將統(tǒng)計信息數(shù)據(jù)庫和分析數(shù)據(jù)庫輸送到服務器端。同時,通過TCP或UDP協(xié)議進行控制命令通信。SNMP傳輸?shù)慕y(tǒng)計信息數(shù)據(jù)可以利用外掛的分析軟件進行語義分析。不過要求同時傳輸硬件本地時鐘信息作為參考信息。也可以通過控制臺窗口直接顯示分析數(shù)據(jù)。一旦在通信服務中添加WEB SERVER功能,則可通過瀏覽器在本地直接顯示分析結(jié)果。
本文結(jié)論
嵌入式的碼流分析設計是完全可行和有效的。目前大部分功能已經(jīng)實現(xiàn)。FPGA的設計采用VHDL語言結(jié)構(gòu),分析軟件采用C++語言,RTOS操作系統(tǒng)也可在不同的硬件之間移植;因此,設計可以在不同的硬件平臺上實現(xiàn)。這為成本的控制留下了靈活的空間。本設計目標不是取代傳統(tǒng)的碼流分析設備,而是作為一種補充。目前設計的實時分析能力有限,分析數(shù)據(jù)刷新在500ms左右。但是,提高FPGA的工作頻率和性能,選用高速SDRAM就可以迅速提高工作性能。所以,性能的提升和功能的擴展都有廣闊的前景。 linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)
pid控制相關(guān)文章:pid控制原理
fpga相關(guān)文章:fpga是什么
評論