基于FPGA的LCoS驅(qū)動和圖像處理系統(tǒng)設(shè)計
1.2 PLL及系統(tǒng)復(fù)位模塊
采用Altera的鎖相環(huán)IP核,外部輸入時鐘為20 MHz,經(jīng)倍頻后得到其他各模塊的驅(qū)動時鐘,以及LCoS的驅(qū)動時鐘信號。為防止系統(tǒng)異步復(fù)位時寄存器出現(xiàn)亞穩(wěn)態(tài),設(shè)計了PLL的前級和后級D觸發(fā)器。因為鎖相環(huán)的locked引腳在鎖相環(huán)穩(wěn)定輸出后才會跳變?yōu)楦唠娖剑詾楸WC其他模塊得到穩(wěn)定的時鐘信號,將locked引腳和外部輸入復(fù)位信號rst_n相與后作為整個系統(tǒng)的復(fù)位信號。
1.3 單口ROM模塊
利用FPGA內(nèi)部的M9K存儲器資源實現(xiàn)的單口ROM作為源圖像的數(shù)據(jù)存儲器。將分辨率為176×144(QCIF)的256階灰度位圖圖像初始化到單口ROM里,所需數(shù)據(jù)深度為25 344 B。當(dāng)異步FIFO沒寫滿時,單口ROM將按圖像存儲地址依次輸出圖像數(shù)據(jù)給FFT核做快速傅里葉變換。經(jīng)過處理的圖像數(shù)據(jù)暫存到FIFO)里,等待行場時序控制器模塊取用。
1.4 異步FIFO模塊
按其數(shù)據(jù)地址最高2位分為4個區(qū)間,讀/寫指針分別對某一區(qū)間操作,當(dāng)讀/寫指針相等時通過譯碼器產(chǎn)生FIFO已讀空或者已寫滿標(biāo)志信號。為避免地址信號變化時出現(xiàn)冒險競爭現(xiàn)象,寫地址和讀地址指針都采用格雷碼編碼。在讀空比較子模塊和寫滿比較子模塊里加入了FI-FO“將空”和“將滿”檢驗機(jī)制,有效地保證了FIFO正確無誤的工作。在寫時鐘wrclk的上升沿,異步FIFO每個地址對應(yīng)的存儲單元里被寫入8bits數(shù)據(jù),在讀時鐘rdclk的上升沿,F(xiàn)IFO四塊連續(xù)地址上的32bits數(shù)據(jù)輸出,即讀FIFO的速率相當(dāng)于寫FIFO速率的4倍速。
1.5 I2C狀態(tài)機(jī)模塊
沒有滿足I2C配置條件時,狀態(tài)機(jī)處于空閑狀態(tài),當(dāng)滿足I2C配置條件時,狀態(tài)機(jī)在狀態(tài)標(biāo)志位的控制下依次輸出配置地址和配置數(shù)據(jù)。當(dāng)數(shù)據(jù)配置結(jié)束時,狀態(tài)機(jī)產(chǎn)生停止信號,并拉高輸出引腳iic_config,通知行場時序控制器模塊開始工作,這樣保證了LCoS屏能在正確配置下工作。狀態(tài)機(jī)工作原理如圖2所示。本文引用地址:http://www.ex-cimer.com/article/191137.htm
1.6 行場時序控制器模塊
內(nèi)設(shè)水平計數(shù)器hcnt和垂直計數(shù)器vcnt。由于顯示屏每個時鐘周期鎖存8個像素值,所以顯示1 024個像素值所需行周期為128個Tclk(行時鐘周期)。當(dāng)hcnt計數(shù)器值為HBP時表示行有效顯示區(qū)域開始,hcnt計數(shù)器值為HBP+128時表示行有效顯示區(qū)域結(jié)束,hent計數(shù)器值為HSYN-Ccycle時,完成一行顯示,vcnt計數(shù)器加1。當(dāng)vcnt計數(shù)器值為VBP時,垂直有效顯示區(qū)域開始,當(dāng)vcnt計數(shù)器值為VBP+768時,垂直有效顯示區(qū)域結(jié)束,當(dāng)vcnt計數(shù)器值為VSYNC cycle時,完成一幀圖像顯示。行場時序關(guān)系如圖3所示。
評論