以下文章來(lái)源于數(shù)字站
本文旨在通過(guò)講解不同模式的原理圖連接方式,進(jìn)而配置用到引腳的含義(手冊(cè)上相關(guān)引腳含義有四、五頁(yè),通過(guò)本文理解基本上能夠記住所有引腳含義以及使用場(chǎng)景),熟悉xilinx 7系列配置流程,以及設(shè)計(jì)原理圖時(shí)需要注意的一些事項(xiàng),比如flash與FPGA的上電時(shí)序。
xilinx配置相關(guān)的引腳主要集中在bank0,bank14、bank15也存在一些輔助配置引腳,配置的模式主要由bank0上面的M[2:0]三個(gè)引腳的狀態(tài)決定,總共存在7種不同的配置方式(因?yàn)镸[2:0]=3’b011不存在),因?yàn)镸[2:0]三個(gè)引腳內(nèi)部有上拉電阻,所以默認(rèn)是從串行配置模式(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 | 無(wú)效 |
| Slave SelectMAP | 110 | X8,X16,X32 | 輸入 |
| Slave Serial | 111 | X1 | 輸入 |
注意:如果M[2:0]為101,則該FPGA只支持JTAG進(jìn)行配置。處于其余配置模式下時(shí),依舊可以使用JTAG模式進(jìn)行調(diào)試,并且優(yōu)先級(jí)最高。
一般必然存在的JTAG調(diào)試模式,另外使用較多的是主SPI模式和從串行配置模式,后面主要講解這幾種配置,其余并行配置模式由于消耗引腳較多,一般不會(huì)使用,與這幾種串行模式的區(qū)別僅在于數(shù)據(jù)引腳的區(qū)別,需要了解的可以自行查看ug470手冊(cè),下載地址如下,或者在后臺(tái)回復(fù)ug470即可獲取。
xilinx.com/content/dam/xilinx/support/documents/user_guides/ug470_7Series_Config.pdf
不同模式只有一些用于傳輸數(shù)據(jù)的引腳不同,都會(huì)使用一些相同的控制信號(hào),并且在不同模式下這些信號(hào)功能基本一致。
01共用控制信號(hào)
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。當(dāng)然可以加上拉和下拉電阻。

圖1 bank0電壓配置
02PROGRAM_B引腳
這個(gè)引腳可以清除FPGA內(nèi)部的所有配置信息,讓FPGA回到配置狀態(tài),重新進(jìn)行配置,低電平有效。但注意在上電時(shí)把PROGRAM_B 保持為低電平不會(huì)使 FPGA 配置保持復(fù)位狀態(tài),延遲配置的時(shí)間需要使用INIT_B信號(hào)配合完成,后續(xù)講解上電配置時(shí)詳細(xì)說(shuō)明。PROGRAM_B 引腳外部需要通過(guò)4.7KΩ以上的電阻上拉至VCC。相關(guān)連接如圖1所示原理圖中該管腳外部通過(guò)4.7KΩ上拉電阻接到VCC,并且將該信號(hào)引出,便于其他控制器可以控制ARM的配置。
03INIT_B引腳
FPGA 初始化引腳或配置錯(cuò)誤信號(hào),低電平有效。當(dāng) FPGA 處于配置復(fù)位狀態(tài)或當(dāng) FPGA 正在初始化(清除)其配置存儲(chǔ)器(PROGRAM_B信號(hào)為低電平)時(shí)或當(dāng) FPGA 檢測(cè)到配置錯(cuò)誤時(shí),F(xiàn)PGA 會(huì)將該引腳驅(qū)動(dòng)為低電平。在上電期間,可以通過(guò)將該引腳拉低,來(lái)延遲上電配置程序的時(shí)間。當(dāng)完成初始化后,該引腳被釋放,外部上拉電阻將該引腳拉高,當(dāng)檢測(cè)到該信號(hào)上升沿之后,F(xiàn)PGA會(huì)讀取M[2:0]引腳狀態(tài),從而確定后續(xù)采用哪種配置方式進(jìn)行配置。故該引腳外部也需要通過(guò)4.7KΩ的電阻上拉到VCC。
04DONE引腳
該信號(hào)高電平表示FPGA配置序列完成,默認(rèn)情況下,該引腳為開(kāi)漏輸出,內(nèi)部有一個(gè)不大于10KΩ的上拉電阻,外部只需要通過(guò)一個(gè)330Ω的電阻上拉即可。
05PUDC_B引腳
該引腳的狀態(tài)決定在配置期間非專(zhuān)用配置IO的狀態(tài),如果該引腳接高電平,則這部分IO設(shè)置為高阻態(tài),如果該引腳為低電平,則這部分引腳被上拉輸出高電平。該引腳外部通過(guò)1KΩ電阻上拉到VCCO_14或者下拉到GND。注意該引腳不能懸空,連接如圖2所示。

圖2 pudc_b信號(hào)上下拉配置
06VCCBATT引腳
該引腳是FPGA內(nèi)部易失性存儲(chǔ)器的電池備用電源,用于存儲(chǔ)AES解密器的密鑰,如果不需要使用AES易失性密鑰存儲(chǔ)區(qū)域中的解密器密鑰,那么將該引腳接地就行,該引腳不是I/O,不受VCCO_0的影響。了解該引腳功能即可,一般都用作接地處理。
不管采用何種配置方式,上述5個(gè)信號(hào)均具有相同功能,并且必須進(jìn)行設(shè)置,不能懸空處理,接下來(lái)就可以看一下具體的上電配置流程,同樣,不管是何種配置方式,上電配置流程均相同,配置模式只能影響接收發(fā)送數(shù)據(jù)的方式。
02配置流程
配置流程包含三個(gè)大步驟(復(fù)位,加載程序,初始化啟動(dòng)),分為8個(gè)小步驟,如圖3所示:

圖3 7系列FPGA配置步驟
01設(shè)備上電
這部分主要涉及到不同電源軌上電時(shí)序的要求,不同系列上電要求不一致,需要參考對(duì)應(yīng)手冊(cè)的上電時(shí)序。電源的種類(lèi)如圖4所示。

圖4 電源種類(lèi)
上圖對(duì)應(yīng)的電源種類(lèi)一般位于電源bank上,原理圖如圖5所示,Vccint為內(nèi)核電源,另外有給AES加密和BRAM供電的電源,還有bank0的供電電源,ban14和bank15輔助配置供電電源,最后還有各個(gè)IO bank供電引腳。

圖5 電源bank
02清除配置內(nèi)存
如圖6所示,在上電期間,program_b引腳拉低,F(xiàn)PGA的配置存儲(chǔ)器按順序清零,BRAM被重置為初始狀態(tài),觸發(fā)器通過(guò)全局置位(GSR)重置被初始化。在此期間,除了少數(shù)配置引腳之外,其余IO通過(guò)全局三態(tài)將I/O置為高阻態(tài),如果pudg_b為低電平,則這些IO內(nèi)部上拉電阻使能,輸出高電平。上電配置時(shí),init_b信號(hào)在初始化期間被內(nèi)部驅(qū)動(dòng)輸出低電平,經(jīng)過(guò)Tpor時(shí)間后釋放。

圖6 上電清除時(shí)序
如果不是上電,其余情況的初始化如圖7所示,將program_b引腳拉低,初始化配置存儲(chǔ)器,持續(xù)時(shí)間由Tprogram決定。一直把program_b信號(hào)拉低是無(wú)法讓FPGA停留在初始化過(guò)程的,想要停留在這個(gè)過(guò)程中只能通過(guò)把init_b信號(hào)保持為低電平來(lái)實(shí)現(xiàn)延遲初始化過(guò)程。如果init_b引腳外部保持低電平,則器件在初始化過(guò)程中等待,直到引腳釋放,滿(mǎn)足TpoR或TPL延遲。

圖7 上電配置復(fù)位時(shí)序
這里需要注意一個(gè)上電順序的點(diǎn):
上電時(shí),F(xiàn)PGA會(huì)自動(dòng)開(kāi)始其配置過(guò)程,當(dāng)FPGA處于主機(jī)串行SPI配置模式時(shí),F(xiàn)PGA將FCS_B置為低電平,選擇SPI閃存,并向SPI閃存發(fā)送讀取命令。在FPGA將FCS_B驅(qū)動(dòng)為低電平并發(fā)送讀取命令之前,SPI閃存必須處于喚醒狀態(tài)并準(zhǔn)備好接收命令。
由于不同的電源軌可以為FPGA和SPI閃存供電,或者因?yàn)镕PGA和SPI閃存可以沿著共享電源的斜坡在不同的時(shí)間做出響應(yīng),因此必須特別注意FPGA和SPI閃存的上電順序或上電斜坡。上電順序或電源斜坡可能會(huì)導(dǎo)致FPGA在Flash完全上電之前啟動(dòng),反之亦然。此外,一些SPI閃存設(shè)備指定了一個(gè)最短時(shí)間段,該時(shí)間段從通電開(kāi)始可能是幾毫秒,在此期間不得選擇該設(shè)備。對(duì)于許多具有近乎同時(shí)的電源斜坡的系統(tǒng),F(xiàn)PGA上電重置時(shí)間(TpoR)可以充分延遲FPGA配置過(guò)程的開(kāi)始,使得SPI閃存在FPGA配置過(guò)程開(kāi)始之前就準(zhǔn)備好了。一般系統(tǒng)設(shè)計(jì)必須考慮電源順序、電源斜坡、FPGA上電復(fù)位時(shí)序和SPI閃存上電時(shí)序?qū)﹂_(kāi)始配置和SPI閃存就緒之間的時(shí)序關(guān)系的影響。
03采樣模式引腳狀態(tài)

圖8 采樣模式引腳
在init_b引腳上升沿時(shí),F(xiàn)PGA采集模式引腳M[2:0]的狀態(tài),確定采用何種配置模式,如果是主機(jī)模式,則開(kāi)始驅(qū)動(dòng)CCLK輸出時(shí)鐘信號(hào),之后FPGA在CCLK時(shí)鐘的上升沿采集數(shù)據(jù)輸入引腳的數(shù)據(jù)。BPI和SelectMAP模式,總線寬度初始為8,在總線寬度檢測(cè)序列之后,更新?tīng)顟B(tài)寄存器,更新到對(duì)應(yīng)的總線寬度。
04Synchronization

圖9 自動(dòng)檢測(cè)位寬
對(duì)于BPI、Slave SelectMAP和Master SelectMAP這些并行模式,狀態(tài)寄存器默認(rèn)使用8位總線,需要經(jīng)過(guò)自動(dòng)檢測(cè)之后,才能夠確定其使用總線的具體位寬,所以在初始化之后,在傳輸配置數(shù)據(jù)之前,要確定具體的總線位寬。從機(jī)串口、主機(jī)串口、SPI和JTAG模式會(huì)忽略總線寬度檢測(cè)模式。
自動(dòng)檢測(cè)總線位寬的方式
Xilinx工具生成的所有配置文件都包括總線寬度自動(dòng)檢測(cè)模式,如果模式引腳設(shè)置為主機(jī)串行、從機(jī)串行、JTAG或SPI模式,則配置邏輯會(huì)忽略這些模式。FPGA其實(shí)是通過(guò)2個(gè)32位的數(shù)據(jù)來(lái)判斷總線位寬的,如下表所示,根據(jù)總線低8位數(shù)據(jù)狀態(tài)來(lái)確定總線實(shí)際位寬,如果第一次檢測(cè)低八位數(shù)據(jù)為0xBB,第二次檢測(cè)到數(shù)據(jù)為0x11,則該總線每次傳輸八位數(shù)據(jù),即總線位寬為8位。如果第一次檢測(cè)數(shù)據(jù)為0xBB,第二次檢測(cè)數(shù)據(jù)為0x22,則總線每次傳輸16位數(shù)據(jù),即總線位寬為16位。如果第一次檢測(cè)為0xBB,第二次檢測(cè)數(shù)據(jù)為0x44,則總線每次傳輸32位數(shù)據(jù),即總線位寬為32位。
如果0xBB之后的數(shù)據(jù)不是0x11、0x22或0x44,則會(huì)重新檢測(cè)下一個(gè)0xBB,直到找到有效序列為止。確認(rèn)外部總線寬度后,切換到對(duì)應(yīng)的總線寬度并鎖定。
表2 自動(dòng)檢測(cè)位寬數(shù)據(jù)

然后,必須向配置邏輯發(fā)送一個(gè)特殊的32位同步字(0xAA995566),提醒器件即將到來(lái)的配置數(shù)據(jù),并將配置數(shù)據(jù)與內(nèi)部配置邏輯對(duì)齊。同步前配置輸入引腳上的任何數(shù)據(jù)都會(huì)被忽略,自動(dòng)檢測(cè)總線位寬序列除外。
可以通過(guò)兩個(gè)寄存器的狀態(tài)確定同步是否成功以及總線寬度,如圖10所示。

圖10 與同步有關(guān)的信號(hào)
05檢查設(shè)備ID

圖11 檢測(cè)設(shè)備ID
設(shè)備同步后,必須先通過(guò)設(shè)備ID檢查,然后才能加載配置數(shù)據(jù)幀。這可防止使用針對(duì)不同設(shè)備格式化的比特流進(jìn)行配置。如果在配置過(guò)程中發(fā)生ID錯(cuò)誤,設(shè)備將嘗試執(zhí)行回退重新配置。
設(shè)備ID檢查是通過(guò)配置邏輯文件中的命令執(zhí)行的,而不是通過(guò)JTAG IDCODE寄存器執(zhí)行。
7系列FPGA JTAG ID代碼寄存器的格式如下:
vvvv:fffffff:aaaaaaaaa:ccccccccccccc1 //其中:V=版本 f=7位系列
代碼 A=9位陣列代碼(包括4位子系列和5位設(shè)備代碼) C=公司代碼
06加載配置數(shù)據(jù)
當(dāng)總線位寬檢測(cè)和同步完成,并且設(shè)備ID正確之后,就該加載配置數(shù)據(jù)了,不同模式按照不同的總線加載數(shù)據(jù)即可。

圖12 加載配置數(shù)據(jù)
07CRC校驗(yàn)

圖13 CRC校驗(yàn)
這個(gè)流程沒(méi)有什么介紹的,就是計(jì)算接收數(shù)據(jù)的CRC校驗(yàn)和,與配置文件中的校驗(yàn)和進(jìn)行對(duì)比,一致則傳輸正確,不同則將init_b信號(hào)拉低后終止配置。
08啟動(dòng)

圖14 啟動(dòng)
加載配置幀后,比特流指示設(shè)備進(jìn)入啟動(dòng)序列。啟動(dòng)序列需要做一些操作,第一步可以選擇是否等待MMCM時(shí)鐘管理單元鎖定和DCI匹配(一般這兩個(gè)都不用關(guān)心),第二步釋放done引腳,通過(guò)外部上拉電阻變?yōu)楦唠娖剑谌结尫臛TS信號(hào),也就是啟用除少數(shù)配置引腳之外的所有I/O,第四步使能全局寫(xiě)入啟用信號(hào)(GWE),該信號(hào)使能后,CLB和IO管理單元里面的觸發(fā)器和RAM就可以根據(jù)初始化的值改變狀態(tài)了,第五步就是使能EOS信號(hào)表示配置和啟動(dòng)過(guò)程均結(jié)束。前四步的順序可以在軟件設(shè)置里面進(jìn)行調(diào)整,但第五步是固定的,對(duì)應(yīng)時(shí)序圖如圖15所示。

圖15 配置信號(hào)排序(默認(rèn)啟動(dòng)設(shè)置)
上述就是一個(gè)完整的配置步驟,了解這個(gè)過(guò)程之后,就能夠具體了解整個(gè)上電流程的時(shí)序,以及前面講解5個(gè)通用配置管腳的功能,能夠知道在配置期間其余IO的狀態(tài)。
03配置方式
由2.3小節(jié)知,在init_b上升沿時(shí),通過(guò)采集模式引腳M[2:0]狀態(tài)確定此次的配置方式,不同配置會(huì)使用不同的管腳(2.6步驟所使用引腳)來(lái)傳輸數(shù)據(jù)。
01主、從串行配置
串行模式分為主串行模式(FPGA作為主機(jī),模式引腳狀態(tài)M[2:0]=3’b000)和從串行模式(FPGA作為從機(jī),模式引腳狀態(tài)M[2:0]=3’b111),區(qū)別在于配置數(shù)據(jù)的時(shí)鐘引腳CCLK方向不同。從串行模式,CCLK作為輸入信號(hào),對(duì)應(yīng)原理圖配置如圖16所示。

圖16 從串行配置模式原理圖
不管是什么模式,一般都會(huì)帶有JTAG(一般也會(huì)存在TCK、TMS、TDI、TDO這四個(gè)JTAG引腳)。通過(guò)上圖可知,單個(gè)FPGA通過(guò)從串行配置除了1節(jié)講到的通用引腳之外,該配置只使用到了時(shí)鐘引腳CCLK和數(shù)據(jù)輸入管腳DIN,這兩個(gè)引腳用于在2.6小節(jié)配置過(guò)程中加載數(shù)據(jù),進(jìn)而完成配置。
上述連接的優(yōu)勢(shì)在于,ARM或者CPLD可以通過(guò)拉低program_b引腳,來(lái)重新配置FPGA,當(dāng)done引腳為高電平表示FPGA已經(jīng)配置完成,另外消耗的引腳極少。
從din引腳輸入的數(shù)據(jù),會(huì)通過(guò)dout引腳輸出,所以可以通過(guò)菊花鏈的方式,使用一片ARM或者CPLD達(dá)到配置多片F(xiàn)PGA的目的,連接方式如圖17所示,多片F(xiàn)PGA的配置引腳連在一起,配置數(shù)據(jù)會(huì)在前一片F(xiàn)PGA的配置時(shí)鐘下降沿從DOUT引腳輸出,后一片F(xiàn)PGA可以在配置時(shí)鐘下個(gè)時(shí)鐘上升沿從DIN引腳采集數(shù)據(jù),從而達(dá)到配置多片F(xiàn)PGA的目的。

圖17 從串行模式菊花鏈配置多片F(xiàn)PGA
當(dāng)然還可以直接將數(shù)據(jù)線也全部并聯(lián),如圖18所示,這種并行配置要求所連接的FPGA型號(hào)必須完全相同,且配置相同代碼。

圖18 并行配置原理圖
主串行模式與從串行模式的引腳連接基本一致,上電時(shí)序也基本一致,如圖19所示,但有兩點(diǎn)區(qū)別:其一,主機(jī)模式的CCLK對(duì)于FPGA來(lái)說(shuō)是輸出管腳,該管腳在init_b拉高后才開(kāi)始輸出時(shí)鐘序列,而從機(jī)模式下CCLK信號(hào)作為FPGA輸入信號(hào),對(duì)時(shí)鐘序列持續(xù)時(shí)間沒(méi)有要求。其二,由于主機(jī)模式配置時(shí)鐘管腳CCLK作為輸出信號(hào),多片F(xiàn)PGA不能共用配置時(shí)鐘信號(hào),所以主機(jī)模式下不能實(shí)現(xiàn)菊花鏈功能。

圖19 主、從串行模式配置時(shí)序
綜上,主、從串行配置模式,除了通用的配置管腳和JTAG配置管腳之外,需要使用配置時(shí)鐘CCLK和配置輸入數(shù)據(jù)引腳DIN,如果需要使用菊花鏈配置多片F(xiàn)PGA,那么還會(huì)用到配置數(shù)據(jù)輸出引腳DOUT。
02主SPI模式
此模式應(yīng)該是altera和xilinx的FPGA配置最常用的模式,根據(jù)配置數(shù)據(jù)線不同可分為SPIX1、SPIX2、SPIX4三類(lèi)。因?yàn)榕渲脭?shù)據(jù)輸出管腳DOUT只有一位,故只有SPIX1支持菊花鏈配置,該配置對(duì)應(yīng)原理圖如圖20所示。

圖20 主SPI x1/x2時(shí)序圖
使用FCS_B引腳作為flash閃存的片選信號(hào),CCLK作為配置時(shí)鐘信號(hào),DIN引腳作為數(shù)據(jù)輸入引腳,而MOSI引腳作為FPGA數(shù)據(jù)輸出引腳,向flash發(fā)送相關(guān)指令,然后獲取配置數(shù)據(jù)。默認(rèn)情況下,在配置時(shí)鐘CCLK上升沿?cái)?shù)據(jù)通過(guò)DIN引腳輸入FPGA,在CCLK下降沿?cái)?shù)據(jù)通過(guò)DOUT引腳輸出FPGA,因此菊花鏈連接方式依舊是使用前一片F(xiàn)PGA的DOUT引腳連接后一片F(xiàn)PGA的DIN引腳,如圖21所示。

圖21 主SPI模式菊花鏈配置
注意:一個(gè)配置系統(tǒng)只允許存在一個(gè)主機(jī),因?yàn)樗衅骷呐渲脮r(shí)鐘CCLK信號(hào)必須要共用,所以第一片F(xiàn)PGA采用主SPI配置,其余FPGA采用從串行配置方式,體現(xiàn)在上圖的模式引腳M[2:0]的狀態(tài)。
SPI配置的時(shí)序如圖22所示,在同步和檢驗(yàn)設(shè)備ID之后,先發(fā)送8位讀命令,然后發(fā)送24位讀地址數(shù)據(jù),8個(gè)配置時(shí)鐘周期之后,DIN引腳開(kāi)始傳輸配置數(shù)據(jù)。CCLK在Configrate之前為3MHz,在Configrate期間會(huì)提高數(shù)據(jù)傳輸頻率。

圖22 7系列FPGA SPI x1模式序列
7系列FPGA的主SPI配置模式支持雙路和四路快速讀取操作,F(xiàn)PGA首先將快速讀取操作碼(0x0B)傳輸?shù)絊PI,然后讀取命令以更改比特流早期部分的數(shù)據(jù)寬度。然后,F(xiàn)PGA向SPI設(shè)備發(fā)出用于雙路(操作碼0x3B)或四路(0x6B)讀取操作的新讀取命令,并開(kāi)始讀取適當(dāng)?shù)臄?shù)據(jù)寬度。
SPI X 4的原理圖連接如下所示,此處的MOSI引腳在發(fā)送0x6B之后就會(huì)變?yōu)檩斎霐?shù)據(jù)的最低位D[0],與其他三根數(shù)據(jù)線構(gòu)成輸入數(shù)據(jù)線,其余與SPIx1方式相同,只是不能使用菊花鏈方式進(jìn)行配置了。

圖23 7系列FPGA SPI x4模式序列
綜上,主SPI模式處理通用配置引腳和JTAG調(diào)試引腳外,與配置相關(guān)的就片選引腳FCS_B,配置時(shí)鐘CCLK,數(shù)據(jù)輸入DIN,數(shù)據(jù)輸出MOSI,菊花鏈數(shù)據(jù)輸出DOUT。原理圖設(shè)計(jì)時(shí)需要特別注意DOUT與MOSI是兩個(gè)不同引腳,功能也不相同。如果是SPIx2在發(fā)送0x3B之后,會(huì)以2位數(shù)據(jù)寬度讀取flash閃存里的數(shù)據(jù),MOSI變?yōu)檩斎霐?shù)據(jù)的最低位D[0],而數(shù)據(jù)輸入管腳DIN作為數(shù)據(jù)輸入的D[1],由此SPIx2與SPIx1的原理圖設(shè)計(jì)是相同的。如果是SPIx4則需要在SPIx2的基礎(chǔ)上增加兩位數(shù)據(jù)線D[3]和D[4]連接到flash。
前面提到默認(rèn)是在時(shí)鐘上升沿采集數(shù)據(jù),但是可以通過(guò)設(shè)置在時(shí)鐘下降沿采集數(shù)據(jù),一般不會(huì)用到,需要了解的查看UG470手冊(cè)即可。
03主、從SelectMAP配置模式
SelectMAP配置接口為7系列FPGA配置邏輯提供8位、16位或32位雙向數(shù)據(jù)總線接口,可用于配置和回讀。數(shù)據(jù)總線的回讀和讀方向僅適用于從SelectMAP模式,根據(jù)配置器件的數(shù)量不同,一般分為三種單器件配置,多器件串聯(lián)菊花鏈配置,多個(gè)相同器件并聯(lián)配置相同程序。

01單器件配置
這種配置方式一般使用微處理器或者CPLD來(lái)配置單個(gè)7系列器件,可以使用主SelectMAP模式(使用來(lái)自FPGA的CCLK)或從SelectMAP模式(如下圖24),一般首選從SelectMAP模式,因?yàn)樵撃J街С只刈x。關(guān)于該模式下微處理器的控制方式可以參考XAPP583手冊(cè)。

圖24 單從機(jī)選擇微處理器或CPLD中的MAP配置
由于D[31:0]這32位數(shù)據(jù)線分布在bank14和bank15,所以需要配置這兩個(gè)bank電源VCCO_14、VCCO_15。CSI_B信號(hào)作為片選信號(hào),用來(lái)指示數(shù)據(jù)線和RDWR_B的信號(hào)是否有效,如果該信號(hào)為高電平,則D[31:0]被視為高阻狀態(tài),通過(guò)控制該信號(hào)可以連續(xù)配置數(shù)據(jù)或者間斷的配置數(shù)據(jù)。由于數(shù)據(jù)線D[31:0]是雙向的,需要通過(guò)RDWR_B信號(hào)狀態(tài)判斷數(shù)據(jù)線作為輸入還是輸出,因此可以通過(guò)控制該信號(hào)狀態(tài)來(lái)控制寫(xiě)入或者讀出數(shù)據(jù),從而可以實(shí)現(xiàn)數(shù)據(jù)回讀,如果不需要回讀,可以把該引腳接地處理。
在從配置模式下,當(dāng)CSI_B為低電平時(shí),如果RDWR_B的值從低電平變?yōu)楦唠娖綍?huì)終止配置,并且將數(shù)據(jù)線異步更改為輸出。當(dāng)CSI_B為低電平時(shí),將RDWR_B的值從高變?yōu)榈蜁?huì)終止回讀,并且將數(shù)據(jù)線異步更改為輸入。故CSI_B使能時(shí),RDWR_B信號(hào)狀態(tài)不能發(fā)生變化。
連續(xù)配置時(shí)序如圖25所示,上電后,配置控制器設(shè)置寫(xiě)控制的RDWR_B信號(hào)(RDWR_B=0),并使能CSI_B信號(hào)(CSI_B=0)。在使能CSI_B之前,RDWR_B必須被驅(qū)動(dòng)為低電平并保持不變,否則會(huì)終止配置。在下一個(gè)CCLK上升沿,F(xiàn)PGA開(kāi)始采樣數(shù)據(jù)引腳[7:0]狀態(tài),自動(dòng)匹配數(shù)據(jù)總線寬度,直到確定總線寬度為止。之后對(duì)數(shù)據(jù)總線的適當(dāng)寬度進(jìn)行采樣,以用于同步字搜索,同步完成后,配置開(kāi)始。加載配置比特流完成后,器件進(jìn)入啟動(dòng)序列。在比特流指定的啟動(dòng)序列階段,F(xiàn)PGA將其DONE置為高電平??刂破鲬?yīng)繼續(xù)發(fā)送CCLK脈沖,直到啟動(dòng)序列完成。(根據(jù)2.8小節(jié)知在Done變?yōu)楦唠娖胶?,可能需要幾個(gè)CCLK脈沖)。
配置后,CSI_B和RDWR_B信號(hào)可以拉高,也可以保持使能,由于SelectMAP端口處于非活動(dòng)狀態(tài),此時(shí)切換RDWR_B不會(huì)導(dǎo)致終止配置。

圖25 連續(xù)x8 SelectMAP數(shù)據(jù)加載
如果控制器無(wú)法提供連續(xù)的數(shù)據(jù)流,那么可以使用非連續(xù)的數(shù)據(jù)加載方式,這種方式可以通過(guò)兩種方式實(shí)現(xiàn)。方法一是通過(guò)拉高CSI_B信號(hào)(如圖26所示),第二種方法是通過(guò)停止生成CCLK實(shí)現(xiàn)(如圖27所示)。
如圖26,在3、4、7、8、10、11、12的CCLK上升沿處,CSI_B信號(hào)使能,加載一個(gè)配置數(shù)據(jù),而5、6、9處CSI_B信號(hào)被拉高,該處數(shù)據(jù)無(wú)效,不會(huì)加載配置數(shù)據(jù),從而實(shí)現(xiàn)非連續(xù)數(shù)據(jù)加載。

圖26 通過(guò)CSI_B控制的非連續(xù)SelectMAP數(shù)據(jù)加載
如圖27所示,CSI_B片選和RDWR_B信號(hào)的狀態(tài)保持正常,通過(guò)改變CCLK時(shí)鐘寬度,更改CCLK上升沿位置,從而實(shí)現(xiàn)非連續(xù)的數(shù)據(jù)加載。

圖27 通過(guò)控制CCLK的非連續(xù)SelectMAP數(shù)據(jù)加載

02配置多個(gè)相同器件
根據(jù)是否需要回讀,依舊有兩種配置方式,如圖28所示支持回讀FPGA配置數(shù)據(jù),通過(guò)將多片F(xiàn)PGA的數(shù)據(jù)線D和配置時(shí)鐘CCLK以及數(shù)據(jù)線方向控制i新年好PDWR_B連接在一起實(shí)現(xiàn),由于需要回讀操作,即需要FPGA輸出數(shù)據(jù),那么多片F(xiàn)PGA不能存在同時(shí)驅(qū)動(dòng)同一組數(shù)據(jù)線的情況,所以多片F(xiàn)PGA的片選信號(hào)CSI_B必須分開(kāi)連接到ARM或者CPLD,否則可能會(huì)燒毀器件。

圖28 8位SelectMAP總線上的多從設(shè)備配置(一)
這種方法的劣勢(shì)在于需要多個(gè)片選信號(hào),優(yōu)勢(shì)在于通過(guò)控制CSI_B信號(hào)可以給多片F(xiàn)PGA分別燒寫(xiě)不同的配置程序,而且支持回讀功能。
另一種不需要使用回讀功能的配置方式如圖29所示,數(shù)據(jù)線和時(shí)鐘線與圖28連接一致,將片選CSI_B和方向信號(hào)PDWR_B均接地。

圖29 8位SelectMAP總線上的多從設(shè)備配置(二)
這種方式的優(yōu)勢(shì)在于節(jié)省了控制多個(gè)片選信號(hào)CSI_B的引腳,缺點(diǎn)在于多個(gè)器件只能配置相同程序,且不支持回讀。

03菊花鏈配置多個(gè)器件
并行器件的菊花鏈配置方式如圖30所示,注意第一個(gè)器件可以是主BPI、主SelectMAP、從SelectMAP三種配置之一,但后續(xù)器件必須采用從SelectMAP配置模式,該配置方式不支持回讀和回退操作。

圖30 并聯(lián)菊花鏈
注意上圖中D[15:00]、CCLK、RDWR_B、PROGRAM_B、DONE、INIT_B均連接在一起,菊花鏈?zhǔn)峭ㄟ^(guò)一路片選信號(hào)FCS_B或者CSI_B進(jìn)行控制的,CSO_B會(huì)把CSI_B的信號(hào)輸出,所以上一片F(xiàn)PGA的CSO_B引腳連接到下一片F(xiàn)PGA的SCS_B引腳就能實(shí)現(xiàn)菊花鏈控制。關(guān)于BPI控制在3.4節(jié)講解。
綜上,SelectMAP配置相比串行配置區(qū)別在于數(shù)據(jù)線數(shù)量增加且變?yōu)殡p向,需要PDWR_B信號(hào)控制數(shù)據(jù)線方向,還增加了一個(gè)片選信號(hào)CSI_B,菊花鏈的連接方式也由數(shù)據(jù)信號(hào)DIN變?yōu)榭刂破x信號(hào)CSI_B。在配置期間會(huì)相對(duì)串行會(huì)增加一個(gè)自動(dòng)檢測(cè)總線寬度的流程,之后才會(huì)對(duì)同步數(shù)據(jù),然后傳輸配置數(shù)據(jù),在從SelectMAP模式下還可以支持回讀和非連續(xù)性傳輸配置數(shù)據(jù)。
編寫(xiě)微控制器或者CPLD程序時(shí)需要注意,在SelectMAP x8模式下,每個(gè)CCLK加載一個(gè)字節(jié)配置數(shù)據(jù),每個(gè)字節(jié)的MSB提供給D0引腳。圖31顯示了如何將十六進(jìn)制值0xABCD加載到SelectMAP數(shù)據(jù)總線中。

圖31 SelectMAP 8位模式的位排序
圖32顯示了7系列FPGA SelectMAP x8、x16和x32數(shù)據(jù)總線寬度的位排序。

圖32 位排序
04主BPI配置
7 系列 FPGA Master BPI 配置模式支持使用行業(yè)標(biāo)準(zhǔn)并行 NOR (BPI) 閃存器件進(jìn)行比特流存儲(chǔ)。FPGA 支持直接連接到 BPI 閃存的地址、數(shù)據(jù)和控制信號(hào),以提取存儲(chǔ)的比特流。
注意,某些所需的引腳位于組 15 中,Artix-7 7A50T 和較小器件的 CPG236 封裝不進(jìn)行綁定Bank 15,因此不支持 BPI 配置。Spartan-7 系列不支持 BPI 配置。
7系列FPGA Master BPI配置模式有兩種可用的BPI閃存讀取模式:異步和同步。與其他直接配置模式相比,使用帶有外部主時(shí)鐘的 BPI 閃存同步讀取模式可以實(shí)現(xiàn)更快的配置時(shí)間。此外,可通過(guò)多達(dá) 29 條地址線訪問(wèn)更寬密度范圍的并行 NOR 閃存。

01異步讀取
在Master BPI配置模式下,7系列FPGA默認(rèn)使用BPI flash異步讀取模式來(lái)讀取比特流數(shù)據(jù),如圖33所示。FPGA從給定的起始地址驅(qū)動(dòng)地址總線,BPI flash發(fā)回比特流數(shù)據(jù),默認(rèn)起始地址是地址 0。此模式下配置時(shí)鐘CCLK信號(hào)不需要連接,INIT_B信號(hào)作為flash的復(fù)位信號(hào),F(xiàn)WE_B作為flash的寫(xiě)使能信號(hào),F(xiàn)OE_B信號(hào)作為flash芯片的輸出使能信號(hào),而FCS_B作為flash芯片的片選信號(hào),注意對(duì)配置相關(guān)信號(hào)帶有后綴_B的表示低電平有效。該配置方式數(shù)據(jù)位寬支持8位及16位,地址線有29位,消耗的IO會(huì)比較多,但是配置速度比串行模式更快。

圖33 7 系列 FPGA 主站 BPI 配置接口 - 異步讀取示例
對(duì)應(yīng)時(shí)序圖如圖34所示,上電后,當(dāng) FPGA 的 INIT_B 輸出變高時(shí),采樣模式引腳 M[2:0] ,PUDC_B 引腳必須在整個(gè) FPGA 配置過(guò)程中保持恒定的邏輯電平。Master BPI 配置模式確定后,F(xiàn)PGA 驅(qū)動(dòng)閃存控制信號(hào)(flash輸出使能信號(hào)FOE_B 拉低,flash寫(xiě)使能信號(hào)FWE_B拉高,flash片選信號(hào)FCS_B拉低)。雖然對(duì)于 BPI flash 異步讀取模式,CCLK 輸出沒(méi)有連接到 BPI flash 器件,但 FPGA 在 CCLK 上升沿之后輸出地址,且仍然在 CCLK 的下一個(gè)上升沿采樣數(shù)據(jù),BPI相關(guān)的時(shí)序參數(shù)還是以CCLK引腳為參考。
在主 BPI 模式下,地址從 0 開(kāi)始并遞增 1,直到 DONE 引腳拉高。如果地址達(dá)到最大值 (29’h1FFFFFFF) 且配置未完成(DONE為低電平),則會(huì)在狀態(tài)寄存器中寫(xiě)入錯(cuò)誤標(biāo)志,把RS0和RS1管腳拉低,并開(kāi)始回退重新配置,如果不適用回退模式,則RS0和RS1引腳可以懸空。

圖34 7 系列 FPGA 主 BPI 配置 — 異步讀取波形
FPGA 通過(guò)其 A[n:00] 引腳驅(qū)動(dòng)初始地址 (A00),并保持初始地址至少 10 個(gè) CCLK 周期,對(duì)于上電配置,初始地址為 0x00000000。默認(rèn)情況下,在 DONE 變?yōu)楦唠娖胶蟮囊粋€(gè)周期,多功能配置 I/O 切換到用戶(hù)模式。
7 系列 FPGA BPI 模式還支持異步頁(yè)模式讀取,以允許提高 CCLK 頻率。首次訪問(wèn)頁(yè)面通常需要最長(zhǎng)的時(shí)間(約 100 ns),后續(xù)訪問(wèn)同一頁(yè)面所需的時(shí)間較短(約 25 ns)。這些參數(shù)可在 7 系列器件中進(jìn)行位流編程,以利用頁(yè)面讀取并最大化 CCLK 頻率:頁(yè)面大小為1(默認(rèn))、4 或8。如果實(shí)際閃存頁(yè)面大小大于8,則應(yīng)使用值8 以使效率最大化。首次訪問(wèn)CCLK 周期為1(默認(rèn))、2、3 或4。如果頁(yè)面大小為1,則CCLK 周期必須為1。CCLK 頻率。

圖35 BPI 波形(頁(yè)面大小 = 4,首次訪問(wèn) CCLK = 2)

02同步讀取
注意:新設(shè)計(jì)不建議使用主 BPI 同步讀取模式,閃存芯片可能不支持該方式,需要聯(lián)系閃存廠家確認(rèn)是否支持該方式讀寫(xiě)。
7 系列 FPGA 主 BPI 配置模式可以選擇支持突發(fā)、同步讀取模式讀取比特流,如圖36所示,并在同步讀取模式支持。同步模式將來(lái)自 FPGA 的給定起始地址鎖存到其內(nèi)部地址計(jì)數(shù)器中,然后給定一個(gè)時(shí)鐘,閃存在每個(gè)時(shí)鐘周期內(nèi)將數(shù)據(jù)從下一個(gè)順序地址位置輸出到其數(shù)據(jù)總線。在同步讀取模式下,BPI 設(shè)備傳輸數(shù)據(jù)的速度比通過(guò)異步接口讀取快很多倍。
FPGA 以異步讀取模式啟動(dòng),使用默認(rèn)的 CCLK 頻率,比特流標(biāo)頭確定讀取模式是繼續(xù)異步還是切換到同步讀取模式。如果設(shè)置了 BPI_sync_mode 選項(xiàng),比特流命令將啟動(dòng)從異步讀取到同步讀取的切換。該選項(xiàng)有兩種可用設(shè)置:類(lèi)型1用于設(shè)置 G18F 閃存系列同步和延遲位,類(lèi)型2用于設(shè)置 P30/P33。同步模式的切換由 FPGA 控制器完成,該控制器對(duì) BPI 閃存配置寄存器執(zhí)行異步寫(xiě)入,將器件設(shè)置為同步模式并啟動(dòng)比特流重讀。為了支持同步讀取模式,F(xiàn)PGA CCLK 輸出連接到 BPI 閃存器件,并且 ADV_B FPGA 信號(hào)必須連接到閃存 ADV 信號(hào)。
BPI 閃存配置寄存器同步位設(shè)置是易失性的,在斷電時(shí)或當(dāng) FPGA INIT_B 變低向 BPI 閃存發(fā)出復(fù)位時(shí)會(huì)被清除。

圖36 7 系列 FPGA Master BPI 配置接口同步讀取示例
與異步讀取模式相比,同步讀取模式增加了配置時(shí)鐘信號(hào)CCLK和ADV_B信號(hào),其余信號(hào)連接方式保持不變。ADV_B信號(hào)為低電平時(shí),表示地址線上輸出的數(shù)據(jù)有效。其時(shí)序與異步相似。
綜上所述,主BPI模式是用來(lái)并行讀取flash數(shù)據(jù)的,一般用于速度要求較高的場(chǎng)合,相比主SPI模式,增加了flash的數(shù)據(jù)輸出使能信號(hào)FOE_B,flash寫(xiě)數(shù)據(jù)使能信號(hào)FWE_B,地址信號(hào)A[28:1],數(shù)據(jù)線由1~4位增加到了8位或者16位,同步方式還需要ADV_B地址有效指示信號(hào)。根據(jù)是否支持回退重配置功能,可能還需要RS0與RS1信號(hào)。
05JTAG配置模式
7 系列器件無(wú)論配置模式引腳設(shè)置如何,器件都支持隨時(shí)通過(guò) JTAG 端口進(jìn)行配置。但當(dāng)要通過(guò) JTAG 端口專(zhuān)門(mén)配置器件時(shí),可以使用顯式 JTAG 配置模式設(shè)置。
對(duì)于單器件配置,如果使用 Xilinx 工具配置器件,則會(huì)自動(dòng)發(fā)出 TAP 控制器命令。下載電纜必須連接到相應(yīng)的四個(gè) JTAG 引腳(TMS、TCK、TDI 和 TDO),以將比特流自動(dòng)從計(jì)算機(jī)端口傳送到 7 系列 FPGA。這些工具會(huì)自動(dòng)檢查連接是否正確,并驅(qū)動(dòng)命令來(lái)傳送和驗(yàn)證配置位是否得到正確管理。
圖 347顯示了典型的 JTAG 設(shè)置,其中需要將單個(gè)器件連接到 JTAG 信號(hào)接頭,該信號(hào)接頭可以在xilinx工具的控制下由處理器或 Xilinx 編程電纜驅(qū)動(dòng)。TCK 是用于邊界掃描操作的時(shí)鐘, TDO-TDI 連接創(chuàng)建了一個(gè)串行數(shù)據(jù)路徑,用于通過(guò) JTAG 鏈傳輸數(shù)據(jù), TMS 控制 TAP 控制器中狀態(tài)之間的轉(zhuǎn)換,這四個(gè)管腳內(nèi)部均有上拉電阻。

圖37 單個(gè)器件 JTAG 編程連接
可以在鏈中配置多個(gè) 7 系列設(shè)備,電路連接方式如圖38所示。

圖38 多器件邊界掃描鏈
對(duì)于JTAG配置的詳細(xì)流程會(huì)比較多,需要了解的可以查看硬件接口協(xié)議之“JTAG”(https://xilinx.eetrend.com/content/2019/100044971.html),或者直接查看Boundary-Scan for 7 Series Devices Using IEEE Standard 1149.1標(biāo)準(zhǔn)協(xié)議。
04總結(jié)
通過(guò)上述講解,可知xilinx7系列FPGA配置方式有7種,其中JTAG優(yōu)先級(jí)最高,在其他模式下也可以直接進(jìn)行JTAG配置。然后六種其實(shí)可以根據(jù)外設(shè)區(qū)分,如果是flash對(duì)FPGA進(jìn)行配置,那么FPGA只能作為主機(jī),根據(jù)數(shù)據(jù)線的寬度可分為SPI模式和BPI模式,其中SPIx1和BPI模式支持菊花鏈方式。如果是用微處理器或者CPLD來(lái)配置FPGA,那么FPGA可以作為主機(jī),也可以作為從機(jī),根據(jù)數(shù)據(jù)線寬度可以分為主串行、從串行、主并行、從并行共4種配置模式,主從是根據(jù)FPGA的時(shí)鐘方向確定的,F(xiàn)PGA作為主機(jī),則輸出配置時(shí)鐘信號(hào)CCLK。從串行、從并行支持菊花鏈配置模式,并行模式數(shù)據(jù)線可以為8位、16位、32位,在同步之前需要通過(guò)自動(dòng)檢測(cè)數(shù)據(jù)線位寬。
關(guān)于回讀,回退重新配置等操作沒(méi)有做講解,使用的頻率較低,需要的可以閱讀UG470手冊(cè),另外要注意zynq系列的配置方式與純PL的器件也有區(qū)別,zynq器件除JTAG以外不能對(duì)PL單獨(dú)配置,必須通過(guò)PS去配置PL,麻煩一點(diǎn)。
-
FPGA
+關(guān)注
關(guān)注
1650文章
22223瀏覽量
628205 -
原理圖
+關(guān)注
關(guān)注
1336文章
6419瀏覽量
243744 -
Xilinx
+關(guān)注
關(guān)注
73文章
2190瀏覽量
129293 -
引腳
+關(guān)注
關(guān)注
16文章
2011瀏覽量
54765
原文標(biāo)題:誰(shuí)說(shuō)配置難?這篇文章讓你輕松掌握xilinx 7系列FPGA配置技巧
文章出處:【微信號(hào):FPGA研究院,微信公眾號(hào):FPGA研究院】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
Xilinx 7系列FPGA的時(shí)鐘結(jié)構(gòu)解析
Xilinx 7系列FPGA管腳是如何定義的?
xilinx公司的7系列FPGA應(yīng)用指南
xilinx7系列FPGA的7種邏輯代碼配置模式
Xilinx 7系列FPGA可配置邏輯塊的用戶(hù)指南
Xilinx 7系列FPGA時(shí)鐘資源
Xilinx 7 系列FPGA中的Serdes總結(jié)
Xilinx 7系列FPGA簡(jiǎn)介--選型參考
一文詳解Xilin的FPGA時(shí)鐘結(jié)構(gòu)
Xilinx 7系列與Ultrascale系列FPGA的區(qū)別
Xilinx 7系列FPGA PCIe Gen3的應(yīng)用接口及特性

一文詳解xilinx 7系列FPGA配置技巧
評(píng)論