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