張文文,唐映強(qiáng)
(無錫中微愛芯電子有限公司,江蘇 無錫 214072)
隨著對(duì)各種功能微控制單元(Microcontroller Unit,MCU)芯片的市場需求增加,怎么縮短MCU 芯片開發(fā)周期成為搶占市場一個(gè)關(guān)鍵難點(diǎn)。MCU 芯片驗(yàn)證在研發(fā)中所占的比例越來越重,占據(jù)了整個(gè)研發(fā)周期的70%以上,縮短驗(yàn)證周期就是直接有效的辦法[1-3]。通常進(jìn)行前仿真驗(yàn)證功能,后仿真驗(yàn)證時(shí)序性能,而仿真速度太慢,在遇到問題改設(shè)計(jì)后,如果只選擇驗(yàn)證修改部分的功能,驗(yàn)證覆蓋率達(dá)不到會(huì)減小流片的成功率。
用現(xiàn)場可編程邏輯門陣列(Programmable Gate Array,F(xiàn)PGA)驗(yàn)證功能可以比軟件仿真速度高出4~6 個(gè)數(shù)量級(jí)[4],填補(bǔ)了仿真環(huán)境與實(shí)際芯片的巨大差距。對(duì)于仿真時(shí)間限制不能遍歷的情況,F(xiàn)PGA 原型驗(yàn)證都可以輕松完成。同時(shí),F(xiàn)PGA 可以給軟件設(shè)計(jì)人員提供硬件驗(yàn)證平臺(tái),軟件和芯片同時(shí)開發(fā)可以加快產(chǎn)品的面市時(shí)間。
綜上可見FPGA 原型驗(yàn)證平臺(tái)[5-7]的構(gòu)建在整個(gè)開發(fā)過程的重要性。如何快速構(gòu)建FPGA 原型驗(yàn)證平臺(tái),使其能擔(dān)此重任,正是本設(shè)計(jì)的初衷。
FPGA 原型驗(yàn)證的原型指的就是專用集成電路(Application Specific Integrated Circuit,ASIC)。本文針對(duì)的是MCU 芯片,其特點(diǎn)是內(nèi)部帶有一個(gè)微控制器即MCU核心,是一個(gè)小型的片上系統(tǒng)(System on Chip,SoC)。
圖1 所示為MCU 芯片的系統(tǒng)架構(gòu)組成圖。MCU 芯片的系統(tǒng)組成一般包括:MCU 核心、系統(tǒng)總線、存儲(chǔ)控制器及存儲(chǔ)單元、電源時(shí)鐘復(fù)位管理模塊、各種外設(shè)以及debug 模塊等。MCU 核心常用的有需要授權(quán)的ARM核、開源的RISC-V[8-10]。系統(tǒng)總線常見的是ARM 推出的AMBA 總線中的高速總線(Advanced High Performance Bus,AHB)[11-13]。存儲(chǔ)單元包括掉電易失隨機(jī)存儲(chǔ)(Random Access Memory,RAM)、掉電不丟失只讀存儲(chǔ)(Read Only Memory,ROM)。外設(shè)主要看MCU 芯片的應(yīng)用場景,一般都有低速通信外設(shè),如串行收發(fā)器。此外還有debug 模塊,它是MCU 核心“肚里的蛔蟲”,在MCU 芯片正常工作時(shí)沒有什么作用,但是當(dāng)芯片內(nèi)部有問題時(shí),可以通過debug 通道獲取很多信息。但為了減小MCU 核心設(shè)計(jì)復(fù)雜度以及設(shè)計(jì)面積,往往大多數(shù)系統(tǒng)中不包含debug模塊。
圖1 MCU 芯片的系統(tǒng)架構(gòu)組成圖
通常進(jìn)行FPGA 原型驗(yàn)證,為了盡可能保證與ASIC設(shè)計(jì)一致,F(xiàn)PGA 原型替換只進(jìn)行獨(dú)立IP 的替換[14-15],而其控制部分仍然會(huì)保留或做等價(jià)的微改動(dòng)。替換后的架構(gòu)如圖2 所示。一般MCU 芯片中時(shí)鐘分為快時(shí)鐘和慢時(shí)鐘,進(jìn)行FPGA 原型替換的時(shí)候,采用FPGA 的鎖相環(huán)(Phase Locked Loop,PLL)資源,將FPGA 輸入的時(shí)鐘進(jìn)行分頻或者倍頻處理后提供給各個(gè)功能模塊使用。存儲(chǔ)器進(jìn)行FPGA 原型替換,考慮到FPGA 的RAM 資源豐富和使用FPGA 自帶IP 的性能高,一般不使用直接的邏輯替換,而使用FPGA 的RAM IP。
圖2 MCU 芯片F(xiàn)PGA 原型系統(tǒng)架構(gòu)組成
通常FPGA 原型驗(yàn)證遇到問題時(shí),使用FPGA 軟件帶的debug 軟核進(jìn)行邏輯的內(nèi)部查錯(cuò)。這個(gè)方法有以下幾個(gè)缺點(diǎn):(1)需要重新綜合,浪費(fèi)時(shí)間;(2)debug 軟核占FPGA 的邏輯資源,F(xiàn)PGA 選型要預(yù)留資源,增加成本;(3)沒有重復(fù)使用價(jià)值,對(duì)不同的問題需要重新設(shè)置,再綜合。
對(duì)于MCU 芯片,核心就是整個(gè)芯片運(yùn)行的大腦,任何動(dòng)作都由核心控制,而核心運(yùn)作又是通過程序控制的,這個(gè)程序就放在存儲(chǔ)單元中。前仿真驗(yàn)證時(shí),為了節(jié)約仿真時(shí)間,不會(huì)按照芯片的實(shí)際工作流程去模擬仿真,一般選擇通過后臺(tái)直接把驗(yàn)證程序?qū)懭氪鎯?chǔ)單元。由此啟發(fā),F(xiàn)PGA 原型驗(yàn)證也可以通過另外一個(gè)通道把驗(yàn)證程序?qū)懭氪鎯?chǔ)單元。那怎么去實(shí)現(xiàn)呢?
本文提出將傳統(tǒng)FPGA 原型驗(yàn)證過程中使用FPGA的RAM 原型替換程序存儲(chǔ)單元,改為使用FPGA 雙端口RAM 替換。其中一個(gè)端口控制按照傳統(tǒng)的接入方法,另一端口控制信號(hào)接到專門的控制邏輯上,獨(dú)立控制,而且不影響原MCU 芯片功能。首先想到專門的控制邏輯放到另外一塊FPGA2 連接,由它獨(dú)立控制。改進(jìn)的MCU 芯片的FPGA 原型驗(yàn)證平臺(tái)架構(gòu)組成如圖3 所示。兩塊FPGA 連接在到上位機(jī),上位機(jī)軟件統(tǒng)一控制。
圖3 改進(jìn)的MCU 芯片的FPGA 原型驗(yàn)證平臺(tái)架構(gòu)組成
對(duì)于上述的改進(jìn)方案,一個(gè)驗(yàn)證平臺(tái)需要兩塊FPGA板卡,如果手頭正好沒有第二塊FPGA 開發(fā)板,那本方案也沒有可行性。對(duì)此提供另外一種解決方案,即二次改進(jìn)方案。該方案是在原來設(shè)計(jì)思想上,把雙端RAM 連接到FPGA2 的邏輯,也放入FPGA1 中。這樣還有一個(gè)優(yōu)勢,使用同一時(shí)鐘源,減少異步信號(hào)帶來的同步處理的邏輯量,控制邏輯也相對(duì)簡單了。二次改進(jìn)的MCU 芯片的FPGA 原型驗(yàn)證平臺(tái)架構(gòu)組成如圖4 所示。
圖4 二次改進(jìn)的MCU 芯片的FPGA 原型驗(yàn)證平臺(tái)架構(gòu)組成
完整的驗(yàn)證平臺(tái)還包括測試向量和測試結(jié)果輸出。整個(gè)驗(yàn)證系統(tǒng)的工作流程可分為兩大部分。第一部分是驗(yàn)證MCU 芯片特殊工作情況下的功能。在驗(yàn)證MCU 芯片特殊工作情況下的功能,使用MCU 原有的燒錄通道,將運(yùn)行程序燒錄到雙端RAM 口PORTB,通過設(shè)計(jì)的通道從雙端RAM 口PORTB 讀出程序進(jìn)行校驗(yàn),驗(yàn)證燒錄通道是否正常。如果不正常,那問題就定位在燒錄通道上。
第二部分是驗(yàn)證MCU 芯片正常工作情況下的各個(gè)模塊的功能。具體的流程步驟如下:(1)上位機(jī)取測試向量編譯成可執(zhí)行程序;(2)上位機(jī)將該程序通過雙端RAM口PORTA 寫入;(3)上位機(jī)啟動(dòng)FPGA 原型系統(tǒng)工作。運(yùn)行結(jié)束后上位機(jī)收到測試結(jié)果進(jìn)行保存分析,然后重復(fù)(1)~(3)的操作,直至所有測試完成。
使用曼徹斯特編碼,單線通信的自定義協(xié)議進(jìn)行邏輯實(shí)現(xiàn);其中“01”代表邏輯0,“10”代表邏輯1,連續(xù)的“00”代表傳輸開始,連續(xù)的“11”代表無數(shù)據(jù)傳輸;開始傳輸?shù)氖亲x寫類型,緊接著傳輸?shù)氖情L度,再是讀寫的起始地址,最后是讀寫的數(shù)據(jù)。
采用Xilinx 的v7-485t 芯片進(jìn)行本設(shè)計(jì)的綜合,使用的邏輯資源如圖5 所示。
圖5 FPGA 綜合后邏輯分布圖
對(duì)本設(shè)計(jì)進(jìn)行功能仿真,讀寫時(shí)序分別如圖6、圖7所示。其中dio 信號(hào)為單線通信數(shù)據(jù)。圖6 通過dio 從PORTA 往地址0 和1 寫入數(shù)據(jù)0x12 和0x34,然后從PORTB 讀出校驗(yàn)正確;圖7 從PORTB 地址0 和1 寫入數(shù)據(jù)0xAA 和0x55,再通過dio 從PORTA 讀出校驗(yàn)正確。
圖6 PORTA 寫入PORTB 讀出時(shí)序圖
圖7 PORTB 寫入PORTA 讀出時(shí)序圖
通過實(shí)踐統(tǒng)計(jì),將所述的三種驗(yàn)證平臺(tái)設(shè)計(jì)進(jìn)行對(duì)比分析,如表1 所示。
表1 三種驗(yàn)證平臺(tái)設(shè)計(jì)對(duì)比
經(jīng)過對(duì)比,發(fā)現(xiàn)改進(jìn)一和改進(jìn)二的設(shè)計(jì)都能夠完成FPGA 原型驗(yàn)證的目標(biāo)同時(shí)縮短驗(yàn)證周期。兩者區(qū)別在于使用FPGA 板卡的數(shù)量上的差異,當(dāng)有現(xiàn)成的FPGA開發(fā)板時(shí),在這里建議當(dāng)FPGA 原型的邏輯量已經(jīng)接近FPGA 板卡資源的70%以上時(shí),就選擇改進(jìn)一的方案。如果需要進(jìn)行FPGA 選型時(shí),可以根據(jù)邏輯量的評(píng)估以及價(jià)格來綜合考慮。選擇兩塊FPGA 時(shí),對(duì)應(yīng)的FPGA2 不需要跟FPGA1 一樣,因?yàn)樵黾拥哪遣糠诌壿嬃勘容^小,可以選擇比較便宜小容量的FPGA,來減小成本。
本文提出了一種基于MCU 芯片F(xiàn)PGA 原型驗(yàn)證平臺(tái)設(shè)計(jì)方法,相比傳統(tǒng)的FPGA 原型驗(yàn)證能夠縮短驗(yàn)證周期,從而加快芯片產(chǎn)品的面世。本文中介紹了MCU 系統(tǒng)的基本架構(gòu)組成,F(xiàn)PGA 原型驗(yàn)證的基本方法;詳細(xì)介紹了設(shè)計(jì)思路,給出了兩種實(shí)施方案,并進(jìn)行了實(shí)踐對(duì)比分析,實(shí)際應(yīng)用可以根據(jù)需求來選擇。此設(shè)計(jì)方法具有通用性,可移植性,值得推廣。