通過SELECTMAP32接口配置和回讀XILINX公司生產的V5系列SRAM型FPGA,被配置的FPGA以下簡稱DUT,產生配置時序的FPGA簡稱配置FPGA。
上圖描述了FPGA主動配置和從配置多種模式下M[2:0]及時鐘CCLK的狀態。
首先硬件上應將M[2:0]接成110,即Slave SelectMAP模式,該模式下總線寬度分8,16,32bit三種,本文按照32bit模式配置和回讀。
1.配置
配置的過程就是將mcs文件中的配置字序列通過SelectMAP接口寫入FPGA,配置字的寫時序如下圖:
如上圖所示,SelectMAP接口包含PROGRAM_B、 INIT_B、CCLK、CS_B、DATA[7:0](8bit模式)、RDWR_B、BUSY以及DONE。其中DATA接口為雙向,PROGRAM_B、 INIT_B、CCLK、CS_B、RDWR_B為DUT的輸入,由配置FPGA產生,CCLK頻率為25MHz。BUSY和DONE為DUT的輸出,配置FPGA根據BUSY和DONE信號判斷DUT是否配置完成。
mcs中配置字序列以及具體含義如下:
FFFFFFFF Dummy Word
000000BB BusWidthWord
11220044 8/16/32BusWidth
FFFFFFFF Dummy Word
FFFFFFFF Dummy Word
AA995566 Sync Word
以上為總線寬度檢測和同步字序列。在SlaveSelectMAP模式下,默認配置數據總線寬度為8bit,DATA[7:0]首先檢測總線寬度序列,如果DATA[7:0]檢測到0xBB后是0x11,則總線寬度為8bit,如果0xBB后是0x22,則總線寬度為16bit,如果0xBB后是0x44,則總線寬度為32bit,在總線寬度序列檢測完畢后,接收同步字序列AA995566。
在發送完同步字后,按照以下順序發送狀態寄存器等寫指令,對FAR、CMD等狀態寄存器進行寫操作,使FPGA處于待接收配置字狀態。
20000000 Type 1NOOP
30020001 Type 1 write1 words to WBSTAR
00000000 Warm BootStart Address
30008001 Type 1 write1 words to CMD
00000000 NULL
20000000 Type 1NOOP
30008001 Type 1 write1 words to CMD
00000007 RCRC
20000000 Type 1NOOP
20000000 Type 1NOOP
30022001 Type 1 write1 words to TIMER
00000000 TIMERvalue
30026001
00000000
30012001 Type 1 write1 words to COR0
02003F35 done@4 m@0l@0 gts@3 gwe@5
3001C001 Type 1 write1 words to COR1
00000000 COR1value
30018001 Type 1 write1 words to ID
03300093 ID code
30008001 Type 1 write1 words to CMD
00000009 SWITCH
20000000 Type 1NOOP
3000C001 Type 1 write1 words to MASK
00400000 MASKvalue
3000A001 Type 1 write1 words to CTL0
00400000 CTL0value
3000C001 Type 1 write1 words to MASKR
00000000 MASKvalue
30030001 Type 1 write1 words to CTL1
00000000 CTL1value
20000000 Type 1NOOP
20000000 Type 1NOOP
20000000 Type 1NOOP
20000000 Type 1NOOP
20000000 Type 1NOOP
20000000 Type 1NOOP
20000000 Type 1NOOP
20000000 Type 1NOOP
30002001 Type 1 write1 words to FAR
00000000 FARvalue
30008001 Type 1 write1 words to CMD
00000001 WCFG
20000000 Type 1NOOP
30004000 Type 1 write0 words to FDRI
50177910 Type 2 write1538320 words to FDRI
這些指令的含義如下:
FPGA配置bit流包含兩種類型的配置字指令,第一種類型為讀寫操作指令,格式如下
?
R為保留位,沒有實際意義。其中Opcode的含義如下
?
第二種類型的配置字指令必須跟隨在類型一之后,用于長字節的寫操作
?
一些狀態寄存器的地址如下所示
在對狀態寄存器進行寫操作之后,開始寫入配置內容,V5系列SRAM型FPGA共需要配置1538320個32bit的配置字:
00000000 Data word 1
Data word n
Data word n + 1
00000000 Data wordlast (1538320)
在配置內容寫入FPGA后,還需要對FAR、CRC、CMD等寄存器進行寫操作,完成配置過程。
30000001 Type 1 write1 words to CRC
33FE37CA CRC value
30008001 Type 1 write1 words to CMD
0000000A GRESTORE
20000000 Type 1 NOOP
30008001 Type 1 write1 words to CMD
00000003 LFRM
3000C001 Type 1 write1 words to MASK
00000000 Data word 1
00000000 CTL0register value
20000000 Type 1 NOOP
…
20000000 Type 1 NOOP
30008001 Type 1 write1 words to CMD
00000005 START
20000000 Type 1 NOOP
30002001 Type 1 write1 words to FAR
003F8000 FAR value
3000C001 Type 1 write1 words to MASK
00400000 Data word 1
3000A001 Type 1 write1 words to Control Register 0
00400000 ControlRegister 0 value
30000001 Type 1 write1 words to CRC
0C90449E CRC value
30008001 Type 1 write1 words to CMD
0000000D DESYNCH
20000000 Type 1 NOOP
…
20000000 Type 1 NO OP
發送完以上配置結束,如果配置成功,DUT會將DONE信號拉高。
2.回讀比較
回讀的過程和配置過程類似,也是先對DUT的狀態寄存器進行寫操作,然后通過RDWR_B信號拉高控制對DUT進行bit流回讀,回讀時序如下:
Write
寫總線寬度和同步字
FFFFFFFF Dummy Word
000000BB Bus WidthSync Word
11220044 Bus WidthDetect
FFFFFFFF Dummy Word
AA995566 Sync Word
寫狀態寄存器
20000000 Type 1 NOOPWord 0
30008001 Type 1 Write1 Word to CMD
0000000B SHUTDOWNCommand
20000000 Type 1 NOOPWord 0
30008001 Type 1 Write1 Word to CMD
00000007 RCRC Command
20000000 Type 1 NOOPWord 0
20000000 Type 1 NOOPWord 0
20000000 Type 1 NOOPWord 0
20000000 Type 1 NOOPWord 0
20000000 Type 1 NOOPWord 0
20000000 Type 1 NOOPWord 0
30008001 Type 1 Write1 Word to CMD
00000004 RCFG Command
20000000 Type 1 NOOPWord 0
30002001 Type 1 Write1 Word to FAR
00000000 FAR Address= 00000000
28006000 Type 1 Read0 Words from FDRO
48177910 Type 2 Read 1,538,320Words from FDRO
20000000 Type 1 NOOPWord 0
20000000 .. Type 1 31more NOOPs Word 0
讀bit流
Read
00000000 Packet DataRead FDRO Word 0
...
00000000 Packet Data Read FDRO Word 1538319
寫狀態寄存器
Write
20000000 Type 1 NOOPWord 0
30008001 Type 1 Write1 Word to CMD
00000005 STARTCommand
20000000 Type 1 NOOPWord 0
30008001 Type 1 Write1 Word to CMD
00000007 RCRC Command
20000000 Type 1 NOOPWord 0
30008001 Type 1 Write1 Word to CMD
0000000D DESYNCHCommand
20000000 Type 1 NOOPWord 0
20000000 Type 1 NOOP Word 0
通過以上讀寫指令操作,可以完成對FPGAbit流的回讀。
在ISE中bit流生成時勾選以下三個選項,將會生成rbd(回讀)文件和msd(掩碼)文件,
在ucf文件中添加如下約束,確保SELECTMAP32接口在配置完后仍然保持:
CONFIGCONFIG_MODE=S_SELECTMAP32+READBACK ;
回讀過程中,將回讀的32bit內容依次與存儲在片外PROM中的rbd文件比較,注意其中msd文件中為1對應的rbd中的bit位不需要比較。如果比較結果除不需要比較的bit位以外其他都一致,則比較結果正確,否則判斷發生故障。回讀比較可以用來檢測FPGA的配置區域邏輯是否發生單粒子翻轉。
評論