基于軟件無線電的某機載多模式導航接收機能較好地解決導航體制不兼容對飛行保障區(qū)域的限制,但由于各體制信號差異較大,各自實現(xiàn)其硬件將相當龐大,若對本系統(tǒng)中數(shù)字信號處理的核心 FPGA芯片使用可重構(gòu)的配置方法,將導航接收機的多種模式以時分復用的方式得以實現(xiàn),可以重復利用 FPGA的硬件資源,達到了縮小體積,減小功耗,增加靈活性和降低系統(tǒng)硬件復雜程度等目的。本系統(tǒng)中的核心器件是新一代高檔 FPGA,適合于計算量大的數(shù)字信號處理,包含實現(xiàn)數(shù)字信號處理的 DSP塊、數(shù)字鎖相環(huán)、硬件乘法器以及各種接口等多項技術(shù),支持遠程更新,但其配置數(shù)據(jù)大,實現(xiàn)較為復雜。采用 CPLD+FLASH方案,有效的解決了這一問題。
1 FPGA及其可重構(gòu)技術(shù)簡介
現(xiàn)代高速度 FPGA運行時需將其配置數(shù)據(jù)加載到內(nèi)部 SDRAM中,改變 SDRAM里面的數(shù)據(jù),可使 FPGA實現(xiàn)不同的功能,即所謂的可重構(gòu)技術(shù)??芍貥?gòu)技術(shù)包括靜態(tài)系統(tǒng)重構(gòu)和動態(tài)系統(tǒng)重構(gòu)[1]。在 FPGA處于工作狀態(tài)時對其部分配置數(shù)據(jù)進行更改稱為動態(tài)配置,否則稱為靜態(tài)配置。由于本系統(tǒng)在工作時需要改變整個 FPGA功能,所以采用靜態(tài)配置。這種配置是完全的,它對整個 FPGA的功能、參數(shù)完全更改,而且其引腳功能也被更改。
系統(tǒng)的關(guān)鍵部件為一片高檔密度 FPGA EP2S30,其要求的一次配置數(shù)據(jù)達1.205MBytes,故其配置采用“Flash存儲器+CPLD主控器”的方案。
EP2S30支持5種配置方案,即AS(Active Serial)模式、PS(PassiveSerial)模式、FPP(FastPassive Parallel)模式、PPA(Passive parallel Asynchronous)模式和JTAG配置模式等。為縮短配置時間,本系統(tǒng)采用FPP模式,配置數(shù)據(jù)不壓縮,使各配置數(shù)據(jù)長度一致,以便于分配Flash存儲空間,且只需要同數(shù)據(jù)率相同的時鐘信號[2]。
2 可重構(gòu)系統(tǒng)硬件設(shè)計
2.1 芯片介紹
2.1.1 FPGA芯片
采用 Altera公司 StratixⅡ系列 FPGA,具有多達 33880個等價邏輯單元 (LE)和 13552個自適應邏輯單元(ALM),支持可編程片上系統(tǒng) (SOPC),有多達 1369Kbits片上 RAM,支持 NIOS嵌入式處理器,片上有多達 16個 DSP塊和 64個 18位×18位硬件乘法器以及 6個 PLL模塊,支持遠程更新。其片內(nèi)資源完全可以實現(xiàn)系統(tǒng)所需的數(shù)字下變頻(DDC)、幅度調(diào)制與解調(diào)、方位和距離脈沖形成以及控制信號的產(chǎn)生等。但其配置數(shù)據(jù)達 1.205MBytes,要完成多模式可重構(gòu)配置,其配置數(shù)據(jù)存儲器必須有足夠大的空間。
2.1.2 Flash芯片
為實現(xiàn)快速配置,綜合存儲容量、工作電壓以及等各方面的要求,F(xiàn)lash芯片選用 AMD公司 AM29LV065,其為 8M×8bits Flash存儲器,內(nèi)部被分為 128個 64Kbytes扇區(qū),可以存儲 6套配置方案數(shù)據(jù)。支持 3.3V電壓讀寫和擦除,支持扇區(qū)擦除和整片擦除,這一特性有利于實現(xiàn)某一配置數(shù)據(jù)單獨更改。地址不變時能自動進入休眠狀態(tài),將數(shù)據(jù)鎖存,從而減小功耗。
2.1.3 控制芯片
控制芯片采用 Altera公司 MAX7000AE系列 CPLD EPM7064A,其具有 ISP功能,為 3.3V內(nèi)核,IO口靈活方便,避免了采用單片機作為控制芯片時 IO口不夠用的問題。
2.2 硬件連接
配置系統(tǒng)硬件連接如圖 1所示。
配置系統(tǒng)中配置主控制器 EPM7064A是整個配置系統(tǒng)的核心,它在數(shù)據(jù)加載過程中與 PC機通訊,產(chǎn)生 Flash命令控制字并將配置數(shù)據(jù)寫入 Flash存儲器,同時對 Flash存儲空間進行自動分配;在配置過程中根據(jù)系統(tǒng)的配置模式控制信號將 Flash中的數(shù)據(jù)讀出并配置到 FPGA中,同時完成 FPGA配置所需的時序,并檢測 FPGA的狀態(tài),若配置成功進入休眠狀態(tài)以節(jié)省功耗,若配置不成功將對 FPGA進行復位并重新配置。[!--empirenews.page--]
為簡化 CPLD的控制時序,便于對 FPGA進行自動配置,將 Flash的存儲空間按順序劃分為 6個塊,分別存儲 6個配置數(shù)據(jù)。每個塊包含 20個扇區(qū),1.25MBytes存儲空間。
500)this.style.width=500;" border="0" />
CPLD控制部分軟件設(shè)計與實現(xiàn)
3.1 EPM7064A的 Verilog HDL描述
EPM7064A是整個配置電路的核心,它完成 Flash配置數(shù)據(jù)的加載和配置時序的產(chǎn)生。按照由上至下的進行設(shè)計,將其分成三個主要功能模塊,即數(shù)據(jù)加載過程中與 PC機通訊的 UART模塊、寫 Flash時序產(chǎn)生模塊和配置時序產(chǎn)生模塊,分別由 Verilog HDL硬件描述語言實現(xiàn)。
數(shù)據(jù)加載過程中,EPM7064A的 UART模塊與 PC機通訊,同時產(chǎn)生 Flash編程控制字,將 PC機送來的數(shù)據(jù)寫入指定的塊。其主要工作過程是串口模塊接收到一個字節(jié)數(shù)據(jù)后,其 DATARDY有效,觸發(fā) Flash寫模塊先將三個控制字數(shù)據(jù) AA、55、A0寫入 Flash,然后將接收到的數(shù)據(jù)寫入 Flash。寫 Flash仿真時序圖如圖 4所示。
500)this.style.width=500;" border="0" />
數(shù)據(jù)讀取和配置時序模塊的主要程序代碼如下:
module conf( clk20m, //設(shè)時鐘頻率20Mhz
…… ) //端口列表
…… //輸入輸出口定義
…… //寄存器定義
…… //配置模式參數(shù)定義
…… //工作狀態(tài)參數(shù)定義
always@(posedge clk)
begin
if (conf_start==1) //配置啟動脈沖啟動一次配置
nCONFIG<=0;
if(nCONFIG==0)
count1<=count1+1;
if (count1<=50) //進入復位狀態(tài),復位時間大于2us
state<=reset;
if(count1>50)
nCONFIG<=1;
if(nSTATUS==1)
state<=configure; //進入配置狀態(tài)
if(CONF_DONE)
begin state<=init; count2<=count2+1;end //進入初始化狀態(tài)
if(INIT_DONE)
begin state<=user_mode;count2<=0;end //進入用戶狀態(tài)
end
always@(posedge clk)
begin
case(state)
reset: begin[!--empirenews.page--]
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 開始寫數(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 //配置完成,進入初始化工作狀態(tài)
user_mode: begin …… end //初始化完成,進入用戶工作狀態(tài)
endcase
end
endmodule
程序代碼在 QUARTUSⅡ6.0下的仿真時序如圖 5所示。其簡要工作過程是,外部 conf_start信號啟動一次配置,EPM7064A將 nCONFIG和 nSTATUS信號拉低, FPGA進入復位狀態(tài),根據(jù) mode取得相應的 Flash初始地址,復位完成 FPGA將 nSTATUS釋放,延時大約 100us后 EPM7064開始給 FPGA提供時鐘和數(shù)據(jù),直到將配置數(shù)據(jù)全部寫入 FPGA,配置完成后 FPGA將 CONF_DONE釋放,表明配置完成, FPGA進入初始化狀態(tài),經(jīng)過內(nèi)部初始化后, INIT_DONE變高,表明 FPGA進入工作狀態(tài),各引腳將根據(jù)用戶定義的狀態(tài)工作。若配置過程中 nSTATUS被 FPGA拉低,則表明有配置錯誤,重新進行配置,在任何工作狀態(tài)下外部指令都可以再次啟動配置。
500)this.style.width=500;" border="0" />
3.2 配置文件的獲取
在 FPGA的工程設(shè)計編譯后產(chǎn)生的 .pof和.sof文件只能直接用于在 PS模式下對 FPGA進行
配置,要用 Flash存儲配置數(shù)據(jù),需要將配置數(shù)據(jù)轉(zhuǎn)換成 .hexout或.hex格式, QUARTUSⅡ6.0提供兩種方法得到所需的文件[2],一是編譯時改變編譯選項自動生成所需文件,二是將已有配置文件轉(zhuǎn)換為所需文件格式。
4 結(jié)束語
本文的創(chuàng)新點在于將可重構(gòu)配置方法成功應用于某導航接收機中,充分利用了硬件資源。這種可重構(gòu)配置方法能根據(jù)指令自動更改 FPGA配置程序,重構(gòu)系統(tǒng)功能,實現(xiàn)了多模式導航體制融為一體,系統(tǒng)靈活性和可擴展性大大增強,以較低的成本實現(xiàn)復雜系統(tǒng),具有一定的工程實用價值。