摘 要: ALTERA公司SRAM工藝可編程器件應(yīng)用廣泛,專用配置器件比較昂貴。在具有微處理器的系統(tǒng)中,使用微處理器系統(tǒng)的存儲(chǔ)器來存儲(chǔ)配置數(shù)據(jù),并通過微處理器配置FPGA,,這種方法幾乎不增加成本。微處理器根據(jù)不同的程序應(yīng)用,采用不同的配置數(shù)據(jù)對(duì)FPGA進(jìn)行配置,,使FPGA實(shí)現(xiàn)與該應(yīng)用有關(guān)的特定功能。詳細(xì)介紹了微處理器系統(tǒng)中連接簡(jiǎn)單的被動(dòng)串行" title="被動(dòng)串行">被動(dòng)串行配置方法和被動(dòng)并行異步" title="被動(dòng)并行異步">被動(dòng)并行異步配置方法,。
關(guān)鍵詞: 在應(yīng)用配置 FPGA配置 被動(dòng)串行 被動(dòng)并行異步
可編程邏輯器件(PLD)廣泛應(yīng)用在各種電路設(shè)計(jì)中,。基于查找表技術(shù),、SRAM工藝的大規(guī)模PLD/FPGA,,密度高且觸發(fā)器多,適用于復(fù)雜的時(shí)序邏輯,,如數(shù)字信號(hào)處理和各種算法的設(shè)計(jì),。這類器件使用SRAM單元保存配置數(shù)據(jù)。配置數(shù)據(jù)決定了PLD內(nèi)部互連和功能,,改變配置數(shù)據(jù),,也就改變了器件的邏輯功能。SRAM編程時(shí)間短,,為系統(tǒng)動(dòng)態(tài)改變PLD的邏輯功能創(chuàng)造了條件,。但由于SRAM的數(shù)據(jù)是易失的,配置數(shù)據(jù)必須保存在PLD器件以外的非易失存儲(chǔ)器內(nèi),,才能實(shí)現(xiàn)在線可重配置(ICR),。
1 在應(yīng)用配置(動(dòng)態(tài)配置)
同一設(shè)備在實(shí)現(xiàn)不同的應(yīng)用時(shí),要求FPGA實(shí)現(xiàn)不同的功能,。如手持多媒體設(shè)備,,可拍攝分辨率較高的靜止圖像照,采用JPEG2000壓縮,,也可傳送活動(dòng)圖像,,采用H.263,H.264/AVC等。單純使用軟件實(shí)現(xiàn)速度慢,,需要對(duì)算法進(jìn)行精細(xì)的優(yōu)化,;而使用硬件實(shí)現(xiàn)則速度快,但靈活性差,。為此,,采用微處理器和FPGA相結(jié)合來實(shí)現(xiàn)手持多媒體終端,微處理器實(shí)現(xiàn)程序控制,,F(xiàn)PGA實(shí)現(xiàn)大量的規(guī)則運(yùn)算,。此外,手持設(shè)備的某些應(yīng)用(如靜止圖像和活動(dòng)視頻壓縮)可能并不同時(shí)實(shí)現(xiàn),。若在一片F(xiàn)PGA同時(shí)實(shí)現(xiàn)這些功能,,不僅布線復(fù)雜,,功能難以實(shí)現(xiàn),而且需要更大規(guī)模的FPGA,。若使用不同的配置數(shù)據(jù)進(jìn)行配置,,使FPGA在不同時(shí)刻實(shí)現(xiàn)不同的功能,則FPGA的容量可以顯著降低,,從而降低設(shè)備的體積,、功耗及成本。
使用在應(yīng)用配置時(shí),,首先把應(yīng)用分集,,可能同時(shí)運(yùn)行的應(yīng)用分成一組,耗時(shí)的規(guī)則運(yùn)算由FPGA實(shí)現(xiàn),,其它由微處理器實(shí)現(xiàn),。把一個(gè)FPGA芯片的多個(gè)配置文件連續(xù)地存放在系統(tǒng)存儲(chǔ)器中,在程序執(zhí)行時(shí),,微處理器把對(duì)應(yīng)特定應(yīng)用的配置數(shù)據(jù)裝載到FPGA中并完成初始化,,在FPGA進(jìn)入用戶模式后就能實(shí)現(xiàn)特定的功能了。這種方法可以采用更小規(guī)模的FPGA,,不必使用專用的昂貴配置芯片(如ALTERA的EPC1,、EPC2等)來存儲(chǔ)配置數(shù)據(jù),因而可顯著地節(jié)省系統(tǒng)成本,。
ALTERA SRAM工藝的FPGA配置方式" title="配置方式">配置方式主要分為兩大類:主動(dòng)配置和被動(dòng)配置,。主動(dòng)配置方式由PLD器件引導(dǎo)配置操作過程,,它控制著外部存儲(chǔ)器和初始化過程,;而被動(dòng)配置方式則由外部計(jì)算機(jī)或控制器控制配置過程。根據(jù)數(shù)據(jù)線的多少又可以將PLD器件配置方式分為并行配置和串行配置兩大類,。下面以ALTERA APEX20KC 系列器件為例,,介紹兩種在微處理器系統(tǒng)里連接簡(jiǎn)單且使用方便的配置方式:被動(dòng)串行配置和被動(dòng)并行異步配置。
2 被動(dòng)串行配置(PS)
被動(dòng)串行配置的主要配置引腳如下:
nSTATUS:雙向漏極開路,;命令狀態(tài)下為器件的狀態(tài)輸出,。加電后,F(xiàn)PGA立即驅(qū)動(dòng)該引腳到低電位,,然后在5μs內(nèi)釋放它,。nSTATUS經(jīng)過10kΩ電阻上拉到Vcc,如果配置中發(fā)生錯(cuò)誤,,F(xiàn)PGA將其拉低,。在配置或者初始化時(shí),若配置電路將nSTATUS拉低,,F(xiàn)PGA 進(jìn)入錯(cuò)誤狀態(tài),。
nCONFIG:配置控制輸入,。低電位使器件復(fù)位,由低到高的電位跳變啟動(dòng)配置,。
CONF_DONE:雙向漏極開路,;在配置前和配置期間為狀態(tài)輸出,F(xiàn)PGA將其驅(qū)動(dòng)為低,。所有配置數(shù)據(jù)無錯(cuò)誤接收并且初始化時(shí)鐘周期開始后,,F(xiàn)PGA將其置為三態(tài),由于有上拉電阻,,所以將其變?yōu)?a class="cblue" href="http://wldgj.com/search/?q=高電平" title="高電平">高電平,,表示配置成功。在配置結(jié)束且初始化開始時(shí),,CONF_DONE為狀態(tài)輸入:若配置電路驅(qū)動(dòng)該管腳到低,,則推遲初始化工作;輸入高電位則引導(dǎo)器件執(zhí)行初始化過程并進(jìn)入用戶狀態(tài),。
DCLK:時(shí)鐘輸入,,為外部數(shù)據(jù)源提供時(shí)鐘。
nCE:FPGA器件使能輸入,。nCE為低時(shí),,使能配置過程。單片配置時(shí),,nCE必須始終為低,。
nCEO:輸出(專用于多片器件)。FPGA配置完成后,,輸出為低,。在多片級(jí)聯(lián)配置時(shí),驅(qū)動(dòng)下一片的nCE端,。
DATA0:數(shù)據(jù)輸入,,在DATA0引腳上的一位配置數(shù)據(jù)。
PORSEL:專用輸入,,用來設(shè)置上電復(fù)位(POR)的延時(shí)時(shí)間,。
nIO_PULLUP:輸入。低電平時(shí),,在配置前和配置期間使能內(nèi)部弱的上拉電阻,,將用戶管腳拉至VCCIO。
幾乎所有ALTERA FPGA器件都支持被動(dòng)串行配置,。被動(dòng)串行配置的時(shí)序圖如圖1所示,,在這種配置方式中沒有握手信號(hào),配置時(shí)鐘的工作頻率必須在器件允許的范圍,,最低頻率沒有限制,。為了開始配置,,配置管腳和JTAG管腳所在的bank的VCCINT、VCCIO必需供電,。FPGA上電后進(jìn)入復(fù)位狀態(tài),。nCONFIG被置為低電平,使FPGA進(jìn)入復(fù)位狀態(tài),;nCONFIG由低到高的電位跳變啟動(dòng)配置過程,。整個(gè)配置包括三個(gè)階段:復(fù)位、配置和初始化,。當(dāng)nSTATUS或者nCONFIG 為低電平時(shí),,器件處于復(fù)位狀態(tài)。當(dāng)nCONFIG由低變高時(shí),,器件脫離復(fù)位狀態(tài),,并且釋放漏極開路的nSTATUS管腳。在nSTATUS釋放后,,被外部電阻拉高" title="拉高">拉高,,這時(shí)nSTATUS和nCONFIG同時(shí)為高電平,F(xiàn)PGA準(zhǔn)備接收配置數(shù)據(jù),,配置階段開始,。在串行配置過程中, FPGA在DCLK上升沿鎖存DATA0引腳上的數(shù)據(jù),。成功接收到所有數(shù)據(jù)后,,釋放CONF_DONE引腳,并被外部電阻拉高,。CONF_DONE由低到高的轉(zhuǎn)變標(biāo)志配置結(jié)束,,初始化開始。此后,,DCLK必須提供幾個(gè)周期的時(shí)鐘(具體周期數(shù)與DCLK的頻率有關(guān)),,確保目標(biāo)芯片被正確初始化,。初始化完成后,,F(xiàn)PGA進(jìn)入用戶工作模式。如果使用了可選的INIT_DONE信號(hào),,在初始化結(jié)束后,,INIT_DONE被釋放,且被外部電阻拉高,,這時(shí)進(jìn)入用戶模式,。DCLK、DATA,、DATA0 配置后不能三態(tài),,可置高或者置低,。
在配置過程中,一旦出現(xiàn)錯(cuò)誤,,F(xiàn)PGA將nSTATUS拉低,。系統(tǒng)可以實(shí)時(shí)監(jiān)測(cè),當(dāng)識(shí)別到這個(gè)信號(hào)后,,重新啟動(dòng)配置過程,。nCONFIG 由高變低,再變高可以重新進(jìn)行配置,。一旦nCONFIG被置低,,nSTATUS 和CONF_DONE 也將被FPGA置低。當(dāng)nSTATUS和 nCONFIG同時(shí)為高電平時(shí),,配置開始,。
圖2是采用微處理器的FPGA被動(dòng)串行配置方案的簡(jiǎn)化電路圖。配置過程為:由微處理器將 nCONFIG 置低再置高來初始化配置,;檢測(cè)到nSTATUS變高后,,就將配置數(shù)據(jù)和移位時(shí)鐘分別送到DATA0和DCLK管腳;送完配置數(shù)據(jù)后,,檢測(cè) CONF_DONE 是否變高,,若未變高,說明配置失敗,,應(yīng)該重新啟動(dòng)配置過程,。在檢測(cè) CONF_DONE 變高后,根據(jù)器件的定時(shí)參數(shù)再送一定數(shù)量的時(shí)鐘到DCLK管腳,;待FPGA初始化完畢后進(jìn)入用戶模式,。如果單片機(jī)具有同步串口,DATA0,、DCLK使用同步串口的串行數(shù)據(jù)輸出和時(shí)鐘輸出,,這時(shí)只需要簡(jiǎn)單把數(shù)據(jù)字節(jié)或字鎖存到發(fā)送緩沖器就可以了。在使用普通I/O線輸出數(shù)據(jù)時(shí),,每輸出1個(gè)比特,,就要將DCLK置低再置高產(chǎn)生一個(gè)上升沿。它比ALTERA 公司手冊(cè)給出的電路連接圖更有效地使用了存儲(chǔ)器,。
3 被動(dòng)并行異步配置
如同被動(dòng)串行配置一樣,,被動(dòng)并行異步配置也包括三個(gè)階段:復(fù)位、配置和初始化,。被動(dòng)并行異步配置電路圖如圖3所示,。當(dāng)nSTATUS或者 nCONFIG 為低電平時(shí),器件處于復(fù)位狀態(tài)。微處理器在nCONFIG 管腳產(chǎn)生一個(gè)由低到高的跳變啟動(dòng)FPGA的配置,。當(dāng)nCONFIG變高后,,器件脫離復(fù)位狀態(tài),并且釋放漏極開路的nSTATUS管腳,,F(xiàn)PGA準(zhǔn)備接收配置數(shù)據(jù),,配置階段開始。在配置階段,,微處理器把FPGA當(dāng)作存儲(chǔ)器,,進(jìn)行寫操作,即微處理器先使片選有效,,然后把8比特?cái)?shù)據(jù)送到Data[0:7]管腳上,,再把nWS拉低。在nWS的上升沿,,F(xiàn)PGA鎖存配置數(shù)據(jù),,并驅(qū)動(dòng)管腳RDYnBSY 到低電平,表示 FPGA正忙于處理配置數(shù)據(jù),,微處理器可執(zhí)行其它功能,。在RDYnBSY低電平期間,F(xiàn)PGA使用內(nèi)部振蕩器時(shí)鐘處理配置數(shù)據(jù),。當(dāng)FPGA準(zhǔn)備接收下一字節(jié)的配置數(shù)據(jù)時(shí),,它驅(qū)動(dòng)RDYnBSY到高電平。微處理器檢測(cè)到這一高電平,,便送下一字節(jié)數(shù)據(jù)到配置管腳,。為了節(jié)省一根用來檢測(cè)RDYnBSY 的I/O線,可采用讀存儲(chǔ)器的方法讀FPGA,,其中nRS為存儲(chǔ)器讀信號(hào),,在 nRS 有效期間,RDYnBSY 信號(hào)被送到數(shù)據(jù)線D7上,。也可以不檢測(cè)RDYnBSY,,也不讀FPGA,簡(jiǎn)單地等待延時(shí) tBUSY(max)+tRDY2WS+tW2SB之后就寫下一個(gè)配置數(shù)據(jù)字節(jié),。FPGA每處理一字節(jié)配置數(shù)據(jù)后,,若發(fā)現(xiàn)錯(cuò)誤就會(huì)將nSTATUS 拉低,暗示配置出錯(cuò),。微處理器可以檢測(cè)這一錯(cuò)誤,,并重新進(jìn)行配置,。如同被 動(dòng)串行配置一樣,,F(xiàn)PGA在正確接收到所有配置數(shù)據(jù)后,將釋放CONF_DONE信號(hào),于是該管腳被外部上拉電阻拉高,,表示配置結(jié)束,,初始化開始。
4 配置數(shù)據(jù)文件的生成
Altera的MAX+PLUS II或Quartus II開發(fā)工具可以生成多種格式的配置文件,,用于不同配置方法,。不同目標(biāo)器件,配置數(shù)據(jù)的大小不同,。配置文件的大小一般由二進(jìn)制文件(擴(kuò)展名為.rbf)決定,。Altera提供的軟件工具不自動(dòng)生成.rbf文件,需要按照下面的步驟生成:① 在MAX+PLUS II編譯狀態(tài),,選擇文件菜單中的變換SRAM目標(biāo)文件命令,; ② 在變換SRAM目標(biāo)文件對(duì)話框,指定要轉(zhuǎn)換的文件并且選擇輸出文件格式為 .rbf(Sequential),,然后予以確定,。
本文介紹了廉價(jià)的ALTERA FPGA器件配置方法,并討論了其應(yīng)用配置在手持設(shè)備上的應(yīng)用,。
參考文獻(xiàn)
1 Configuration Handbook.Volume 1 & volume 2. CF5V1-1.0. ALTERA, 2003(9)
2 王玉花,郭書軍,葛紉秋.FPGA器件的在線配置方法.單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2004(3)
3 唐曉泉,,黃益莊.基于SRAM的可重配置電路.電子產(chǎn)品世界,2001(1):58~59
4劉曉明,王 軍,謝明欽. 基于單片機(jī)的復(fù)雜可編程邏輯器件快速配置方法. 電子技術(shù)應(yīng)用,2002;28(10):9~11