王 丹,代雪峰
(1.中國電子科技集團公司第四十七研究所,沈陽110032;2.東北大學(xué)理學(xué)院物理系,沈陽110004))
基于FPGA的ARM SoC原型驗證平臺設(shè)計
王 丹1,代雪峰2
(1.中國電子科技集團公司第四十七研究所,沈陽110032;2.東北大學(xué)理學(xué)院物理系,沈陽110004))
隨著應(yīng)用需求的不斷提升,SoC設(shè)計規(guī)模急劇增大,功能日益復(fù)雜,性能要求也越來越高,如何縮短驗證時間,提高驗證效率和質(zhì)量以縮短芯片的生產(chǎn)時間成為當(dāng)今SoC設(shè)計領(lǐng)域中最為關(guān)注的課題之一。FPGA原型驗證是SoC設(shè)計的有效途徑。在流片前建立一個基于FPGA的高性價比原型驗證系統(tǒng)成為SoC驗證的重要方法,可以及時發(fā)現(xiàn)芯片設(shè)計中的缺陷和錯誤,同時進行軟件程序設(shè)計,進而縮短SoC芯片的開發(fā)周期。描述了以ARM為核心處理器的SoC設(shè)計的FPGA原型驗證平臺實現(xiàn)過程,介紹了怎樣利用該平臺進行軟硬件協(xié)同驗證,并在此基礎(chǔ)上移植了uC/OSII嵌入式操作系統(tǒng),對該SoC設(shè)計進行系統(tǒng)級驗證。
ARM處理器;SoC設(shè)計;FPGA原型驗證;軟硬件協(xié)同驗證;uC/OS-II操作系統(tǒng)
隨著集成電路設(shè)計技術(shù)和半導(dǎo)體工藝技術(shù)的不斷進步,IC設(shè)計的規(guī)模和復(fù)雜度迅速增長,SoC(System on Chip)驗證工作也越來越困難,驗證和調(diào)試所占的時間可以達到總工期70%以上,單靠軟件仿真,不足以發(fā)現(xiàn)一些問題。為了模擬實際應(yīng)用環(huán)境,F(xiàn)PGA作為設(shè)計的原型載體,被應(yīng)用到驗證中進行軟硬件協(xié)同驗證,彌補了軟件仿真的速度問題,使設(shè)計者盡快發(fā)現(xiàn)電路中存在的缺陷[1]。下面詳細論述了一個以ARM為核心處理器的SoC芯片的FPGA原型驗證平臺實現(xiàn)過程。文章首先描述了該SoC芯片的系統(tǒng)架構(gòu),然后闡述了該SoC芯片F(xiàn)PGA驗證平臺的硬件設(shè)計、軟件設(shè)計、軟硬件協(xié)同驗證。
SoC一般是指將微處理器、模擬IP核、數(shù)字IP核和各類存儲器集成在單一芯片上。SoC不是各個芯片功能的簡單疊加,而是從整個系統(tǒng)功能和性能出發(fā),選用合適的平臺,軟硬結(jié)合的設(shè)計和驗證方法,在一個芯片上實現(xiàn)復(fù)雜的功能[2]。所驗證的SoC芯片以ARM為核心處理器,具有高度靈活的可配置性,方便集成各種標準接口。
該SoC設(shè)計[3]內(nèi)嵌了256KB的Flash和96KB的SRAM、4個32位定時器、2個看門狗定時器、多個GPIO口、片外設(shè)備接口(EPI)、通信接口包括三路UART、三路CAN 2.0控制器、兩路I2C模塊、兩路同步串行接口SPI、一路音頻接口I2S、集成MAC和PHY的10/100以太網(wǎng)、USB 2.0 OTG/Host/Device。圖1為該SoC的系統(tǒng)架構(gòu)。
圖1 SoC系統(tǒng)架構(gòu)
現(xiàn)場可編程門陣列(FPGA)作為集成電路設(shè)計技術(shù)的第三次重大進步標志,可以使RTL綜合的結(jié)果直接運行在FPGA芯片上,重用性及現(xiàn)場靈活性較好。SoC設(shè)計在流片之前進行系統(tǒng)原型驗證,就是將仿真平臺硬件化,所以其驗證就更具有真實性。
該FPGA驗證硬件平臺包括FPGA原型驗證母板和驗證子板。FPGA驗證母板與驗證子板之間通過HPC接口連接,如圖2所示。
該驗證系統(tǒng)的FPGA驗證母板采用Xilinx公司的TEL-Device Kintex7 325T FPGA開發(fā)板[4],該器件采用了TSMC領(lǐng)先的28nm高性能、低功耗工藝。
由于ASIC和FPGA在物理結(jié)構(gòu)上有很大不同,ASIC是基于標準單元庫,F(xiàn)PGA是基于查找表結(jié)構(gòu),所以使用FPGA進行原型驗證時,需要把ASIC設(shè)計轉(zhuǎn)換為FPGA設(shè)計。需要轉(zhuǎn)換的主要有以下幾個方面:
圖2 FPGA驗證平臺的硬件結(jié)構(gòu)框圖
(1)時鐘
在ASIC設(shè)計中,用布局布線工具來放置時鐘樹,利用代工廠提供的PLL進行時鐘設(shè)計,而在FPGA中通常有一定數(shù)量的PLL宏單元,并有針對時鐘優(yōu)化的全局時鐘網(wǎng)絡(luò),這樣的時鐘網(wǎng)絡(luò)可以保證相同的時鐘沿到達每個觸發(fā)器的延遲時間差異是可以忽略不計的,因此時鐘單元要進行轉(zhuǎn)換。
(2)Memory
ASIC中的存儲單元使用代工廠所提供的Memory Compiler來定制,這是FPGA不能綜合的部分,F(xiàn)PGA內(nèi)部提供了經(jīng)過驗證并優(yōu)化的存儲單元,因此存儲單元需要轉(zhuǎn)換為FPGA中的存儲單元或者用外部存儲器芯片來替換。
(3)I/O
由于ASIC的Pad使用的是ASIC器件庫中的單元,F(xiàn)PGA不能直接使用,要替換成FPGA的I/O。
FPGA硬件實現(xiàn)流程如圖3所示。SoC系統(tǒng)的RTL設(shè)計代碼,通過ISE和Synplify軟件進行FPGA綜合并映射,映射工具根據(jù)設(shè)置的約束條件對設(shè)計代碼進行邏輯優(yōu)化并生成網(wǎng)表,接著進行布局布線,生成配置文件和進行靜態(tài)時序分析,如果時序不能滿足約束,可通過時序報告文件來確認關(guān)鍵路徑,進行時序優(yōu)化??梢酝ㄟ^修改約束條件,或者修改RTL代碼來滿足時序要求。當(dāng)時序能滿足約束條件時,就可以利用配置文件進行下載。
由于該SoC設(shè)計包括豐富的接口模塊,為了更好的驗證這些接口模塊,需要設(shè)計一塊驗證子板,該驗證子板包括:
·2MB SPI Flash(W25Q16),通過讀寫Flash,實現(xiàn)SoC的SPI接口功能測試;
·2048-Bit I2C EEPROM(AT24L02),通過讀寫EEPROM,實現(xiàn)SoC的I2C接口功能測試;
·4.3英寸QVGA帶觸摸屏的TFT LCD(分辨率480×272,SSD1963主控),該LCD顯示屏是通過EPI接口連接的,通過LCD顯示,實現(xiàn)SoC的EPI接口功能測試;
圖3 FPGA硬件實現(xiàn)流程
·Micro SD卡座,SD卡是通過SPI接口控制,讀寫SD卡,實現(xiàn)SoC的SPI接口功能測試;
·CAN收發(fā)器SN65VHD230,實現(xiàn)CAN數(shù)字信號轉(zhuǎn)為差分信號,用于CAN總線的數(shù)據(jù)傳輸。將該CAN接口與其它開發(fā)板的CAN接口互連進行收發(fā)測試,實現(xiàn)SoC的CAN控制器功能測試;
·USB PHY芯片TUSB1106PWR,通過與PC機的USB接口通訊,實現(xiàn)SoC的USB控制器功能測試;
·Ethernet PHY芯片RTL8201BL,通過與PC機的網(wǎng)口進行通訊,實現(xiàn)SoC的Ethernet MAC功能測試;
·1個232串口收發(fā)器芯片MAX3232,實現(xiàn)UART信號的電平轉(zhuǎn)換,通過與PC機的UART接口通信,實現(xiàn)SoC的UART控制器功能測試;
·1個I2S音頻編解碼芯片(WM8978)。通過I2C接口實現(xiàn)對該音頻編解碼器的控制,通過I2S接口傳輸音頻數(shù)據(jù),揚聲器可播放音頻,實現(xiàn)SoC的I2C和I2S接口功能測試;
·1個Reset按鈕,用于系統(tǒng)復(fù)位,1個NMI按鈕,用于產(chǎn)生不可屏蔽的中斷信號,1個用戶自定義的按鈕,用于測試SoC的GPIO輸入功能;
·1個電源指示LED燈,顯示供電系統(tǒng)是否正常,3個LED燈,用于測試SoC的GPIO輸出功能;
·1個JTAG接口,用于調(diào)試和下載測試程序;
·驗證子板的電源及時鐘均來自于FPGA母板。
前一部分主要介紹了FPGA驗證平臺的硬件部分,在這個硬件平臺上運行的程序就是驗證平臺的軟件部分。軟件部分的實現(xiàn)方式有兩種:一種是編寫匯編和C代碼直接在平臺上運行,此種方法用于驗證單個功能模塊,不能并行工作;另一種是先將嵌入式操作系統(tǒng)移植到平臺上,然后在操作系統(tǒng)的基礎(chǔ)上用C語言編寫驗證代碼,此種方法適用于系統(tǒng)級驗證。
4.1 模塊級驗證
驗證平臺的軟件集成開發(fā)工具使用的是IAR Embedded Workbench,這是一套用于編譯和調(diào)試嵌入式系統(tǒng)軟件程序的開發(fā)工具,支持匯編、C和C++語言。它提供完整的集成開發(fā)環(huán)境,包括工程管理器、編輯器、編譯鏈接工具和C-SPY調(diào)試器。
軟件實現(xiàn)主要包括:啟動代碼、驅(qū)動程序、應(yīng)用程序三個部分。
啟動代碼是系統(tǒng)上電后執(zhí)行的第一段代碼,主要完成系統(tǒng)的初始化,為系統(tǒng)運行準備好軟硬件環(huán)境。該部分代碼的設(shè)計由匯編完成,實現(xiàn)的功能為:①定義入口地址;②建立異常中斷向量表;③初始化外部存儲器;④初始化堆棧指針;⑤進入到C程序。
驅(qū)動程序是硬件的接口,應(yīng)用程序只有通過這個接口才能控制硬件工作,離開驅(qū)動程序,硬件模塊是無法工作的。為了方便用戶使用,可以將驅(qū)動程序開發(fā)后,以API函數(shù)的形式提供給用戶使用。
應(yīng)用程序是在驅(qū)動程序的基礎(chǔ)上,直接針對特定的應(yīng)用場景或者特定的功能測試而開發(fā)的軟件代碼。
啟動程序運行后,完成最基本的初始化工作,然后應(yīng)用程序直接調(diào)用驅(qū)動程序中的API函數(shù),針對模塊的功能,或者模擬用戶的使用場景,對SoC設(shè)計中的各個模塊進行功能驗證。該部分工作是分別對各個模塊的功能進行驗證,能夠及時發(fā)現(xiàn)各個模塊的設(shè)計缺陷,是系統(tǒng)級驗證的基礎(chǔ)。
4.2 系統(tǒng)級驗證
實時操作系統(tǒng)是嵌入式系統(tǒng)的靈魂,它對整個系統(tǒng)進行硬件資源管理、多任務(wù)協(xié)調(diào)調(diào)度、任務(wù)間同步和通信及存儲管理。在SoC上移植嵌入式操作系統(tǒng)并開發(fā)測試程序,可以對整個SoC進行集成后的系統(tǒng)級驗證,也是一種更為有效的驗證方式?,F(xiàn)在流行的嵌入式操作系統(tǒng)有很多種,如Linux、WinCE、uC/OS-II、VxWorks、Andrio操作系統(tǒng)等,主要闡述在該SoC運行uC/OS-II[7]及上層應(yīng)用程序來驗證與測試該SoC系統(tǒng)的設(shè)計。采用uC/OS-II來驗證與測試該SoC設(shè)計,是因為uC/OS-II具有如下顯著優(yōu)點:
·開放源碼。測試人員可以根據(jù)自己的驗證與測試需要直接修改uC/OS-II源碼。
·精簡小巧。這使得軟件虛擬仿真在花費較少時間的情況下便可以檢測到SoC邏輯設(shè)計錯誤。
·易裁減。測試人員可以根據(jù)自己的需要集中測試某個IP核設(shè)計。
·多任務(wù)。由于uC/OS-II支持多任務(wù),所以在系統(tǒng)級測試時,可以使多個IP核并發(fā)工作。
uC/OS-II的移植只需要修改與處理器相關(guān)的代碼,在uC/OS-II內(nèi)核源碼中與操作系統(tǒng)相關(guān)的源碼涉及三個文件:os_cpu.h、os_cpu_a.s、os_cpu_c.c。
(1)os_cpu.h
包括了用#define定義的與處理器相關(guān)的常量、宏和類型定義。需要根據(jù)ARM處理器的特點修改系統(tǒng)數(shù)據(jù)類型定義、棧增長方向定義、關(guān)中斷和開中斷定義、系統(tǒng)軟中斷的定義等相關(guān)源碼。
(2)os_cpu_a.s
這部分需要對處理器的寄存器進行操作,需要修改四個子函數(shù):OsstartHighRdy()、OSC_txSw()、OSIntCtxSw()、OSTicklSR()。
(3)os_cpu_c.c
該文件中共定義了6個函數(shù),需要修改的函數(shù)是OsTaskstklnit(),其他的函數(shù)無需修改,是對系統(tǒng)內(nèi)核擴展時用的。
uC/OS-II提供了任務(wù)調(diào)度的內(nèi)核和一些系統(tǒng)服務(wù)。開發(fā)底層驅(qū)動需要為系統(tǒng)編寫中斷處理控制程序和各個模塊的驅(qū)動程序。在底層設(shè)備驅(qū)動開發(fā)成功后。再為各個模塊編寫一些專門用于測試其功能的應(yīng)用層任務(wù),并給各個測試任務(wù)賦予不同的優(yōu)先級,使它們在uC/OS-II操作系統(tǒng)并行運行起來。通過穩(wěn)健地運行uC/OS-II操作系統(tǒng),驗證各個模塊能否在系統(tǒng)環(huán)境下并行正常工作,即進行集成后的系統(tǒng)級驗證。
軟硬件協(xié)同驗證是一種在硬件設(shè)計確認制造之前,驗證軟件在設(shè)計的硬件上能否正確運行的過程,使軟件和硬件同時得到驗證。PC機上編寫好的測試程序,可以通過仿真器,下載到驗證板的存儲系統(tǒng)中,SoC設(shè)計中的ARM核心處理器,讀取并執(zhí)行存儲器中的指令,控制外圍模塊工作,從而驗證SoC的設(shè)計功能是否正確?;谏厦娴脑?,整個FPGA軟硬件協(xié)同驗證平臺架構(gòu)如圖4所示。該系統(tǒng)分為:PC機部分、驗證板部分、調(diào)試方案。其中PC機負責(zé)配置文件的產(chǎn)生與配置,激勵數(shù)據(jù)的收發(fā)與測試結(jié)果的讀?。或炞C板部分包括FPGA驗證母板及驗證子板,F(xiàn)PGA驗證母板實現(xiàn)整個SoC設(shè)計,是被測試的設(shè)計部分;驗證子板包括各種接口模塊芯片,與SoC設(shè)計中同種類型的接口模塊之間進行通信,測試其功能是否正確。調(diào)試方案負責(zé)控制監(jiān)測運行結(jié)果。三者相互配合,共同完成整個SoC系統(tǒng)的驗證。具體功能說明如下:
圖4 軟硬件協(xié)同驗證平臺架構(gòu)
(1)PC機部分
>生成配置FPGA的BIT流文件,并通過JTAG口配置FPGA;
>編寫調(diào)試測試程序,并對FPGA中實現(xiàn)的SoC設(shè)計進行調(diào)試下載;
>與FPGA中實現(xiàn)的SoC設(shè)計進行通信,接收測試程序運行的結(jié)果或控制測試程序的執(zhí)行流程。
(2)驗證板部分
該系統(tǒng)的驗證板包括FPGA開發(fā)母板和驗證子板兩部分,共同實現(xiàn)下面的功能:
>FPGA開發(fā)母板中實現(xiàn)SoC設(shè)計,是被測試的部分;
>驗證子板包括各種接口模塊的芯片,與SoC設(shè)計的接口通信;
>接收PC機發(fā)送的測試程序和測試數(shù)據(jù);
>運行測試程序形成運行結(jié)果;
>將運行結(jié)果發(fā)送PC機。
(3)調(diào)試方案
FPGA實現(xiàn)的功能趨于復(fù)雜化,其調(diào)試也越來越困難,很多時候僅憑很少的輸入/輸出信號,很難判斷設(shè)計是否有問題以及設(shè)計的癥結(jié)所在,因此,硬件調(diào)試中非常有必要深入FPGA內(nèi)部去了解數(shù)據(jù)的運算、存儲、流動是否正常,主要采用斷點調(diào)試、串口顯示運行結(jié)果、示波器和邏輯分析儀等調(diào)試手段。
闡述了SoC設(shè)計的FPGA原型驗證的軟硬件實現(xiàn),在芯片流片前,通過這個驗證平臺對SoC設(shè)計進行功能測試,一方面可以加快驗證的速度,迅速發(fā)現(xiàn)設(shè)計中的問題,另一方面方便進行軟件開發(fā),從而大大縮短了項目的開發(fā)周期。
[1] M.Abramovici,C.Stroud,M.Emmert.Using Embedded FPGAs for SoCYield Improvement[J].39th Design Automation Conf.2002:10-14.
[2] 楊杰林.基于嵌入式處理器的片上系統(tǒng)設(shè)計和應(yīng)用[D].西安:西安電子科技大學(xué),2004.
Yang Jie-lin.Based on the design and application of embedded system on chip[D].Xi'an:Xidian University,2004.
[3] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計教程(第2版)[M].北京:北京航空航天大學(xué)出版社,2008.
XIA Yu-wen.Verilog digital system design(Second Edition)[M].Beijing:Beijing University of Aeronautics and Astronautics Press,2008.
[4] 田耘,胡彬.Xilinx ISE Design Suit 10.x FPGA開發(fā)指南:邏輯設(shè)計篇[M].北京:人民郵電出版社,2008.
Tian Yun,Hu Bin.Xilinx ISE Design Suit 10.x FPGA Development Guide:Logic design articles[M].Beijing:People’s Posts and Telecom-munications Press,2008.
[5] 周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程(第2版)[M].北京:北京航空航天大學(xué)出版社,2008.
ZHOU Li-gong.ARM Embedded System Essentials(Second Edition)[M].Beijing:Beijing University of Aeronautics and Astronautics Press,2008.
[6] 杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.
DU Chun-lei.ARM architecture and programming[M].Beijing:Tsinghua University Press,2003.
[7] Jean J,Labrosse.MicroC/OS_II The Real-Time Kernel(Second Edition)[M].USA:CMP Books,2002.
[8] 詹瑾瑜.SoC軟/硬件協(xié)同設(shè)計方法研究[D].成都:電子科技大學(xué),2005.
ZHAN Jin-yu.Research on collaborative design method of hardware and software of SOC[D].Chengdu:University of Electronic Science and technology,2005.
Design of Prototyping Method Based on FPGA for ARM SoC Verification
Wang Dan1,Dai Xuefeng2
(1.The47th Research Institute of China Electronics Technology Group Corporation,Shenyang 110032,China;2.Physics Department,Collage of Sciences,Northeast University,Shenyang 110004,China)
With the application requirements constantly promoting and the SoC design size growing,the function is gettingmore and more complex and the higher requirements are generated for the performance as well.So how to shorten verification time and improve efficiency and quality of test chips to reduce the production time has become one of the greatest concern issues in today's SoC designing field.FPGA prototype verification is an effective verification way of SoC design.FPGA prototype verification system is becoming very important to build a prototype of the SoC before taping out.It can find the shortcomings and mistakes in the chip design in time,and also can save the developing timewith software programme design at the same time.In this paper,the implementation of FPGA prototyping verification platform for ARM SoC design flow is described,aswell as how to progress hardware and software co-verification.As a result,the uC/OS-II embedded operating system is transplanted and the system level verification of the SoC design is conducted.
ARM processor;SoC design;FPGA prototype verification;Hardware and software co-verification;uC/OS-IIembedded operating system
10.3969/j.issn.1002-2279.2015.06.004
TN492
B
1002-2279(2015)06-0015-04
王丹(1982-),女,遼寧省錦州市義縣人,工程師,碩士,主研方向:嵌入式微處理器設(shè)計、驗證。
2015-03-11