一種高檔FPGA可重構(gòu)配置方法
case(mode)
conf_mode1: address=23'h000000;
…… //初始化該模式起始地址
endcase
clk_start=0;
end
configure:
begin
if(clk_start==0)
count3=count3+1;
if(count3>=2000) //進(jìn)入配置模式后延時(shí)100us 開始寫數(shù)據(jù)
clk_start=1;
if(clk_start==1)
begin
DCLK=~DCLK;
if(DCLK==0) begin address=address+1;DATA_OUT=datain;end
end
end
init: begin …… end //配置完成,進(jìn)入初始化工作狀態(tài)
user_mode: begin …… end //初始化完成,進(jìn)入用戶工作狀態(tài)
endcase
end
endmodule
程序代碼在 QUARTUSⅡ6.0下的仿真時(shí)序如圖 5所示。其簡要工作過程是,外部 conf_start信號(hào)啟動(dòng)一次配置,EPM7064A將 nCONFIG和 nSTATUS信號(hào)拉低, FPGA進(jìn)入復(fù)位狀態(tài),根據(jù) mode取得相應(yīng)的 Flash初始地址,復(fù)位完成 FPGA將 nSTATUS釋放,延時(shí)大約 100us后 EPM7064開始給 FPGA提供時(shí)鐘和數(shù)據(jù),直到將配置數(shù)據(jù)全部寫入 FPGA,配置完成后 FPGA將 CONF_DONE釋放,表明配置完成, FPGA進(jìn)入初始化狀態(tài),經(jīng)過內(nèi)部初始化后, INIT_DONE變高,表明 FPGA進(jìn)入工作狀態(tài),各引腳將根據(jù)用戶定義的狀態(tài)工作。若配置過程中 nSTATUS被 FPGA拉低,則表明有配置錯(cuò)誤,重新進(jìn)行配置,在任何工作狀態(tài)下外部指令都可以再次啟動(dòng)配置。
3.2 配置文件的獲取
在 FPGA的工程設(shè)計(jì)編譯后產(chǎn)生的 .pof和.sof文件只能直接用于在 PS模式下對(duì) FPGA進(jìn)行
配置,要用 Flash存儲(chǔ)配置數(shù)據(jù),需要將配置數(shù)據(jù)轉(zhuǎn)換成 .hexout或.hex格式, QUARTUSⅡ6.0提供兩種方法得到所需的文件[2],一是編譯時(shí)改變編譯選項(xiàng)自動(dòng)生成所需文件,二是將已有配置文件轉(zhuǎn)換為所需文件格式。
4 結(jié)束語
本文的創(chuàng)新點(diǎn)在于將可重構(gòu)配置方法成功應(yīng)用于某導(dǎo)航接收機(jī)中,充分利用了硬件資源。這種可重構(gòu)配置方法能根據(jù)指令自動(dòng)更改 FPGA配置程序,重構(gòu)系統(tǒng)功能,實(shí)現(xiàn)了多模式導(dǎo)航體制融為一體,系統(tǒng)靈活性和可擴(kuò)展性大大增強(qiáng),以較低的成本實(shí)現(xiàn)復(fù)雜系統(tǒng),具有一定的工程實(shí)用價(jià)值。
評(píng)論