文獻(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)證過(guò)程也變得更加復(fù)雜,。傳統(tǒng)的軟硬件設(shè)計(jì)方法是在軟硬件劃分之后,軟件和硬件同步進(jìn)行設(shè)計(jì),,直到硬件(指芯片或開(kāi)發(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),,并通過(guò)加載Linux內(nèi)核、編譯驅(qū)動(dòng)和應(yīng)用程序來(lái)控制硬件與外界進(jìn)行交互,?;旌显万?yàn)證是兩者功能相結(jié)合的一種驗(yàn)證方法,,可以進(jìn)行軟硬件協(xié)同開(kāi)發(fā)與調(diào)試。下面介紹混合原型驗(yàn)證平臺(tái)的設(shè)計(jì)方法,,并以UART IP核為例,,詳細(xì)闡述其驗(yàn)證過(guò)程和驗(yàn)證結(jié)果,為IP核設(shè)計(jì)用戶提供一種新型的驗(yàn)證方案,。
1 混合原型驗(yàn)證平臺(tái)
如圖1所示,,混合原型驗(yàn)證平臺(tái)由硬件平臺(tái)和虛擬平臺(tái)兩部分組成,兩者之間通過(guò)高速接口Transactors(XACTOR)互聯(lián),。其中硬件平臺(tái)基于HAPS(High-performance ASIC Prototyping System,,HAPS)原型驗(yàn)證系統(tǒng)實(shí)現(xiàn),平臺(tái)中有一款容量高達(dá)450萬(wàn)門的Virtex-6 LX760 FPGA(Filed Programmable Gate Array),,可以為用戶提供較大容量的RTL驗(yàn)證,;虛擬平臺(tái)主要由一套完善的開(kāi)發(fā)工具包組成,在添加虛擬模型時(shí),,通過(guò)引入已經(jīng)搭建好的虛擬軟件開(kāi)發(fā)包,,為軟件開(kāi)發(fā)人員將虛擬原型演變?yōu)橐惶赚F(xiàn)成可用的參考開(kāi)發(fā)工具[1];XACTOR接口通過(guò)高速總線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萬(wàn)門的門級(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庫(kù)和TLM 2.0標(biāo)準(zhǔn),,可以進(jìn)行快速的系統(tǒng)建模,,仿真速度比RTL高很多。虛擬平臺(tái)是由一套虛擬軟件開(kāi)發(fā)包(Virtualizer Development Kits,,VDK)組成,,可以提供軟件的調(diào)試、分析和仿真功能,,憑借ARM Cortex處理器的高性能模型,、基于AMBA協(xié)議的總線以及DesignWare IP,開(kāi)發(fā)者可以方便地將其基于ARM處理器的設(shè)計(jì)分割到虛擬平臺(tái)和硬件平臺(tái)中,。在虛擬平臺(tái)中單獨(dú)仿真時(shí),,通過(guò)搭建已經(jīng)驗(yàn)證好的TLM模型,用戶可以脫離硬件進(jìn)行仿真,;在與硬件進(jìn)行協(xié)同仿真時(shí),,通過(guò)引入TLM Library,然后在TLM Creator中模擬PHY或測(cè)試設(shè)備,,再把模擬好的I/O模型映射到基于FPGA的硬件原型HAPS上,,最后通過(guò)HAPS端口連接真實(shí)的外部世界,從而實(shí)現(xiàn)軟件和硬件之間的協(xié)同開(kāi)發(fā),,加快了系統(tǒng)開(kāi)發(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,,兩端分別通過(guò)APB總線連接UART IP核,,再通過(guò)UMRBus高速總線連接虛擬平臺(tái);Clock/Reset是由HAPS提供的時(shí)鐘和復(fù)位模塊,。左半部分為虛擬平臺(tái),,通過(guò)基于標(biāo)準(zhǔn)TLM2.0的XACTOR接口,用戶可以訪問(wèn)硬件單元,,從而實(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í)終端,,通過(guò)Minicom工具來(lái)觀測(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來(lái)開(kāi)發(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ā)起,,表示傳輸字符開(kāi)始,;
數(shù)據(jù)位:起始位后緊接著數(shù)據(jù)位,位數(shù)由7~8位構(gòu)成一個(gè)字符,,由時(shí)鐘控制從低位開(kāi)始傳送,;
奇偶校驗(yàn)位:數(shù)據(jù)位加上這一位后,得出“1”的位數(shù)為偶數(shù)或者奇數(shù),,以此來(lái)校驗(yàn)數(shù)據(jù)傳輸?shù)恼_性,;
停止位:可以是1位、1.5位,、2位的高電平,,是一個(gè)數(shù)據(jù)幀結(jié)束的標(biāo)志;
空閑位:處于高電平狀態(tài),,表示當(dāng)前線路上沒(méi)有數(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í)鐘的控制下,,通過(guò)Data_out線把數(shù)據(jù)發(fā)送出去,;接收數(shù)據(jù)時(shí),在接收時(shí)鐘的控制下,,串行數(shù)據(jù)通過(guò)Data_in線逐位送入接收移位寄存器中,,當(dāng)檢測(cè)到停止位時(shí),數(shù)據(jù)被轉(zhuǎn)換為并行數(shù)據(jù)并送入接收FIFO模塊中,,并被總線讀取,,后面進(jìn)入空閑狀態(tài),等待下一次任務(wù),。
線路狀態(tài)與控制模塊通過(guò)地址選通信號(hào)鎖存片選信號(hào)和地址信號(hào),,當(dāng)片選信號(hào)有效時(shí),鎖存讀,、寫選通信號(hào),,當(dāng)檢測(cè)到讀或?qū)懙臄?shù)據(jù)到來(lái)時(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)能夠通過(guò)UMRBus總線訪問(wèn)IP核,需要把IP核添加到頂層文件包含UMRBus高速接口的FPGA工程中,。該功能模塊是由例化的XACTOR實(shí)現(xiàn),,XACTOR是由本平臺(tái)提供的接口IP,主要通過(guò)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),通過(guò)連接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,,通過(guò)標(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è)試腳本訪問(wèn)硬件寄存器,,以測(cè)試IP核寄存器設(shè)計(jì)是否正確。在GFRBM模式下,,Testbench采用標(biāo)準(zhǔn)的STL 2.0(Socket Transactor Language)語(yǔ)言實(shí)現(xiàn),,STL是由OCPIP(Open Core Protocol International Partnership)組織提出的標(biāo)準(zhǔn)Socket語(yǔ)言,主要由3個(gè)不同的子集組成:
(1)Basic commands:基于單指令任務(wù)的控制傳輸模式,;
(2)Macro statements:采用短指令的突發(fā)傳輸序列,;
(3)Behavioral statements:用戶自定義控制指令。
根據(jù)本設(shè)計(jì)需要,,UART IP核可以被訪問(wèn)的寄存器名字和地址如表1所示,。
可訪問(wèn)的寄存器確定完成后,采用STL語(yǔ)言編寫測(cè)試腳本,,示例如圖6所示,。
3 驗(yàn)證過(guò)程與結(jié)果分析
混合原型驗(yàn)證方案中,對(duì)IP核進(jìn)行混合驗(yàn)證之前,首先需要使用仿真器對(duì)RTL代碼進(jìn)行仿真,。當(dāng)仿真通過(guò)之后,,才可以在硬件平臺(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)開(kāi)始混合原型驗(yàn)證,。
3.1 寄存器讀寫功能測(cè)試
在虛擬平臺(tái)中通過(guò)GFRBM模式對(duì)UART IP核進(jìn)行寄存器讀寫訪問(wè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ù)通過(guò)IP核發(fā)送到TXD端口,再通過(guò)串口傳送到上位機(jī)超級(jí)終端進(jìn)行顯示,;接收數(shù)據(jù)時(shí),,超級(jí)終端發(fā)送數(shù)據(jù)至IP核的RXD端口,,虛擬平臺(tái)讀取IP核接收的數(shù)據(jù),然后把數(shù)據(jù)在虛擬平臺(tái)中打印出來(lái),,從而確定IP核傳輸功能的正確性,。下面分別采用單端發(fā)送和回環(huán)傳輸兩種方法進(jìn)行測(cè)試。
(1)單端發(fā)送測(cè)試:即從虛擬平臺(tái)發(fā)送數(shù)據(jù),,通過(guò)UART IP核傳送至超級(jí)終端Minicom,,在Minicom中顯示發(fā)送的數(shù)據(jù)是否正確。虛擬平臺(tái)中,,對(duì)UART IP核數(shù)據(jù)傳輸協(xié)議配置如下:傳輸速率9 600 b/s,、8 bit數(shù)據(jù)、無(wú)校驗(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ù),,通過(guò)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ù)、無(wú)校驗(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ì)過(guò)程進(jìn)行分析并對(duì)結(jié)果進(jìn)行驗(yàn)證,。由于采用了混合原型驗(yàn)證技術(shù),使得SoC設(shè)計(jì)人員在開(kāi)發(fā)早期便可發(fā)現(xiàn)設(shè)計(jì)的缺陷或故障,,進(jìn)而改進(jìn)系統(tǒng)的功能和性能,,降低開(kāi)發(fā)風(fēng)險(xiǎn)。另外,本方案開(kāi)發(fā)的IP核完全采用Verilog語(yǔ)言設(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] 董大成,張建東,,史國(guó)慶.基于FPGA的UART IP核的設(shè)計(jì)與實(shí)現(xiàn)[J].計(jì)算機(jī)測(cè)量與控制,,2012,20(8):2251-2253.