3 設(shè)計(jì)實(shí)現(xiàn)
3.1 硬件設(shè)計(jì)
3.1.1 硬件架構(gòu)
本文通過(guò)Zynq完成圖形生成與顯示功能,原理框圖如圖3所示,硬件模塊主要包括Zynq、DDR3SDRAM、FLASH、雙口RAM 等.正常工作時(shí)PS中的ARM 內(nèi)核根據(jù)從雙口RAM 中接收到的繪圖指令和參數(shù)完成繪圖算法,將圖形數(shù)據(jù)寫(xiě)入DDR3SDRAM 存儲(chǔ)器中.PL 從DDR3中讀出圖形數(shù)據(jù)進(jìn)行顯示,并對(duì)DDR3SDRAM中的圖形數(shù)據(jù)進(jìn)行清屏處理。
圖3 Zynq圖形生成原理框圖
3.1.2 Zynq硬件平臺(tái)設(shè)計(jì)
本文通過(guò)Xilinx 的ISE14.2 軟件集成的XPS開(kāi)發(fā)環(huán)境完成Zynq圖形生成電路的硬件平臺(tái)設(shè)計(jì).利用XPS可以快速地對(duì)Zynq系統(tǒng)內(nèi)的各種硬件資源進(jìn)行定制設(shè)計(jì),包括存儲(chǔ)器、外設(shè)、ARM 處理器、系統(tǒng)IP和用戶IP等.Zynq硬件平臺(tái)結(jié)構(gòu)圖見(jiàn)圖4所示.
圖4 Zynq硬件結(jié)構(gòu)圖
本文在Zynq中的PL 部分應(yīng)用了VDMA、AXI2XSVI、XSVI2AXI、VTC等幾個(gè)IP核,其中VDMA 用于從DDR3SDRAM 中讀出圖形數(shù)據(jù),同時(shí)向DDR3SDRAM 中寫(xiě)入全零數(shù)據(jù)以達(dá)到清屏目的.AXI2XSVI用于將AXIGStream 數(shù)據(jù)流用行、場(chǎng)同步信號(hào)進(jìn)行區(qū)隔,供外部顯示模塊進(jìn)行顯示.XSVI2AXI用于將帶有行場(chǎng)同步信號(hào)的視頻數(shù)據(jù)轉(zhuǎn)換成AXIGStream 數(shù)據(jù)流.VTC 用于生成系統(tǒng)運(yùn)行所需時(shí)序信號(hào).對(duì)VTC根據(jù)顯示時(shí)序進(jìn)行修改,系統(tǒng)即可產(chǎn)生多種分辨率圖形畫(huà)面。
3.1.3 圖形緩沖設(shè)計(jì)
本文中對(duì)DDR3SDRAM 幀存的操作包括3種類型:PS寫(xiě)入、PL讀取、PL清零.清零從本質(zhì)上說(shuō)也是一種寫(xiě)入操作,寫(xiě)入的是全零數(shù)據(jù).讀取和寫(xiě)入請(qǐng)求通過(guò)DDR 控制器中的調(diào)度機(jī)制和仲裁策略分別在不同時(shí)刻得以響應(yīng),得益于DDR3SDRAM 的高速高帶寬優(yōu)勢(shì),外部可以同時(shí)進(jìn)行多個(gè)通道的讀寫(xiě)操作.針對(duì)本文中DDR3SDRAM 的3種操作類型,在DDR3幀存中設(shè)置了3個(gè)緩沖區(qū),分別為buffer0,buffer1,buffer2,相應(yīng)地,VDMA 中的framebuffer數(shù)目也設(shè)置為3.buffer的切換機(jī)制如表1所示.
這種三緩沖切換機(jī)制保證了寫(xiě)入的都是已清零完成的buffer,清零的都是已讀出完成的buffer,讀出的都是已寫(xiě)入完成的buffer。
根據(jù)buffer切換機(jī)制,VDMA 中的S2MM和MM2S通道分別以指定的buffer為操作對(duì)象.初始化狀態(tài)下為每個(gè)buffer指定默認(rèn)的操作模式,而后在每個(gè)幀周期內(nèi)啟動(dòng)VDMA 切換buffer操作模式,從而不間斷地輸出圖形數(shù)據(jù)。
3.2 軟件設(shè)計(jì)
3.2.1 Zynq系統(tǒng)軟件
系統(tǒng)繪圖時(shí),根據(jù)雙口RAM 提供的畫(huà)面內(nèi)容要求,啟動(dòng)繪圖任務(wù),并將繪圖結(jié)果保存下來(lái).顯示工作完全由PL內(nèi)部的顯示邏輯負(fù)責(zé),顯示邏輯從顯存中讀取顯示數(shù)據(jù),按照標(biāo)準(zhǔn)時(shí)序送至顯示接口.圖形軟件的接口關(guān)系如圖5所示.
圖5 圖形生成軟件接口示意圖
3.2.2 畫(huà)面顯示軟件
畫(huà)面顯示軟件主要包括初始化模塊和主模塊,結(jié)構(gòu)如圖6所示.初始化模塊完成ARM 內(nèi)核啟動(dòng);外設(shè)初始化信息加載;DDR3SDRAM、UART等設(shè)備初始化;VDMA 寄存器配置等初始化工作.運(yùn)算控制模塊由雙口RAM 讀寫(xiě)模塊;PS、PL 通信模塊以及繪圖模塊3部分組成,其中雙口RAM 讀寫(xiě)模塊主要負(fù)責(zé)從雙口RAM中讀取繪圖指令數(shù)據(jù),為繪圖模塊提供必要的繪圖參數(shù);PS、PL通信模塊負(fù)責(zé)ARM 內(nèi)核與VDMA的通信,切換緩存;繪圖模塊完成分配的繪圖任務(wù),并將相應(yīng)的計(jì)算結(jié)果,也即對(duì)應(yīng)的像素點(diǎn)信息寫(xiě)入DDR3SDRAM 中。
圖6 圖形生成軟件結(jié)構(gòu)圖
評(píng)論