歡迎您光臨本站 登入註冊首頁

FPGA 器件的配置方式和配置文件

admin @ 2014-03-26 , reply:0

概述

   Altera公司生產的具有ICR功能的FPGA器件有FLEX6000、FLEX10K、APEX和ACEX等系列。它們的配置方式可分為PS(被動串列)、PPS(被動并……
    Altera 公司生產的具有ICR 功能的FPGA 器件有FLEX6000、FLEX10K、APEX 和ACEX等系列。它們的配置方式可分為PS(被動串列)、PPS(被動并行同步)、PPA(被動并行非同步)、PSA(被動串列非同步)和JTAG(Joint Test Action Group)等五種方式。這五種方式都能適用於單片機配置。PS 方式因電路簡單,對配置時鐘的要求相對較低,而被廣泛應用。下圖是PS 配置方式的時序圖。
 
圖1 PS 方式配置時序
    CPU 僅需要利用5 個I/O 腳與FPGA 相連,就實現了PS 方式的硬體連接,具體信號見下表(信號方向從CPU 側看):
信號名  I/O 說明
Data O configuration data
DCLK O configuration clock
nCONFIG O  device reset (a low to high transition starts the configuration within the device)
CONF_DONE I Status bit (gets checked after configuration, will be high if configuration complete)
nSTATUS I Status bit indicating an error during configuration if low

    被動串列工作過程:當nconfig 產生下降沿脈衝時啟動配置過程,在dclk 上升沿,將數據移入目標晶元。在配置過程中,系統需要實時監測,一旦出現錯誤,nSTATUS 將被拉低,系統識別到這個信號后,立即重新啟動配置過程。配置數據全部正確地移入目標晶元內部后,CONF_DONE 信號跳變為高,此後,DCLK 必須提供幾個周期的時鐘(具體周期數與DCLK的頻率有關),確保目標晶元被正確初始化,進入用戶工作模式。
    Altera 的MAX+PLUS II 或Quartus II 開發工具可以生成多種配置或編譯文件,用於不同配置方法的配置系統,而對於不同系列的目標器件配置數據的大小也不同,配置文件的大小一般有.rbf 文件決定。.rbf 文件即二進位文件。該文件包括所有的配置數據,一個位元組的 .rbf文件有8 位配置數據,每一位元組在配置時最低位最先被裝載。微處理器可以讀取這個二進位文件,並把它裝載到目標器件中。Altera 提供的軟體工具不自動生成 .rbf 文件,須按照下面的步驟生成:
① 在MAX+PLUS II 編譯狀態,選擇文件菜單的變換SRAM 目標文件命令;
② 在變換SRAM 目標文件對話框,指定要轉換的文件並且選擇輸出文件格式為.rbf(Sequential),然後確定。

配置操作過程
CPU 按下列步驟操作I/O 口線,即可完成對FPGA 的配置:
1、nCONFIG="0"、DCLK="0",保持2μS 以上。
2、檢測nSTATUS,如果為"0",表明FPGA 已響應配置要求,可開始進行配置。否則報錯。正常情況下,nCONFIG="0"后1μS 內nSTATUS 將為"0"。
3、nCONFIG="1",並等待5μS。
4、Data0 上放置數據(LSB first),DCLK="1",延時。
5、DCLK="0",並檢測nSTATUS,若為"0",則報錯並重新開始。
6、準備下一位數據,並重複執行步驟4、5,直到所有數據送出為止。
7、此時Conf_done 應變成"1",表明FPGA 的配置已完成。如果所有數據送出后,Conf_done不為"1",必須重新配置(從步驟1 開始)。
8、配置完成後,再送出10 個周期的DCLK,以使FPGA 完成初始化。

FPGA 配置電路
1、JTAG 介面:
    JTAG 介面可以用來調試FPGA,下載速度比較快,而且支持SignalTAP。但是不能用來編程EPCS 晶元。建議調試階段採用JTAG 模式。電纜可以採用ByteBlaster (MV) 也可以用用ByteBlaster II。
 

2、AS 介面
    AS 介面主要是用來編程EPCS 晶元,同時也可以用來調試。具體過程是首先編程EPCS,然後通過EPCS 配置FPGA,運行程序。需要考慮的是EPCS 的編程次數是有限制的,雖然比EPC 系列要多,但是太頻繁的擦除和寫入對晶元還是有一定影響的。所以,我們建議在調試結束后,程序固化的時候才使用AS 方式。 如果採用這種方式,必須採用ByteBlasterII。電纜才行。
 
3、採用CPLD 或者單片機配置FPGA
 
    可以通過這些配置引腳由CPLD 來對FPGA 進行配置。利用單片機配置FPGA 的電路圖如下:
 
與上圖對應的用單片機配置FPGA 的C 程序如下:
/* 用8031 載入ALtera 的FPGA,也可用於Xilinx 的FPGA 的載入 */
void load_epld(void)
{
unsigned char data i;
unsigned int data j;
unsigned char xdata * data pt;
SCON = 0x0; /* 設置8031 工作在方式0,同步串列方式 */
CONFIG = 0; /* 初始化FPGA */
i=4 /* 注意8031 的工作頻率和速度,對於Xilinx 的FPGA,初始化的時間要長一些,具體查下各個FPGA 的參數 */
while(STATUS!=0) {
i--;
if(i==0) {
CONFIG = 0;
FPGA_Init_Error(); /* FPGA 初始化錯誤處理程序,自己編製 */
}
}
CONFIG = 1; /* 初始化FPGA 完畢 */
i=10; /* 注意8031 的工作頻率和速度,各個FPG 的初始化的時間不一樣,具體查下各個FPGA 的參數 */
while(STATUS!=1) {
i--;
if(i==0) {
CONFIG = 0; /* 錯誤時,使FPGA 處於初始化狀態,保證電路處於安全狀態 */
FPGA_Init_Error(); /* FPGA 初始化錯誤處理程序,自己編製 */
}
}
pt=(unsigned char xdata *)EPLD_DATA; /* EPLD_DATA 為FPGA 的存放地址 */
for(j=0; j < EPLD_Number; j++) { /* EPLD_Number 為FPGA 的載入位元組數,當大於64K */
SBUF = *pt++; /* 位元組時,要採用頁面切換的方式 */
while(!TI); /* 等待1 個位元組載入完畢 */
TI=0;
if(STATUS!=1) { /* 載入過程中,檢查載入是否正確 */
CONFIG = 0; /* 錯誤時,使FPGA 處於初始化狀態,保證電路處於安全狀態 */
FPGA_Load_Error(); /* FPGA 載入錯誤處理程序,自己編製 */
}
}
if(CFG_DOWN!=1) { /* FPGA 數據載入完畢,檢查載入是否正確 */
CONFIG = 0; /* 錯誤時,使FPGA 處於初始化狀態,保證電路處於安全狀態 */
FPGA_Done_Error(); /* FPGA 載入錯誤處理程序,自己編製 */
}
}


[admin via 研發互助社區 ] FPGA 器件的配置方式和配置文件已經有3554次圍觀

http://cocdig.com/docs/show-post-43021.html