基于Zynq的圖形生成電路設(shè)計(jì)與實(shí)現(xiàn)
導(dǎo)讀: 為了適應(yīng)機(jī)載液晶顯示器向低功耗、高集成度發(fā)展的趨勢(shì),提出了一種基于Zynq可擴(kuò)展處理平臺(tái)的圖形生成電路實(shí)現(xiàn)方法。
本文引用地址:http://m.butianyuan.cn/article/201808/386777.htm摘要:為了適應(yīng)機(jī)載液晶顯示器向低功耗、高集成度發(fā)展的趨勢(shì),提出了一種基于Zynq可擴(kuò)展處理平臺(tái)的圖形生成電路實(shí)現(xiàn)方法。方法以Zynq為核心搭建硬件平臺(tái),使用Zynq集成的ARM 處理器執(zhí)行圖形生成算法運(yùn)算,配合可編程邏輯資源,按照一種三緩沖機(jī)制對(duì)DDR3SDRAM 幀存數(shù)據(jù)進(jìn)行緩沖處理,實(shí)現(xiàn)圖形的實(shí)時(shí)生成.采用本設(shè)計(jì)可以生成多種分辨率的機(jī)載圖形畫(huà)面.實(shí)驗(yàn)結(jié)果表明,當(dāng)生成分辨率為1024×768的EFIS電子飛行顯示系統(tǒng)畫(huà)面時(shí),幀率可達(dá)74fps,能夠滿足機(jī)載液晶顯示器高性能實(shí)時(shí)顯示需求。
1 引言
在飛機(jī)座艙顯示系統(tǒng)中圖形顯示占據(jù)重要地位[1].主顯示器尺寸不斷加大,分辨率不斷提高,并日益朝著大屏幕化、綜合化、信息化和智能化方向發(fā)展[2].隨著分辨率的提高,要顯示的信息量也大幅增加,座艙圖形綜合顯示系統(tǒng)是一個(gè)對(duì)實(shí)時(shí)性要求很高的系統(tǒng)[3],軍用飛機(jī)在做戰(zhàn)術(shù)動(dòng)作時(shí),畫(huà)面變換速度快,要求圖形的更新速度也必須很快,至少要比幀或場(chǎng)的刷新速度快,才可以避免畫(huà)面的斷續(xù)[4G5].采用DSP+FPGA 的圖形硬件加速架構(gòu),或者使用專用GPU 圖形生成芯片,都可以生成高分辨的機(jī)載顯示器圖形,但隨之而來(lái)的是產(chǎn)品成本的急劇增加以及功耗的不斷上升[6].為機(jī)載圖形顯示系統(tǒng)配置更合理的硬件設(shè)計(jì)和軟件架構(gòu)變得尤為迫切。
Xilinx最新平臺(tái)Zynq將處理器的軟件可編程能力與FPGA 的硬件可編程能力實(shí)現(xiàn)完美結(jié)合,以低功耗和低成本等系統(tǒng)優(yōu)勢(shì)實(shí)現(xiàn)良好的系統(tǒng)性能、靈活性和可擴(kuò)展性[7].本文提出一種基于Zynq可擴(kuò)展處理平臺(tái)的實(shí)時(shí)圖形生成電路,利用Zynq內(nèi)部集成的ARM 處理器以及可編程邏輯資源,實(shí)現(xiàn)了機(jī)載顯示器圖形畫(huà)面的實(shí)時(shí)生成與顯示。
2 Zynq簡(jiǎn)介
2.1 Zynq構(gòu)成
Zynq構(gòu)架將內(nèi)部結(jié)構(gòu)分為處理器系統(tǒng)(ProcessingSystem,PS)與可編程邏輯(ProgrammableLogic,PL)兩部分[8].PS部分包括雙ARM CortexGA9內(nèi)核、存儲(chǔ)器接口以及通用外設(shè)接口等資源.PL部分也即常規(guī)的FPGA,通過(guò)PL生成的IP核可以作為ARM 內(nèi)核的擴(kuò)展外圍設(shè)備或者ARM 內(nèi)核的加速部件.Zynq器件內(nèi)部結(jié)構(gòu)圖如圖1所示。
圖1 Zynq內(nèi)部結(jié)構(gòu)圖
Zynq架構(gòu)可以對(duì)PL和PS中運(yùn)行的自定義邏輯和軟件方便地進(jìn)行管理和規(guī)劃,PS和PL的單芯片綜合使其在I/O 數(shù)據(jù)帶寬、功能耦合、功耗預(yù)算等方面的性能表現(xiàn)大大超越了以往ASSP和FPGA 雙芯片解決方案。
PS和PL可以通過(guò)多種途徑實(shí)現(xiàn)互聯(lián),包括GPIO端口、AXI總線端口、EMIO 端口、中斷、DMA 等等.其中AXI總線是ARM 系統(tǒng)中連接各個(gè)模塊的主要通道,各個(gè)功能部件通過(guò)AXI總線實(shí)現(xiàn)互聯(lián).在PL中可以通過(guò)工具自動(dòng)生成帶有AXI接口的IP 核,和PS 端進(jìn)行高速數(shù)據(jù)交互。
2.2 DDR Memory控制器
Zynq內(nèi)部集成的DDR memory控制器支持DDR2、DDR3、LPDDR2等多種存儲(chǔ)器類型,包含了3個(gè)主要模塊:AXI存儲(chǔ)器端接口DDRI、帶有傳輸調(diào)度機(jī)制的中央控制器DDRC 和物理層控制器DDRP[9].DDRmemory控制器框圖如圖2所示。
圖2 DDR Memory控制器框圖
DDRI端口符合AXI總線標(biāo)準(zhǔn),包含4個(gè)64位的同步AXI接口,分別為S0、S1、S2、S3,用于接收多個(gè)AXI主端的訪問(wèn)請(qǐng)求,其中S0和S1端口接收PS部分CPU 的訪問(wèn)請(qǐng)求;S2和S3端口接收PL部分邏輯端的訪問(wèn)請(qǐng)求.DDRC對(duì)來(lái)自多個(gè)AXI主端的訪問(wèn)請(qǐng)求按照其調(diào)度策略進(jìn)行裁決,裁決實(shí)施的依據(jù)是主控端訪問(wèn)的優(yōu)先級(jí)、等待時(shí)長(zhǎng)計(jì)數(shù)器和緊急信號(hào).DDRP 處理來(lái)自于DDRC的讀寫(xiě)請(qǐng)求,并將其轉(zhuǎn)換成符合DDR 存儲(chǔ)器時(shí)序要求的特定信號(hào)。
2.3 AXI VDMA
AXI VDMA 是Xilinx公司開(kāi)發(fā)的一個(gè)軟核IP,用于在系統(tǒng)存儲(chǔ)器和支持AXI4-Stream 視頻類型的目標(biāo)IP之間提供一個(gè)高速的數(shù)據(jù)存取通道[10].AXI4-Stream 格式數(shù)據(jù)流不能直接用于驅(qū)動(dòng)顯示,還需要將數(shù)據(jù)流以視頻使能信號(hào)為界進(jìn)行分割,配合行場(chǎng)同步信號(hào)驅(qū)動(dòng)視頻終端顯示。
該IP 有兩路AXI4-Stream 接口,分別為AXI Memory Map to Stream (MM2S)Stream Master 和AXI4-Stream to Memory Map(S2MM)Stream Slave,其中MM2S為主端口,用于輸出轉(zhuǎn)換成AXI4-Stream 格式視頻流的系統(tǒng)存儲(chǔ)器中數(shù)據(jù).S2MM 為從端口,用于接收AXI4-Stream 格式視頻流轉(zhuǎn)換成存儲(chǔ)器數(shù)據(jù).MM2S和S2MM 彼此相互獨(dú)立,可以并行同時(shí)工作.PS端的處理器可通過(guò)AXI4-Lite總線對(duì)其內(nèi)部的寄存器進(jìn)行訪問(wèn)以控制VDMA 工作模式、獲取VDMA 工作狀態(tài)。
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 圖形生成軟件接口示意圖
評(píng)論