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