視頻圖像灰度信號直方圖均衡的FPGA實現(xiàn)
每當一個新的圖像數(shù)據(jù)進入統(tǒng)計模塊,就將SRAM內(nèi)相應地址的統(tǒng)計數(shù)據(jù)讀出,累加后再存入該地址。由于前后數(shù)據(jù)可能是一樣的,會造成對同一個SRAM地址同時讀寫而引起錯誤。這就需要一個模塊對整個過程加以控制?;镜乃悸肥牵簩η昂髷?shù)據(jù)進行比較,若前后數(shù)據(jù)相等就將計數(shù)器累加,直到發(fā)現(xiàn)數(shù)據(jù)不等才將統(tǒng)計數(shù)據(jù)寫入SRAM,這樣就從根本上避免了讀寫同一個地址的可能性。直方圖統(tǒng)計狀態(tài)機實現(xiàn)框圖如圖2所示。
由于使用了乒乓模式(一塊SRAM用于當前場的統(tǒng)計,另一塊用于前一場灰度均衡的計算),狀態(tài)機在上電復位后首先需要將用于統(tǒng)計的SRAM清空,這可以利用視頻的場消隱時間加以處理(相應的狀態(tài)機狀態(tài)是CLEAR SRAM狀態(tài)),然后等待有效數(shù)據(jù)進入(對應于STBY狀態(tài)),一旦有效灰度數(shù)據(jù)進入,狀態(tài)機就進入統(tǒng)計狀態(tài)0(CALCULATION HISTOGRAM STEP0)。此時,首先讀出SRAM相應于該灰度值的數(shù)據(jù),同時將數(shù)據(jù)延遲并觀察前后數(shù)據(jù)是否相同,如相同則繼續(xù)停留在該狀態(tài),將計數(shù)器加1;否則進入統(tǒng)計狀態(tài)1(CALCULATION HISTOGRAM STEP1)。進入狀態(tài)1后,計算上一個灰度值的統(tǒng)計數(shù)據(jù)(將從SRAM中讀出的值加上計數(shù)器的值再加1)存入SRAM,同時還要讀出SRAM里相應于當前灰度值的數(shù)據(jù)。此后的工作與狀態(tài)0相似。以此類推,狀態(tài)不斷在狀態(tài)0和狀態(tài)1之間切換,直到有效數(shù)據(jù)結(jié)束后進入統(tǒng)計狀態(tài)2(CALCULATION HISTOGRAM STEP2),狀態(tài)2 的作用是將這一行的最后一個灰度數(shù)據(jù)的統(tǒng)計信息寫入SRAM。隨后回到STBY狀態(tài),等待下一行數(shù)據(jù)。當所有有效行都統(tǒng)計完后,進入狀態(tài)機的統(tǒng)計狀態(tài)3(CALCULATION HISTOGRAM STEP3),重新將灰度統(tǒng)計數(shù)據(jù)累計后存入SRAM。
4 SDRAM 控制器的實現(xiàn)結(jié)構
輸入輸出視頻圖像的速度(13.5MHz)遠低于SDRAM的最高速度(143MHz),假如以單個數(shù)據(jù)對SDRAM讀寫(Single Write/Single Read),根本無法發(fā)揮SDRAM高速的優(yōu)勢,所以必須使用SDRAM的突發(fā)模式(BURST MODE),即一次讀出或者寫入多個數(shù)據(jù)。以美光公司(MICRON)MT48LC1M16A1S SDRAM為例,它支持1、2、4、8個字或者整頁(256個字)的讀寫。由于屬于兩個時鐘域,所以必須對寫入或者讀出SDRAM的數(shù)據(jù)緩存。在這里,讀寫模塊分別使用兩個深度為64、寬度為16bit的雙口SRAM以乒乓的方式加以實現(xiàn)。一次突發(fā)模式讀寫的數(shù)據(jù)量都是64個字,因此選擇深度為64的SRAM是一種折衷的辦法,數(shù)據(jù)過少無法發(fā)揮突發(fā)模式的優(yōu)勢,數(shù)據(jù)過大則需要更多的SRAM作為緩存,使開銷過高。實踐證明一次讀寫64個數(shù)據(jù)比較合適。
由于SDRAM結(jié)構的特殊性,它的讀寫刷新操作需要滿足一定的時序要求,所以需要專門的控制器來維護對SDRAM的操作。圖3是Hynix Electronics公司HY5DV641622AT 的SDRAM的狀態(tài)機框圖,該框圖包含SDRAM上電時序、模式寄存器的設置、讀寫控制、預充電和定時刷新等多個環(huán)節(jié)。控制器的具體實現(xiàn)可以參考Xillinx或者Altera公司相關文檔和各家DRAM廠商的資料。
評論