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