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