0 引言
最近準(zhǔn)備采用Xilinx FPGA進(jìn)行多機(jī)通信,,即主FPGA芯片將采集到的不同層的圖像數(shù)據(jù)流分別輸出給對(duì)應(yīng)的4塊從FPGA芯片中,,主從FPGA之間的連接機(jī)制采用星形拓?fù)浣Y(jié)構(gòu),。經(jīng)計(jì)算,,圖像數(shù)據(jù)流接口速率需要數(shù)百兆比特/秒,,因此需要調(diào)研FPGA支持的常見(jiàn)IO接口標(biāo)準(zhǔn),,及每種接口的應(yīng)用場(chǎng)合,。
1 常見(jiàn)IO接口標(biāo)準(zhǔn)
Xilinx FPGA提供和支持高性能,、可配置,、多樣化的接口標(biāo)準(zhǔn)。主要的可配置屬性為On-chip terminaTIon(輸入端/輸出端的內(nèi)置片上端接電阻),,output strength(輸出驅(qū)動(dòng)器的電流驅(qū)動(dòng)能力),,slew rate(電壓壓擺率)等。
常見(jiàn)IO接口可分為單端IO接口和差分IO接口,,詳細(xì)的IO標(biāo)準(zhǔn)參見(jiàn)下圖1,。單端IO接口和差分IO接口均滿(mǎn)足高速接口傳輸,區(qū)別在于應(yīng)用場(chǎng)合不同,。
Xilinx FPGA芯片不同的Bank支持的IO接口標(biāo)準(zhǔn)范圍略有所不同,,但是同一Bank必須使用同一output drive voltage (VCCO)。
1.1 端接電阻
由上圖2可知,,當(dāng)使用高速I(mǎi)O接口時(shí),,在接收端通常需要匹配的端接電阻,有利于高低電平的轉(zhuǎn)換和提高信號(hào)的完整性,,且端接電阻盡可能的放置在接收端,。
(a)差分輸入端接電阻
通常需要在差分輸入端并行端接100Ω的電阻,,F(xiàn)PGA在差分輸入接收器提前內(nèi)置了端接電阻,,其阻值R為100Ω,為可選項(xiàng)opTIonal,。設(shè)計(jì)者也可以采用外接端接電阻來(lái)進(jìn)行電阻匹配,,阻值選擇更靈活。采用片上內(nèi)置的端接電阻可以節(jié)省無(wú)聊和縮小PCB面積,。
通過(guò)UCF文件進(jìn)行約束,,是否使用差分輸入端接電阻,,語(yǔ)法規(guī)則如下:NET DIFF_TERM = “” ,。
(b)單端輸入端接電阻
由上圖可知,一些單端IO接口也需要輸入端接電阻來(lái)匹配信號(hào)的完整性,,例如HSTL,,SSTL。SSTL電平通常應(yīng)用在DDR SRAM中,,例如SSTL18應(yīng)用在DDR2,,SSTL15_II應(yīng)用在DDR3中。詳見(jiàn)下圖所示,。
通過(guò)UCF文件進(jìn)行約束,,是否使用單端輸入端接電阻,語(yǔ)法規(guī)則如下:
NET IN_TERM = ;
?。╟)輸出端接電阻
由上圖可知,,輸出端(也稱(chēng)為源端)也可以配置輸出端接電阻,以減少信號(hào)的反射,,應(yīng)用在高速單端信號(hào)場(chǎng)合,,例如FPGA輸出驅(qū)動(dòng)DDR3芯片。輸出端接電阻也是opTIonal可選項(xiàng),,常見(jiàn)阻值R為none,,25Ω,50Ω,,75Ω,。通過(guò)UCF文件進(jìn)行約束,是否使用單端輸出端接電阻,,語(yǔ)法規(guī)則如下:
NET OUT_TERM = ;
說(shuō)明:由上圖可知,,F(xiàn)PGA作為輸出端,其端接電阻可以通過(guò)內(nèi)置端接電阻配置完成,,但如果DDR SRAM作為后一級(jí)的輸入端,,該芯片沒(méi)有片上端接電阻,故需要外接50Ω的輸入匹配電阻,。
1.2 設(shè)置IO接口屬性
常見(jiàn)IO接口屬性包括:電平標(biāo)準(zhǔn),,輸出壓擺率,輸出驅(qū)動(dòng)能力,,上/下拉,。詳細(xì)設(shè)置參考下文。
2 常見(jiàn)IO接口標(biāo)準(zhǔn)&應(yīng)用
當(dāng)今大廠家會(huì)基于其IO接口的總線應(yīng)用場(chǎng)合提出新的IO接口標(biāo)準(zhǔn),,隨后被其他廠家所使用,。每一種IO接口標(biāo)準(zhǔn)均有其特有的電壓、電流,、輸入輸出緩沖和端接匹配技術(shù)要求,。Xilinx User Guide詳細(xì)列出了常見(jiàn)的各種IO接口的種類(lèi),,定義及應(yīng)用場(chǎng)合,詳見(jiàn)下文,。
3 高速I(mǎi)O接口應(yīng)用舉例
基于FPGA的高速I(mǎi)O接口應(yīng)用的常見(jiàn)例子有兩種,,詳見(jiàn)下文。
第一種: 采用SSTL15_II接口標(biāo)準(zhǔn),,應(yīng)用于DDR3 SRAM,,屬于single-end IO standard;
第二種:采用LVDS33/25接口標(biāo)準(zhǔn),,應(yīng)用于IOSERDES的高速串行通信,,屬于differenTIal IO standard;
3.1 DDR3 SRAM接口驅(qū)動(dòng)
FPGA驅(qū)動(dòng)DDR3 SRAM芯片時(shí),,F(xiàn)PGA作為輸出源端,,SRAM芯片作為終端,故FPGA需要配置output driver 的相關(guān)屬性參數(shù)attributes,。SRAM作為input receiver,,需要進(jìn)行端接電阻匹配,由于沒(méi)有內(nèi)置片上端接電阻,,故需要在SRAM輸入管腳外接匹配電阻,,由于數(shù)據(jù)端口是雙向端口,故輸入端是高阻狀態(tài),,無(wú)需匹配,。而地址總線接口和差分時(shí)鐘輸入接口需要匹配對(duì)應(yīng)阻值的電阻。
?。╝)FPGA輸出端IO Standard在UCF文件中參數(shù)配置如下:
NET “mcb3_dram_dq[*]” IOSTANDARD = SSTL15_II | IN_TERM = NONE | OUT_TERM = UNTUNED_50;
壓擺率和上下拉采用默認(rèn)參數(shù),,SLOW slew rate, 12mA output drive,。
?。╞)SRAM輸入端IO standard,地址管腳和數(shù)據(jù)管腳盡可能均勻分配在某一個(gè)或多個(gè)Bank中,。
地址總線輸入端(單端接口)需匹配50Ω端接電阻,,差分時(shí)鐘輸入端(差分接口)需要匹配100Ω的端接電阻,見(jiàn)下圖所示,。
地址總線輸入接口
差分時(shí)鐘輸入接口
說(shuō)明:1. SRAM輸入管腳的端接電阻盡可能靠近管腳,,以保證信號(hào)的完整性;
2. 每一組bank均有獨(dú)立的Vcco和Vref,,便于配置variable IO standard,;
3. 為減少SSO(simultaneous switching output)的大量輸出管腳電平同一方向切換的干擾,可以增加virtual
VCC/GND pins,,即將該bank未用到的管腳在FPGA程序中設(shè)置為GND或VCC,;
3.2 LVDS差分IO接口驅(qū)動(dòng)
LVDS:低壓差差分信號(hào),,每位數(shù)據(jù)需要一對(duì)差分信號(hào)線,相較于單端接口,,差分接口可以抑制共模噪聲,,電壓擺幅約350mV,,因此信號(hào)傳輸功耗較低,。LVDS接口傳輸速率上限可達(dá)3.125Gbit/s,如果配合相應(yīng)的編碼規(guī)則(如8b/10b)和使用SERDES技術(shù),,可以保證常用高速信號(hào)通信,。
差分信號(hào)輸入端需要端接匹配電阻,如果輸入端為FPGA管腳,,可以通過(guò)配置,,使能其內(nèi)置端接電阻,阻值默認(rèn)為100Ω,。UCF配置LVDS接口如下:
說(shuō)明:1. 壓擺率越快,,電平轉(zhuǎn)換時(shí)間越短,時(shí)間性能越優(yōu),;
2. Spartan6 FPGA所有Bank均支持LVDS差分輸入,,但只有Bank0和Bank2支持LVDS差分輸出;
更多信息可以來(lái)這里獲取==>>電子技術(shù)應(yīng)用-AET<<