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