隨著計算機技術、多媒體技術以及通信技術的發展,數字視頻技術得到了越來越廣泛的應用。在數字視頻技術的研究中,視頻數據傳輸是一個技術關鍵。本文針對視頻數據流數據量大、實時性要求高的特點,采用流模式傳輸,將視頻采集數據通過DMA從存儲資源緊張的片內緩存區搬運至片外sDRAM幀緩沖區,實現圖像的高速傳輸。 利用SoPC(System on Programmable Chip)片上可編程系統技術,將處理器、多口SDRAM控制器、DMAC、I2C接口等模塊集成到一塊FPGA上,實現視頻圖像的采集、存儲、傳輸和顯示。采用自定制組件的辦法,將多口sDRAM控制器封裝成符合流模式規范的一個外設掛在Avalon總線上,非常方便DMAC進行數據的搬運,并大大提高了系統的性能。 1 流模式傳輸規范 流模式傳輸是Altera Nios II嵌入式系統中的一種高級Avalon總線傳輸方式。這種傳輸模式在流模式主外設和流模式從外設之間建立一個開放的信道,以提供連續的數據傳輸。這個信道使得只要存在有效數據就能進行數據的流動,主設備不需要不斷地對從外設的狀態寄存器進行訪問。這樣使得主從端口之間的數據吞吐量達到最大,同時也避免了從外設的數據上溢或下溢。流傳輸模式最適合DMA傳輸。一個只包含流控制信號和一個計數器的*基金項目:深圳市科技計劃資助項目(200708)。DMA控制器就可以用來在一個從外設和一個存儲器之間連續地傳輸數據。 本設計采用流傳輸模式的從端口讀傳輸和從端口寫傳輸的方法。從端口讀傳輸中,除了要設計接收主端口發出的clk信號、address信號、read信號、chipselect信號和readdata信號之外,從外設還需要設置dataavailable信號有效來表示它能夠接收讀傳輸。從端口讀傳輸接口信號及其時序如圖1所示,由從外設發出的dataavailable有效時啟動流模式讀傳輸,數據通過DMA的搬運,開始連續不斷地由從外設流向主端口直至傳輸完成,傳輸的停止或中斷也由從外設來決定。同樣的道理,在寫傳輸中,要設計接收主端口發出的clk信號、address信號、write信號等基本從端口寫傳輸信號之外,從外設則需要設置ready-fordata信號有效來表示它能夠接收寫傳輸,圖2為從端口寫傳輸接口信號及其時序。此外,讀傳輸和寫傳輸中的endofpacket信號取決于用戶設計。 2 SoPC系統結構 如圖3所示,SoPC系統以32位Nios II處理器為核心,將所有的接口模塊集成到一塊FPGA內。其中,多口SDRAM控制器作為一個自定制外設與其他通用外設(DMA控制器、SRAM控制器、Flash接口等)一同掛在Avalon總線上,并與圖像采集模塊、VGA顯示控制模塊以及12C通信模塊等一起構成SoPC視頻采集系統。本設計中,片外SDRAM容量較大,作為視頻數據源緩沖區以及顯示緩沖區;片外SRAM速度快但資源有限,可用于視頻處理緩沖區。從SDRAM(數據源)到SRAM(處理緩沖區)以及從SRAM(處理緩沖區)到SDRAM(顯示緩沖區)的傳輸,則由DMAC采用流模式的方法來實現數據的搬運。 3 流模式接口的設計 (1)四口SDRAM控制器 本系統采用片外SDRAM作為幀緩沖區,而對SDRAM使用的關鍵在于其控制接口的設計。在SoPCBuilder集成開發軟件中,可直接使用系統元件庫提供的單口SDRAM控制器,但是該控制器IP核無法滿足采集、傳輸和顯示同時進行的要求。因此,自定制了一個四口SDRAM控制器。如圖4所示,該四口SDRAM控制器中的2個端口用于流模式的讀和寫,另外2個端口一個作為圖像數據源輸入,還有一個作為VGA顯示輸出。 由于數據采集、VGA監控、流模式傳輸數據流速度與SDRAM控制器存取不匹配,因此,對于這四口中的任何一個口,都用FIFO來對數據進行緩沖,以協調數據的同步而不至于錯位。而每個FIFO都有個水位檢測器,當水位到半滿時根據仲裁電路判斷的優先級啟用SDRAM讀寫命令,以100 MHz(系統時鐘頻率50 MHz)的頻率根據用戶給定的地址信號進行批量數據的存取,從而滿足了四口并用的要求。該SDRAM控制器的內部結構如圖5所示。 (2)數據流的傳輸 用DMA來搬運數據不僅速度非常快,而且整個操作不需要CPU的干預,可把CPU從繁重的數據傳送中解放出來。DMA控制器將數據從源地址空間傳輸到目的地址空間,數據源或目的地可以是Avalon從外設(一個固定地址),也可以是存儲器的一段地址范圍。對DMA控制器的使用,需要Nios II處理器對源地址和目的地址進行初始化配置,同時也要預先給定傳輸長度以及傳輸模式等。本系統使用了Altera公司提供的HAL DMA設備驅動程序。該驅動程序把DMA傳輸抽象成兩種數據通道:數據發送通道和數據接收通道,如圖6所示。 如此,便可通過Nios II用軟件控制DMA以流模式進行數據傳輸,具體搬運的數據路徑如圖7所示。其中緩沖區1是采集數據的源緩沖區。緩沖區2是傳輸后顯示緩沖區,緩沖區3是處理緩沖區。對視頻的處理不是本文討論的范圍,故這里只將原圖像傳回。 (3)流模式接口的硬件設計 對流模式接口的硬件設計實際上就是把上述四口SDRAM控制器封裝成一個Avalon自定制組件,且這個組件的其中兩端口滿足流模式讀寫規范。根據Avalon總線流模式傳輸規范,該自定制外設需要設置dataavailable、readyfordata信號有效表示已經準備好流模式傳輸,同時接收主設備發出clk、read/write、chipse-lect等信號,并根據這些信號對上述FIFO進行數據的存取。以下給出了該接口的部分Verilog HDL代碼(u9、u10為FIFO的端口信號連接情況): (4)數據路徑的軟件控制 作為自定義的組件,除了硬件接口以外,還需要編寫驅動層軟件(固件)。SoPC Builder生成的外設信息都保存在system.h文件里,固件的編寫主要是基于這個文件信息。 對數據路徑的控制是通過Nios II軟件配置DMA控制器來實現的。這種軟硬件協同設計的辦法,既兼顧了傳輸的速度又兼顧了數據路徑的靈活性。對數據傳輸的設置,首先需要在SoPC Builder中設定DMA控制器的read_master和write_master,也就是數據搬運的源和目的地。具體設置如圖8所示。 除此之外,還要在軟件上具體設置DMA傳輸的源地址、目的地址、傳輸長度以及傳輸模式等。這里給出部分調用HAL DMA驅動的軟件代碼: 4 系統測試 (1)流模式接口仿真 用Quartus II自帶的Signaltap II邏輯分析儀對自定制的流模式接口信號進行觀察,圖9為相關信號波形。經過分析,此波形與流模式的傳輸規范吻合。 (2)系統測試 整個SOPC系統在Altera DEl的Cyclone II FPGA上實現。采用友晶科技公司的攝像頭進行圖像數據源輸入,用VGA顯示終端進行輸出觀察,用DEl設計平臺和該SoPC視頻采集系統對某一場景進行拍攝截圖。結果表明,該流模式接口工作流暢。 5 總 結 本設計采用以Nios II為核心的SoPC系統實現了視頻采集信號的流模式傳輸,并將其做成一個自定義外設,非常方便重復利用。另外,利用了DMAC硬件實現傳輸,且數據采集、存儲和顯示全硬件實現,速度非常快;同時,可以將SRAM作為圖像處理緩沖區,將處理后的圖像讀回,這樣就搭建了一個圖像處理的硬件系統。當需要實現某種視頻處理的算法時,只需要修改圖像處理模塊,再放進系統中就可以實現。 |