概述 隨著FPGA芯片密度的增加,串行PROM已不能適應(yīng)高密度的FPGA的配置。大容量的并行PROM所要求的尋址方式又不能直接與FPGA接口,這時(shí)可以采用XC9500 CPLD和PROM對(duì)高密度FPGA進(jìn)行配置。FPGA設(shè)備在線配置或電源上電時(shí),配置邏輯會(huì)被自動(dòng)清除。FPGA的PROGRAM信號(hào)必須在300ns內(nèi)置低,使配置邏輯復(fù)位。INIT輸出在內(nèi)部配置存儲(chǔ)器清零期間保持低電平。一旦INIT管腳變高,就表明設(shè)備已準(zhǔn)備接受配置。 FPGA的配置有主設(shè)備串行配置和從設(shè)備串行配置兩種方式。XC4000和Spartan系列設(shè)備在INIT變高后要求在設(shè)備準(zhǔn)備接收配置數(shù)據(jù)之前有一個(gè)超時(shí)期,但Spartan-Ⅱ不在此列。在主設(shè)備串行模式下,F(xiàn)PGA在超時(shí)達(dá)到要求之前關(guān)閉配置時(shí)鐘(CCLK)。在從設(shè)備串行模式下,必須在超時(shí)期完成后才能開啟CCLK。而Spartan-Ⅱ和Virtex系列在INIT信號(hào)變高之后不要求超時(shí)期,一旦INIT信號(hào)變高,設(shè)備立即準(zhǔn)備接收配置數(shù)據(jù)。 接口設(shè)計(jì) 在串行配置模式下用并行PROM對(duì)FPGA進(jìn)行配置時(shí),需要專門的接口進(jìn)行并行數(shù)據(jù)到串行數(shù)據(jù)的轉(zhuǎn)換,并管理FPGA的配置信號(hào)。接口的設(shè)計(jì)方法很多,圖1是使用XC9500 CPLD配置FPGA的電路結(jié)構(gòu)。 VSPROM的設(shè)計(jì) 設(shè)計(jì)虛擬串行PROM(VSPROM)的目的是為并行PROM和FPGA之間的連接提供接口,接口的任務(wù)是將從PROM中讀來的數(shù)據(jù)轉(zhuǎn)換成串行輸出,然后再將地址遞增。VSPROM的結(jié)構(gòu)如圖2所示。在處理數(shù)據(jù)的同時(shí),VSPROM還管理INIT和DONE信號(hào)。在配置期間,如果INIT被FPGA拉低,表明出現(xiàn)配置錯(cuò)誤,VSPROM必須復(fù)位并等待用戶將FPGA復(fù)位,然后重新配置。一旦FPGA的DONE變高,表明配置成功,VSPROM就撤消ROM_CS來取消PROM的使能,將自己和PROM與FPGA隔離,并將DOUT設(shè)為高阻態(tài)。 在VSPROM的設(shè)計(jì)中,使用XC9536PC44-10、XCV600BG432-6和一個(gè)8位的PROM(AT27C080)驗(yàn)證。 主設(shè)備串行配置時(shí),Xilinx FPGA提供配置時(shí)鐘(CCLK)。CCLK與VSPROM的時(shí)鐘CLK_IN直接相連。Virtex和Spartan-Ⅱ支持的最大配置速率是60MHz,XC4000/Spartan系列支持的最大配置速率是8MHz。然而,實(shí)際的最大配置速率還應(yīng)該考慮PROM的存取時(shí)間(TACC)和主設(shè)備串行輸入的時(shí)間(TDSCK)。 主設(shè)備串行模式下PROM的頻率=1/(TACC+TDSCK)。 TACC對(duì)于Virtex為5.0ns,對(duì)于XC4000/Spartan系列是20.0ns,PROM的TACC對(duì)于AT27C080是100ns。因此,對(duì)于Virtex設(shè)備最大頻率為9.5MHz,對(duì)于XC4000/Spartan設(shè)備最大頻率為8.3MHz。這就是說,Virtex設(shè)備的配置頻率受PROM的限制,而XC4000/Spartan設(shè)備的配置頻率受自己內(nèi)部CCLK的限制。為了加快Virtex設(shè)備的配置速度,可以選擇更快的PROM。在主設(shè)備串行模式下,F(xiàn)PGA在準(zhǔn)備好接收配置數(shù)據(jù)之前會(huì)關(guān)閉CCLK,因此VSPROM的設(shè)計(jì)不用考慮其他問題。 從設(shè)備串行配置有專門的振蕩電路提供配置時(shí)鐘,速度比較快。振蕩電路的時(shí)鐘輸出必須接FPGA的配置時(shí)鐘(CCLK)和VSPROM的時(shí)鐘(CLK_IN)。最大配置頻率對(duì)于Virtex是66MHz,對(duì)于XC4000/Spartan系列是10MHz。同樣,配置頻率受到PROM的存取時(shí)間(TACC)和從設(shè)備串行輸入時(shí)間(TDCC)的限制,計(jì)算方法同上。 表1 不同的EPROM所需的地址線
從設(shè)備串行模式下對(duì)XC4000或者Spartan系列FPGA進(jìn)行配置時(shí),必須考慮設(shè)備開始的順序(這里討論的順序不適合Spartan-Ⅱ系列)。正如前面提及的,一旦INIT置高,設(shè)備能夠接收配置數(shù)據(jù)之前需要有一個(gè)超時(shí)期,VSPROM接口必須能夠在超時(shí)期達(dá)到之前封鎖振蕩電路的時(shí)鐘輸出。如果是Virtex或者Spartan-Ⅱ設(shè)備作為從設(shè)備,INIT置高后FPGA可以立即準(zhǔn)備好接收配置數(shù)據(jù),就不用考慮超時(shí)的問題。 在以上兩種配置方式下,并行PROM的大小和數(shù)目由配置FPGA所要求的配置位的數(shù)目決定。PROM的大小由所需要的地址線數(shù)目決定。缺省情況下,VSPROM設(shè)計(jì)使用19根地址線,對(duì)應(yīng)4MB的PROM。當(dāng)需要更多的容量存儲(chǔ)配置數(shù)據(jù)時(shí),可以修改VSPROM源程序(VHDL或GENERIC)使其適應(yīng)新的需求,詳細(xì)情況參見表1。如果配置要求多于19根地址線,可以使用XC9572設(shè)計(jì)VSPROM。 FPGA配置期間發(fā)生錯(cuò)誤時(shí),INIT信號(hào)變成低電平,配置程序中止。所以VSPROM需要管理INIT,當(dāng)INIT變低時(shí),VSPROM需要復(fù)位并等待FPGA的復(fù)位后才能進(jìn)行重新配置。簡(jiǎn)單的方法是可以在INIT變低時(shí)用VSPROM控制FPGA的PROGRAM變低,迫使FPGA清除自己的配置存儲(chǔ)器,然后重試。或者可以將INIT接微控制器,在配置期間INIT變低時(shí)控制整個(gè)系統(tǒng)復(fù)位。 表2 兩個(gè)PROM的地址譯碼
接口的擴(kuò)展 FPGA要求的配置空間大于所選的PROM時(shí),可以使用多個(gè)PROM,連接方法如圖3所示。這時(shí)地址線是20位,高位地址線 ADDRESS(19)用來選擇PROM,見表2。 多個(gè)FPGA可以直接級(jí)連,如圖4所示。這種情況下對(duì)VSPROM沒有特殊的要求。CCLK,INIT,DONE和PROG信號(hào)必須并聯(lián),前一個(gè)設(shè)備的DOUT信號(hào)連接下一個(gè)的DIN。 調(diào)試應(yīng)用 為了保證FPGA的CCLK和DIN信號(hào)不受任何干擾,在設(shè)計(jì)電路板時(shí)通常在每個(gè)Vcc和GND之間加0.1μF和0.01μF的電容。同時(shí),要保證Vcc的響應(yīng)速度足夠快。如果電源響應(yīng)速度不夠快、響應(yīng)單調(diào)性不好,會(huì)影響系統(tǒng)的上電過程從而影響正確的配置。 所有的XC4000和Spartan設(shè)備都對(duì)5V和3.3V環(huán)境兼容。Virtex和Spartan-Ⅱ設(shè)備也可以直接應(yīng)用于5V和3.3V的環(huán)境,在LVTTL與3.3V的Vcco相連時(shí)必須使用缺省的I/O標(biāo)準(zhǔn)。詳細(xì)情況參見Xilinx設(shè)備的電壓兼容性數(shù)據(jù)資料。Virtex-E設(shè)備不能直接應(yīng)用在5V環(huán)境,因此在配置時(shí)必須加以考慮。 |