1. 配置概述
Spartan6系列FPGA通過把應用程序數據導入芯片內部存儲器完成芯片的配置。Spart-6 FPGA可以自己從外部非易失性存儲器導入編程數據,或者通過外界的微處理器、DSP等對其進行編程。對以上任何一種情況,都有串行配置和並行配置之分,串行配置可以減少芯片對引腳的要求,並行配置對8bit/16bit Flash或者微處理器來說更合適。
因為Xilinx的FPGA器件的配置數據存儲在CMOS 配置鎖存器內(CCL),因此Spartan6 FPGA器件上電后必須重新配置。Spartan6器件有多種配置模式,包括:
- JTAG配置模式
- Master Serial/SPI配置模式(X1,X2,X4)
- Slave Serial配置模式
- Master SelectMAP/BPI配置模式(X8,X16)
- Slave SelectMAP配置模式(X8,X16)
Spartan6系列FPGA的配置模式由引腳M[0:1]的狀態決定(詳細介紹見Spartan6系列之器件引腳功能詳述),在主配置模式中,CCLK默認來自與內部的振盪器,也可以來自外部的GCLK0/USERCCLK.,the BitGen -g ConfigRate選項可以設置內部時鍾的振盪頻率,默認頻率為2MHZ;無論M[0:1]狀態如何,JTAG配置始終可用。
對一個FPGA系統來說,可以有多種配置模式,但往往只有一種配置模式最適合自己的目標系統,應該要進行慎重的選擇。當然,FPGA可以重新裝載多個鏡像文件,因此可以為1片FPGA提供多個配置文件,典型的應用為:當FPGA上電時,裝載一個自檢的鏡像文件,完成自檢后重新裝載最終的應用程序鏡像文件。這種方法可大大提高FPGA的使用效率。
因為FPGA的外部存儲器可以存儲多個鏡像文件,因此可以通過FPGA正在使用(已裝載的鏡像)更新外部存儲器內容,實現遠程鏡像更新升級。
1.1. 主模式配置(master mode)
由FPGA自身將外部存儲器的配置數據裝載進內部的模式稱為主模式配置;主配置模式的各種連接方式如下圖1所示,左側為串行配置連接方式,右側為並行配置連接方式。
圖 1主配置模式連接方式匯總
1.2. 從模式配置(slave mode)
由外部器件(主要指處理器)對FPGA進行配置的模式成為從模式;從配置模式的各種連接方式如下圖1所示,左側為串行配置連接方式,右側為並行配置連接方式。
圖 2從配置模式連接方式匯總
2. 具體配置模式詳解
Spartan-6系列FPGA的配置模式由模式控制引腳決定,具體情況如表1所示。
表格 1Spartan-6 FPGA配置模式
2.1. JTAG配置模式
在任何情況下,只要FPGA上電,就可以使用JTAG模式。
2.2. Serial配置模式
在serial配置模式中,FPGA在每個CCLK周期載入1bit配置數據。
圖 3Serial Configuration時序圖
2.2.1. Master Serial配置模式
在配置完成之前,done信號為0,將在整個配置過程中片選platform Flash;program_B是在配置FPGA之前對FPGA進行異步復位;由時序圖可以看出,若沒有CRC錯誤,FPGA的INIT_B是作為輸出始終將platform Flash的OE置高。
圖 4Master Serial Mode 配置電路圖
2.2.2. Slave Serial配置模式
對FPGA的異步復位(PROGRAM_B)既可以由外部器件如按鈕產生,也可以由CPLD或microprocessor產生;數據及時鍾信號均由CPLD等產生;
圖 5Slave Serial 配置模式
2.3. SelectMAP配置模式
SelectMAP配置接口提供了8/16bit雙向數據接口,即可用於對FPGA的配置,也可用於對FPGA配置數據的回讀。在SelectMAP模式中有多種配置思路,例舉如下:
- 單FPGA的master SelectMAP配置
- 單FPGA的slave SelectMAP配置
- 多個FPGA呈菊花鏈連接形式以SelectMAP總線配置不同image
- 多個FPGA呈並列一組形式以SelectMAP總線配置同一個image
表格 2 SelectMap接口中需特別說明的接口信號
引腳名 |
方向 |
用途 |
功能描述 |
CSI_B |
Input |
雙用途 |
低電平使能SelectMap的數據總線 |
RDWR_B |
Input |
雙用途 |
決定數據總線的方向,0代表輸入,1代表輸出; |
CSO_B |
Output |
雙用途 |
菊花鏈模式中低有效的輸出片選信號,當只有1片FPGA時,可不連接 |
BUSY |
Output |
雙用途 |
回讀時使用 |
圖 6 SelectMap配置接口
SelectMap配置模式有多種時序,因控制信號的不同而不同,主要有三種:連續的SelectMap配置模式數據載入時序、非連續數據總線可控的SelectMap配置模式數據載入時序、非連續時鍾可控的SelectMap配置模式數據載入時序。數據總線寬帶可以是8/16bit寬,數據寬度取決於配置啟動階段對數據總線采樣的結果,在啟動階段,數據總線會輸出特殊的標志數據。
圖 7連續的SelectMap配置模式數據載入時序
圖 8非連續數據總線可控的SelectMap配置模式數據載入時序
圖 9非連續時鍾可控的SelectMap配置模式數據載入時序
2.3.1. 單FPGA的Master SelectMap配置模式
在主模式下,CSI_B和EDWR_B接地,使能了SelectMap的數據線並使數據線的方向為輸入;因為是單FPGA,所以不需要用到CSO_B,浮置即可。
圖 10單FPGA的主SelectMap配置模式
2.3.2. 單FPGA的Slave SelectMap配置模式
當使用CPLD/Microprocessor來配置FPGA時,即可使用master SelectMap模式也可使用slave SelectMap模式,但優先使用Slave SelectMap配置模式。當CPLD/Microprocessor的SELECT等於0時,將使能FPGA的SelectMap配置模式數據總線;當CPLD/Microprocessor的READ/WRITE為0時,FPGA的SelectMap配置模式數據總線方向為輸入,這時可以將配置數據輸入到FPGA內部。
圖 11單FPGA的從SelectMap配置模式
2.4. SPI配置模式
SPI配置模式只能工作於主模式,SPI接口允許FPGA把標准的工業SPI Flash作為配置數據存儲介質。需要注意的是,在FPGA呈菊花鏈連接模式中,FPGA的SPI模式配置只能選擇SPIX1方式,不能選擇SPIX2或SPIX4模式。要使能FPGA的SPIX4的配置模式,需要在ise的BitGen選項里增加“-g: spi_buswidth:4”。
圖 12Spartan-6 FPGA SPI配置接口
引腳名 |
方向 |
描述 |
配置之后 |
MOSI/MISO[0]/CSI_B |
Input/Output |
FPGA串行數據輸出/輸入;連接到SPI Flash的從數據輸入引腳 |
User IO |
DIN/D0/MISO/MISO[1] |
Input |
主FPGA數據輸入從SPIFlash數據輸出端口;連接到SPI Flash的數據輸出口 |
User IO |
CSO_B |
Output |
片選信號,低有效 |
User IO |
DOUT |
Output |
串行數據輸出,在FPGA的菊花鏈中使用,連接到下一片FPGA的DIN引腳 |
User IO |
MISO[3:2] |
Input |
主FPGA串行數據輸出從SPI Flash數據輸出引腳 |
User IO |
圖 13Spartan-6 FPGA SPI配置接口電路圖
不同數據線傳輸模式根據SPI總線每次傳輸的命令區分,Single_Read的命令操作碼:0x03或0xE8;Dual_Read的命令操作碼:0x3B;Quad_Read的命令操作碼:0x6B。
圖 14SPI總線Single_Read時序
圖 15SPI總線Dual_Read時序
圖 16SPI總線Quad_Read時序
2.5. BPI配置接口
BPI:Byte-Wide Peripheral Interface,字節寬度外設接口。FPGA可以從一個工業標准的並行NOR Flash讀取配置數據。Spartan-6 FPGA最高支持1Gb的NOR Flash,也就是說地址線最高可達26根,但是並不是每種Spartan-6 FPGA都支持BPI配置或者26位的地址線的,具體情況例舉如下:
- MCB-M1(Bank1的存儲器控制模塊)可以用作BPI配置接口,但是,用戶只能選擇將MCB_M1用作存儲器控制接口或者BPI之一,不能同時作為兩種接口使用。
- 6SLX4 、6SLX25/T FPGA不支持BPI配置接口。
- TQG144 和 CPG196封裝的FPGA不支持BPI配置接口。
- CSG225封裝中BPI配置地址線A22、A23不可用。
圖 17BPI配置接口
表格 3BPI配置中特殊引腳說明
引腳名 |
方向 |
功能描述 |
FCS_B |
Output |
低有效的Flash片選信號 |
FOE_B |
Output |
低有效的Flash輸出使能信號 |
FWE_B |
Output |
低有效的寫使能信號 |
A[25:0] |
Output |
地址線 |
D[15:0] |
Output |
數據線 |
CSO_B |
Output |
FPGA菊花鏈連接時使用 |
HDC |
Output |
FPGA配置期間為高電平,用於16bit寬Flash的字節選擇 |
LDC |
Output |
FPGA配置期間為低電平,用於16bit寬Flash的字節選擇 |
圖 18BPI配置總線電路連接圖
圖 19BPI配置總線時序圖