文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.175127
中文引用格式: 羅軍,范劍峰,呂宏峰,等. 基于FPGA的塊存儲器資源功能驗證及實現[J].電子技術應用,2018,44(9):44-47.
英文引用格式: Luo Jun,Fan Jianfeng,Lv Hongfeng,et al. Function verification and implementation of block random access memory based on FPGA[J]. Application of Electronic Technique,2018,44(9):44-47.
0 引言
可編程邏輯陣列(FPGA)由于其具有可編程、上市時間短、靈活性及高吞吐量等特性廣泛應用于數字信號處理、接口電路控制、圖像處理及算法加速等領域,如在接口協議并串轉換電路[1]、圖像算法加速電路[2]及矩陣分解電路加速[3]等領域應用廣泛。隨著微電子工藝技術的進步,FPGA器件向集成更多資源、更高速度及片上系統方向發展。FPGA器件內部具有豐富的可編程邏輯資源、輸入輸出口資源、鎖相環及頻率合成器資源以及嵌入式塊存儲器資源(BRAM)[4]等,其中FPGA片內豐富的塊存儲器資源使數據與處理模塊的延遲更短,極大地提升了FPGA器件的處理性能和吞吐量。
隨著工業界對FPGA器件的質量與可靠性要求越來越高,對FPGA器件片內資源進行充分的測試驗證變得日益迫切。因而,近年來針對FPGA器件片內邏輯資源[5-6]及存儲器資源[7-8]的測試逐漸成為研究熱點。微電子工藝技術的進步推動了FPGA器件片內塊存儲器資源速度性能的提升,如何在其標稱速度下進行功能驗證變得日益重要。為了驗證FPGA器件片內塊存儲器資源在標稱速度下的功能是否正常,需要對FPGA器件的高速塊存儲器資源進行測試和驗證。在高速大規模FPGA器件片內塊存儲器資源的測試中,通常包含輸入激勵模塊、待測模塊、時鐘模塊及輸出比較模塊等,如何保證在滿足高速數據傳輸的基礎上提升測試系統的時序收斂余量成為設計的重要挑戰。
針對上述問題,設計提出了一種采用跨時鐘域并結合扁平化策略與流水線技術的FPGA器件片內塊存儲器資源功能驗證方法,通過合理地劃分塊存儲器資源測試模塊的時鐘域,利用FPGA器件中的數字時鐘管理單位(DCM)產生跨時鐘域的時鐘信號,并通過把輸入激勵模塊從待測模塊的高速時鐘域中獨立出來,從而使高速塊存儲器資源可以在高速下進行功能測試驗證,達到時序收斂的要求。該方法采用雙口讀寫存儲器(RAM)或者先進先出存儲器(FIFO)來實現跨時鐘域的數據傳輸,利用扁平化策略及流水線技術設計數據比較模塊,并結合模塊復用技術達到針對FPGA器件塊存儲器資源功能測試靈活、高效的目的。在高速或者極限速度測試中,文中方法能夠盡量減少輸入激勵邏輯資源的對待測模塊的時序約束影響,提升測試系統的時序收斂余量,具有測試速度高、靈活性強等特點,應用范圍廣泛。
1 硬件電路設計
為了對FPGA器件片內的塊存儲器資源進行測試驗證,基于FPGA器件中的已有邏輯資源設計硬件測試電路。FPGA器件單個塊存儲器資源功能驗證方案如圖1所示,主要包含數據激勵模塊、跨時鐘域數據傳輸模塊、待測塊存儲器資源模塊、數據比較模塊、結果顯示模塊及時鐘管理單元。在該功能驗證框架中,主要采用兩個時鐘域,分別為時鐘域1(CLK1)和時鐘域2(CLK2)。CLK1為低頻時鐘域,主要負責產生隨機數據和測試結果的顯示控制等工作。CLK2為高頻時鐘域,主要負責對待測塊存儲器資源進行讀寫測試以及數據的比較等工作。
數據激勵模塊采用PRBS23多項式產生偽隨機數據, 如式(1)所示。數據激勵模塊的硬件電路結構如圖2所示,通過移位寄存器與異或門可以實現1個位寬的偽隨機數據產生。文中針對每個待測的BRAM資源設計36位位寬及512個存儲地址,因此設計的數據激勵模塊包含36個獨立移位寄存器和異或門,從而實現36位位寬數據的測試激勵產生。
跨時鐘域數據傳輸采用雙口RAM實現,通過兩個獨立的讀寫端口及握手機制保證了不同時鐘域數據的正常傳輸。設計的CLK1時鐘域為200 MHz,CLK2時鐘域為400 MHz,通過利用FPGA器件片內部分BRAM資源對待測BRAM資源進行測試,可以有效地保證待測BRAM的數據讀寫頻率為400 MHz,提升設計時序余量。
在對待測BRAM資源進行高速下的功能驗證時,首先往待測BRAM資源寫入偽隨機數據,然后從待測BRAM資源里面讀取寫入的偽隨機數據,并且把其與寫入待測BRAM資源之前的偽隨機數據進行比較,最后依據比較結果判定待測BRAM資源是否功能正常。雙口RAM及待測BRAM資源依據FPGA器件提供的配套開發工具自帶的知識產權(IP)核進行配置。
數據比較模塊由于處在高頻時鐘域CLK2中,因而需要進行扁平化及流水線的設計以便在高速下能夠正常工作,其硬件實現結構如圖3所示。采用四級流水線對從待測塊存儲器資源中讀取的數據(data_rd)和預期的正確數據(data_cmp)進行數據比較,最后得到待測塊存儲器資源功能是否正確的標志信號(cmp_result)。
結果顯示模塊工作在低頻時鐘域CLK1,其通過控制7位數碼管進行待測塊存儲器資源讀寫數據比較結果的顯示。若待測塊存儲器資源讀寫數據一致,則7位數碼管顯示“P”,若不一致,則顯示“F”。
時鐘管理單元基于外部輸入的差分時鐘信號,分別產生低頻與高頻時鐘域。
圖1所示的塊存儲器資源功能驗證框架為針對1個BRAM資源的功能驗證實現結構,由于FPGA器件內的BRAM資源眾多,如典型Xilinx的Virtex4系列的XC4-VSX55型FPGA器件具有320個BRAM資源,每個BRAM資源擁有18 Kb的存儲資源,因而需要設計針對多個BRAM資源的功能驗證方案,其結構框架如圖4所示。通過對單個塊存儲器資源功能驗證模塊進行復用,可以方便地移植到多個塊存儲器資源的功能測試中。圖4中所示方案采用資源復用的優點是可以滿足高速(400 MHz及以上)BRAM資源的測試和驗證需求,其不足是對硬件資源的消耗比較大。
2 功能仿真及驗證
采用Xilinx的Virtex4系列FPGA器件對設計的兩種塊存儲器資源功能驗證電路進行功能仿真及驗證,塊存儲器資源功能驗證頂層模塊接口信號如圖5所示,包含差分時鐘輸入信號(CLK_N和CLK_P)、復位信號(rst_n)、時鐘管理元輸出鎖定信號(LOCKED_OUT)及數碼管顯示信號(HEX_LED)。
設計的兩種塊存儲器資源功能驗證電路分別針對FPGA器件中的1個BRAM資源和24個BRAM資源進行功能驗證,采用Verilog硬件描述語言對上述兩種不同待測塊存儲器資源數量的硬件電路進行設計實現,并基于ISE 14.7及Modelsim SE 10.2c對設計電路進行了綜合、布局布線及仿真。塊存儲器資源功能仿真結果如圖6所示,從圖中可以看出設計的硬件電路達到了預期對待測BRAM資源進行功能驗證的目的。
文中設計的針對塊存儲器資源功能驗證的兩種不同硬件電路采用基于Xilinx的FPGA器件硬件驗證測試板進行測試驗證,如圖7所示。該測試板包含FPGA器件、開關按鈕、撥碼開關、數碼管、晶振、LED燈、JTAG接口、串口及SMA接口等電子元器件,采用數碼管對塊存儲器資源的功能驗證結果進行顯示,時鐘管理元輸出鎖定信號采用LED燈顯示,復位信號采用開關按鈕輸入,差分輸入時鐘信號采用板上晶振或者外部差分輸入信號輸入?;谟布炞C測試板的塊存儲器資源功能驗證結果表明文中提出的塊存儲器資源功能驗證硬件電路能夠滿足400 MHz速度下塊存儲器資源的讀寫數據需求,在該速度下針對1個BRAM資源和24個BRAM資源的測試結果全部通過。
3 綜合結果及性能分析
針對不同塊存儲器資源數量功能驗證的硬件電路綜合結果如表1所示,從表中可以看出在對BRAM資源時序約束為400 MHz的條件下,驗證1個BRAM資源(硬件電路1)和驗證24個BRAM資源(硬件電路2)分別消耗了1%和100%的Slices資源、分別消耗了1%和15%的片內BRAM資源,在驗證24個BRAM資源的硬件電路中,各項資源消耗迅速增加,這是由于文中的硬件電路采用了全并行和全流水線結構設計,可滿足高端FPGA器件高速片內BRAM資源的測試驗證要求。
為了測試文中提出的塊存儲器資源功能驗證硬件電路所能夠達到的極限工作速度,基于圖7所示的硬件驗證測試板,通過SMA接口采用外部輸入差分時鐘信號的方式對24個待測BRAM資源的硬件電路(硬件電路2)進行了不同工作速度下的讀寫數據測試,測試結果如表2所示。從表中可以發現文中提出的塊存儲器資源功能驗證硬件電路最高能夠達到640 MHz的BRAM資源讀寫速度測試需求,具備靈活、可復用及高速等特點。
4 結論
塊存儲器資源是FPGA器件中重要且豐富的資源,基于FPGA的塊存儲器資源功能驗證硬件電路在高端FPGA器件中BRAM資源的測試驗證中具有廣泛的應用。結合扁平化設計策略及流水線設計技術,設計實現了一種靈活、可復用以及可適應高速BRAM資源測試的塊存儲器資源功能驗證硬件電路,該硬件電路通過實際測試可滿足最高640 MHz的BRAM資源測試驗證需求,能夠方便地適應于高端FPGA器件內部BRAM資源的功能驗證及性能測試中,應用前景廣泛。
參考文獻
[1] 羅軍,肖芳,毛雪瑩,等.基于FPGA的方向濾波指紋圖像增強算法實現[J].電子技術應用,2010,36(6):13-16.
[2] 劉焱,周圣澤,羅軍,等.基于FPGA的并串轉換電路硬件實現[J].電子技術應用,2017,43(12):21-24.
[3] Luo Jun,Huang Qijun,Chang Ssheng,et al.High throughput Cholesky decomposition based on FPGA[C].6th International Congress on Image and Signal Processing,2013:1649-1653.
[4] 余慧,王健.一種專用可重配置的FPGA嵌入式存儲器模塊的設計和實現[J].電子學報,2012,40 (2):215-222.
[5] 張惠國,徐彥峰,曹正州,等.FPGA邏輯資源重配置測試技術研究[J].固體電子學研究與進展,2011,31 (3):292-297.
[6] 邱云峰,秦魯東.FPGA可編程邏輯單元測試方法研究[J].計算機與數字工程,2015(1):65-69.
[7] 李圣華,王健,來金梅.基于部分重配置的FPGA內嵌BRAM測試方法[J].復旦學報(自然科學版),2016,55(6):806-814.
[8] 閻哲,張洪,介百瑞,等.基于位流回讀的Virtex Ⅱ內嵌BRAM的測試方法研究[J].微電子學與計算機,2016,33(5):58-61.
作者信息:
羅 軍,范劍峰,呂宏峰,王小強,羅宏偉
(工業和信息化部電子第五研究所,廣東 廣州510610)