高速圖像處理系統(tǒng)中DDR2-SDRAM接口的設(shè)計(jì)
2.1 時(shí)鐘生成模塊
時(shí)鐘生成模塊主要負(fù)責(zé)整個(gè)系統(tǒng)的所有時(shí)鐘,包括DDR2控制器所需要的時(shí)鐘,外部圖像所需的時(shí)鐘。全部由DCM來產(chǎn)生。
2.2 數(shù)據(jù)接口模塊
數(shù)據(jù)接口模塊主要是負(fù)責(zé)不同數(shù)據(jù)之間格式的轉(zhuǎn)換,這個(gè)模塊主要是考慮到輸入端的數(shù)據(jù)的不同格式,必須經(jīng)過格式轉(zhuǎn)換才能符合DDR2位寬的數(shù)據(jù)。
2.3 輸入/輸出緩存模塊
輸入/輸出緩存模塊是采用V5器件的DRAM來實(shí)現(xiàn)FIFO的,輸入緩存是由兩個(gè)DRAM來完成的,DRAM配置為12×1 024,12為數(shù)據(jù)寬度,1 024為存儲(chǔ)深度,這個(gè)配置是根據(jù)具體圖像的位寬和每行的像素點(diǎn)來設(shè)定的。在這里暫定的圖像源是標(biāo)準(zhǔn)的VGA圖像,其大小為800×600。數(shù)據(jù)源每寫入一行數(shù)據(jù)(800個(gè)數(shù)),然后讀出一行數(shù)據(jù)??紤]到系統(tǒng)的穩(wěn)定性,采用兩個(gè)FIFO交替的讀/寫數(shù)據(jù),也就是所謂的乒乓操作,如圖4所示,當(dāng)一個(gè)FIFO在讀時(shí),另一個(gè)FIFO就寫,然后交替讀/寫。在每一個(gè)FIFO讀完數(shù)據(jù)后,對(duì)其清零。這樣就保證每一次寫入的數(shù)據(jù)不相互干擾,保證了系統(tǒng)的穩(wěn)定性。其中的輸入/輸出選擇單元是通過判斷VGA圖像的行數(shù)來判斷寫和讀哪個(gè)FIFO的。
除了緩存數(shù)據(jù),F(xiàn)IFO在本模塊的另一個(gè)重要的作用就是時(shí)鐘域的轉(zhuǎn)換。外部的輸入數(shù)據(jù)和輸出數(shù)據(jù)的時(shí)鐘都是40 MHz,而DDR2的讀/寫數(shù)據(jù)時(shí)鐘是100 MHz的,這樣就存在著時(shí)鐘域的轉(zhuǎn)換問題,由于FIFO的讀/寫可以用不同的時(shí)鐘。在輸入端,就可以用40 MHz的時(shí)鐘把數(shù)據(jù)寫入FIFO,然后用100 MHz的時(shí)鐘從FIFO讀出數(shù)據(jù)。在輸出端可以用100 MHz的時(shí)鐘把從DDR2讀出的數(shù)據(jù)送入FIFO,然后再用40 MHz的時(shí)鐘從FI-FO中讀出數(shù)據(jù),送到VGA顯示。但是由于讀入與寫出的時(shí)鐘頻率不一樣,很容易出現(xiàn)FIFO讀空和寫滿的問題。該問題的一般解決方法是利用FIFO的ALMOSTFULL和ALMOSTEMPTY來解決。在這個(gè)系統(tǒng)中,考慮到輸入的數(shù)據(jù)源和VGA顯示的時(shí)鐘頻率都是40 MHz,所以采用VGA數(shù)據(jù)有效信號(hào)來控制FIFO的寫,行消隱信號(hào)來控制輸入FIFO的讀,即每來一行數(shù)據(jù)才讀一行數(shù)據(jù),這樣就保證了輸入FIFO不會(huì)讀空。而輸出FIFO的寫是通過DDR2內(nèi)部的讀數(shù)據(jù)有效位來控制的,因?yàn)镈DR2內(nèi)部的操作是寫1行,讀1行,所以在寫入FIFO一行數(shù)據(jù)后,要等到下一行到來后,才會(huì)往輸出FIFO寫入數(shù)據(jù),所以也就解決了輸出FIFO寫滿的問題。
2.4 DDR2-SDRAM控制模塊
DDR2-SDRAM的讀/寫控制是整個(gè)系統(tǒng)的關(guān)鍵。由于要緩存圖像,所以就必須在DDR2里面開辟兩個(gè)大小相同的存儲(chǔ)單元。這兩個(gè)存儲(chǔ)單元的大小是根據(jù)一幀圖像的大小來開辟的,其大小為800×600個(gè)存儲(chǔ)單元。對(duì)DDR2的存儲(chǔ)操作為先向第一個(gè)存儲(chǔ)單元寫入第一行數(shù)據(jù),讀出第二個(gè)存儲(chǔ)單元的第一行數(shù)據(jù)。當(dāng)寫滿第一個(gè)存儲(chǔ)單片后,第二個(gè)存儲(chǔ)單元也被讀空,這時(shí)候交換讀/寫地址,讀一個(gè)存儲(chǔ)單元,寫第二個(gè)存儲(chǔ)單元,依次輪換。
評(píng)論