文獻標識碼: A
DOI:10.16157/j.issn.0258-7998.2015.10.009
中文引用格式: 趙新超,陳嵐,馮燕,等. 基于混合原型平臺的UART IP核設(shè)計與驗證[J].電子技術(shù)應(yīng)用,2015,41(10):39-42.
英文引用格式: Zhao Xinchao,Chen Lan,F(xiàn)eng Yan,et al. Design and verification of UART IP core based on hybird ptototyping platform[J].Application of Electronic Technique,2015,41(10):39-42.
0 引言
隨著片上系統(tǒng)(System on Chip,SoC)設(shè)計復(fù)雜度的增加,驗證過程也變得更加復(fù)雜。傳統(tǒng)的軟硬件設(shè)計方法是在軟硬件劃分之后,軟件和硬件同步進行設(shè)計,直到硬件(指芯片或開發(fā)板)完成后才可以與軟件集成測試;如果此時發(fā)現(xiàn)軟件或者硬件設(shè)計中存在缺陷需要重新修改設(shè)計時,勢必增加設(shè)計周期,影響產(chǎn)品的上市時間。所以,當(dāng)前迫切需要一種在硬件流片之前,便可以對SoC設(shè)計進行軟硬件協(xié)同驗證的方法?;旌显万炞C便是很好的解決方案。
混合原型驗證是虛擬原型與硬件原型相結(jié)合的一種驗證技術(shù),通常情況下,SoC設(shè)計由硬件設(shè)計和軟件設(shè)計兩部分組成,硬件設(shè)計主要采用寄存器傳輸級(Register Transfer Level,RTL)代碼實現(xiàn),軟件設(shè)計主要在中央處理器(Central Process Unit,CPU)中實現(xiàn),并通過加載Linux內(nèi)核、編譯驅(qū)動和應(yīng)用程序來控制硬件與外界進行交互?;旌显万炞C是兩者功能相結(jié)合的一種驗證方法,可以進行軟硬件協(xié)同開發(fā)與調(diào)試。下面介紹混合原型驗證平臺的設(shè)計方法,并以UART IP核為例,詳細闡述其驗證過程和驗證結(jié)果,為IP核設(shè)計用戶提供一種新型的驗證方案。
1 混合原型驗證平臺
如圖1所示,混合原型驗證平臺由硬件平臺和虛擬平臺兩部分組成,兩者之間通過高速接口Transactors(XACTOR)互聯(lián)。其中硬件平臺基于HAPS(High-performance ASIC Prototyping System,HAPS)原型驗證系統(tǒng)實現(xiàn),平臺中有一款容量高達450萬門的Virtex-6 LX760 FPGA(Filed Programmable Gate Array),可以為用戶提供較大容量的RTL驗證;虛擬平臺主要由一套完善的開發(fā)工具包組成,在添加虛擬模型時,通過引入已經(jīng)搭建好的虛擬軟件開發(fā)包,為軟件開發(fā)人員將虛擬原型演變?yōu)橐惶赚F(xiàn)成可用的參考開發(fā)工具[1];XACTOR接口通過高速總線UMRBus(Universal Multi-Resource Bus)進行數(shù)據(jù)傳輸[2],UMRBus是一種高性能、低延時通信總線,它能為所有板載FPGA、存儲器、寄存器和其他資源提供連接功能,其傳輸協(xié)議基于AMBA(Advanced Microcontroller Bus Architecture)協(xié)議實現(xiàn)。
1.1 硬件平臺
HAPS原型驗證系統(tǒng)由一套HAPS-61高性能ASIC原型驗證平臺和一套復(fù)雜的支撐軟件組成,支撐軟件包括:Certify FPGA代碼分割工具、Synplify FPGA綜合工具、Xilinx ISE布局布線工具、Confpro下載工具以及Identify在線調(diào)試工具。HAPS-61原型驗證系統(tǒng)的主要特點包括:容納高達450萬門的門級電路;843個用戶I/O接口;12個外部差分時鐘輸出;一個100 MHz的晶振,2個PLLs能夠產(chǎn)生高達700 MHz的時鐘頻率;可配置的電源網(wǎng)絡(luò);高速UMRBus數(shù)據(jù)傳輸。
1.2 虛擬平臺
與傳統(tǒng)RTL級驗證相比,虛擬平臺的驗證建立在電子系統(tǒng)級(Electronic System Level,ESL)之上,運用SystemC庫和TLM 2.0標準,可以進行快速的系統(tǒng)建模,仿真速度比RTL高很多。虛擬平臺是由一套虛擬軟件開發(fā)包(Virtualizer Development Kits,VDK)組成,可以提供軟件的調(diào)試、分析和仿真功能,憑借ARM Cortex處理器的高性能模型、基于AMBA協(xié)議的總線以及DesignWare IP,開發(fā)者可以方便地將其基于ARM處理器的設(shè)計分割到虛擬平臺和硬件平臺中。在虛擬平臺中單獨仿真時,通過搭建已經(jīng)驗證好的TLM模型,用戶可以脫離硬件進行仿真;在與硬件進行協(xié)同仿真時,通過引入TLM Library,然后在TLM Creator中模擬PHY或測試設(shè)備,再把模擬好的I/O模型映射到基于FPGA的硬件原型HAPS上,最后通過HAPS端口連接真實的外部世界,從而實現(xiàn)軟件和硬件之間的協(xié)同開發(fā),加快了系統(tǒng)開發(fā)進度。
2 UART IP核混合驗證方案
2.1 整體方案設(shè)計
為了驗證已經(jīng)設(shè)計好的UART IP核,構(gòu)建如圖2所示的混合驗證方案。圖中,中間部分為HAPS硬件平臺,包含了全部FPGA硬件實現(xiàn),其中UART IP核是自主設(shè)計的基于APB(Advanced Peripheral Bus)接口的待驗證IP核,XACTOR是由本系統(tǒng)提供的接口IP,兩端分別通過APB總線連接UART IP核,再通過UMRBus高速總線連接虛擬平臺;Clock/Reset是由HAPS提供的時鐘和復(fù)位模塊。左半部分為虛擬平臺,通過基于標準TLM2.0的XACTOR接口,用戶可以訪問硬件單元,從而實現(xiàn)基于事務(wù)級模型的協(xié)同仿真。虛擬平臺中事務(wù)級建模測試方法可以由2種方法實現(xiàn):基于GFRBM(Generic File Reader Bus Master)模式的Testbench輸入和基于Linux內(nèi)核的UART驅(qū)動加載,分別可以對硬件RTL中的寄存器讀寫功能和IP核數(shù)據(jù)傳輸功能進行測試。右半部分為連接RS-232串口的超級終端,通過Minicom工具來觀測IP核數(shù)據(jù)收發(fā)的正確性,進而協(xié)助虛擬平臺完成整個系統(tǒng)驗證[3]。
2.2 UART IP核設(shè)計
2.2.1 UART協(xié)議
UART接口是計算機串行通信廣泛使用的接口,包含了RS-232、RS-422、RS-485等串口。本設(shè)計采用Verilog來開發(fā)符合RS-232標準的UART IP核。UART傳輸只需要兩條信號線(RXD,TXD)就可以完成數(shù)據(jù)的相互通信,接收與發(fā)送是全雙工實現(xiàn)。其工作原理是將傳輸數(shù)據(jù)的每個字符進行編碼,一位接著一位的傳輸,傳輸?shù)乃俾视刹ㄌ芈蕰r鐘控制[4]。其中各比特的意義如圖3所示。
起始位:低電平信號發(fā)起,表示傳輸字符開始;
數(shù)據(jù)位:起始位后緊接著數(shù)據(jù)位,位數(shù)由7~8位構(gòu)成一個字符,由時鐘控制從低位開始傳送;
奇偶校驗位:數(shù)據(jù)位加上這一位后,得出“1”的位數(shù)為偶數(shù)或者奇數(shù),以此來校驗數(shù)據(jù)傳輸?shù)恼_性;
停止位:可以是1位、1.5位、2位的高電平,是一個數(shù)據(jù)幀結(jié)束的標志;
空閑位:處于高電平狀態(tài),表示當(dāng)前線路上沒有數(shù)據(jù)傳送,若空閑位后出現(xiàn)低電平,則表示下一個數(shù)據(jù)幀的起始位。
2.2.2 功能模塊設(shè)計
為了簡化IP核設(shè)計,在具備基本異步串行收發(fā)功能的前提下,去掉了Modem控制器功能模塊。IP核內(nèi)部設(shè)計結(jié)構(gòu)如圖4所示,主要由波特率發(fā)生模塊、線路狀態(tài)與控制模塊、接收模塊、發(fā)送模塊、接收FIFO模塊、發(fā)送FIFO模塊、中斷控制模塊等組成[5]。
各模塊之間的工作關(guān)系如下:當(dāng)發(fā)送數(shù)據(jù)時,APB總線把數(shù)據(jù)寫入發(fā)送FIFO中,當(dāng)發(fā)送移位寄存器是空時,先由發(fā)送邏輯根據(jù)線路狀態(tài)對數(shù)據(jù)進行配置,即在數(shù)據(jù)頭部加上起始位,在數(shù)據(jù)尾部加上奇偶校驗位和停止位,然后把數(shù)據(jù)壓入到發(fā)送移位寄存器中,最后在發(fā)送時鐘的控制下,通過Data_out線把數(shù)據(jù)發(fā)送出去;接收數(shù)據(jù)時,在接收時鐘的控制下,串行數(shù)據(jù)通過Data_in線逐位送入接收移位寄存器中,當(dāng)檢測到停止位時,數(shù)據(jù)被轉(zhuǎn)換為并行數(shù)據(jù)并送入接收FIFO模塊中,并被總線讀取,后面進入空閑狀態(tài),等待下一次任務(wù)。
線路狀態(tài)與控制模塊通過地址選通信號鎖存片選信號和地址信號,當(dāng)片選信號有效時,鎖存讀、寫選通信號,當(dāng)檢測到讀或?qū)懙臄?shù)據(jù)到來時,進行相關(guān)寄存器操作。
中斷控制模塊要求當(dāng)任何中斷發(fā)生時,中斷使能寄存器根據(jù)中斷優(yōu)先級的不同,允許對應(yīng)的中斷發(fā)生。UART IP核的中斷申請可以分為4個優(yōu)先級,從高至低的順序為:INT0(接收器狀態(tài)錯誤),INT1(接收數(shù)據(jù)準備好),INT2(發(fā)送器空),INT3(Modem控制中斷)。
2.2.3 構(gòu)建UART IP核的FPGA工程
設(shè)計完基于APB接口的UART IP核后,為使虛擬平臺能夠通過UMRBus總線訪問IP核,需要把IP核添加到頂層文件包含UMRBus高速接口的FPGA工程中。該功能模塊是由例化的XACTOR實現(xiàn),XACTOR是由本平臺提供的接口IP,主要通過AMBA協(xié)議實現(xiàn)軟件平臺與硬件平臺之間的數(shù)據(jù)傳輸,每一個XACTOR由一個CAPIM(Client Application Interface Module)組成,系統(tǒng)總共提供了5類XACTOR供用戶使用:APB、AHB、AXI、GPIO、INT。用戶需要根據(jù)自己設(shè)計的IP核接口類型,選擇對應(yīng)的XACTOR添加到自己的工程中,然后修改相應(yīng)的端口、時鐘、reset信號等,從而產(chǎn)生包含UMRBus高速接口的FPGA工程。
2.3 虛擬平臺設(shè)計
2.3.1 搭建虛擬平臺
本方案需要在虛擬平臺中創(chuàng)建虛擬模型,并分別搭建能夠?qū)τ布TL寄存器讀寫功能測試和對IP核數(shù)據(jù)傳輸功能測試的虛擬平臺。其中,對硬件RTL寄存器讀寫功能測試的虛擬平臺如圖5所示。圖中,i_GFRBM_TLM2作為事件發(fā)起方(Initiator),通過連接tlm2bus總線,可以與硬件平臺進行操作;i_ClockGenerator是虛擬時鐘產(chǎn)生模塊,為總線和Initiator提供時鐘單元;i_ResetGenerator是虛擬模型復(fù)位模塊,提供系統(tǒng)的復(fù)位功能;i_TlmTarget2UmrAMBA和i_IntInitiator2Umr是基于SystemC實現(xiàn)的并與硬件CAPIM相對應(yīng)的XACTOR,通過標準的TLM2.0 Socket接口,實現(xiàn)軟件平臺與硬件平臺的數(shù)據(jù)交互功能。
2.3.2 設(shè)計腳本
虛擬平臺搭建完成后,需要在i_GFRBM_TLM2中寫入測試腳本訪問硬件寄存器,以測試IP核寄存器設(shè)計是否正確。在GFRBM模式下,Testbench采用標準的STL 2.0(Socket Transactor Language)語言實現(xiàn),STL是由OCPIP(Open Core Protocol International Partnership)組織提出的標準Socket語言,主要由3個不同的子集組成:
(1)Basic commands:基于單指令任務(wù)的控制傳輸模式;
(2)Macro statements:采用短指令的突發(fā)傳輸序列;
(3)Behavioral statements:用戶自定義控制指令。
根據(jù)本設(shè)計需要,UART IP核可以被訪問的寄存器名字和地址如表1所示。
可訪問的寄存器確定完成后,采用STL語言編寫測試腳本,示例如圖6所示。
3 驗證過程與結(jié)果分析
混合原型驗證方案中,對IP核進行混合驗證之前,首先需要使用仿真器對RTL代碼進行仿真。當(dāng)仿真通過之后,才可以在硬件平臺上進行混合原型驗證。硬件實現(xiàn)時,首先采用Certify工具進行代碼分割,再使用Synplify工具進行代碼綜合,然后使用ISE工具進行布局布線并產(chǎn)生可加載的.bin文件,最后使用Confpro工具配置硬件系統(tǒng)。當(dāng)硬件系統(tǒng)配置完成后,按照圖2所示的方式進行連接,并啟動虛擬平臺開始混合原型驗證。
3.1 寄存器讀寫功能測試
在虛擬平臺中通過GFRBM模式對UART IP核進行寄存器讀寫訪問時,參照2.3.1節(jié)中搭建的虛擬平臺和2.3.2節(jié)中給出的測試腳本,分別采用固定值讀寫和隨機數(shù)讀寫兩種方式測試寄存器,結(jié)果如下:
(1)固定值讀寫測試:分別對表1給出的寄存器寫入固定值0x0000、0x5555、0xaaaa、0xffff,然后讀取該寄存器的值。經(jīng)對比,讀出值與寫入值完全一致。
(2)隨機值讀寫測試:分別對表1給出的寄存器寫入隨機值$random, 然后讀取該寄存器的值。經(jīng)對比,讀出值與寫入值完全一致。
3.2 UART數(shù)據(jù)傳輸測試
與寄存器讀寫功能測試不同,在測試UART IP核的傳輸功能時,首先仿照2.3.1節(jié)的方法,構(gòu)建包含處理器IP核模型的虛擬平臺,然后在虛擬平臺中加載ARM?誖CortexTM處理器IP模型,并編譯UART軟件環(huán)境,包括操作系統(tǒng)、驅(qū)動以及應(yīng)用程序等。測試時,首先在虛擬平臺中對IP核進行傳輸配置,包括傳輸速率、數(shù)據(jù)位、奇偶校驗等,并把發(fā)送數(shù)據(jù)通過IP核發(fā)送到TXD端口,再通過串口傳送到上位機超級終端進行顯示;接收數(shù)據(jù)時,超級終端發(fā)送數(shù)據(jù)至IP核的RXD端口,虛擬平臺讀取IP核接收的數(shù)據(jù),然后把數(shù)據(jù)在虛擬平臺中打印出來,從而確定IP核傳輸功能的正確性。下面分別采用單端發(fā)送和回環(huán)傳輸兩種方法進行測試。
(1)單端發(fā)送測試:即從虛擬平臺發(fā)送數(shù)據(jù),通過UART IP核傳送至超級終端Minicom,在Minicom中顯示發(fā)送的數(shù)據(jù)是否正確。虛擬平臺中,對UART IP核數(shù)據(jù)傳輸協(xié)議配置如下:傳輸速率9 600 b/s、8 bit數(shù)據(jù)、無校驗位、1 bit停止位,同樣在Minicom中配置相同的傳輸參數(shù)。經(jīng)測試,Minicom接收的數(shù)據(jù)與發(fā)送數(shù)據(jù)完全一致。測試結(jié)果如圖7所示。
(2)回環(huán)測試:即從虛擬平臺發(fā)送數(shù)據(jù),通過UART IP核傳送至Minicom,Minicom接收到數(shù)據(jù)后,再把接收到的數(shù)據(jù)發(fā)送至UART IP核,虛擬平臺讀取IP核接收的數(shù)據(jù),然后在虛擬平臺顯示窗口進行收發(fā)數(shù)據(jù)對比,以此確定回環(huán)傳輸?shù)恼_性。同樣在虛擬平臺和Minicom中配置如下參數(shù):傳輸速率9 600 b/s、8 bit數(shù)據(jù)、無校驗位、1 bit停止位。經(jīng)測試,虛擬平臺接收的數(shù)據(jù)與發(fā)送數(shù)據(jù)完全一致,從而確定整個通路傳輸是正確的。
4 結(jié)論
本文介紹了基于虛擬平臺與硬件平臺相結(jié)合的混合原型驗證技術(shù),并以UART IP核為例,對設(shè)計過程進行分析并對結(jié)果進行驗證。由于采用了混合原型驗證技術(shù),使得SoC設(shè)計人員在開發(fā)早期便可發(fā)現(xiàn)設(shè)計的缺陷或故障,進而改進系統(tǒng)的功能和性能,降低開發(fā)風(fēng)險。另外,本方案開發(fā)的IP核完全采用Verilog語言設(shè)計,移植性好,其接口采用標準的APB總線接口協(xié)議,所以不需要用戶進行修改,便可很好地應(yīng)用于SoC設(shè)計中,具有較高的應(yīng)用價值。
參考文獻
[1] Nithya Ruff.SoC設(shè)計:虛擬原型成為主流[J].電子產(chǎn)品世界,2013(1):25-27.
[2] UMRBus Communication System Handbook.2012,V3.14[DB/OL].http://www.synopsys.com.
[3] 吳君欽,李艷麗.一種SoC軟硬件協(xié)同驗證方法的設(shè)計[J].江西理工大學(xué)學(xué)報,2011,32(3):65-68.
[4] 朱勤,錢敏.嵌入式UART的設(shè)計及FPGA驗證[J].通信技術(shù),2012,45(241):150-153.
[5] 董大成,張建東,史國慶.基于FPGA的UART IP核的設(shè)計與實現(xiàn)[J].計算機測量與控制,2012,20(8):2251-2253.