王 賀 張大宇 汪 悅 張 松
(中國空間技術(shù)研究院 北京 100094)
FPGA器件具有高性能、低成本、資源豐富、可重復(fù)編程等優(yōu)點(diǎn),利用FPGA片上資源設(shè)計(jì)DDR(Double Data Rate)控制器來實(shí)現(xiàn)雙倍速率數(shù)據(jù)傳輸控制,是高速通信、數(shù)據(jù)壓縮與信號處理等領(lǐng)域中的常用方法。DDR控制器一般通過FPGA片上的專用DDR模塊和部分通用可編程資源實(shí)現(xiàn),其中DDR模塊是實(shí)現(xiàn)雙倍速率數(shù)據(jù)傳輸?shù)年P(guān)鍵電路。傳統(tǒng)的DDR模塊測試方法是通過FPGA的IO端口對每個(gè)DDR模塊分別施加測試向量并輸出測試結(jié)果,因此需要使用大量的測試通道資源,對測試儀器的硬件配置要求較高。
Loopback是高速SERDES(串行器/解串器)電路測試中的常用技術(shù),其原理是將SERDES的輸出端口與輸入端口短接形成反饋回路[11],以實(shí)現(xiàn)高速信號的自發(fā)自收測試(如圖1所示)。
從實(shí)現(xiàn)方式上看,Loopback分為片外的Loopback與片上的loopback兩種形式。其中片外Loopback需要通過測試 DIB(Device Interface Board)硬件上的物理線路實(shí)現(xiàn)Loopback環(huán)路(圖1中實(shí)線)[13]。相比而言,片上Loopback對DIB硬件設(shè)計(jì)幾乎沒有要求,但需要電路在設(shè)計(jì)時(shí)內(nèi)部預(yù)留了Loopback環(huán)路(圖1中虛線)[12]。
IOB電路是FPGA上的雙向可編程IO端口模塊,其信號傳輸方向可通過程序進(jìn)行控制。利用IOB中的IOBUF可以構(gòu)建DDR模塊的片上Loopback環(huán)路,將大量DDR模塊在FPGA器件內(nèi)部串聯(lián)成鏈進(jìn)行測試,從而有效減少測試所需配置次數(shù)及IO通道數(shù)量。
DDR模塊位于Virtex FPGA的Select IO資源中,數(shù)量與FPGA的IO端口數(shù)量相同,每個(gè)DDR模塊包括IDDR與ODDR兩部分[2]。
IDDR是用于FPGA輸入的雙倍數(shù)據(jù)速率模塊,其原語的原理圖如圖2所示[3]。
圖2 IDDR原語原理圖
對于IDDR模塊端口功能的說明如表1所示。
表1 IDDR端口功能說明
為適應(yīng)不同應(yīng)用接口需求,IDDR模塊支持三種工作模式,分別是反相模式(OPPOSITE_EDGE),同相模式(SAME_EDGE)與流水線模式(SAME_EDGE_PIPELINED),三種模式的主要區(qū)別在于Q1、Q2端口輸出數(shù)據(jù)的時(shí)序存在一定差異。其中,OPPOSITE_EDGE模式是在時(shí)鐘C的上升沿與下降沿分別進(jìn)行數(shù)據(jù)采樣,輸出信號Q1與Q2與時(shí)鐘C的上升沿與下降沿同步變化;SAME_EDGE模式則通過增加額外的下降沿采樣觸發(fā)器將Q1、Q2的輸出都與時(shí)鐘C的上升沿同步起來,但Q1、Q2之間存在一個(gè)時(shí)鐘周期的相位差;SAME_EDGE_PIPELINED則通過增加額外的流水線寄存器將Q1、Q2的數(shù)據(jù)輸出進(jìn)行同步,且都對應(yīng)于時(shí)鐘C的上升沿[5]。
IDDR模塊3種工作模式的具體時(shí)序差異如圖3所示。
圖3 IDDR三種模式功能示意圖
ODDR(Output DDR)是用于FPGA輸出的雙倍數(shù)據(jù)速率模塊,其原語的原理圖如圖4所示。
圖4 ODDR原語的原理圖
對于ODDR模塊端口功能的說明如表2所示。
表2 ODDR端口功能說明
與IDDR模塊不同,ODDR模塊僅支持反相(OPPOSITE_EDGE)與同相模式(SAME_EDGE)2種工作模式,具體輸出信號時(shí)序特點(diǎn)與IDDR類似,如圖5所示。
圖5 ODDR兩種模式功能示意圖
傳統(tǒng)的DDR模塊一般采用并行測試結(jié)構(gòu),如圖6所示[15]。
圖6 并行測試方案
并行測試電路的特點(diǎn)是對每一個(gè)IO端口的DDR模塊功能分別進(jìn)行檢測,代價(jià)是需要使用大量的測試儀通道來覆蓋FPGA的全部IO端口。此外,IDDR模塊測試需要使用2倍于被測DDR模塊數(shù)量的FPGA IO來輸出測試結(jié)果(Q1[0..n]、Q2[0..n]),造成每次配置只能完成不足1/3的IDDR模塊測試。
以具有850個(gè)IO的某Virtex FPGA為例[4],覆蓋IDDR與ODDR的全部工作模式測試需要850個(gè)測試通道并進(jìn)行至少16次配置[10],具體分布如表3所示。
表3 某FPGA DDR測試所需配置數(shù)量
從功能上看,DDR模塊實(shí)際等價(jià)于簡化的SERDES電路,其中ODDR相當(dāng)于2并1的串行器,IDDR相當(dāng)于1分2的解串器,因此可以將ODDR與IDDR組合起來按照Loopback的思路進(jìn)行測試。但是,由于ODDR的輸出與IDDR的輸入端口在物理上不存在可編程互聯(lián)線路,因此無法在HDL程序設(shè)計(jì)時(shí)直接連接,必須借助IOB模塊來實(shí)現(xiàn)Loopback。
圖7 IOB基本結(jié)構(gòu)
某Virtex系列FPGA的IOB模塊基本結(jié)構(gòu)如圖7所示,其中輸入端口O與ODDR的輸出Q相連,輸出端口I與IDDR的輸入D相連。因此,通過圖7中加粗的線路(包括2兩個(gè)驅(qū)動(dòng)器IBUF與OBUF)可以實(shí)現(xiàn)ODDR與IDDR的片上Loopback環(huán)路。
圖8 片上Loopback測試電路結(jié)構(gòu)
基于IOB構(gòu)建的DDR模塊片上Loopback串行測試電路結(jié)構(gòu)如圖8所示,對其說明如下:
1)串聯(lián)測試線路由“位于鏈?zhǔn)椎腄in端口IDDR、位于鏈中的n個(gè)Select IO和位于鏈尾的Dout端口ODDR”組成,串接的Select IO數(shù)量由具體器件的封裝引腳數(shù)量決定;
2)每個(gè)Select IO內(nèi)部形成一條Loopback環(huán)路,n個(gè)Select IO在FPGA內(nèi)部串聯(lián)成鏈,上一級Select IO IDDR的兩個(gè)輸出端口(Q1[i]和Q2[i])連到下一個(gè)Select IO ODDR的對應(yīng)輸入端口上;
3)全部IDDR與ODDR模塊的時(shí)鐘clk_iddr、clk_oddr、使能CE、復(fù)位R(或置位S)由FPGA IO統(tǒng)一提供,Din與Dout各占用一個(gè)IO端口。
4)每條片上Loopback串行測試鏈路需要6個(gè)FPGA IO作為測試輔助端口,覆蓋全部DDR模塊至少需要12個(gè)FPGA IO并進(jìn)行6次配置[8],如表4所示(仍以850個(gè)IO的Virtex FPGA為例)。
表4 某FPGA DDR測試所需配置數(shù)量
由于Loopback串行測試電路交叉使用了IDDR與ODDR兩種模塊,因此每個(gè)測試電路都需要進(jìn)行3次配置,以覆蓋IDDR與ODDR的不同工作模式,具體組合方式按表5進(jìn)行。
表5 串行測試組合方案
由于IDDR的SAME_EDGE與SAME_EDGE_PIPELINED兩種模式僅在Q1端口輸出信號上相差一個(gè)時(shí)鐘周期,因此在進(jìn)行SAME_EDGE(分組3)測試時(shí),可以將圖8測試電路中的IDDR與ODDR之間插入一個(gè)D觸發(fā)器(如圖9所示,其中IDDR與DFF共用時(shí)鐘信號),這樣就可將其轉(zhuǎn)化為SAME_EDGE_PIPELINED(分組2)模式進(jìn)行測試。
圖9 IDDR SAME_EDGE測試電路
綜合分析圖8串行Loopback測試電路結(jié)構(gòu)與表5中DDR模塊工作模式組合可以得出:
1)圖8測試電路的輸出Dout應(yīng)落后輸入Din n個(gè)信號傳遞周期,并在第n+1個(gè)信號傳遞周期的clk_oddr上升沿開始變化,其中n為測試電路中串聯(lián)的Select IO數(shù)量。
2)表5分組1(OPPOSITE_EDGE模式)的每個(gè)信號傳遞周期由1個(gè)clk_iddr脈沖與1個(gè)clk_oddr脈沖組成;分組2(SAME_EDGE_PIPELINED模式)的每個(gè)信號傳遞周期由2個(gè)clk_iddr脈沖與1個(gè)clk_oddr脈沖組成;分組3按圖9設(shè)計(jì)后功能同分組2。
為便于分析,仿真中設(shè)定測試電路中串接的Select IO數(shù)量為10,分組1仿真波形如圖10所示;分組2、3仿真波形如圖11所示[6]。從波形狀態(tài)可以看出,仿真結(jié)果與設(shè)計(jì)功能一致。
圖10 OPPOSITE_EDGE模式仿真波形
圖11 SAME_EDGE_PIPELINED模式仿真波形
DDR模塊測試需要對FPGA進(jìn)行6次配置,為提高效率,本文基于ATE搭建自動(dòng)化測試平臺,ATE型號為美國Teradyne的UltraFLEX系統(tǒng)[7]。
基于ATE的FPGA自動(dòng)化測試包括位流配置與功能測試兩部分,分別需要使用配置向量與測試向量[14]。其中測試向量可以參考圖10與圖11仿真波形編寫,配置向量則需要通過軟件轉(zhuǎn)換產(chǎn)生,具體方法如下[9]:
UltraFLEX系統(tǒng)使用“*.pat”格式的二進(jìn)制向量文件,它是由“*.atp”格式的文本向量文件經(jīng)Pattern Complier軟件編譯后產(chǎn)生,而“*.atp”文件可由ISE軟件生成的“*.rbt”文本位流文件經(jīng)轉(zhuǎn)換后得到。
圖12 rbt位流文件
“*.rbt”位流文件內(nèi)容如圖12所示,從第8行開始為FPGA有效配置位流,每行由32個(gè)數(shù)據(jù)組成,對應(yīng)SelectMap x32的數(shù)據(jù)總線D[31:0],但順序并非按從高到低排列,而是以字節(jié)為單位按從低到高順序排列,因此需要按Xilinx配置指南中要求進(jìn)行“Bit定序”轉(zhuǎn)換后才能使用[1],轉(zhuǎn)換方法如表6所示。
表6 Bit定序?qū)?yīng)關(guān)系(SelectMap x32)
此外,“*.rbt”文件中只提供了SelectMap配置所需的數(shù)據(jù)總線信號,用于ATE配置還需在向量文件中補(bǔ)充必要的控制信號(CCLK、CSI_B、PROGRAM_B與RDWR_B)及TimeSet信息。最終轉(zhuǎn)換出的“*.atp”向量文件如圖13所示。
圖13 atp向量文件
本文利用FPGA IOB中的IOBUF資源構(gòu)建了測試環(huán)路,設(shè)計(jì)了一種結(jié)構(gòu)簡潔、占用資源少、便于移植的DDR模塊片上Loopback串行測試方法,并在ATE上進(jìn)行了測試驗(yàn)證。與傳統(tǒng)并行測試方法相比,本文所述方法僅需使用12路測試儀通道與FPGA IO端口,同時(shí)將覆蓋全部DDR模塊測試所需的配置次數(shù)從16次減少到6次,可用于Virtex系列或其他類似結(jié)構(gòu)FPGA的DDR模塊測試。