虞致國,黃召軍,陳子逢,萬書芹,魏 斌
(中國電子科技集團公司第58研究所,江蘇 無錫 214035)
隨著嵌入式系統(tǒng)、無線通信、網(wǎng)絡(luò)和微電子機械系統(tǒng)等技術(shù)的快速發(fā)展,具有感知、計算和無線網(wǎng)絡(luò)通信能力的傳感器以及由其構(gòu)成的無線傳感器網(wǎng)絡(luò)引起了人們的極大關(guān)注[1],進一步低成本、小型化的無線傳感器網(wǎng)絡(luò)SoC需求也越來越迫切。在SoC的設(shè)計過程中,功能驗證為極其重要的步驟,其目的是要保證設(shè)計數(shù)據(jù)和設(shè)計規(guī)范的一致性。研究表明[2],驗證在集成電路設(shè)計過程中要占50%~80%的工作量,驗證是影響項目開發(fā)進度的關(guān)鍵因素。一個快速、完備、系統(tǒng)的功能驗證平臺對于SoC的設(shè)計來說非常重要,可有效縮短設(shè)計時間和提高設(shè)計質(zhì)量[3]。隨著FPGA技術(shù)的快速發(fā)展,其速度、規(guī)模不斷增大,成本不斷降低,使得FPGA驗證已經(jīng)成為SoC設(shè)計的一個重要驗證手段。它具有驗證周期短、能真實反映硬件結(jié)果等特性。
針對8位無線傳感器網(wǎng)絡(luò)SoC,本文構(gòu)建了一個基于FPGA的硬件原型驗證平臺。該驗證平臺能夠進行軟硬件協(xié)同驗證,具備較強的邏輯分析和診斷能力,從而提高SoC流片成功率,加快SoC的開發(fā)。
WSN SoC采用8051核為核心,包括用戶專用IP模塊、基帶和MAC處理模塊、傳感器接口模塊、加解密模塊、存儲器模塊、通用外設(shè)、能量管理模塊等。SoC硬件結(jié)構(gòu)如圖1所示。該8051核的指令和MCS-51兼容,指令單周期執(zhí)行,且提供了指令地址空間可擦寫功能,并在核內(nèi)部集成了一個調(diào)試接口(OCI)。8051核具有三種地址空間:XDATA地址空間、IDATA地址空間、SFR地址空間,并對應(yīng)三條總線。傳感器數(shù)據(jù)采集接口模塊采用多種標準的傳感器接口,傳感器信號經(jīng)ADC采集后交給協(xié)議處理模塊處理。片內(nèi)SRAM(XDATA空間)為8k字節(jié),F(xiàn)lash為128k字節(jié),數(shù)據(jù)SRAM為256k字節(jié)(IDATA地址空間)。為了減輕CPU的負擔及占用時間,在芯片中加入了AES模塊來獨立完成加解密操作。AES其分組長度和密碼長度都是可變的,分組長度和密碼長度可以獨立地指定為128比特、192比特或者256比特。
基于FPGA的ASIC原型驗證平臺框圖如圖2所示。驗證板包括原型FPGA、連接及診斷FPGA、低速率ADC、射頻(RF)接口芯片、傳感器接口模塊、常見外設(shè)等。RF模塊采用SPI接口進行控制,時鐘及傳感器模塊采用I2C模塊進行控制,F(xiàn)lash模塊采用在FPGA上進行外掛。
原型FPGA、連接及診斷FPGA采用Xilinx的Spartan-3A系列產(chǎn)品XC3SD1800A,規(guī)模相當于180萬門。其內(nèi)部包括1512kB的塊RAM,260kB的分布式RAM,最大用戶引腳519個,時鐘管理單元(DCM)8 個[4]。
原型FPGA實現(xiàn)WSN SoC芯片的數(shù)字部分,包括CPU、AES、存儲單元、系統(tǒng)復(fù)位模塊、存儲器接口、常用外設(shè)等。
原型系統(tǒng)的射頻芯片采用Ti公司的CC2500,該芯片是一超低功耗、低成本的無線收發(fā)模塊。CC2500集成了一個高度可配置的調(diào)制解調(diào)器,支持不同的的調(diào)制格式,包括FSK、GFSK、OOK和MSK,其數(shù)據(jù)傳輸率最高可達500 kbps[5]。
CC2500為信息包處理、數(shù)據(jù)緩沖、脈沖發(fā)送、空閑信道評估、連接品質(zhì)指示和電磁喚醒等功能提供了額外的硬件支持,有四種主要狀態(tài):接收(RX)、發(fā)送(TX)、空閑(IDLE)和休眠(SLEEP)。
CC2500主要設(shè)定為在2.400GHz~2.4835GHz的ISM(工業(yè)、科學(xué)和醫(yī)學(xué))和SRD(短距離設(shè)備)頻率波段。CC2500通過4線SPI兼容接口(SI、SO、SCIK和CSn)配置,這個接口同時用作寫和讀緩存數(shù)據(jù)。
傳感器采集外部的溫度、壓力、光強和磁場等需要采集的物理信息,并將上述物理量轉(zhuǎn)化為系統(tǒng)可以識別的原始模擬電信號,通過積分電路、放大電路的整形處理,最后經(jīng)過A/D轉(zhuǎn)換成數(shù)字信號送處理器模塊。對于不同的探測物理量,傳感器模塊將采用不同的信號處理方式,需要設(shè)計相應(yīng)的傳感器接口電路,同時需要預(yù)留相應(yīng)的擴展接口,以便于擴展更多的物理信號量。
無線傳感器網(wǎng)絡(luò)SoC核心利用的8051CPU核作為微處理器,片內(nèi)集成控制單元及多種接口,利用硬件實現(xiàn)模擬接口(如4mA~20mA電流轉(zhuǎn)換電壓接口、0~5V電壓轉(zhuǎn)換接口或PWM輸出接口)與數(shù)字接口(包括CAN總線接口、SPI、IIC以及UART口)。
考慮現(xiàn)場采集信號的多樣性及各種傳感器輸出信號的差異,系統(tǒng)考慮外接以下幾種傳感器輸出信號,因此模擬接口的設(shè)計分為以下幾類:
(1)兩個毫伏級電壓信號輸入通道;
(2)兩個4mA~20mA電流信號輸入通道;
(3)兩個1V~5V電壓信號輸入通道;
(4)一個電池電壓輸入信號通道,方便檢測系統(tǒng)芯片。
模擬接口的示意圖如圖3,各接口電路分別用來實現(xiàn)將相應(yīng)的輸入信號轉(zhuǎn)換成0~1.8V的電壓信號供A/D模塊采樣。
外圍部件也是原型驗證板上不可或缺的一部分,可以驗證SoC中各個接口IP能否與8051核、外部接口單元、硬件驅(qū)動、操作系統(tǒng)協(xié)調(diào)工作等。板上集成了常見的系統(tǒng)接口,如UART、SPI、IIC、GPIO等,來方便驗證板的使用。
為了增強對原型驗證系統(tǒng)的調(diào)試及診斷能力,實現(xiàn)對FPGA設(shè)計內(nèi)部節(jié)點的監(jiān)督,增加了一塊FPGA與原型FPGA相連。運行過程中,被監(jiān)測信號點的信號值存入SRAM,PC機可通過DMA方式讀取SRAM中的信號值,從而實現(xiàn)了軟件讀取原型機運行過程中的數(shù)據(jù),增強了原型機的診斷能力。
在SoC原型驗證系統(tǒng)上進行系統(tǒng)原型驗證可以分為三個步驟,逐次遞進。首先驗證硬件平臺各個模塊的正確性,其次驗證軟件平臺的正確性,最后進行整個SoC設(shè)計的原型驗證。
使用8051的C語言或匯編程序編寫無線傳感器網(wǎng)絡(luò)協(xié)議的程序,采用Keil集成開發(fā)環(huán)境編譯成hex文件。然后通過Xilinx的ISE相關(guān)工具生成相應(yīng)的ROM文件。其流程如圖4所示。
采用FPGA原型系統(tǒng)來驗證ASIC設(shè)計,首先要把ASIC設(shè)計轉(zhuǎn)換成為FPGA設(shè)計。轉(zhuǎn)換主要涉及到存儲器、時鐘等方面。存儲器在ASIC設(shè)計中調(diào)用代工廠的Memory硬模塊,轉(zhuǎn)換為FPGA設(shè)計時需要改為采用FPGA的blockRAM模塊。在ASIC中時鐘是采用時鐘樹(含門控時鐘)、PLL來進行設(shè)計的。轉(zhuǎn)換成FPGA設(shè)計后,時鐘樹采用FPGA中的全局時鐘資源,PLL采用其DCM。對于門控時鐘,改用FPGA內(nèi)帶有時鐘使能的寄存器。
在進行SoC整個設(shè)計原型驗證前,必須保證各個模塊工作正常、接口符合時序要求。
一個完整的SoC調(diào)試系統(tǒng)通常包括調(diào)試主機、調(diào)試協(xié)議轉(zhuǎn)換器、調(diào)試目標芯片三個部分。調(diào)試主機運行調(diào)試軟件,提供給開發(fā)者與目標系統(tǒng)交互的友好界面,它不直接實現(xiàn)對底層目標硬件的支持。通過開發(fā)支持Kei l集成開發(fā)環(huán)境的AGD I接口(Advanced Generic Debugger Interface),能夠?qū)崿F(xiàn)主機端Keil 軟件與8051 IP核的聯(lián)合調(diào)試。
為了調(diào)試WSN SOC,只需要為其設(shè)計專用的驅(qū)動程序(動態(tài)鏈接庫DLL),就可以使Keil IDE的調(diào)試器在不改變圖形界面的情況下支持不同的硬件鏈接方法。結(jié)合集成調(diào)試環(huán)境和目標芯片,可構(gòu)成一個片上調(diào)試功能的驗證環(huán)境。
在調(diào)試環(huán)境完備的情況下,WSN SoC的FPGA原型驗證是一個從外設(shè)模塊到核心模塊、從簡單程序到復(fù)雜協(xié)議的過程。
首先,利用原型驗證外設(shè)接口。利用CPU驗證來驗證存儲器系統(tǒng)能否正確讀寫,支持各類讀寫行為。在存儲器驗證完畢后,可以針對各個外設(shè)用小程序進行指令級驗證。在此基礎(chǔ)上,開發(fā)給予CPU的測試程序,利用程序獨立訪問各外設(shè)接口,如串口、SPI口、I2C口等。在此過程中,利用編譯好的程序加載到存儲器,運行程序,觀察8051、存儲器和外設(shè)三者之間的數(shù)據(jù)傳輸情況,從而驗證外設(shè)的功能和性能。運行測試程序時,可把系統(tǒng)運行到特定時間和步驟的執(zhí)行結(jié)果提取出來并自動比較是否正確,并把結(jié)果傳遞到PC主機。其次,進行無線網(wǎng)絡(luò)協(xié)議的驗證,包括Zigbee協(xié)議棧軟件程序的驗證、相關(guān)應(yīng)用的驗證等。
功能驗證是SoC的關(guān)鍵技術(shù)之一,貫穿整個設(shè)計過程。本文設(shè)計了一種WSN SoC的基于FPGA的功能驗證平臺,克服了傳統(tǒng)原型驗證的一些缺點,不僅可以通過實際器件獲得輸入激勵,還可以通過計算機輸入激勵獲得結(jié)果進行比較,具有較好的移植性和一定的普遍應(yīng)用性。在SoC平臺原型驗證過程中,可以先從硬件模塊的原型驗證到模塊級的小程序驗證,再到操作系統(tǒng)的運行驗證,最后到整個SoC所有應(yīng)用程序的原型驗證。
[1]鄭朝霞.無線傳感器網(wǎng)絡(luò)節(jié)點芯片關(guān)鍵技術(shù)的研究與實現(xiàn)[D].華中科技大學(xué),20080521.
[2]Rashinkar P,Paterson P,Singh L. System on a Chip Verification Methodology and Techniques[M]. [S.1]:America Cadence Design Systems,Inc.,2002.
[3]張珩,沈海華.龍芯2號微處理器的功能驗證[J].計算機研究與發(fā)展,2006,43(6):974-979.
[4]劉濤,王凱,李曉民,等. 曙光5000芯片組系統(tǒng)級功能驗證平臺[J].計算機工程與科學(xué),2009,31(11):37-39.
[5]虞致國,魏敬和.基于FPGA的ARM SoC原型驗證平臺設(shè)計[J].電子與封裝,2007,7(5):25-28.
[6]劉振文,鄧毅華,彭友斌.基于CC2500的2.45GHz RFID系統(tǒng)設(shè)計[J].電子技術(shù)與應(yīng)用,2008,7:76-78.