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

基於單片機P89C61X2的FPGA配置

admin @ 2014-03-26 , reply:0

概述

   大部分FPGA採用基於SRAM(靜態隨機存儲器)的查找表邏輯形成結構,就是用SRAM構成邏輯函數發生器。SRAM工藝的晶元在掉電后信息就會丟失,需要外加一片專用配置……

    大部分FPGA採用基於SRAM(靜態隨機存儲器)的查找表邏輯形成結構,就是用SRAM構成邏輯函數發生器。SRAM工藝的晶元在掉電后信息就會丟失,需要外加一片專用配置晶元。在上電時,由這個專用配置晶元把數據載入到FPGA中,然後FPGA就可以正常工作。這就是在線可重配置ICR(In-Circuit Reconfigurability)方式。
    Altera公 司生產的具有ICR功能的APEX,FLEX10K,ALEX,FLEX6000等系列器件可以使用6種模式進行配置,即使用專用EPC配置器件、被動串列(PS)方式、被動并行同步(PPS)方式、被動并行非同步(PPA)方式、被動串列非同步(PSA)方式及邊界掃描(JTAG)方式。這些模式由FPGA上的兩個模式選擇引腳MSELI和MSELO上的電平來決定。
    EPC 配置器件有一次性可編程和可擦寫編程型兩種。一次性可編程型晶元不適於調試、修改及產品升級,利用率不高;可擦除編程型晶元價格昂貴,容量有限。使用PS,PPS,PPA方式配置時,配置文件要以二進位形式保存在系統ROM中,然後通過微處理器將配置數據送進FPGA中。PS和PPS所用的配置時間幾乎相同,而PS的介面方式比較簡單。PPA方式與PPS不一樣的地方是在進行串列化處理時不需要配置外部時鐘的驅動,但介面更複雜。邊界掃描方式在現場採用較少,通常用在計算機通過JTAG口實現一次性編程數據載入的調試中。
    以上 6種模式中被動串列(PS)方式下FPGA與配置電路的互連最簡單,對配置時鐘的最低頻率也沒有限制,因此常採用PS模式。本文採用單片機P89C61X2以PS模式對Altera公司的FLEX10K系列晶元EPF10K20進行配置,軟體採用MAXPLUS II。

1 P89C61X2的功能特點
    P89C61X2器件採用高性能的靜態80C51設計,使用先進的CMOS工藝製造,並包含非易失性Flash的程序存儲器,可通過并行編程或在系統編程(ISP)的方法進行編程。支持6時鐘和12時鐘模式,相應地有2種速度範圍:6時鐘模式時,0-20M Hz;12 時鐘模式時,0.33M Hz。P89C61X2包含64K B的Flash程序存儲器、1024位元組RAM ,32個I/O口、3個16位定時/計數器、6中斷源-4中斷優先順序-嵌套的中斷結構、1個增強型UART、片內振蕩器和時鐘電路等。此外,器件的靜態設計使其具有非常寬的頻率範圍,甚至可以降低至零。P89C61X2具有兩種軟體可選的節電模式-空閑模式和掉電模式。空閑模式時凍結CPU的運行,但允許RAM、定時器串口和中斷系統繼續保持其功能;掉電模式時保持RAM的內容,但凍結振蕩器,使其他片內功能都停止工作。由於是靜態設計,時鐘停止也不會使用戶數據丟失。操作可從時鐘停止點恢復運行。
    P89C61X2的Flash存儲器增加了EPROM所沒有的電可擦除和編程特性,可以進行晶元擦除和塊擦除。晶元擦除操作是將整個程序存儲區都擦除;而塊擦除可實現對任意Flash塊進行擦除。對P89C61X2進行在系統編程和標準的并行編程都是可行的。片內產生的擦除和寫入時序為用戶提供了良好的編程介面。P89C61X2的Flash存儲器甚至在經過10000次擦除和編程之後仍能可靠地保存存儲器內容。使用+5 V的Vpp即可實現對其進行擦除和編程。

2 配置原理和配置文件
    用單片機通過PS模式配置FPGA,可以使用單片機的普通輸入/輸出(I/O)口(如圖1(a)所示)或串列口(如圖1(b)所示)來實現。配置中使用了FPGA的nCONFIG(配置控制位輸入端)、nSTATUS(配置錯誤指示位輸出端)、CONF_DONE(配置結束標誌位輸出端)、DCLK(配置時鐘輸入端)、DATA0 (配置數據輸入端)引腳等。nCEO引腳用於多個FPGA器件採用PS模式配置時,把第一片的nCEO連接到下一片的nCE引腳上。配置時若使用普通I/O口(如P1口),向FPGA發送1位數據至少需要4個指令周期:一個指令給DATA0賦值,兩個指令產生DCLK時鐘,一個指令移位取數據。如果晶振頻率為fosc,一個指令周期為12/fosc,那麼它的下載速率為fosc/48。如果採用串列口方式。,其下載速率提高為fosc/12, P89C61X2支持6時鐘模式,速度可以提高一倍。因此,這裡採用圖1(b)所示硬體電路。
 
圖1 配置電路原理圖
    配置時序圖如圖2所示,可參見Altera公司的應用方案AN116。在配置過程中,nCONFIG低電位使EPF10K20複位,在由低到高的跳變過程中啟動配置;加電后,EPF10K20驅動nSTATUS引腳到低電位,然後釋放它(nSTATUS必須經過1kf2電阻上拉到vcc,若配置期間出錯,EPF10K20將其拉低),每個數據由最低位(LSB)先送出給DATA0,數據時鐘DCLK同時送到器件,直到CONF_DONE變高。在所有數據傳輸完后,對於FLEX10K和FLEX6000器件,DCLK必須多送10個DCLK脈衝;APEX20K器件必須多送40個DCLK脈衝。EPF10K20的CONF_ DONE變高顯示配置成功,開始初始化,最後進入用戶模式,開始正常工作。由於PS模式中沒有握手信號,因此配置時鐘的工作頻率必須低於10 MHz,如果想在配置中中止,可以掛斷DCLK。
 
圖2 被動配置時序圖
   硬體描述語言生成的程序經MAXPLUS II編譯後會產生一個後綴為.sof的SRAM目標文件。該文件除配置數據外還含有控制字元,不能直接寫入到PLD中去,需要利用MAXPLUS II的編程文件轉換功能。例如有些編程器支持.rbf文件。.rbf文件為原始二進位文件,該文件包括所有的配置數據,配置文件的大小一般由它決定。1位元組的.rbf文件有8位配置數據,每一位元組在配置時最低位最先被裝載。不同系列的目標器件配置數據的大小也不同,如.rbf文件在FLEK系列中,EPF10K10為15 KB,EPF10K20為29KB,EPF10K30為46KB,EPF10K40為61KB,EPFlOK70為109KB等。由於P89C61X2包含64 KB Flash程序存儲器,可以對除EPF10K70外的其他器件實現配置,而大於61 KB的FPGA器件可採用擴展存儲器的方法來實現。
   MAXPLUS II不自動生成.rbf文件,須按照下面的步驟生成:
① 在MAXPLUS II編譯狀態下,選擇文件菜單的變換SRAM目標文件命令;
② 在變換SRAM目標文件對話框中指定要轉換的文件並且選擇輸出文件格式為.rbf,然後確定。
    針對單片機P89C61X2,可以通過在系統編程(ISP)的方法實現。這裡採用廣州致遠電子有限公司開發的在線編程下載軟體ZLGICD。該軟體支持.hex文件。.hex文件為十六進位文件,MAXPLUS II編譯時會自動生成該文件,如果沒有也可採用類似產生.rbf文件的方法生成。
    用P89C61X2來配置FPGA,需將引導配置代碼(.hex文件)和FPGA的配置數據(.hex文件)一起通過編程器寫入P89C61X2。配置數據需要改變現有地址來讓引導程序調用,否則會造成衝突。可以自己編寫一個小程序來實現此功能。注意.hex文件的格式。由於引導配置代碼不長,通常小於1 KB,因此有足夠的空間來存放配置數據。

3 軟體設計
    軟體編程時,本系統只用到了串列口移位寄存器的輸出方式,串列數據通過RXD引腳輸出,移位時鐘由TXD引腳輸出。當有一個位元組數據寫入串列數據緩衝器SBUF時,開始發送。而串列口輸出方式本身就滿足配置時最低位(LSB)先送出的要求。下面給出用C語言編寫的子程序:
uchar fpga_config(uint Address){
  uchar reconfig=0;
  uchar j;
  init;
  nconfig=0;
  delay-ms(1);
  nconfig= 1;
  reconfig++;
  while(1){
    SBUF = CBYTE[Address++];
  while(TI==0);
    TI=0;
  if(!nstatus){
    delay_ms(10);
    goto init;
    if (reconfig >0x05) return 0;
    if (confdone){
      for(j=0;j<5;j++){
        SBUF = CBYTE[Address++];
        while(TI==0);
        TI=0;
      }
     return 1;
    }
  }
}

結語
    用 P89C61X2單片機來配置FPGA,從價格上來看,要優於EPC配置器件;從時間上來看,採用串列口方式0配置EPF10K20不到1秒鐘,而用單片機的普通輸入/輸出口方式要慢許多;從使用上來看,不擴展存儲器使電路連線更加簡單。另外,單片機與FPGA優勢相結合也給產品開發提供了更多更優的選擇方案。


[admin via 研發互助社區 ] 基於單片機P89C61X2的FPGA配置已經有2446次圍觀

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