王明偉 楊 榮 李 銘 張育林 黃寶娟
(西安交通大學(xué) 實(shí)踐教學(xué)中心, 西安 710049)
在航天、航空、工業(yè)控制、消費(fèi)電子等各個(gè)工業(yè)領(lǐng)域,F(xiàn)PGA邏輯開(kāi)發(fā)工具都有著非常廣泛的應(yīng)用, Xilinx公司在FPGA設(shè)計(jì)領(lǐng)域具有很強(qiáng)的影響力,產(chǎn)業(yè)界有眾多的設(shè)計(jì)者和工程師都在其產(chǎn)品平臺(tái)上進(jìn)行著各項(xiàng)設(shè)計(jì)任務(wù)和產(chǎn)品開(kāi)發(fā),因此,讓學(xué)生接觸最新的,應(yīng)用范圍廣闊的FPGA產(chǎn)品,能夠拉近高校實(shí)踐教學(xué)和產(chǎn)業(yè)界應(yīng)用的距離,讓學(xué)生在校期間就能夠接觸、了解、熟悉相應(yīng)的開(kāi)發(fā)原理和流程,對(duì)提高學(xué)生后續(xù)的設(shè)計(jì)適應(yīng)能力,盡快地融入業(yè)界的設(shè)計(jì)環(huán)境都有著非常重要的意義[1-2]。因此,在本科生實(shí)踐教學(xué)當(dāng)中,設(shè)計(jì)相應(yīng)的工程實(shí)驗(yàn)就顯得尤為重要。
本實(shí)驗(yàn)的設(shè)計(jì)目的:
(1)面向我校工科學(xué)院本科二、三年級(jí)學(xué)生(以電類(lèi)學(xué)生為主),讓學(xué)生了解最新的工業(yè)領(lǐng)域所使用的FPGA產(chǎn)品;
(2)學(xué)習(xí)最新的,應(yīng)用非常廣泛的設(shè)計(jì)開(kāi)發(fā)工具,熟悉相應(yīng)的設(shè)計(jì)流程;
(3)選取學(xué)生身邊的事物作為實(shí)踐訓(xùn)練的對(duì)象,增強(qiáng)親近感和體驗(yàn)感;
(4)實(shí)驗(yàn)訓(xùn)練程度是多層次的,適應(yīng)不同階段學(xué)生的訓(xùn)練要求。
基于此,選取Kintex7作為硬件平臺(tái),ISE 14.7 作為開(kāi)發(fā)工具,以學(xué)生在教室、實(shí)驗(yàn)室隨處可見(jiàn),但卻不一定了解其控制原理的VGA顯示接口作為訓(xùn)練對(duì)象,以趣味圖形、圖像的實(shí)現(xiàn)作為訓(xùn)練手段來(lái)設(shè)計(jì)該實(shí)驗(yàn),能夠有效調(diào)動(dòng)本科生的學(xué)習(xí)興趣,從而提高學(xué)生的實(shí)踐動(dòng)手能力。
整個(gè)實(shí)驗(yàn)系統(tǒng)的硬件組成如圖1所示??刂坪诵挠蒏intex芯片構(gòu)成,在Kintex上實(shí)現(xiàn)相應(yīng)的控制模塊,F(xiàn)PGA輸出的數(shù)字信號(hào)由電阻加權(quán)網(wǎng)絡(luò)電路轉(zhuǎn)換為模擬信號(hào)之后,輸出到VGA物理接口,從而在顯示器上將相應(yīng)的圖形、圖像顯示出來(lái)。此外,為保證FPGA的時(shí)序設(shè)計(jì)[3-4],板卡上設(shè)計(jì)有相應(yīng)的晶振,晶振輸出的時(shí)鐘信號(hào)進(jìn)入Kintex之后,在FPGA內(nèi)部進(jìn)行頻率變換,進(jìn)行各項(xiàng)應(yīng)用。

圖1 硬件組成
Kintex7系列是Xinlix公司推出的最新一代28 nm工藝的FPGA產(chǎn)品,旨在實(shí)現(xiàn)最佳的成本、性能和功耗的平衡,功耗比上一代產(chǎn)品降低40%左右,性能得到大幅提升。Kintex7系列產(chǎn)品資源列表如圖2所示。

圖2 Kintex7系列FPGA資源情況
Kintex7系列FPGA可選型號(hào)豐富,內(nèi)部邏輯資源,DSP資源,塊RAM資源,時(shí)鐘網(wǎng)絡(luò)CMT等資源都非常豐富,可以實(shí)現(xiàn)各種復(fù)雜的工業(yè)場(chǎng)景應(yīng)用,對(duì)外IO口資源也非常豐富,能夠擴(kuò)展各種接口,進(jìn)行功能延伸。本實(shí)驗(yàn)平臺(tái)所用FPGA型號(hào)為XC7K325T,內(nèi)部邏輯資源適中,兼顧成本和性能。FPGA內(nèi)部邏輯資源示意圖如圖3所示[5]。

圖3 FPGA內(nèi)部邏輯資源示意圖
VGA接口是一種應(yīng)用非常廣泛的電氣接口,幾乎每一臺(tái)計(jì)算機(jī)都配備有VGA接口,相應(yīng)的計(jì)算機(jī)顯示器也是如此,該接口是由IBM公司推出的一種視頻信號(hào)傳輸接口,接口分三排,每排五個(gè),節(jié)點(diǎn)、信號(hào)定義如表1所示。Kintex7和VGA接口之間通過(guò)GPIO進(jìn)行控制,由FPGA輸出相應(yīng)的高低電平實(shí)現(xiàn)顏色分量的控制[6-8]。同時(shí),在內(nèi)部邏輯當(dāng)中,產(chǎn)生符合VGA控制要求的行同步信號(hào)和幀同步信號(hào),用來(lái)顯示圖像。VGA接口實(shí)物圖如圖4所示。

圖4 VGA接口實(shí)物圖

表1 VGA節(jié)點(diǎn)、信號(hào)定義
由于Kintex7是數(shù)字器件,F(xiàn)PGA 的IO輸出也是數(shù)字信號(hào),而VGA的顏色信號(hào)是模擬顯示驅(qū)動(dòng),因此,需要進(jìn)行數(shù)模信號(hào)轉(zhuǎn)換(DA轉(zhuǎn)換),DA轉(zhuǎn)換常用的方式可以采用專(zhuān)業(yè)的DA轉(zhuǎn)換芯片去完成,可以取得很好的轉(zhuǎn)換精度和效果,本實(shí)驗(yàn)平臺(tái)采用更為簡(jiǎn)單的二進(jìn)制加權(quán)DA電路完成數(shù)模轉(zhuǎn)換,也能夠較為簡(jiǎn)單的完成一定的顯示效果。如圖5所示。

圖5 FPGA與VGA接口
實(shí)驗(yàn)的軟件開(kāi)發(fā)工具采用Xilinx 公司2020年最新更新的開(kāi)發(fā)工具ISE 14.7,該軟件是Xilinx公司最為經(jīng)典的FPGA邏輯開(kāi)發(fā)工具,支持Xilinx公司所有系列FPGA產(chǎn)品,在工業(yè)界中有著非常廣分的應(yīng)用[9-11]。讓學(xué)生接觸、了解并熟悉該款設(shè)計(jì)軟件,有助于緊跟產(chǎn)業(yè)界的步伐,實(shí)現(xiàn)與產(chǎn)業(yè)界技術(shù)開(kāi)發(fā)的技術(shù)銜接。
實(shí)驗(yàn)以普通顯示屏來(lái)進(jìn)行圖像顯示,VGA接口在進(jìn)行圖像顯示時(shí),需要靠行同步信號(hào)和幀同步信號(hào)來(lái)進(jìn)行約束和控制[12-14]。在進(jìn)行顯示時(shí),從電腦屏幕的左上角開(kāi)始掃描,水平方向逐像素進(jìn)行掃描,掃描的過(guò)程就是給每個(gè)像素點(diǎn)賦值的過(guò)程,本行掃描結(jié)束后,再進(jìn)行下一行的掃描,依然從該行最左側(cè)開(kāi)始,逐像素掃描賦值,直到完成整個(gè)屏幕的掃描,此時(shí)顯示器上就顯示出了完整的圖像,這幅完整的圖像就組成了一幀圖像。每行圖像掃描的時(shí)候由行掃描信號(hào)控制,每幀圖像掃描的時(shí)候由幀掃描周期控制。其時(shí)序約束如圖6所示。

圖6 VGA 行、幀信號(hào)時(shí)序關(guān)系
另外,對(duì)于不同的顯示分辨率,時(shí)序圖中的行起始,行空閑間隔等各個(gè)參數(shù)需要進(jìn)行適應(yīng)性的修改,具體參數(shù)可見(jiàn)表2所示。

表2 VGA 不同顯示模式參數(shù)設(shè)置
1)全黑和全白圖像顯示
本實(shí)驗(yàn)從最簡(jiǎn)單的全黑和全白圖像的顯示開(kāi)始,全黑圖像只需要將R G B三個(gè)分量的邏輯輸出值設(shè)置為0即可,全白圖像只需將R G B三個(gè)邏輯分量的值設(shè)置為255即可。在HDL設(shè)計(jì)時(shí),還需使用時(shí)鐘IP核產(chǎn)生內(nèi)部邏輯所用的時(shí)鐘信號(hào),此外,程序還包含VGA驅(qū)動(dòng)模塊,VGA顯示模塊,整個(gè)程序進(jìn)行模塊化設(shè)計(jì),方便修改和功能拓展。設(shè)計(jì)流程和程序框圖如圖7和圖8所示。

圖7 行信號(hào)產(chǎn)生示意圖

圖8 FPGA 實(shí)現(xiàn)的頂層模塊
2)條帶圖像顯示
條帶圖像顯示的核心在于將屏幕的顯示區(qū)域進(jìn)行豎條劃分,之后再進(jìn)行每個(gè)區(qū)域的幅值顯示即可。當(dāng)然,條帶可以進(jìn)豎條劃分,也可以進(jìn)行橫條劃分,重點(diǎn)在于將屏幕的水平和垂直坐標(biāo)參數(shù)進(jìn)行合理的控制。程序設(shè)計(jì)流程和模塊圖如圖9所示。

圖9 程序框圖模塊示意
3)靜態(tài)圖片顯示
靜態(tài)圖片的顯示需要使用FPGA內(nèi)部的ROM資源,Kintex7系列FPGA內(nèi)部擁有非常豐富的ROM資源,ROM可以將固定的數(shù)據(jù)文件進(jìn)行存儲(chǔ),之后,按照ROM的讀取時(shí)序要求就可以將數(shù)據(jù)讀出,在Xilinx手冊(cè)中對(duì)于ROM的使用有詳細(xì)的介紹[15-16]。ROM框圖及時(shí)序控制圖如圖10所示。

圖10 ROM 框圖及時(shí)序控制圖
程序中首先需將圖片進(jìn)行格式轉(zhuǎn)換,提取出相應(yīng)的像素值,然后將像素值存儲(chǔ)到ROM當(dāng)中去,之后就可以按照ROM讀取規(guī)則進(jìn)行靜態(tài)圖片數(shù)據(jù)的讀取了,再由VGA驅(qū)動(dòng)和顯示模塊將圖片顯示到屏幕上。程序設(shè)計(jì)示意如圖11所示。

圖11 程序模塊示意
將設(shè)計(jì)的各個(gè)模塊的程序進(jìn)行綜合,布局布線(xiàn)及生成bit文件后,通過(guò)JTAG口下載到硬件板卡上,實(shí)時(shí)運(yùn)行程序,就可以進(jìn)行實(shí)驗(yàn)的演示。顯示結(jié)果可以非常直觀(guān)地通過(guò)液晶顯示屏來(lái)展示,如圖12所示。同時(shí),可以設(shè)計(jì)分層級(jí)的實(shí)驗(yàn)訓(xùn)練內(nèi)容,對(duì)學(xué)生能力進(jìn)行綜合培養(yǎng)。

圖12 實(shí)驗(yàn)結(jié)果顯示

表3 不同實(shí)驗(yàn)?zāi)K
當(dāng)然,實(shí)驗(yàn)在此基礎(chǔ)上可以拓展出更復(fù)雜,更豐富的訓(xùn)練內(nèi)容。
工程實(shí)踐訓(xùn)練歷來(lái)是各個(gè)高校培養(yǎng)人才的重要環(huán)節(jié),及時(shí)更新訓(xùn)練的硬件平臺(tái)和軟件開(kāi)發(fā)工具是從事實(shí)踐教學(xué)需要特別關(guān)注的重點(diǎn)。本實(shí)驗(yàn)選用業(yè)界應(yīng)用廣泛、平臺(tái)新穎的FPGA邏輯開(kāi)發(fā)工具,以學(xué)生熟悉的控制對(duì)象和場(chǎng)景為基礎(chǔ),設(shè)計(jì)了VGA圖像實(shí)時(shí)顯示綜合實(shí)驗(yàn),設(shè)計(jì)過(guò)程從簡(jiǎn)單到復(fù)雜,設(shè)計(jì)的實(shí)驗(yàn)內(nèi)容充分融入了FPGA開(kāi)發(fā)的關(guān)鍵流程和訓(xùn)練重點(diǎn),本實(shí)驗(yàn)的設(shè)計(jì)能夠豐富本科生的實(shí)踐訓(xùn)練課程,將訓(xùn)練觸角延伸至產(chǎn)業(yè)界,具有良好的產(chǎn)學(xué)融合效果。