隨著(zhù)科學(xué)技術(shù)的不斷發(fā)展,在視頻監控的各個(gè)細節都著(zhù)很大的突破,針對移動(dòng)視頻監控的特點(diǎn),無(wú)線(xiàn)自動(dòng)跟蹤攝像頭的警用車(chē)輛支持系統孕育而生。
uClinux上C2H加速的JPEG壓縮
自定義的OBD-II接口
車(chē)輛都有一個(gè)用于進(jìn)行系統管理的發(fā)動(dòng)機控制單元(ECU)。警用車(chē)輛上也有這樣的設備。對于新近制造的車(chē)輛來(lái)說(shuō),ECU是一個(gè)非常重要的組件,其作用是將發(fā)動(dòng)機與各種電子控制部件結合起來(lái)。OBD-II是一個(gè)接口,可以將計算機或診斷工具連接到ECU以便進(jìn)行車(chē)輛維護,它可以實(shí)現設備間的通信。
OBD標準有很多種,具體取決于車(chē)輛的制造商。本項目采用的是ISO9141-2國際標準。通過(guò)OBD-II,可以了解車(chē)輛的行駛速度、燃油狀態(tài)和車(chē)輛的故障情況。其初始化過(guò)程為5波特,通信速度為10.4k波特。對于接收到的信息部分字節,必須進(jìn)行補充并將其發(fā)送到ECU進(jìn)行通信。在SoPC平臺上使用的是UART組件,因為它與串行通信類(lèi)似。
性能參數
表1列出了在圖像處理模塊上發(fā)送控制信號,到步進(jìn)馬達上接收初始操作信號之間的時(shí)間間隔。該時(shí)間間隔是通過(guò)示波器測量得出的。通過(guò)GPIO接口啟動(dòng)步進(jìn)馬達后,在軟件程序控制器中,Nios處理器會(huì )接收中斷信號,并生成操作信號。
另一個(gè)結果是,C2H加速的libjpeg的DCT函數可以實(shí)現JPEG的快速壓縮。640x400的24位位圖經(jīng)過(guò)了20倍強壓縮以實(shí)現精確的測量。使用C2H編譯所顯示出來(lái)的性能比這種沒(méi)有加速器設計的性能要差。要解決此問(wèn)題,我們更改了緩沖區管理方法。在修改了DCT函數后,性能提升了4倍。
數據表
我們在設計該系統時(shí),考慮了在uClinux系統上使用USB調制解調器時(shí)的性能下降問(wèn)題。然而事實(shí)顯示,網(wǎng)絡(luò )性能與在PC環(huán)境中運行的性能幾乎相同。
設計的體系結構
整個(gè)系統由uClinux操作系統控制。包括圖像處理模塊在內的攝像頭控制系統和子系統由完整的FPGA組成。
標準JPEG庫libjpeg的DCT函數被更改為C2H加速器。圖像處理模塊、VGA控制器和步進(jìn)馬達控制器被組合成一個(gè)單獨的SoPC組件??偣蚕牧?1000LE。
設計描述
組合uClinux和C2H
在NiosIDE環(huán)境中編寫(xiě)的代碼經(jīng)過(guò)很少的更改或無(wú)需更改即可在uClinux下的多任務(wù)環(huán)境中運行,因為在uClinux中對內存映射地址的寫(xiě)操作沒(méi)有限制。
我們可以通過(guò)常用的技術(shù)在uClinux上使用C2H加速器。將C2H加速器從NiosIDE移到uClinux上所需
1 2 下一頁(yè) |
第一步是生成一個(gè)臨時(shí)項目。然后,在NiosIDE中編譯并生成加速器?,F在,我們可以在Debug目錄中看到加速器的打包函數。將這些頭文件(Headerfile)和打包函數復制到uClinux開(kāi)發(fā)目錄中。如果您尚未對FPGA編程,則進(jìn)行該項編程。
下一步是使用Nios的gcc工具和elf2flt選項編譯經(jīng)過(guò)加速的應用程序。確保必需的頭文件(如system.h或io.h)存在。在完成此步驟后,將生成的執行文件復制到單片機上。在大多數情況下,它的速度會(huì )比僅使用軟件的系統要快。
可惜的是,我們在將libjpegDCT函數轉換成加速器時(shí)面臨著(zhù)性能方面的問(wèn)題。我們將在接下來(lái)的部分介紹針對性能問(wèn)題的解決方案。
優(yōu)化C2H編譯器的JPEG庫
一般情況下,開(kāi)發(fā)人員會(huì )考慮使用DSP進(jìn)行JPEG壓縮,但DSP需要有自己的軟件程序來(lái)提供支持。選擇可以加速libjpeg的C2H編譯器是一個(gè)正確的決定,因為許多現有應用程序都使用作為JPEG標準庫的libjpeg。
但是,在使用C2H編譯器轉換原始的DCT函數時(shí),它所顯示的性能比僅使用軟件設計的性能低。從結構上來(lái)說(shuō),對數據高速緩存的刷新是一個(gè)問(wèn)題,它的數據處理工作是以64個(gè)字節為單位進(jìn)行的。我們設計了適合于C2H編譯器的經(jīng)過(guò)優(yōu)化的緩沖區管理系統。這個(gè)管理器實(shí)現了4倍的性能提升。
創(chuàng )建自定義的SoPC組件
每個(gè)部件都由VerilogHDL單獨設計,并作為一個(gè)組件添加到SoPC中。圖像處理模塊、VGA控制器和步進(jìn)馬達控制器被組合成一個(gè)單獨的SoPC組件,因為這些部件相互之間都有密切的關(guān)聯(lián)。這些組件作為AvalonMaster的組件在SRAM上寫(xiě)入圖像數據。
使用自定義指令對MPEG音頻進(jìn)行解碼
我們發(fā)現,100MHzNiosII處理器在CycloneII芯片上對立體聲128Kbps44.1KHzMP3音頻進(jìn)行解碼時(shí)會(huì )有性能損失。如果FIFO足夠大,則可以在該系統中播放單聲道音頻,但CPU會(huì )一直分配用于播放音頻的性能。
我們在Nios處理器上添加了使用自定義指令的64位乘法器以實(shí)現64位乘法計算;這種運算方法在Libmad庫中經(jīng)常用到。播放的性能提升了大約2.5倍,用于計算的時(shí)鐘使用率有所降低。
還有其它一些原因使音頻播放質(zhì)量不佳。首先是采樣率不好,其次是緩沖區大小不足,最后是多任務(wù)處理環(huán)境。音頻將參考使用17MHz的時(shí)鐘。
上一頁(yè) 1 2 |