用XC9500 CPLD和并行PROM配置Xilinx FPGA(圖)
關(guān)鍵詞:fpga;cpld;串行配置
概述
隨著fpga芯片密度的增加,串行prom已不能適應(yīng)高密度的fpga的配置。大容量的并行prom所要求的尋址方式又不能直接與fpga接口,這時可以采用xc9500 cpld和prom對高密度fpga進行配置。fpga設(shè)備在線配置或電源上電時,配置邏輯會被自動清除。fpga的program信號必須在300ns內(nèi)置低,使配置邏輯復(fù)位。init輸出在內(nèi)部配置存儲器清零期間保持低電平。一旦init管腳變高,就表明設(shè)備已準備接受配置。
fpga的配置有主設(shè)備串行配置和從設(shè)備串行配置兩種方式。xc4000和spartan系列設(shè)備在init變高后要求在設(shè)備準備接收配置數(shù)據(jù)之前有一個超時期,但spartan-ⅱ不在此列。在主設(shè)備串行模式下,fpga在超時達到要求之前關(guān)閉配置時鐘(cclk)。在從設(shè)備串行模式下,必須在超時期完成后才能開啟cclk。而spartan-ⅱ和virtex系列在init信號變高之后不要求超時期,一旦init信號變高,設(shè)備立即準備接收配置數(shù)據(jù)。
接口設(shè)計
在串行配置模式下用并行prom對fpga進行配置時,需要專門的接口進行并行數(shù)據(jù)到串行數(shù)據(jù)的轉(zhuǎn)換,并管理fpga的配置信號。接口的設(shè)計方法很多,圖1是使用xc9500 cpld配置fpga的電路結(jié)構(gòu)。
vsprom的設(shè)計
設(shè)計虛擬串行prom(vsprom)的目的是為并行prom和fpga之間的連接提供接口,接口的任務(wù)是將從prom中讀來的數(shù)據(jù)轉(zhuǎn)換成串行輸出,然后再將地址遞增。vsprom的結(jié)構(gòu)如圖2所示。在處理數(shù)據(jù)的同時,vsprom還管理init和done信號。在配置期間,如果init被fpga拉低,表明出現(xiàn)配置錯誤,vsprom必須復(fù)位并等待用戶將fpga復(fù)位,然后重新配置。一旦fpga的done變高,表明配置成功,vsprom就撤消rom_cs來取消prom的使能,將自己和prom與fpga隔離,并將dout設(shè)為高阻態(tài)。
在vsprom的設(shè)計中,使用xc9536pc44-10、xcv600bg432-6和一個8位的prom(at27c080)驗證。
主設(shè)備串行配置時,xilinx fpga提供配置時鐘(cclk)。cclk與vsprom的時鐘clk_in直接相連。virtex和spartan-ⅱ支持的最大配置速率是60mhz,xc4000/spartan系列支持的最大配置速率是8mhz。然而,實際的最大配置速率還應(yīng)該考慮prom的存取時間(tacc)和主設(shè)備串行輸入的時間(tdsck)。
主設(shè)備串行模式下prom的頻率=1/(tacc+tdsck)。
tacc對于virtex為5.0ns,對于xc4000/spartan系列是20.0ns,prom的tacc對于at27c080是100ns。因此,對于virtex設(shè)備最大頻率為9.5mhz,對于xc4000/spartan設(shè)備最大頻率為8.3mhz。這就是說,virtex設(shè)備的配置頻率受prom的限制,而xc4000/spartan設(shè)備的配置頻率受自己內(nèi)部cclk的限制。為了加快virtex設(shè)備的配置速度,可以選擇更快的prom。在主設(shè)備串行模式下,fpga在準備好接收配置數(shù)據(jù)之前會關(guān)閉cclk,因此vsprom的設(shè)計不用考慮其他問題。
從設(shè)備串行配置有專門的振蕩電路提供配置時鐘,速度比較快。振蕩電路的時鐘輸出必須接fpga的配置時鐘(cclk)和vsprom的時鐘(clk_in)。最大配置頻率對于virtex是66mhz,對于xc4000/spartan系列是10mhz。同樣,配置頻率受到prom的存取時間(tacc)和從設(shè)備串行輸入時間(tdcc)的限制,計算方法同上。
表1 不同的eprom所需的地址線
eprom | 配置位數(shù) | 所需的地址線 |
1m eprom | 1 048 576 | 17 |
2m eprom | 2 097 152 | 18 |
3m eprom | 4 194 304 | 19 |
4m eprom | 8 388 608 | 20 |
從設(shè)備串行模式下對xc4000或者spartan系列fpga進行配置時,必須考慮設(shè)備開始的順序(這里討論的順序不適合spartan-ⅱ系列)。正如前面提及的,一旦init置高,設(shè)備能夠接收配置數(shù)據(jù)之前需要有一個超時期,vsprom接口必須能夠在超時期達到之前封鎖振蕩電路的時鐘輸出。如果是virtex或者spartan-ⅱ設(shè)備作為從設(shè)備,init置高后fpga可以立即準備好接收配置數(shù)據(jù),就不用考慮超時的問題。
在以上兩種配置方式下,并行prom的大小和數(shù)目由配置fpga所要求的配置位的數(shù)目決定。prom的大小由所需要的地址線數(shù)目決定。缺省情況下,vsprom設(shè)計使用19根地址線,對應(yīng)4mb的prom。當(dāng)需要更多的容量存儲配置數(shù)據(jù)時,可以修改vsprom源程序(vhdl或generic)使其適應(yīng)新的需求,詳細情況參見表1。如果配置要求多于19根地址線,可以使用xc9572設(shè)計vsprom。
fpga配置期間發(fā)生錯誤時,init信號變成低電平,配置程序中止。所以vsprom需要管理init,當(dāng)init變低時,vsprom需要復(fù)位并等待fpga的復(fù)位后才能進行重新配置。簡單的方法是可以在init變低時用vsprom控制fpga的program變低,迫使fpga清除自己的配置存儲器,然后重試。或者可以將init接微控制器,在配置期間init變低時控制整個系統(tǒng)復(fù)位。
表2 兩個prom的地址譯碼
額外的地址(a19) |
/ce0 |
/ce1 |
0 |
0 |
1 |
1 |
1 |
0 |
接口的擴展
fpga要求的配置空間大于所選的prom時,可以使用多個prom,連接方法如圖3所示。這時地址線是20位,高位地址線 address(19)用來選擇prom,見表2。
多個fpga可以直接級連,如圖4所示。這種情況下對vsprom沒有特殊的要求。cclk,init,done和prog信號必須并聯(lián),前一個設(shè)備的dout信號連接下一個的din。
調(diào)試應(yīng)用
為了保證fpga的cclk和din信號不受任何干擾,在設(shè)計電路板時通常在每個vcc和gnd之間加0.1μf和0.01μf的電容。同時,要保證vcc的響應(yīng)速度足夠快。如果電源響應(yīng)速度不夠快、響應(yīng)單調(diào)性不好,會影響系統(tǒng)的上電過程從而影響正確的配置。
所有的xc4000和spartan設(shè)備都對5v和3.3v環(huán)境兼容。virtex和spartan-ⅱ設(shè)備也可以直接應(yīng)用于5v和3.3v的環(huán)境,在lvttl與3.3v的vcco相連時必須使用缺省的i/o標準。詳細情況參見xilinx設(shè)備的電壓兼容性數(shù)據(jù)資料。virtex-e設(shè)備不能直接應(yīng)用在5v環(huán)境,因此在配置時必須加以考慮。
1 xilinx.xc9500xv family high-performance cpld ds049(v2.0),january 15,2001
2 xilinx.fastflash xc9500xl high-performance cpld family(v1.5), 1999,7
3 陳光夢.可編程邏輯期間的原理與應(yīng)用.上海:復(fù)旦大學(xué)出版社,1997
4 xilinx.xc9500 in-sytem programmable cpld family(v5.0),september 15,1999
評論