基于FPGA的LCoS驅動(dòng)及圖像FFT變換系統設計
基于空間光調制器的計算全息三維顯示技術(shù), 目前常采用透射式LCD 和反射式LCo S 作為空間光調制器, 以改變光經(jīng)過(guò)空間光調制器( SLM) 后的空間相位和振幅分布, 達到對光信息的調制。傳統的基于透射式LCD 空間光調制器的計算全息三維顯示系統, 其成像光路復雜, 而且必須依賴(lài)計算機進(jìn)行數據發(fā)生、采集以及處理, 這就限制了系統應用的靈活性, 不便于推廣。
相較于透射式LCD, LCo S 具有光利用率高、體積小、開(kāi)口率高、器件尺寸小等特點(diǎn), 可以很容易地實(shí)現高分辨率和微顯示投影。采用彩色LCoS 屏顯示基于RGB 的彩色圖像, 經(jīng)過(guò)光學(xué)成像系統投影到接收屏上,實(shí)現計算全息圖像的三維顯示。
基于FPGA 的顯示系統有以下優(yōu)勢: 第一, LCoS尺寸小, 便于實(shí)現微投影, 利用可靈活編程的FPGA 器件作為驅動(dòng)控制器, 這樣就可以將其做成像普通投影儀一樣的微型投影設備, 使計算全息三維顯示擺脫了計算機和復雜光路的束縛, 具有了更高的靈活性, 為其走出實(shí)驗室提供了條件。第二, 因為在傳統空間光調制器上得到的圖像里含有物波和參考光的復共軛像, 形成了噪聲, 在FPGA 上可以實(shí)現圖像濾波去噪, 使得到的圖像更清晰。第三, FPGA 是基于可編程邏輯單元的器件,當經(jīng)過(guò)綜合、布局布線(xiàn)、時(shí)鐘約束的代碼燒錄到FPGA器件后, FPGA 就將算法代碼硬件化了, 可以作為專(zhuān)用芯片工作, 其內部信號延時(shí)完全是硬件級傳輸延時(shí)。在處理數據搬移和復雜的數學(xué)運算以及一些循環(huán)操作時(shí),例如圖像的FFT 變換, FPGA 硬件運算要比軟件運算快得多, 即利用FPGA 器件實(shí)現對軟件算法的硬件加速。
基于以上原因, 本文設計了基于FPGA 的LCoS 驅動(dòng)代碼及圖像的FFT 變換系統, 為計算全息三維顯示圖像處理和顯示提供了硬件平臺。
1 系統設計
1. 1 系統模塊框圖
該系統采用cy clone EP3C5E144C8, 該芯片有5 136 個(gè)LE, 95 個(gè)用戶(hù)I/ O, 2 個(gè)PLL, 以及46 個(gè)嵌入式乘法器和423 936 b 的內部邏輯寄存器。以它豐富的資源, 完全可以作為L(cháng)CoS 的驅動(dòng)控制器件。顯示屏采用Himax 的反射式LCoS 屏HX7308, 其分辨率為1 024 768, 可以支持256 級灰度顯示, 具有內置的行場(chǎng)驅動(dòng)電路, 在外部輸入時(shí)鐘的上升沿和下降沿分別接收8 b 4 dot s圖像數據, 這保證了場(chǎng)頻可高達360 Hz。
系統的整體框圖如圖1 所示。
圖1 系統框圖
1. 2 PLL 及系統復位模塊
采用Alter a 的鎖相環(huán)IP 核, 外部輸入時(shí)鐘為20 MHz, 經(jīng)倍頻后得到其他各模塊的驅動(dòng)時(shí)鐘, 以及LCo S 的驅動(dòng)時(shí)鐘信號。為防止系統異步復位時(shí)寄存器出現亞穩態(tài), 設計了PLL 的前級和后級D 觸發(fā)器。
因為鎖相環(huán)的lo cked 引腳在鎖相環(huán)穩定輸出后才會(huì )跳變?yōu)楦唠娖剑?所以為保證其他模塊得到穩定的時(shí)鐘信號, 將locked 引腳和外部輸入復位信號rst_n 相與后作為整個(gè)系統的復位信號。
1. 3 單口ROM 模塊
利用FPGA 內部的M9K 存儲器資源實(shí)現的單口ROM 作為源圖像的數據存儲器。將分辨率為176144( QCIF) 的256 階灰度位圖圖像初始化到單口ROM里, 所需數據深度為25 344 B。當異步FIFO 沒(méi)寫(xiě)滿(mǎn)時(shí), 單口ROM 將按圖像存儲地址依次輸出圖像數據給FFT 核做快速傅里葉變換。經(jīng)過(guò)處理的圖像數據暫存到FIFO 里, 等待行場(chǎng)時(shí)序控制器模塊取用。
1. 4 異步FIFO 模塊
按其數據地址最高2 位分為4 個(gè)區間, 讀/ 寫(xiě)指針?lè )謩e對某一區間操作, 當讀/ 寫(xiě)指針相等時(shí)通過(guò)譯碼器產(chǎn)生FIFO 已讀空或者已寫(xiě)滿(mǎn)標志信號。為避免地址信號變化時(shí)出現冒險競爭現象, 寫(xiě)地址和讀地址指針都采用格雷碼編碼。在讀空比較子模塊和寫(xiě)滿(mǎn)比較子模塊里加入了FIFO “將空”和“ 將滿(mǎn)”檢驗機制, 有效地保證了FIFO 正確無(wú)誤的工作。在寫(xiě)時(shí)鐘w rclk 的上升沿, 異步FIFO 每個(gè)地址對應的存儲單元里被寫(xiě)入8bit s 數據, 在讀時(shí)鐘rdclk 的上升沿, FIFO 四塊連續地址上的32bit s 數據輸出, 即讀FIFO 的速率相當于寫(xiě)FIFO 速率的4 倍速。
1. 5 I2 C 狀態(tài)機模塊
沒(méi)有滿(mǎn)足I2C 配置條件時(shí), 狀態(tài)機處于空閑狀態(tài),當滿(mǎn)足I2C 配置條件時(shí), 狀態(tài)機在狀態(tài)標志位的控制下依次輸出配置地址和配置數據。當數據配置結束時(shí), 狀態(tài)機產(chǎn)生停止信號, 并拉高輸出引腳iic_co nf ig, 通知行場(chǎng)時(shí)序控制器模塊開(kāi)始工作, 這樣保證了LCo S 屏能在正確配置下工作。狀態(tài)機工作原理如圖2 所示。
圖2 I2 C 狀態(tài)機原理圖
1. 6 行場(chǎng)時(shí)序控制器模塊
內設水平計數器hcnt 和垂直計數器vcnt。由于顯示屏每個(gè)時(shí)鐘周期鎖存8 個(gè)像素值, 所以顯示1 024 個(gè)像素值所需行周期為128 個(gè)Tclk( 行時(shí)鐘周期) 。當hcnt 計數器值為HBP 時(shí)表示行有效顯示區域開(kāi)始,hcnt 計數器值為HBP+ 128 時(shí)表示行有效顯示區域結束, hcnt 計數器值為HSYNC cy cle 時(shí), 完成一行顯示,vcnt 計數器加1。當v cnt 計數器值為VBP 時(shí), 垂直有效顯示區域開(kāi)始, 當vcnt 計數器值為VBP+ 768 時(shí), 垂直有效顯示區域結束, 當vcnt 計數器值為VSYN C cycle 時(shí), 完成一幀圖像顯示。行場(chǎng)時(shí)序關(guān)系如圖3 所示。
圖3 行場(chǎng)時(shí)序關(guān)系圖
1. 7 FFT 模塊
FFTV 9. 1 IP 核采用Coo leyT ukey 基??2 DIF 算法, 其FFT 變換原始公式為:
因為采用了數據流模式, 經(jīng)過(guò)變換的數據可以連續輸出, 即輸出數據不會(huì )因為圖像數據的輸入而停止數據輸出, 同時(shí)輸入數據也不會(huì )因為處理后的數據正在輸出而停止繼續輸入, 保證了數據轉換和傳輸的連續性, 提高了數據處理的速度和效率。因為FFT 通過(guò)異步FIFO 向屏幕輸出數據, 而FIFO 的讀數據是寫(xiě)數據的4 倍速, 假如讀時(shí)鐘和寫(xiě)時(shí)鐘都為100 MHz, 那么有可能會(huì )在某一行里出現FIFO 被取空, 而無(wú)法向屏幕輸出有效數據的情況。為保證FIFO 向屏幕輸出圖像數據的連續性, 就要充分利用VBP, VFP, HBP 和HFP 的時(shí)間, 在每一行的開(kāi)始, 如果FIFO 沒(méi)滿(mǎn), 那么啟動(dòng)FFT進(jìn)行數據轉換。若圖像的分辨率為M N 并且在VBP期間FIFO 已被寫(xiě)滿(mǎn), 則FIFO, FFT 核、行場(chǎng)周期以及圖像分辨率間關(guān)系的計算公式如下:
式中: Deepth 是異步FIFO 的數據深度, 單位為B;THSYN C cycle是行周期; Tclk 是異步FIFO, FFT 核、行場(chǎng)時(shí)序控制器模塊的驅動(dòng)時(shí)鐘周期。當△> 0 時(shí), 系統會(huì )連續實(shí)時(shí)地處理圖像; 當△ 0 時(shí), 會(huì )導致在屏幕某些行的有效顯示區域沒(méi)有有效圖像數據可供顯示, 這樣就破壞了圖像顯示的連續性??筛鶕陨瞎胶侠碓O計FIFO 深度以及選取合適分辨率的圖像。該設計中, 異步FIFO, FFT 核、行場(chǎng)時(shí)序控制器模塊的驅動(dòng)時(shí)鐘為100 MHz, FIFO 深度為256 B, 行周期為336 個(gè)Tclk ,M 為174, N 為144, 經(jīng)計算△> 0。
2 實(shí)驗仿真結果和測量結果分析
圖4 是采用Modelsim 6. 5b 進(jìn)行功能仿真的結果。
利用QuartusV9. 1 自帶的TimeQuest Timing Analyzer進(jìn)行時(shí)序約束后, 在實(shí)驗板上的場(chǎng)信號測量結果如圖5所示, 場(chǎng)掃描頻率已達到368 Hz, 經(jīng)測量其他引腳輸出信號也均滿(mǎn)足時(shí)序要求。由于FPGA 器件資源限制, 對圖像做了256 點(diǎn)FFT 變換, 經(jīng)實(shí)驗驗證, 該設計能夠實(shí)現圖像的實(shí)時(shí)處理, 代碼達到了預期設計效果。
圖4 系統功能仿真
圖5 場(chǎng)信號實(shí)測圖
3 結語(yǔ)
采用Himax 的LCoS 屏HX7308BTJFA 作為顯示器件, 其尺寸為14. 43 mm 10. 69 mm, 大小可跟1 枚1 元硬幣相比擬, 很容易實(shí)現三維投影微顯示。因Verilog HDL 有很強的可移植性, 便于以后對代碼的升級和維護。FPGA 內部資源畢竟有限, 文中敘述可知, 若顯示分辨率較大的圖像, 光靠?jì)炔抠Y源實(shí)現異步FIFO是不可能的, 所以在此提出兩種方案: 第一, 換一片性能較高的芯片, 滿(mǎn)足寫(xiě)FIFO 速率等于讀FIFO 速率的要求, 這樣就能達到讀/ 寫(xiě)數據的動(dòng)態(tài)平衡, 保證了圖像的連續顯示; 第二, 采用外部存儲器SDRAM 存儲源圖像和FFT 處理后的數據, 采用DDRII 技術(shù)讀取數據, 使讀/ 寫(xiě)FIFO 的速率匹配。受FPGA 芯片資源限制, 該設計采用分辨率為176 144 的圖像進(jìn)行了系統功能驗證, 尚未實(shí)現圖像濾波以及FFT 逆變換, 未來(lái)可將代碼移植在高端的FPGA 芯片上繼續開(kāi)發(fā)數據處理功能。
評論