張文濤,王瓊華,李大海,張映權
摘 要:描述了一種在PAL→VGA的實時視頻采集系統中圖像數據處理的方法。針對實時視頻采集系統一般使用2片SDRAM進行乒乓緩存的方式,給出一種使用一片SDRAM的不同BANK進行乒乓操作的相對容易實現的SDRAM控制器設計方法。該方法通過充分利用SDRAM的切換BANK存取操作并采用指令計數的方式進行讀寫狀態轉換,在PAL→VGA實時視頻采集系統中實現了利用一片SDRAM進行圖像緩存。它在實時視頻采集系統中圖像數據處理方面,具有良好的應用價值。
關鍵詞:視頻采集;FPGA;SDRAM 控制器;乒乓操作
中圖分類號:TN948文獻標識碼:A
文章編號:1004-373X(2009)20-057-03
Design of SDRAM Controller for Real-time Video Acquisition System
ZHANG Wentao,WANG Qionghua,LI Dahai,ZHANG Yingquan
(Key Laboratory of Fundamental Synthetic Vision Graphics and Image for National Defense,School of Electronics and
Information Engineering,Sichuan University,Chengdu,610065,China)
Abstract:In this paper,a method of image data processing for PAL→VGA real-time video acquisition system is des-cribed.According to the former method of real-time video acquisition system usually using two SDRAM for ping pong cache,a design method of one SDRAM controller which uses different BANK of SDRAM for ping pong operation is proposed.By usingthe alternating BANK access operation of SDRAM and using instruction count to convert the read and write state of SDRAM,PAL→VGA real-time video acquisition system uses one SDRAM to realize image cache successfully.The design is well applicable to image data processing for the real-time video acquisition system.
Keywords:video acquisition;FPGA;SDRAM controller;ping pong operation
0 引 言
在PAL→VGA的實時視頻采集系統中,由于視頻數據流的數據量大、實時性要求高,需要高速大容量的存儲器作為圖像數據的緩存。SDRAM[1]作數據緩存不僅具有大容量和高速度的特點,而且在價格和功耗方面也占有很大的優勢。但是SDRAM控制較復雜,需要處理預充、刷新、換行等操作,因此有必要設計SDRAM控制器[2-10]來完成和SDRAM的接口。并且為了保證數據流的連續性,實時視頻采集系統通常采用通過對兩片SDRAM的乒乓操作來完成圖像數據的緩存。針對SDRAM是高速設備,工作頻率上限最高可以達到166 MHz,而該系統中前端圖像采集模塊的像素時鐘為27 MHz,后端VGA顯示的像素時鐘為31.5 MHz。在此介紹了一種使用1片SDRAM的不同BANK進行乒乓操作[11],且相對容易實現的SDRAM控制器設計方法。
1 SDRAM 基本操作原理
SDRAM的主要操作包括初始化、讀寫訪問、刷新、激活、預充電等。以MICRON公司的MT48LC4M32B2(1M×32 b×4 BANKS)為例,簡要介紹一下SDRAM的操作。
如圖1所示,SDRAM的初始化操作過程如下:
(1) 在電源管腳上電(電壓不得超過標稱值的0.3 V)并且時鐘穩定后經過200 μs延遲,執行一次空操作命令(該命令在延遲周期的后期發出)且保持時鐘使能信號為高;
(2) 對所有的BANK進行預充電,所有的BANK都進入空閑狀態;
(3) 預充電后執行兩個自動刷新命令,等待八個刷新周期完畢;
(4) 發出模式設置命令來設置模式寄存器。由于上電后模式寄存器的狀態是不確定的,所以在進行SDRAM操作之前一定要先設置模式寄存器。模式寄存器設置值如圖2所示。
圖1 SDRAM的初始化過程
圖2 模式設置值
對SDRAM的讀寫訪問先要以激活命令選擇具體的BANK和行,地址線BA1/BA0用來選擇BANK,A0~A11用來選擇所要訪問的行;然后發出讀或寫命令,地址線A0~A7用來選擇所要訪問的起始列。在讀命令發出后,要等待一個CAS延遲時間,有效數據才會出現在數據總線上,CAS延遲時間可以設置為2或3個時鐘。在寫命令發出后,不需要等待CAS延遲時間有效數據會立即出現在數據總線上。對SDRAM的讀寫操作一般以突發模式進行,突發長度可以設置成1,2,4,8以及全頁,常用的長度為8個。該系統的CAS延遲時間設置為2,突發長度為1。
SDRAM的存儲單元可以理解為一個電容,總是傾向于放電,必須有定時的刷新周期以避免數據丟失。只要保證在64 ms時間內所有有效數據行都完成刷新就可以保證數據不丟。SDRAM提供兩種類型的刷新模式:自動刷新和自刷新。在該系統中,前端PAL制式信號一幀的時間為40 ms,因此SDRAM的同一地址讀寫操作的時間相隔為40 ms。又由于系統為實時視頻采集系統,前端采集的視頻數據是連續不斷的,所以該系統不需要進行刷新操作即可保證數據不丟。
2 SDRAM控制器的設計實現
在實時視頻采集系統中,為了保證數據的穩定和連續性,通常采用的方法是對存儲器進行乒乓操作。一般所指的乒乓操作針對兩片存儲器芯片,如圖3所示,其原理是通過控制模塊對兩片存儲器分別做讀寫操作,寫存儲器滿時控制模塊發出交換命令,切換兩片存儲器的操作狀態。
圖3 模式設置值
該系統采用的是一片SDRAM實現乒乓操作。設計時是利用SDRAM的不同BANK間的存取操作來實現乒乓操作。由于SDRAM總共有4個BANK,所以讀取第一幀圖像時使用SDRAM的1,2 BANK為讀緩存,3,4 BANK為寫緩存。第二幀圖像時SDRAM的3,4 BANK切換為讀緩存,1,2 BANK切換為寫緩存。采用一幀圖像讀寫完畢作為切換標志反復切換讀寫緩存,就充分利用SDRAM的不同BANK來實現乒乓操作。另一方面由于SDRAM的數據線和地址線只有1組,所以實際控制的時候讀寫操作是不能同時進行的。設計中考慮到SDRAM的工作頻率與前端圖像采集的像素頻率以及后端VGA顯示的像素頻率相比要高得多,因此將讀寫操作利用時分的方式分開控制。
所以在控制器中設計了一個指令計數器(Countcmd),通過計數的方式來切換讀寫操作。只要選取適當的SDRAM工作頻率以及指令計數器的規定值就可以完成SDRAM讀寫操作的連續切換。實際設計中采用的SDRAM工作頻率為100 MHz,指令計數器的規定值為240。SDRAM控制器狀態轉換概圖如圖4所示。
圖4 SDRAM控制器狀態轉換概圖
SDRAM控制器的具體狀態轉換流程如下:首先初始化SDRAM,然后向SDRAM的1,2 BANK寫入第一幀圖像,當第一幀圖像寫入完畢后進入乒乓操作階段。此時SDRAM的1,2 BANK為讀緩存,3,4 BANK為寫緩存。
首先進入讀緩存激活行,開始讀操作,讀操作開始的同時啟動指令計數器。此時每執行一條指令(包括讀指令,空操作指令,不包括預充電指令和行激活指令),指令計數器自加1,當指令計數器到達規定值時將指令計數器清0并切換到寫狀態。進入寫狀態前先判斷寫緩存的行激活標志,如果沒有激活,先執行行激活,然后開始寫操作,如果已經激活則直接開始寫操作。寫操作開始的同時啟動指令計數器。此時和讀狀態時一樣,每執行一條指令,指令計數器自加1,當指令計數器到達規定值時同樣將指令計數器清0后切換到讀狀態。如此反復切換操作,直至讀完一幀或者寫滿一幀。如果是讀完一幀,則判斷寫緩存中一幀寫滿沒有。如果已經寫滿,則進入讀寫BANK切換狀態。如果沒有,則進入寫狀態并不再切換讀寫狀態,一直保持寫狀態直至寫滿一幀為止,然后進入讀寫BANK切換狀態。如果是寫滿一幀,則同理于讀完一幀的情況,首先判斷讀緩存中讀完一幀沒有,然后根據判斷結果進行操作,最后進入讀寫BANK切換狀態。在讀寫BANK切換狀態中,讀緩存切換為3,4 BANK,寫緩存切換為1,2 BANK。反復上述操作步驟,就可以完成使用一片SDRAM不同BANK的乒乓操作。
整個SDRAM控制器在Altera的Quartus Ⅱ 7.2環境下采用Verilog設計完成,然后在ModelSim SE 6.0環境下仿真通過。隨后通過Altera的Quartus Ⅱ 7.2進行綜合和布局布線,并最終在Altera Cyclone系列FPGA芯片EP1C6Q240C8上完成。所設計的SDRAM控制器在PAL→VGA的實時視頻采集系統中調試通過,能夠實現圖像數據的存儲和讀取,完全滿足系統的要求。
3 結 語
介紹在PAL→VGA的實時視頻采集系統中使用SDRAM作為圖像緩存的基本操作,設計一種使用1片SDRAM的不同BANK進行乒乓操作的相對容易實現的SDRAM控制器設計方法。在PAL→VGA的實時視頻采集系統中,使用了所設計的SDRAM控制器,并通過硬件驗證,采集得到的圖像質量較好。另外,這里設計的SDRAM控制器稍加改動就可以應用到其他實時視頻采集系統中去,具有很強的通用性。
參考文獻
[1]Micron Technology Inc.MT48LC4M32B2.1 Meg×32 b×4 Banks Synchronous Dram Datasheet[Z].2002.
[2]林志煌,解梅.一種簡易SDRAM控制器的設計方法[J].現代電子技術,2008,31(16):81-91.
[3]武玉華,梁晨,李莉,等.SDRAM在頭盔顯示器系統中的應用研究[J].現代電子技術,2008,31(13):182-185.
[4]周昆正.基于FPGA的SDRAM控制器設計[J].現代電子技術,2003,26(13):63-65.
[5]王騫,丁鐵夫.高速圖像存儲系統中SDRAM控制器的實現[J].液晶與顯示,2006,21(1):48-51.
[6]宋一鳴,謝煜,李春茂.基于FPGA的SDRAM控制器設計[J].計算機應用,2003,29(9):10-13.
[7]張林,何春.高速SDRAM控制器設計的FPGA實現[J].電子科技大學學報,2008,37(Z1):109-112.
[8]段曉晨,何小剛,程永強.實時視頻SDRAM控制器的FPGA設計與實現[J].太原理工大學學報,2006,37(Z1):5-8.
[9]李衛,王杉,魏急波.SDRAM控制器的FPGA設計與實現[J].電子工程師,2004,30(10): 29-32.
[10]周望瑋,史小軍,朱為,等.基于FPGA的SDRAM讀寫雙口控制器設計[J].電子器件,2006,29(2):581-584.
[11]方勇,呂國強,彭良清,等.3D顯示器視頻轉換系統設計及其FPGA實現[J].液晶與顯示,2007,22(1):94-98.
[12]周秀娟.高速大容量數據存儲系統的研究[D].上海:上海交通大學,2008.
[13]劉勛. 基于FPGA的對象存儲控制器SATA接口及關鍵技術研究[D].武漢:華中科技大學,2007.