引 言
FPGA" target="_blank">FPGA廣泛應(yīng)用在電子通信領(lǐng)域,其安全性引起了注意,本文針對(duì)安全配置提出了解決方案。
現(xiàn)場(chǎng)可編程門(mén)陣列FPGA(Field Programmablc Gate Array)是基于門(mén)陣列方式為用戶(hù)提供可編程資源的,其內(nèi)部邏輯結(jié)構(gòu)的形成是由配置數(shù)據(jù)決定的。采用在線可重配置方式ICR(In-Circuit Reconfigurability)將這些配置數(shù)據(jù)配置到FPGA內(nèi)部SRAM中,但由于SRAM的易失性,每次上電時(shí),都必須對(duì)FPGA重新進(jìn)行配置,從而實(shí)現(xiàn)用戶(hù)編程所要實(shí)現(xiàn)的功能。
以前的設(shè)計(jì)大多是將配置數(shù)據(jù)存放在FPGA組成的系統(tǒng)上,本文提出將配置數(shù)據(jù)存放在使用者自己攜帶的外部存儲(chǔ)器(如可加密的U盤(pán))中。使用前將U盤(pán)接入FPGA組成的系統(tǒng),系統(tǒng)上電時(shí)由單片機(jī)控制讀出配置數(shù)據(jù),再傳送給FPGA進(jìn)行配置。這樣做優(yōu)點(diǎn)很多:修改、升級(jí)簡(jiǎn)便,現(xiàn)場(chǎng)保密性強(qiáng),安全性高;可多人分時(shí)使用同一硬件系統(tǒng),同一硬件系統(tǒng)插入不同的配置U盤(pán)就可以實(shí)現(xiàn)不同的功能,可以方便地存儲(chǔ)大容量配置數(shù)據(jù)或多個(gè)配置數(shù)據(jù)文件等;同時(shí),符合計(jì)算機(jī)和嵌入式系統(tǒng)的熱點(diǎn)USB OTG(On The Go,移動(dòng)USB)技術(shù)趨勢(shì),是具有創(chuàng)新的設(shè)計(jì)。
1 FPGA的配置方式和配置數(shù)據(jù)文件
1.1 FPGA的配置方式
以Altera公司的FPGA器件為例,有2類(lèi)配置下載方式:主動(dòng)配置和被動(dòng)配置。主動(dòng)配置方式是由FPGA器件主動(dòng)引導(dǎo)配置操作,從外圍專(zhuān)用配置芯片(如EPC4)中獲得配置數(shù)據(jù)的過(guò)程;被動(dòng)配置方式則是由外部計(jì)算機(jī)或控制器控制配置過(guò)程。
以Mercury、APEX 20K(2.5V)、ACEX 1K和FLEX10K系列FPGA為例,配置方式有:被動(dòng)串行PS(PasiveSerial)、被動(dòng)并行同步PPS(Passive Parallel Synchronous)、被動(dòng)并行異步PPA(Passive Parallel Asyn-chronous)和JTAG(Jont Test Action Group)等。具體配置方式由方式選擇引腳MSEL1和MSELO的邏輯電平組合決定。
基于SRAM LUT(查找表)結(jié)構(gòu)的FPGA采用在線可重配置方式ICR。以配置方式PS為例,可通過(guò)下載電纜南計(jì)算機(jī)直接對(duì)FPGA器件進(jìn)行配置。這種方法在設(shè)計(jì)調(diào)試時(shí)非常方便,但在現(xiàn)場(chǎng)應(yīng)用巾是很不現(xiàn)實(shí)的。上電后自動(dòng)加載對(duì)FPGA器件進(jìn)行配置是實(shí)際必須的,有許多方法,例如專(zhuān)用配置芯片(如EPC4)配置、單片機(jī)控制配置、MAX3000A控制F1ash存儲(chǔ)器配置、PCI總線配置、Internet配置、PSD(Programmable System Devices可編程器件)配置等。
1.2 FPGA的配置數(shù)據(jù)文件
Altera公司的Quartus II開(kāi)發(fā)工具可以生成多種配置或編譯文件,用于不同配置方式。對(duì)于不同的目標(biāo)器件,編譯后開(kāi)發(fā)工具會(huì)根據(jù)指定的FPGA器件自動(dòng)生成“.sof(SRAM Object File)”和“.pof(Programmer ObjectFile)”配置文件。“.sof”配置文件是由下載電纜將其下載到FPGA中的;“.pof”配置文件是存放在配置器件里的。用單片機(jī)配置時(shí),要將“.sof”文件轉(zhuǎn)換成“.rbf(Raw BinaryFile)”文件,可打開(kāi)QuartusII的File菜單,單擊ConvertProgramming Fiks進(jìn)行轉(zhuǎn)換。配置文件的大小隨FPGA器件的不同而不同,例如EPFlOKlO的配置文件“.sof”和“.rbf”的大小為15KB。
2 單片機(jī)配置FPGA設(shè)計(jì)
2.1 單片機(jī)配置FPGA的優(yōu)點(diǎn)
在實(shí)際應(yīng)用中,單片機(jī)控制配置FPGA,對(duì)于保密和升級(jí),以及實(shí)現(xiàn)多任務(wù)電路結(jié)構(gòu)重配置和降低配置成本,都是很好的選擇。配置方式PS、PPS和PPA均可以用單片機(jī)控制配置。
由單片機(jī)和外部存儲(chǔ)器組成配置FPGA電路,將配置數(shù)據(jù)寫(xiě)入外部存儲(chǔ)器,系統(tǒng)上電時(shí)再由單片機(jī)控制對(duì)FPGA進(jìn)行配置。也可將多個(gè)配置文件分區(qū)存儲(chǔ)到外部存儲(chǔ)器中,然后由單片機(jī)接收不同的命令,選擇讀取不同存儲(chǔ)區(qū)的數(shù)據(jù)配置到FPGA器件,從而實(shí)現(xiàn)多任務(wù)電路結(jié)構(gòu)重配置,在線配置成多種不同的電路功能;代替了價(jià)格昂貴的不可擦寫(xiě)和可擦寫(xiě)配置芯片,降低了成本。
2.2 配置數(shù)據(jù)存儲(chǔ)在U盤(pán)
在銀行等保密行業(yè),如果要求安全和保密程度非常高,那么一定要有權(quán)限的使用者才能使用,或由不同的用戶(hù)分時(shí)使用同一臺(tái)FPGA組成的系統(tǒng)。最好是不要將配置數(shù)據(jù)存放在FPGA組成的系統(tǒng)上,而是將配置數(shù)據(jù)存放在使用者自己攜帶的外部存儲(chǔ)器(如U盤(pán))中(對(duì)U盤(pán)的讀/寫(xiě)還可以加密);使用前將存放配置數(shù)據(jù)的外部存儲(chǔ)器接入FPGA組成的系統(tǒng),系統(tǒng)上電時(shí)冉由單片機(jī)控制對(duì)FPGA進(jìn)行配置就可以了。
1994年11月,以Intel為首的7家公司推出了通用串行總線USB(Universal serial Bus)協(xié)議規(guī)范的第一個(gè)草案。USB協(xié)議從1.1過(guò)渡到2.0,作為其最重要指標(biāo)的設(shè)備傳輸速度也從USBl.1標(biāo)準(zhǔn)的低速1.5 Mbps和全速12Mbps提高到USB2.0標(biāo)準(zhǔn)的高速480Mbps。目前,USB設(shè)備已經(jīng)非常普遍,USB接口以其速度快、功耗低、支持即插即用、使用安裝方便和價(jià)格低廉等優(yōu)點(diǎn)得到了廣泛應(yīng)用。USB OTG已經(jīng)成為嵌入式系統(tǒng)領(lǐng)域中的熱點(diǎn),使得USB能應(yīng)用在沒(méi)有PC的領(lǐng)域中,實(shí)現(xiàn)移動(dòng)數(shù)據(jù)交換和存儲(chǔ)。本文提出將配置數(shù)據(jù)存儲(chǔ)在U盤(pán)中,通過(guò)單片機(jī)控制讀/寫(xiě),符合USB OTG發(fā)展趨勢(shì),將在嵌入式和FPGA領(lǐng)域得到廣泛應(yīng)用。
2.3 單片機(jī)讀取存儲(chǔ)在u盤(pán)中的配置數(shù)據(jù)
通常USB設(shè)備終端必須與計(jì)算機(jī)連接。如果沒(méi)有PC,則需要通過(guò)USB總線的通用接口芯片(當(dāng)然也可以利用帶USB接口的單片機(jī))控制U盤(pán)的讀/寫(xiě)。本設(shè)計(jì)采用單片機(jī)AT89S52控制USB總線的通用接口芯片CH375來(lái)讀取存儲(chǔ)在U盤(pán)的配置數(shù)據(jù)。
CH375是一個(gè)USB總線的通用接口芯片,內(nèi)部集成了PLL倍頻器、主從USB接口SIE、數(shù)據(jù)緩沖區(qū)、被動(dòng)并行接口、異步串行接口、命令解釋器、控制傳輸?shù)膮f(xié)議處理器和通用的固件程序等;支持USB-HOST主機(jī)方式和USB-DEVICE/SLAVE沒(méi)備方式,可以方便地掛接到單片機(jī)/DSP/MCU/MPU等控制器的系統(tǒng)總線上。外部單片機(jī)可以直接以扇區(qū)為基本單位讀/寫(xiě)常用的USB存儲(chǔ)設(shè)備(包括USB硬盤(pán)、USB閃存盤(pán)和U盤(pán))。
硬件設(shè)計(jì):CH375工作于并口方式,與普通的MCS-5l單片機(jī)的連接如圖1所示。CH375的TXD引腳通過(guò)l kΩ左右的下拉電阻接地或者直接接地,從而使CH375工作于并口方式。
軟件設(shè)計(jì):①進(jìn)入U(xiǎn)SB主機(jī)模式,要讀/寫(xiě)U盤(pán),必須先設(shè)置CH375使其工作于USB主機(jī)方式。②將U盤(pán)當(dāng)作存儲(chǔ)器進(jìn)行讀/寫(xiě),方法與讀/寫(xiě)閃存差不多,操作簡(jiǎn)單且速度快。單片機(jī)讀/寫(xiě)U盤(pán)文件程序分層如圖2所示。
2.4 用單片機(jī)配置FPGA的過(guò)程
FPGA器件上電以后,開(kāi)始配置過(guò)程的復(fù)位、配置和初始化3個(gè)階段,然后進(jìn)入用戶(hù)狀態(tài)。以配置FLEX10K10為例,圖3為PS模式下使用單片機(jī)配置FPGA的時(shí)序圖。
配置過(guò)程如下:①M(fèi)CU的P1.7引腳產(chǎn)生一個(gè)tCFG≥μs的低電平給FPGA的nCONFIG引腳使FPGA復(fù)位,200 ns后nSTATUS和CONF_DONE同時(shí)跟隨變?yōu)榈碗娖?;FPGA的I/O端口為高阻狀態(tài),RAM被清除。②MCU的P1.7引腳產(chǎn)生上跳變時(shí)開(kāi)始配置,F(xiàn)PGA退出復(fù)位狀態(tài),4μs后nSTATUS被釋放并被上拉電阻拉高,F(xiàn)PGA準(zhǔn)備接收數(shù)據(jù)進(jìn)入配置階段。設(shè)置MCU的串口工作方式為O,單片機(jī)檢測(cè)到nSTATUS由低跳到高后,讀取配置數(shù)據(jù)(從U盤(pán)讀取或上電時(shí)先將配置數(shù)據(jù)從U盤(pán)讀到SRAM62255)由RXD送到FPGA的DATA0(注意低位LSB先送出);MCU的TXD接收FPGA的DCLK以提供時(shí)鐘信號(hào),配置數(shù)據(jù)足在DCLK上升沿被移位入FPGA的,全部配置數(shù)據(jù)移入FPGA直到CONF_DONE變?yōu)楦唠娖?,配置階段結(jié)束。若CONF_DONE沒(méi)有變?yōu)楦唠娖剑瑒t需要重新配置。③初始化階段,持續(xù)O.6~2μs。不同的FPGA器件,持續(xù)時(shí)間不等。A1tera公司的Quartus II開(kāi)發(fā)工具生成配置文件時(shí),對(duì)于不同的目標(biāo)器件和配置方式已經(jīng)添加了相應(yīng)的空DCLK。軟件設(shè)計(jì)使微處理器提供配置所需的時(shí)序和串行傳送配置數(shù)據(jù),以及對(duì)配置進(jìn)行監(jiān)測(cè),從而實(shí)現(xiàn)配置過(guò)程。軟件設(shè)計(jì)流程如圖4所示。
3 結(jié)論
FPGA器件的配置技術(shù)猶如集成電路制造中的流片,是非常重要的一個(gè)環(huán)節(jié)。用單片機(jī)配置FPGA器件與用專(zhuān)用器件相比,具有成本低、保密性好、可升級(jí)、可實(shí)現(xiàn)多任務(wù)電路結(jié)構(gòu)重構(gòu)(符合軟件無(wú)線電思想)等特點(diǎn),本設(shè)計(jì)具有創(chuàng)新性,硬件設(shè)計(jì)簡(jiǎn)單可靠,且成本低,易于實(shí)現(xiàn),是確保FPGA安全性和保密性的一種方法,在金融等關(guān)系到國(guó)家利益的場(chǎng)合具有重大實(shí)用價(jià)值。