?。常病。疲校牵两Y(jié)構(gòu)
?。疲校牵羶?nèi)部結(jié)構(gòu)如圖2所示。

?。常玻薄∶罱邮战馕瞿K
數(shù)據(jù)命令(設(shè)備主機(jī)下發(fā))以200kbit/s UART接口送入FPGA 中,FPGA 接收數(shù)據(jù)后,完成數(shù)據(jù)幀的識(shí)別、校驗(yàn)。對(duì)于校驗(yàn)無(wú)誤的數(shù)據(jù)幀,解析命令字的含義,并將對(duì)應(yīng)的參數(shù)傳入相應(yīng)的模塊中,啟動(dòng)命令處理操作。
3.2.2?。玻膱D形加速模塊
所有的2D圖形繪制操作都可以分解為畫(huà)線段或畫(huà)橢圓等基本圖元操作,由于液晶屏為柵格顯示結(jié)構(gòu),基本圖元操作命令最終是轉(zhuǎn)化為打點(diǎn)操作。
畫(huà)線段和畫(huà)橢圓弧采用的是bresenham 算法[2]。該算法的基本原理是在進(jìn)行線段繪制操作時(shí),首先根據(jù)線段的斜率確定繪制的起點(diǎn)和方向,以確定每次在X 方向還是Y 方向上步進(jìn),然后每步進(jìn)一步,確定在另一個(gè)方向上的增量,保持不動(dòng)或者增1、減1,最后輸出該點(diǎn)坐標(biāo),流程圖如圖3所示。

如圖4所示,繪制一條從(0,0)至(18,6)的線段,第一個(gè)點(diǎn)為(0,0),由于dx>dy,則在x 方向上遞進(jìn),每個(gè)時(shí)鐘周期x 坐標(biāo)加1。根據(jù)bresenham
算法,初始判決式為d1=dy×2-dx=6×2-18=-6<0,則第2個(gè)點(diǎn)(1,0),同時(shí)d2=d1+dy×2=6>0,則y++,輸出第3個(gè)點(diǎn)為(2,1),依次輸出下一個(gè)點(diǎn),直到輸出最后一個(gè)點(diǎn)(18,6)。

同樣在進(jìn)行橢圓或者圓繪制操作時(shí),也采用了bresenham算法。在FPGA 中實(shí)現(xiàn)時(shí),采用狀態(tài)機(jī)的編碼方式,以繪制圓心為(x0,y0)、長(zhǎng)半軸為a、短半軸為b的橢圓為例,其狀態(tài)轉(zhuǎn)移流程圖圖如圖5所示。圖中CALC_A和CALC_B?tīng)顟B(tài)分別為計(jì)算1/4橢圓弧中的a軸方向和b 軸方向的像素點(diǎn)。

畫(huà)線時(shí)的數(shù)據(jù)運(yùn)算只有乘以2和加法,乘以2通過(guò)將數(shù)據(jù)左移1位,末位補(bǔ)0來(lái)實(shí)現(xiàn)。
在進(jìn)行橢圓繪制時(shí),乘法操作采用的是FPGA內(nèi)部的MULT18X18S乘法單元,先將算式中的浮點(diǎn)數(shù)通過(guò)移位運(yùn)算放大2n倍數(shù)轉(zhuǎn)換為定點(diǎn)數(shù),計(jì)算得到的結(jié)果再通過(guò)截掉最低的n 位,相當(dāng)于除以2n。通過(guò)這種方法避免了在FPGA 中做硬件除法,同時(shí)提高了繪圖效率。
?。常玻场∽址皥D片顯示加速模塊
在該設(shè)計(jì)中,液晶屏上顯示的字符為點(diǎn)陣字符。該字符庫(kù)是通過(guò)串行通訊接口(RS422)預(yù)置在FLASH 中的,字庫(kù)為預(yù)先轉(zhuǎn)換好的GB2312點(diǎn)陣字庫(kù)。本設(shè)計(jì)中采用了兩種規(guī)格大小的標(biāo)準(zhǔn)字庫(kù),西文為黑體8×16和16×32,漢字為16×16及32×32。除此之外,用戶還可下載自定義的字庫(kù),點(diǎn)陣大小最大可以為256×256,字庫(kù)可在屏幕上任意位置為起始點(diǎn)顯示。
預(yù)置圖片為256色BMP圖片,最大不超過(guò)屏幕分辨率(640×480),可以在屏幕上任意位置為起始點(diǎn)顯示。
字符和圖片在數(shù)據(jù)結(jié)構(gòu)上具有相似性,均為點(diǎn)陣數(shù)據(jù)。
在顯示時(shí),根據(jù)顯示命令,首先從存儲(chǔ)單元中獲取欲顯示的字符或圖片的點(diǎn)陣數(shù)據(jù)。對(duì)于字符,其點(diǎn)陣數(shù)據(jù)中的“0”表示不顯示,“1”表示顯示,然后向顯示坐標(biāo)位置對(duì)應(yīng)的地址空間中依次寫(xiě)入顏色值。對(duì)于不需要寫(xiě)入的像素點(diǎn),在寫(xiě)操作時(shí),使用SDRAM 的寫(xiě)屏蔽功能,每完成一行,地址切換到下一行,直至寫(xiě)操作結(jié)束。
電子發(fā)燒友App


















評(píng)論