以下文章來源于數(shù)字站
本文旨在通過講解不同模式的原理圖連接方式,進而配置用到引腳的含義(手冊上相關(guān)引腳含義有四、五頁,通過本文理解基本上能夠記住所有引腳含義以及使用場景),熟悉xilinx 7系列配置流程,以及設計原理圖時需要注意的一些事項,比如flash與FPGA的上電時序。
xilinx配置相關(guān)的引腳主要集中在bank0,bank14、bank15也存在一些輔助配置引腳,配置的模式主要由bank0上面的M[2:0]三個引腳的狀態(tài)決定,總共存在7種不同的配置方式(因為M[2:0]=3’b011不存在),因為M[2:0]三個引腳內(nèi)部有上拉電阻,所以默認是從串行配置模式(3'b111),配置模式如下表1所示。
表1 配置模式
配置模式 | M[2:0] | 總線位寬 | CCLK方向 |
Master Serial | 000 | X1 | 輸出 |
Master SPI | 001 | X1,X2,X4 | 輸出 |
Master BPI | 010 | X8,X16 | 輸出 |
Master SelectMAP | 100 | X8,X16 | 輸出 |
JTAG(only) | 101 | X1 | 無效 |
Slave SelectMAP | 110 | X8,X16,X32 | 輸入 |
Slave Serial | 111 | X1 | 輸入 |
注意:如果M[2:0]為101,則該FPGA只支持JTAG進行配置。處于其余配置模式下時,依舊可以使用JTAG模式進行調(diào)試,并且優(yōu)先級最高。
一般必然存在的JTAG調(diào)試模式,另外使用較多的是主SPI模式和從串行配置模式,后面主要講解這幾種配置,其余并行配置模式由于消耗引腳較多,一般不會使用,與這幾種串行模式的區(qū)別僅在于數(shù)據(jù)引腳的區(qū)別,需要了解的可以自行查看ug470手冊,下載地址如下,或者在后臺回復ug470即可獲取。
xilinx.com/content/dam/xilinx/support/documents/user_guides/ug470_7Series_Config.pdf
不同模式只有一些用于傳輸數(shù)據(jù)的引腳不同,都會使用一些相同的控制信號,并且在不同模式下這些信號功能基本一致。
01共用控制信號
01CFGBVS引腳
bank0電壓范圍選擇引腳,該引腳用于確定bank0的供電電源的范圍,如果該引腳接VCC,則bank0使用2.5V或者3.3V供電,如果接GND,則bank0供電電壓小于等于1.8V。如下圖所示,CFGBVS接高電平3.3V,則bank0的供電電壓VCC_0_1和VCC_0_2均接3.3V。當然可以加上拉和下拉電阻。
圖1 bank0電壓配置
02PROGRAM_B引腳
這個引腳可以清除FPGA內(nèi)部的所有配置信息,讓FPGA回到配置狀態(tài),重新進行配置,低電平有效。但注意在上電時把PROGRAM_B 保持為低電平不會使 FPGA 配置保持復位狀態(tài),延遲配置的時間需要使用INIT_B信號配合完成,后續(xù)講解上電配置時詳細說明。PROGRAM_B 引腳外部需要通過4.7KΩ以上的電阻上拉至VCC。相關(guān)連接如圖1所示原理圖中該管腳外部通過4.7KΩ上拉電阻接到VCC,并且將該信號引出,便于其他控制器可以控制ARM的配置。
03INIT_B引腳
FPGA 初始化引腳或配置錯誤信號,低電平有效。當 FPGA 處于配置復位狀態(tài)或當 FPGA 正在初始化(清除)其配置存儲器(PROGRAM_B信號為低電平)時或當 FPGA 檢測到配置錯誤時,F(xiàn)PGA 會將該引腳驅(qū)動為低電平。在上電期間,可以通過將該引腳拉低,來延遲上電配置程序的時間。當完成初始化后,該引腳被釋放,外部上拉電阻將該引腳拉高,當檢測到該信號上升沿之后,F(xiàn)PGA會讀取M[2:0]引腳狀態(tài),從而確定后續(xù)采用哪種配置方式進行配置。故該引腳外部也需要通過4.7KΩ的電阻上拉到VCC。
04DONE引腳
該信號高電平表示FPGA配置序列完成,默認情況下,該引腳為開漏輸出,內(nèi)部有一個不大于10KΩ的上拉電阻,外部只需要通過一個330Ω的電阻上拉即可。
05PUDC_B引腳
該引腳的狀態(tài)決定在配置期間非專用配置IO的狀態(tài),如果該引腳接高電平,則這部分IO設置為高阻態(tài),如果該引腳為低電平,則這部分引腳被上拉輸出高電平。該引腳外部通過1KΩ電阻上拉到VCCO_14或者下拉到GND。注意該引腳不能懸空,連接如圖2所示。
圖2 pudc_b信號上下拉配置
06VCCBATT引腳
該引腳是FPGA內(nèi)部易失性存儲器的電池備用電源,用于存儲AES解密器的密鑰,如果不需要使用AES易失性密鑰存儲區(qū)域中的解密器密鑰,那么將該引腳接地就行,該引腳不是I/O,不受VCCO_0的影響。了解該引腳功能即可,一般都用作接地處理。
不管采用何種配置方式,上述5個信號均具有相同功能,并且必須進行設置,不能懸空處理,接下來就可以看一下具體的上電配置流程,同樣,不管是何種配置方式,上電配置流程均相同,配置模式只能影響接收發(fā)送數(shù)據(jù)的方式。
02配置流程
配置流程包含三個大步驟(復位,加載程序,初始化啟動),分為8個小步驟,如圖3所示:
圖3 7系列FPGA配置步驟
01設備上電
這部分主要涉及到不同電源軌上電時序的要求,不同系列上電要求不一致,需要參考對應手冊的上電時序。電源的種類如圖4所示。
圖4 電源種類
上圖對應的電源種類一般位于電源bank上,原理圖如圖5所示,Vccint為內(nèi)核電源,另外有給AES加密和BRAM供電的電源,還有bank0的供電電源,ban14和bank15輔助配置供電電源,最后還有各個IO bank供電引腳。
圖5 電源bank
02清除配置內(nèi)存
如圖6所示,在上電期間,program_b引腳拉低,F(xiàn)PGA的配置存儲器按順序清零,BRAM被重置為初始狀態(tài),觸發(fā)器通過全局置位(GSR)重置被初始化。在此期間,除了少數(shù)配置引腳之外,其余IO通過全局三態(tài)將I/O置為高阻態(tài),如果pudg_b為低電平,則這些IO內(nèi)部上拉電阻使能,輸出高電平。上電配置時,init_b信號在初始化期間被內(nèi)部驅(qū)動輸出低電平,經(jīng)過Tpor時間后釋放。
圖6 上電清除時序
如果不是上電,其余情況的初始化如圖7所示,將program_b引腳拉低,初始化配置存儲器,持續(xù)時間由Tprogram決定。一直把program_b信號拉低是無法讓FPGA停留在初始化過程的,想要停留在這個過程中只能通過把init_b信號保持為低電平來實現(xiàn)延遲初始化過程。如果init_b引腳外部保持低電平,則器件在初始化過程中等待,直到引腳釋放,滿足TpoR或TPL延遲。
圖7 上電配置復位時序
這里需要注意一個上電順序的點:
上電時,F(xiàn)PGA會自動開始其配置過程,當FPGA處于主機串行SPI配置模式時,F(xiàn)PGA將FCS_B置為低電平,選擇SPI閃存,并向SPI閃存發(fā)送讀取命令。在FPGA將FCS_B驅(qū)動為低電平并發(fā)送讀取命令之前,SPI閃存必須處于喚醒狀態(tài)并準備好接收命令。
由于不同的電源軌可以為FPGA和SPI閃存供電,或者因為FPGA和SPI閃存可以沿著共享電源的斜坡在不同的時間做出響應,因此必須特別注意FPGA和SPI閃存的上電順序或上電斜坡。上電順序或電源斜坡可能會導致FPGA在Flash完全上電之前啟動,反之亦然。此外,一些SPI閃存設備指定了一個最短時間段,該時間段從通電開始可能是幾毫秒,在此期間不得選擇該設備。對于許多具有近乎同時的電源斜坡的系統(tǒng),F(xiàn)PGA上電重置時間(TpoR)可以充分延遲FPGA配置過程的開始,使得SPI閃存在FPGA配置過程開始之前就準備好了。一般系統(tǒng)設計必須考慮電源順序、電源斜坡、FPGA上電復位時序和SPI閃存上電時序?qū)﹂_始配置和SPI閃存就緒之間的時序關(guān)系的影響。
03采樣模式引腳狀態(tài)
圖8 采樣模式引腳
在init_b引腳上升沿時,F(xiàn)PGA采集模式引腳M[2:0]的狀態(tài),確定采用何種配置模式,如果是主機模式,則開始驅(qū)動CCLK輸出時鐘信號,之后FPGA在CCLK時鐘的上升沿采集數(shù)據(jù)輸入引腳的數(shù)據(jù)。BPI和SelectMAP模式,總線寬度初始為8,在總線寬度檢測序列之后,更新狀態(tài)寄存器,更新到對應的總線寬度。
04Synchronization
圖9 自動檢測位寬
對于BPI、Slave SelectMAP和Master SelectMAP這些并行模式,狀態(tài)寄存器默認使用8位總線,需要經(jīng)過自動檢測之后,才能夠確定其使用總線的具體位寬,所以在初始化之后,在傳輸配置數(shù)據(jù)之前,要確定具體的總線位寬。從機串口、主機串口、SPI和JTAG模式會忽略總線寬度檢測模式。
自動檢測總線位寬的方式
Xilinx工具生成的所有配置文件都包括總線寬度自動檢測模式,如果模式引腳設置為主機串行、從機串行、JTAG或SPI模式,則配置邏輯會忽略這些模式。FPGA其實是通過2個32位的數(shù)據(jù)來判斷總線位寬的,如下表所示,根據(jù)總線低8位數(shù)據(jù)狀態(tài)來確定總線實際位寬,如果第一次檢測低八位數(shù)據(jù)為0xBB,第二次檢測到數(shù)據(jù)為0x11,則該總線每次傳輸八位數(shù)據(jù),即總線位寬為8位。如果第一次檢測數(shù)據(jù)為0xBB,第二次檢測數(shù)據(jù)為0x22,則總線每次傳輸16位數(shù)據(jù),即總線位寬為16位。如果第一次檢測為0xBB,第二次檢測數(shù)據(jù)為0x44,則總線每次傳輸32位數(shù)據(jù),即總線位寬為32位。
如果0xBB之后的數(shù)據(jù)不是0x11、0x22或0x44,則會重新檢測下一個0xBB,直到找到有效序列為止。確認外部總線寬度后,切換到對應的總線寬度并鎖定。
表2 自動檢測位寬數(shù)據(jù)
然后,必須向配置邏輯發(fā)送一個特殊的32位同步字(0xAA995566),提醒器件即將到來的配置數(shù)據(jù),并將配置數(shù)據(jù)與內(nèi)部配置邏輯對齊。同步前配置輸入引腳上的任何數(shù)據(jù)都會被忽略,自動檢測總線位寬序列除外。
可以通過兩個寄存器的狀態(tài)確定同步是否成功以及總線寬度,如圖10所示。
圖10 與同步有關(guān)的信號
05檢查設備ID
圖11 檢測設備ID
設備同步后,必須先通過設備ID檢查,然后才能加載配置數(shù)據(jù)幀。這可防止使用針對不同設備格式化的比特流進行配置。如果在配置過程中發(fā)生ID錯誤,設備將嘗試執(zhí)行回退重新配置。
設備ID檢查是通過配置邏輯文件中的命令執(zhí)行的,而不是通過JTAG IDCODE寄存器執(zhí)行。
7系列FPGA JTAG ID代碼寄存器的格式如下:
vvvv:fffffff:aaaaaaaaa:ccccccccccccc1 //其中:V=版本 f=7位系列
代碼 A=9位陣列代碼(包括4位子系列和5位設備代碼) C=公司代碼
06加載配置數(shù)據(jù)
當總線位寬檢測和同步完成,并且設備ID正確之后,就該加載配置數(shù)據(jù)了,不同模式按照不同的總線加載數(shù)據(jù)即可。
圖12 加載配置數(shù)據(jù)
07CRC校驗
圖13 CRC校驗
這個流程沒有什么介紹的,就是計算接收數(shù)據(jù)的CRC校驗和,與配置文件中的校驗和進行對比,一致則傳輸正確,不同則將init_b信號拉低后終止配置。
08啟動
圖14 啟動
加載配置幀后,比特流指示設備進入啟動序列。啟動序列需要做一些操作,第一步可以選擇是否等待MMCM時鐘管理單元鎖定和DCI匹配(一般這兩個都不用關(guān)心),第二步釋放done引腳,通過外部上拉電阻變?yōu)楦唠娖?,第三步釋放GTS信號,也就是啟用除少數(shù)配置引腳之外的所有I/O,第四步使能全局寫入啟用信號(GWE),該信號使能后,CLB和IO管理單元里面的觸發(fā)器和RAM就可以根據(jù)初始化的值改變狀態(tài)了,第五步就是使能EOS信號表示配置和啟動過程均結(jié)束。前四步的順序可以在軟件設置里面進行調(diào)整,但第五步是固定的,對應時序圖如圖15所示。
圖15 配置信號排序(默認啟動設置)
上述就是一個完整的配置步驟,了解這個過程之后,就能夠具體了解整個上電流程的時序,以及前面講解5個通用配置管腳的功能,能夠知道在配置期間其余IO的狀態(tài)。
03配置方式
由2.3小節(jié)知,在init_b上升沿時,通過采集模式引腳M[2:0]狀態(tài)確定此次的配置方式,不同配置會使用不同的管腳(2.6步驟所使用引腳)來傳輸數(shù)據(jù)。
01主、從串行配置
串行模式分為主串行模式(FPGA作為主機,模式引腳狀態(tài)M[2:0]=3’b000)和從串行模式(FPGA作為從機,模式引腳狀態(tài)M[2:0]=3’b111),區(qū)別在于配置數(shù)據(jù)的時鐘引腳CCLK方向不同。從串行模式,CCLK作為輸入信號,對應原理圖配置如圖16所示。
圖16 從串行配置模式原理圖
不管是什么模式,一般都會帶有JTAG(一般也會存在TCK、TMS、TDI、TDO這四個JTAG引腳)。通過上圖可知,單個FPGA通過從串行配置除了1節(jié)講到的通用引腳之外,該配置只使用到了時鐘引腳CCLK和數(shù)據(jù)輸入管腳DIN,這兩個引腳用于在2.6小節(jié)配置過程中加載數(shù)據(jù),進而完成配置。
上述連接的優(yōu)勢在于,ARM或者CPLD可以通過拉低program_b引腳,來重新配置FPGA,當done引腳為高電平表示FPGA已經(jīng)配置完成,另外消耗的引腳極少。
從din引腳輸入的數(shù)據(jù),會通過dout引腳輸出,所以可以通過菊花鏈的方式,使用一片ARM或者CPLD達到配置多片F(xiàn)PGA的目的,連接方式如圖17所示,多片F(xiàn)PGA的配置引腳連在一起,配置數(shù)據(jù)會在前一片F(xiàn)PGA的配置時鐘下降沿從DOUT引腳輸出,后一片F(xiàn)PGA可以在配置時鐘下個時鐘上升沿從DIN引腳采集數(shù)據(jù),從而達到配置多片F(xiàn)PGA的目的。
圖17 從串行模式菊花鏈配置多片F(xiàn)PGA
當然還可以直接將數(shù)據(jù)線也全部并聯(lián),如圖18所示,這種并行配置要求所連接的FPGA型號必須完全相同,且配置相同代碼。
圖18 并行配置原理圖
主串行模式與從串行模式的引腳連接基本一致,上電時序也基本一致,如圖19所示,但有兩點區(qū)別:其一,主機模式的CCLK對于FPGA來說是輸出管腳,該管腳在init_b拉高后才開始輸出時鐘序列,而從機模式下CCLK信號作為FPGA輸入信號,對時鐘序列持續(xù)時間沒有要求。其二,由于主機模式配置時鐘管腳CCLK作為輸出信號,多片F(xiàn)PGA不能共用配置時鐘信號,所以主機模式下不能實現(xiàn)菊花鏈功能。
圖19 主、從串行模式配置時序
綜上,主、從串行配置模式,除了通用的配置管腳和JTAG配置管腳之外,需要使用配置時鐘CCLK和配置輸入數(shù)據(jù)引腳DIN,如果需要使用菊花鏈配置多片F(xiàn)PGA,那么還會用到配置數(shù)據(jù)輸出引腳DOUT。
02主SPI模式
此模式應該是altera和xilinx的FPGA配置最常用的模式,根據(jù)配置數(shù)據(jù)線不同可分為SPIX1、SPIX2、SPIX4三類。因為配置數(shù)據(jù)輸出管腳DOUT只有一位,故只有SPIX1支持菊花鏈配置,該配置對應原理圖如圖20所示。
圖20 主SPI x1/x2時序圖
使用FCS_B引腳作為flash閃存的片選信號,CCLK作為配置時鐘信號,DIN引腳作為數(shù)據(jù)輸入引腳,而MOSI引腳作為FPGA數(shù)據(jù)輸出引腳,向flash發(fā)送相關(guān)指令,然后獲取配置數(shù)據(jù)。默認情況下,在配置時鐘CCLK上升沿數(shù)據(jù)通過DIN引腳輸入FPGA,在CCLK下降沿數(shù)據(jù)通過DOUT引腳輸出FPGA,因此菊花鏈連接方式依舊是使用前一片F(xiàn)PGA的DOUT引腳連接后一片F(xiàn)PGA的DIN引腳,如圖21所示。
圖21 主SPI模式菊花鏈配置
注意:一個配置系統(tǒng)只允許存在一個主機,因為所有器件的配置時鐘CCLK信號必須要共用,所以第一片F(xiàn)PGA采用主SPI配置,其余FPGA采用從串行配置方式,體現(xiàn)在上圖的模式引腳M[2:0]的狀態(tài)。
SPI配置的時序如圖22所示,在同步和檢驗設備ID之后,先發(fā)送8位讀命令,然后發(fā)送24位讀地址數(shù)據(jù),8個配置時鐘周期之后,DIN引腳開始傳輸配置數(shù)據(jù)。CCLK在Configrate之前為3MHz,在Configrate期間會提高數(shù)據(jù)傳輸頻率。
圖22 7系列FPGA SPI x1模式序列
7系列FPGA的主SPI配置模式支持雙路和四路快速讀取操作,F(xiàn)PGA首先將快速讀取操作碼(0x0B)傳輸?shù)絊PI,然后讀取命令以更改比特流早期部分的數(shù)據(jù)寬度。然后,F(xiàn)PGA向SPI設備發(fā)出用于雙路(操作碼0x3B)或四路(0x6B)讀取操作的新讀取命令,并開始讀取適當?shù)臄?shù)據(jù)寬度。
SPI X 4的原理圖連接如下所示,此處的MOSI引腳在發(fā)送0x6B之后就會變?yōu)檩斎霐?shù)據(jù)的最低位D[0],與其他三根數(shù)據(jù)線構(gòu)成輸入數(shù)據(jù)線,其余與SPIx1方式相同,只是不能使用菊花鏈方式進行配置了。
圖23 7系列FPGA SPI x4模式序列
綜上,主SPI模式處理通用配置引腳和JTAG調(diào)試引腳外,與配置相關(guān)的就片選引腳FCS_B,配置時鐘CCLK,數(shù)據(jù)輸入DIN,數(shù)據(jù)輸出MOSI,菊花鏈數(shù)據(jù)輸出DOUT。原理圖設計時需要特別注意DOUT與MOSI是兩個不同引腳,功能也不相同。如果是SPIx2在發(fā)送0x3B之后,會以2位數(shù)據(jù)寬度讀取flash閃存里的數(shù)據(jù),MOSI變?yōu)檩斎霐?shù)據(jù)的最低位D[0],而數(shù)據(jù)輸入管腳DIN作為數(shù)據(jù)輸入的D[1],由此SPIx2與SPIx1的原理圖設計是相同的。如果是SPIx4則需要在SPIx2的基礎上增加兩位數(shù)據(jù)線D[3]和D[4]連接到flash。
前面提到默認是在時鐘上升沿采集數(shù)據(jù),但是可以通過設置在時鐘下降沿采集數(shù)據(jù),一般不會用到,需要了解的查看UG470手冊即可。
03主、從SelectMAP配置模式
SelectMAP配置接口為7系列FPGA配置邏輯提供8位、16位或32位雙向數(shù)據(jù)總線接口,可用于配置和回讀。數(shù)據(jù)總線的回讀和讀方向僅適用于從SelectMAP模式,根據(jù)配置器件的數(shù)量不同,一般分為三種單器件配置,多器件串聯(lián)菊花鏈配置,多個相同器件并聯(lián)配置相同程序。
01單器件配置
這種配置方式一般使用微處理器或者CPLD來配置單個7系列器件,可以使用主SelectMAP模式(使用來自FPGA的CCLK)或從SelectMAP模式(如下圖24),一般首選從SelectMAP模式,因為該模式支持回讀。關(guān)于該模式下微處理器的控制方式可以參考XAPP583手冊。
圖24 單從機選擇微處理器或CPLD中的MAP配置
由于D[31:0]這32位數(shù)據(jù)線分布在bank14和bank15,所以需要配置這兩個bank電源VCCO_14、VCCO_15。CSI_B信號作為片選信號,用來指示數(shù)據(jù)線和RDWR_B的信號是否有效,如果該信號為高電平,則D[31:0]被視為高阻狀態(tài),通過控制該信號可以連續(xù)配置數(shù)據(jù)或者間斷的配置數(shù)據(jù)。由于數(shù)據(jù)線D[31:0]是雙向的,需要通過RDWR_B信號狀態(tài)判斷數(shù)據(jù)線作為輸入還是輸出,因此可以通過控制該信號狀態(tài)來控制寫入或者讀出數(shù)據(jù),從而可以實現(xiàn)數(shù)據(jù)回讀,如果不需要回讀,可以把該引腳接地處理。
在從配置模式下,當CSI_B為低電平時,如果RDWR_B的值從低電平變?yōu)楦唠娖綍K止配置,并且將數(shù)據(jù)線異步更改為輸出。當CSI_B為低電平時,將RDWR_B的值從高變?yōu)榈蜁K止回讀,并且將數(shù)據(jù)線異步更改為輸入。故CSI_B使能時,RDWR_B信號狀態(tài)不能發(fā)生變化。
連續(xù)配置時序如圖25所示,上電后,配置控制器設置寫控制的RDWR_B信號(RDWR_B=0),并使能CSI_B信號(CSI_B=0)。在使能CSI_B之前,RDWR_B必須被驅(qū)動為低電平并保持不變,否則會終止配置。在下一個CCLK上升沿,F(xiàn)PGA開始采樣數(shù)據(jù)引腳[7:0]狀態(tài),自動匹配數(shù)據(jù)總線寬度,直到確定總線寬度為止。之后對數(shù)據(jù)總線的適當寬度進行采樣,以用于同步字搜索,同步完成后,配置開始。加載配置比特流完成后,器件進入啟動序列。在比特流指定的啟動序列階段,F(xiàn)PGA將其DONE置為高電平??刂破鲬^續(xù)發(fā)送CCLK脈沖,直到啟動序列完成。(根據(jù)2.8小節(jié)知在Done變?yōu)楦唠娖胶螅赡苄枰獛讉€CCLK脈沖)。
配置后,CSI_B和RDWR_B信號可以拉高,也可以保持使能,由于SelectMAP端口處于非活動狀態(tài),此時切換RDWR_B不會導致終止配置。
圖25 連續(xù)x8 SelectMAP數(shù)據(jù)加載
如果控制器無法提供連續(xù)的數(shù)據(jù)流,那么可以使用非連續(xù)的數(shù)據(jù)加載方式,這種方式可以通過兩種方式實現(xiàn)。方法一是通過拉高CSI_B信號(如圖26所示),第二種方法是通過停止生成CCLK實現(xiàn)(如圖27所示)。
如圖26,在3、4、7、8、10、11、12的CCLK上升沿處,CSI_B信號使能,加載一個配置數(shù)據(jù),而5、6、9處CSI_B信號被拉高,該處數(shù)據(jù)無效,不會加載配置數(shù)據(jù),從而實現(xiàn)非連續(xù)數(shù)據(jù)加載。
圖26 通過CSI_B控制的非連續(xù)SelectMAP數(shù)據(jù)加載
如圖27所示,CSI_B片選和RDWR_B信號的狀態(tài)保持正常,通過改變CCLK時鐘寬度,更改CCLK上升沿位置,從而實現(xiàn)非連續(xù)的數(shù)據(jù)加載。
圖27 通過控制CCLK的非連續(xù)SelectMAP數(shù)據(jù)加載
02配置多個相同器件
根據(jù)是否需要回讀,依舊有兩種配置方式,如圖28所示支持回讀FPGA配置數(shù)據(jù),通過將多片F(xiàn)PGA的數(shù)據(jù)線D和配置時鐘CCLK以及數(shù)據(jù)線方向控制i新年好PDWR_B連接在一起實現(xiàn),由于需要回讀操作,即需要FPGA輸出數(shù)據(jù),那么多片F(xiàn)PGA不能存在同時驅(qū)動同一組數(shù)據(jù)線的情況,所以多片F(xiàn)PGA的片選信號CSI_B必須分開連接到ARM或者CPLD,否則可能會燒毀器件。
圖28 8位SelectMAP總線上的多從設備配置(一)
這種方法的劣勢在于需要多個片選信號,優(yōu)勢在于通過控制CSI_B信號可以給多片F(xiàn)PGA分別燒寫不同的配置程序,而且支持回讀功能。
另一種不需要使用回讀功能的配置方式如圖29所示,數(shù)據(jù)線和時鐘線與圖28連接一致,將片選CSI_B和方向信號PDWR_B均接地。
圖29 8位SelectMAP總線上的多從設備配置(二)
這種方式的優(yōu)勢在于節(jié)省了控制多個片選信號CSI_B的引腳,缺點在于多個器件只能配置相同程序,且不支持回讀。
03菊花鏈配置多個器件
并行器件的菊花鏈配置方式如圖30所示,注意第一個器件可以是主BPI、主SelectMAP、從SelectMAP三種配置之一,但后續(xù)器件必須采用從SelectMAP配置模式,該配置方式不支持回讀和回退操作。
圖30 并聯(lián)菊花鏈
注意上圖中D[15:00]、CCLK、RDWR_B、PROGRAM_B、DONE、INIT_B均連接在一起,菊花鏈是通過一路片選信號FCS_B或者CSI_B進行控制的,CSO_B會把CSI_B的信號輸出,所以上一片F(xiàn)PGA的CSO_B引腳連接到下一片F(xiàn)PGA的SCS_B引腳就能實現(xiàn)菊花鏈控制。關(guān)于BPI控制在3.4節(jié)講解。
綜上,SelectMAP配置相比串行配置區(qū)別在于數(shù)據(jù)線數(shù)量增加且變?yōu)殡p向,需要PDWR_B信號控制數(shù)據(jù)線方向,還增加了一個片選信號CSI_B,菊花鏈的連接方式也由數(shù)據(jù)信號DIN變?yōu)榭刂破x信號CSI_B。在配置期間會相對串行會增加一個自動檢測總線寬度的流程,之后才會對同步數(shù)據(jù),然后傳輸配置數(shù)據(jù),在從SelectMAP模式下還可以支持回讀和非連續(xù)性傳輸配置數(shù)據(jù)。
編寫微控制器或者CPLD程序時需要注意,在SelectMAP x8模式下,每個CCLK加載一個字節(jié)配置數(shù)據(jù),每個字節(jié)的MSB提供給D0引腳。圖31顯示了如何將十六進制值0xABCD加載到SelectMAP數(shù)據(jù)總線中。
圖31 SelectMAP 8位模式的位排序
圖32顯示了7系列FPGA SelectMAP x8、x16和x32數(shù)據(jù)總線寬度的位排序。
圖32 位排序
04主BPI配置
7 系列 FPGA Master BPI 配置模式支持使用行業(yè)標準并行 NOR (BPI) 閃存器件進行比特流存儲。FPGA 支持直接連接到 BPI 閃存的地址、數(shù)據(jù)和控制信號,以提取存儲的比特流。
注意,某些所需的引腳位于組 15 中,Artix-7 7A50T 和較小器件的 CPG236 封裝不進行綁定Bank 15,因此不支持 BPI 配置。Spartan-7 系列不支持 BPI 配置。
7系列FPGA Master BPI配置模式有兩種可用的BPI閃存讀取模式:異步和同步。與其他直接配置模式相比,使用帶有外部主時鐘的 BPI 閃存同步讀取模式可以實現(xiàn)更快的配置時間。此外,可通過多達 29 條地址線訪問更寬密度范圍的并行 NOR 閃存。
01異步讀取
在Master BPI配置模式下,7系列FPGA默認使用BPI flash異步讀取模式來讀取比特流數(shù)據(jù),如圖33所示。FPGA從給定的起始地址驅(qū)動地址總線,BPI flash發(fā)回比特流數(shù)據(jù),默認起始地址是地址 0。此模式下配置時鐘CCLK信號不需要連接,INIT_B信號作為flash的復位信號,F(xiàn)WE_B作為flash的寫使能信號,F(xiàn)OE_B信號作為flash芯片的輸出使能信號,而FCS_B作為flash芯片的片選信號,注意對配置相關(guān)信號帶有后綴_B的表示低電平有效。該配置方式數(shù)據(jù)位寬支持8位及16位,地址線有29位,消耗的IO會比較多,但是配置速度比串行模式更快。
圖33 7 系列 FPGA 主站 BPI 配置接口 - 異步讀取示例
對應時序圖如圖34所示,上電后,當 FPGA 的 INIT_B 輸出變高時,采樣模式引腳 M[2:0] ,PUDC_B 引腳必須在整個 FPGA 配置過程中保持恒定的邏輯電平。Master BPI 配置模式確定后,F(xiàn)PGA 驅(qū)動閃存控制信號(flash輸出使能信號FOE_B 拉低,flash寫使能信號FWE_B拉高,flash片選信號FCS_B拉低)。雖然對于 BPI flash 異步讀取模式,CCLK 輸出沒有連接到 BPI flash 器件,但 FPGA 在 CCLK 上升沿之后輸出地址,且仍然在 CCLK 的下一個上升沿采樣數(shù)據(jù),BPI相關(guān)的時序參數(shù)還是以CCLK引腳為參考。
在主 BPI 模式下,地址從 0 開始并遞增 1,直到 DONE 引腳拉高。如果地址達到最大值 (29’h1FFFFFFF) 且配置未完成(DONE為低電平),則會在狀態(tài)寄存器中寫入錯誤標志,把RS0和RS1管腳拉低,并開始回退重新配置,如果不適用回退模式,則RS0和RS1引腳可以懸空。
圖34 7 系列 FPGA 主 BPI 配置 — 異步讀取波形
FPGA 通過其 A[n:00] 引腳驅(qū)動初始地址 (A00),并保持初始地址至少 10 個 CCLK 周期,對于上電配置,初始地址為 0x00000000。默認情況下,在 DONE 變?yōu)楦唠娖胶蟮囊粋€周期,多功能配置 I/O 切換到用戶模式。
7 系列 FPGA BPI 模式還支持異步頁模式讀取,以允許提高 CCLK 頻率。首次訪問頁面通常需要最長的時間(約 100 ns),后續(xù)訪問同一頁面所需的時間較短(約 25 ns)。這些參數(shù)可在 7 系列器件中進行位流編程,以利用頁面讀取并最大化 CCLK 頻率:頁面大小為1(默認)、4 或8。如果實際閃存頁面大小大于8,則應使用值8 以使效率最大化。首次訪問CCLK 周期為1(默認)、2、3 或4。如果頁面大小為1,則CCLK 周期必須為1。CCLK 頻率。
圖35 BPI 波形(頁面大小 = 4,首次訪問 CCLK = 2)
02同步讀取
注意:新設計不建議使用主 BPI 同步讀取模式,閃存芯片可能不支持該方式,需要聯(lián)系閃存廠家確認是否支持該方式讀寫。
7 系列 FPGA 主 BPI 配置模式可以選擇支持突發(fā)、同步讀取模式讀取比特流,如圖36所示,并在同步讀取模式支持。同步模式將來自 FPGA 的給定起始地址鎖存到其內(nèi)部地址計數(shù)器中,然后給定一個時鐘,閃存在每個時鐘周期內(nèi)將數(shù)據(jù)從下一個順序地址位置輸出到其數(shù)據(jù)總線。在同步讀取模式下,BPI 設備傳輸數(shù)據(jù)的速度比通過異步接口讀取快很多倍。
FPGA 以異步讀取模式啟動,使用默認的 CCLK 頻率,比特流標頭確定讀取模式是繼續(xù)異步還是切換到同步讀取模式。如果設置了 BPI_sync_mode 選項,比特流命令將啟動從異步讀取到同步讀取的切換。該選項有兩種可用設置:類型1用于設置 G18F 閃存系列同步和延遲位,類型2用于設置 P30/P33。同步模式的切換由 FPGA 控制器完成,該控制器對 BPI 閃存配置寄存器執(zhí)行異步寫入,將器件設置為同步模式并啟動比特流重讀。為了支持同步讀取模式,F(xiàn)PGA CCLK 輸出連接到 BPI 閃存器件,并且 ADV_B FPGA 信號必須連接到閃存 ADV 信號。
BPI 閃存配置寄存器同步位設置是易失性的,在斷電時或當 FPGA INIT_B 變低向 BPI 閃存發(fā)出復位時會被清除。
圖36 7 系列 FPGA Master BPI 配置接口同步讀取示例
與異步讀取模式相比,同步讀取模式增加了配置時鐘信號CCLK和ADV_B信號,其余信號連接方式保持不變。ADV_B信號為低電平時,表示地址線上輸出的數(shù)據(jù)有效。其時序與異步相似。
綜上所述,主BPI模式是用來并行讀取flash數(shù)據(jù)的,一般用于速度要求較高的場合,相比主SPI模式,增加了flash的數(shù)據(jù)輸出使能信號FOE_B,flash寫數(shù)據(jù)使能信號FWE_B,地址信號A[28:1],數(shù)據(jù)線由1~4位增加到了8位或者16位,同步方式還需要ADV_B地址有效指示信號。根據(jù)是否支持回退重配置功能,可能還需要RS0與RS1信號。
05JTAG配置模式
7 系列器件無論配置模式引腳設置如何,器件都支持隨時通過 JTAG 端口進行配置。但當要通過 JTAG 端口專門配置器件時,可以使用顯式 JTAG 配置模式設置。
對于單器件配置,如果使用 Xilinx 工具配置器件,則會自動發(fā)出 TAP 控制器命令。下載電纜必須連接到相應的四個 JTAG 引腳(TMS、TCK、TDI 和 TDO),以將比特流自動從計算機端口傳送到 7 系列 FPGA。這些工具會自動檢查連接是否正確,并驅(qū)動命令來傳送和驗證配置位是否得到正確管理。
圖 347顯示了典型的 JTAG 設置,其中需要將單個器件連接到 JTAG 信號接頭,該信號接頭可以在xilinx工具的控制下由處理器或 Xilinx 編程電纜驅(qū)動。TCK 是用于邊界掃描操作的時鐘, TDO-TDI 連接創(chuàng)建了一個串行數(shù)據(jù)路徑,用于通過 JTAG 鏈傳輸數(shù)據(jù), TMS 控制 TAP 控制器中狀態(tài)之間的轉(zhuǎn)換,這四個管腳內(nèi)部均有上拉電阻。
圖37 單個器件 JTAG 編程連接
可以在鏈中配置多個 7 系列設備,電路連接方式如圖38所示。
圖38 多器件邊界掃描鏈
對于JTAG配置的詳細流程會比較多,需要了解的可以查看硬件接口協(xié)議之“JTAG”(https://xilinx.eetrend.com/content/2019/100044971.html),或者直接查看Boundary-Scan for 7 Series Devices Using IEEE Standard 1149.1標準協(xié)議。
04總結(jié)
通過上述講解,可知xilinx7系列FPGA配置方式有7種,其中JTAG優(yōu)先級最高,在其他模式下也可以直接進行JTAG配置。然后六種其實可以根據(jù)外設區(qū)分,如果是flash對FPGA進行配置,那么FPGA只能作為主機,根據(jù)數(shù)據(jù)線的寬度可分為SPI模式和BPI模式,其中SPIx1和BPI模式支持菊花鏈方式。如果是用微處理器或者CPLD來配置FPGA,那么FPGA可以作為主機,也可以作為從機,根據(jù)數(shù)據(jù)線寬度可以分為主串行、從串行、主并行、從并行共4種配置模式,主從是根據(jù)FPGA的時鐘方向確定的,F(xiàn)PGA作為主機,則輸出配置時鐘信號CCLK。從串行、從并行支持菊花鏈配置模式,并行模式數(shù)據(jù)線可以為8位、16位、32位,在同步之前需要通過自動檢測數(shù)據(jù)線位寬。
關(guān)于回讀,回退重新配置等操作沒有做講解,使用的頻率較低,需要的可以閱讀UG470手冊,另外要注意zynq系列的配置方式與純PL的器件也有區(qū)別,zynq器件除JTAG以外不能對PL單獨配置,必須通過PS去配置PL,麻煩一點。
-
FPGA
+關(guān)注
關(guān)注
1650文章
22214瀏覽量
627647 -
原理圖
+關(guān)注
關(guān)注
1335文章
6418瀏覽量
243531 -
Xilinx
+關(guān)注
關(guān)注
73文章
2190瀏覽量
129121 -
引腳
+關(guān)注
關(guān)注
16文章
1995瀏覽量
54632
原文標題:誰說配置難?這篇文章讓你輕松掌握xilinx 7系列FPGA配置技巧
文章出處:【微信號:FPGA研究院,微信公眾號:FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
Xilinx 7系列FPGA的時鐘結(jié)構(gòu)解析

Xilinx 7系列FPGA管腳是如何定義的?
xilinx7系列FPGA的7種邏輯代碼配置模式

Xilinx 7系列FPGA可配置邏輯塊的用戶指南

Xilinx 7 系列FPGA中的Serdes總結(jié)
一文詳解Xilin的FPGA時鐘結(jié)構(gòu)
Xilinx 7系列與Ultrascale系列FPGA的區(qū)別

Xilinx 7系列FPGA PCIe Gen3的應用接口及特性

評論