相較于透射式LCD,LCoS具有光使用率高、體積小、開(kāi)口率高、器件尺寸小等特點(diǎn),可以很容易地實(shí)現(xiàn)高辨別率和微顯示投影。采用彩色LCoS屏顯示基于RGB的彩色圖像,經(jīng)過(guò)光學(xué)成像系統(tǒng)投影到接收屏上,實(shí)現(xiàn)計(jì)算全息圖像的三維顯示。
基于FPGA的顯示系統(tǒng)有以下優(yōu)勢(shì):第一,LCoS尺寸小,便于實(shí)現(xiàn)微投影,使用可靈活編程的FPGA器件作爲(wèi)驅(qū)動(dòng)控制器,這樣就可以將其做成像一般投影儀一樣的微型投影設(shè)備,使計(jì)算全息三維顯示擺脫了計(jì)算機(jī)和複雜光路的束縛,具有了更高的靈活性,爲(wèi)其走出實(shí)驗(yàn)室提供了條件。第二,因爲(wèi)在傳統(tǒng)空間光調(diào)制器上獲得的圖像裏含有物波和參考光的複共軛像,形成了噪聲,在FPGA上可以實(shí)現(xiàn)圖像濾波去噪,使獲得的圖像更清晰。第三,F(xiàn)PGA是基于可編程邏輯單元的器件,當(dāng)經(jīng)過(guò)綜合、布局布線、時(shí)鍾約束的代碼燒錄到FPGA器件後,F(xiàn)PGA就將算法代碼硬件化了,可以作爲(wèi)專用芯片工作,其內(nèi)部信號(hào)延時(shí)完全是硬件級(jí)傳輸延時(shí)。在處理數(shù)據(jù)搬移和複雜的數(shù)學(xué)運(yùn)算以及一些循環(huán)操作時(shí),例如圖像的FFT變換,F(xiàn)PGA硬件運(yùn)算要比軟件運(yùn)算快得多,即使用FPGA器件實(shí)現(xiàn)對(duì)軟件算法的硬件加速。
基于以上原因,本文設(shè)計(jì)了基于FPGA的LCoS驅(qū)動(dòng)代碼及圖像的FFT變換系統(tǒng),爲(wèi)計(jì)算全息三維顯示圖像處理和顯示提供了硬件平臺(tái)。
1 系統(tǒng)設(shè)計(jì)
1.1 系統(tǒng)模塊框圖:
該系統(tǒng)采用CycloneⅢ EP3C5E144C8,該芯片有5 136個(gè)LE,95個(gè)用戶I/O,2個(gè)PLL,以及46個(gè)嵌入式乘法器和423 936 b的內(nèi)部邏輯寄存器。以它豐富的資源,完全可以作為L(zhǎng)CoS的驅(qū)動(dòng)控制器件。顯示屏采用Himax的反照式LCoS屏HX7308,其辨別率為1 024×768,可以支持256級(jí)灰度顯示,具有內(nèi)置的行場(chǎng)驅(qū)動(dòng)電路,在外部輸入時(shí)鐘的飛騰沿和下降沿分別接收8b×4dots圖像數(shù)據(jù),這保證了場(chǎng)頻可高達(dá)360 Hz。
系統(tǒng)的整體框圖如圖1所示。
1.2 PLL及系統(tǒng)復(fù)位模塊
采用Altera的鎖相環(huán)IP核,外部輸入時(shí)鐘為20 MHz,經(jīng)倍頻后獲得其他各模塊的驅(qū)動(dòng)時(shí)鐘,以及LCoS的驅(qū)動(dòng)時(shí)鐘信號(hào)。為預(yù)防系統(tǒng)異步復(fù)位時(shí)寄存器出現(xiàn)亞穩(wěn)態(tài),設(shè)計(jì)了PLL的前級(jí)和后級(jí)D觸發(fā)器。因?yàn)殒i相環(huán)的locked引腳在鎖相環(huán)穩(wěn)定輸出后才會(huì)跳變?yōu)楦唠娖,因此為保證其他模塊獲得穩(wěn)定的時(shí)鐘信號(hào),將locked引腳和外部輸入復(fù)位信號(hào)rst_n相與后作為整個(gè)系統(tǒng)的復(fù)位信號(hào)。
1.3 單口ROM模塊
使用FPGA內(nèi)部的M9K存儲(chǔ)器資源實(shí)現(xiàn)的單口ROM作爲(wèi)源圖像的數(shù)據(jù)存儲(chǔ)器。將辨別率為176×144(QCIF)的256階灰度位圖圖像初始化到單口ROM里,所需數(shù)據(jù)深度為25 344 B。當(dāng)異步FIFO沒(méi)寫(xiě)滿時(shí),單口ROM將按圖像存儲(chǔ)地址依次輸出圖像數(shù)據(jù)給FFT核做快速傅里葉改換。通過(guò)處置的圖像數(shù)據(jù)暫存到FIFO)里,等候行場(chǎng)時(shí)序控制器模塊取用。
1.4 異步FIFO模塊
按其數(shù)據(jù)地址最高2位分爲(wèi)4個(gè)區(qū)間,讀/寫(xiě)指針?lè)謩e對(duì)某一區(qū)間操作,當(dāng)讀/寫(xiě)指針相等時(shí)通過(guò)譯碼器産生FIFO已讀空或者已寫(xiě)滿標(biāo)志信號(hào)。爲(wèi)幸免地址信號(hào)變化時(shí)出現(xiàn)冒險(xiǎn)競(jìng)爭(zhēng)現(xiàn)象,寫(xiě)地址和讀地址指針都采用格雷碼編碼。在讀空比較子模塊和寫(xiě)滿比較子模塊裏進(jìn)入了FI-FO“將空”和“將滿”檢驗(yàn)機(jī)制,有效地保證了FIFO正確無(wú)誤的工作。在寫(xiě)時(shí)鍾wrclk的飛騰沿,異步FIFO每個(gè)地址對(duì)應(yīng)的存儲(chǔ)單元裏被寫(xiě)入8bits數(shù)據(jù),在讀時(shí)鍾rdclk的飛騰沿,F(xiàn)IFO四塊連續(xù)地址上的32bits數(shù)據(jù)輸出,即讀FIFO的速率相當(dāng)于寫(xiě)FIFO速率的4倍速。
1.5 I2C狀態(tài)機(jī)模塊
沒(méi)有滿足I2C配置條件時(shí),狀態(tài)機(jī)處于空閑狀態(tài),當(dāng)滿足I2C配置條件時(shí),狀態(tài)機(jī)在狀態(tài)標(biāo)志位的控制下依次輸出配置地址和配置數(shù)據(jù)。當(dāng)數(shù)據(jù)配置結(jié)束時(shí),狀態(tài)機(jī)産生制止信號(hào),並拉高輸出引腳iic_config,通知行場(chǎng)時(shí)序控制器模塊開(kāi)始工作,這樣保證了LCoS屏能在正確配置下工作。狀態(tài)機(jī)工作原理如圖2所示。