一種基于ARM內核SoC的FPGA 驗證環(huán)境設計方法
摘要:針對片上系統(tǒng)(SoC) 開發(fā)周期較長和現(xiàn)場可編程門陣列() 可重用的特點,設計了基于TDMI 處理器核的SoC 的 驗證平臺,介紹了怎樣利用該平臺進行軟硬件協(xié)同設計、IP核驗證、底層硬件驅動和實時操作系統(tǒng)設計驗證。使用該平臺通過軟硬件協(xié)同設計,能夠加快SoC 系統(tǒng)的開發(fā)。整個系統(tǒng)原理清晰,結構簡單,擴展靈活、方便。
關鍵詞:SoC;;軟硬件協(xié)同設計;驗證平臺;
引言
隨著片上系統(tǒng)(SoC) 設計的復雜度和性能要求的不斷提高, 軟硬件協(xié)同設計(/ Co2de2sign) 貫穿于SoC 設計的始終。軟硬件協(xié)同設計是一個以性能和實現(xiàn)成本為尺度的循環(huán)優(yōu)化過程,驗證設計是其中必不可少的重要環(huán)節(jié)。目前大多數(shù)公司提供的開發(fā)驗證系統(tǒng)(開發(fā)板) 存在兩個弱點:一是開發(fā)板的性能、規(guī)模難以根據特定的設計需求靈活、自由地調節(jié);二是開發(fā)板的功能大多數(shù)只能進行軟件代碼的調試,即使ARM公司提供的開發(fā)平臺也只能調試部分硬件。這兩個弱點均在一定程度上限制了軟硬件劃分的探索空間,使所設計的SoC 不能獲得更佳結構實現(xiàn)的能力。
本文利用現(xiàn)場可編程門陣列(FPGA) 重用性好、現(xiàn)場靈活性好的優(yōu)勢,開發(fā)一個能進行詳細的行為監(jiān)測和分析的實時運行驗證平臺,實現(xiàn)軟硬件的緊密和靈活耦合,從而克服上述結構的弱點,以全實時方式運行協(xié)同設計所產生的硬件代碼和軟件代碼,構成一個可獨立運行、可現(xiàn)場監(jiān)測的驗證平臺。這樣,不但能夠提高SoC 流片成功率,加快SoC 的開發(fā),而且可以降低整個SoC 應用系統(tǒng)的開發(fā)成本。
驗證平臺的設計
系統(tǒng)設計
圖1 是我們設計的SoC 系統(tǒng)架構, 選用了 處理器核, 它是一個 體系的32 位CPU ,具有功耗低、性價比高、代碼密度高三大特色(ARM公司本身不生產芯片,普通用戶無法獲得ARM可的CPU 核) ,包括AMBA 總線、DMA 控制器和 、(外部存儲器接口EMI) 、通用串行總線(USB) 客戶端控制器、液晶顯示器() 控制器、多媒體加速器(MMA) 、AC97 控制器、通用串口/ 紅外(/ ) 、通用器/ 脈寬調制器(/ PWM) 、中斷控制器( INTC) 、同步外設接口(SPI) 、實時時鐘(RTC/ WD) 、時鐘和功耗管理單元(PMU) 。
圖2 是該SoC 驗證平臺的結構框圖,選用公司的APEX20K1500E 作為驗證SoC 用的FPGA ,該器件由一系列的MegaLAB 結構構成,每個結構包含一組邏輯陣列塊(LAB) 、一個嵌入式系統(tǒng)塊( ESB) 及一個在MegaLAB 結構內提供信號通道的MegaLAB 互連。在MegaLAB 結構和I/ O 引腳間的信號布線通過 -Track 互連實現(xiàn)。另外,靠邊的LAB 能被I/ O 引腳通過局部互連驅動。
該器件有如下特點:具有多核結構,支持可編程單芯片系統(tǒng)(SOPC) ,密度高,專為低電壓應用設計,最多帶4 個鎖相環(huán)的時鐘管理電路,多達8路全局時鐘信號,每個I/ O 引腳具有獨特的三態(tài)輸出使能控制及可編程壓擺率控制[1 ,2 ] 。使用該器件作為AMBA 總線模塊、DMA 控制模塊、EMI 模塊、USB 模塊及 控制模塊等多個IP 模塊的硬件載體, 與ARM7 TDMI處理器構成了一個SoC的驗證系統(tǒng)。
圖2 中外圍電路的主要功能是驗證SoC 中各個接口IP 模塊能否與ARM7TDMI 核、外部接口單元、硬件驅動軟件和實時操作系統(tǒng)協(xié)調高效地工作。由于接口(如USB 接口、/ 接口、SPI 和 接口等) 電路結構比較簡單,且很多資料都有介紹,在設計時,除了注意通用的設計規(guī)則和印制電路板() 布局布線外,沒有特別的要求(總結構框圖中所有外圍電路都在該開發(fā)驗證系統(tǒng)中調試成功) ,同時,為了便于分析各個被驗證的IP 模塊在任意時刻的狀態(tài), 我們將APEX20K1500E 的大多數(shù)I/ O 引腳都引出到 上,以方便SoC 開發(fā)人員使用邏輯進行信號實時采集和分析,也可讓器產生一些特定信號通過以供系統(tǒng)調試使用。該開發(fā)系統(tǒng)在 的設計時還特別注意了電磁干擾的屏蔽。
電路設計
電源的設計
擁有符合FPGA 要求的電壓對該驗證環(huán)境的設計十分重要。根據SoC 的發(fā)展趨勢和APEX20K1500E增強型I/ O的特點,該平臺選用2 . 5V內核電壓和3. 3 V 的I/ O 電壓,同時提供2. 5 V 和1. 8 V 可選電壓,以滿足SoC 更低電壓、更低功耗的發(fā)展要求,方便以后重復使用。
時鐘信號電路的設計時鐘電路如圖3 所示。
ARM7TDMI 核有2 個時鐘:存儲器時鐘 和內部TCK產生的時鐘。在正常操作期間,內核由 供給時鐘, 內部邏輯保持 為低。當ARM7TDMI 核處于調試狀態(tài)(nWAIT 必須為高) 時,內核在TAP 狀態(tài)機控制下由供給時鐘,且可以自由運行。所選時鐘在信號ECLK上輸出,以便外部系統(tǒng)使用。在監(jiān)控模式下,內核由MCLK供給時鐘,且不使用DCLK。所以,首先應供給存儲器時鐘MCLK。由于該系統(tǒng)除了擁有ARM7TDMI 核外,還包括電源管理模塊、復位管理模塊、狀態(tài)和控制寄存器等,應當額外供給時鐘MCLK1 和MCLK2。用以驗證可復用IP 的芯片APEX20K,也需要提供至少2 個時鐘(FP2GA2CLK1 和FPGA2CLK2);用做配置芯片的PLD 也需要提供一個時鐘(PLD2CLK) ;各個FPGA 和整個FPGA電路設計都采用全局時鐘控制方式,所有的時鐘都是由ICS525201 芯片產生,該芯片是一種可調時鐘芯片。
時鐘頻率f CLK用下式調節(jié):
式中:f i 為輸入頻率;v 為4~511 中的自然數(shù);r 為0~127 中的自然數(shù);OD 值由S[0 ,1 ,2 ]的3 位決定,S2S1S0的組合為:000 對應十進制10 ,001 對應2 ,010 對應8 ,011 對應4 ,100 對應5 ,101 對應7 ,110 對應9 ,111 對應6。注意:時鐘電路的頻率調節(jié)最終通過驅動軟件進行各個參數(shù)的配置,在FPGA 內應有相應的配置寄存器,同樣,下面的復位控制模塊也應有復位配置。
復位電路的設計
復位信號包括接口模塊中的外部硬件按鍵復位信號reset 、上電復位信號 on reset 、聯(lián)合測試訪問專家組(JTAG) 復位信號nTRST 和軟件調試復位信號n。以上幾個信號都是必須的常用復位信號,但ARM7TDMI 核只提供了兩個復位信號接口reset 和nTRST ,為此,以上4 個信號必須加入適當?shù)倪壿嬰娐肥蛊渥罱K形成2 個復位信號,復位信號通路必須滿足復位時序要求且與時鐘信號通路一樣越短越好。
JTAG鏈的設計
通過ARM處理器內的JTAG測試接口,可對整個系統(tǒng)進行探測和配置。使用 公司的QUSII軟件對APEX20K器件進行配置時,JTAG鏈是其中的一條重要配置通路。因此,JTAG鏈的設計十分重要,其主要設計任務是對FPGA 內的JTAG鏈與ARM 處理器內的JTAG測試接口進行匹配連接,形成一個統(tǒng)一的JTAG鏈,它主要包括TCK、RTCK、TDI、TDO 、TMS 和FPGA 配置成功(DONE) ,以及調試請求(DBGRQ) 應答信號(DBGACK) 、系統(tǒng)復位() 和測試復位(TRST)等信號,其中時鐘信號TCK和RTCK通路應當設計得越短越好。至于使用JTAG模式對器件進行編程和配置,可依據參考文獻[ 1 ]第5 章進行設計。JTAG數(shù)據通路在配置和調試時各不相同,在設計時應當選擇幾乎無導通電阻的多路選擇器對該信號作出合理的分配,對FPGA 器件進行配置和調試時,JTAG數(shù)據通路分別如圖4、圖5 所示。
存儲器電路的設計
ARM7TDMI 核雖給出了存儲器接口信號,但這些信號對存儲器的訪問是單一有限、擴展極為不方便的,不能適應不同用戶對多種存儲器系統(tǒng)( 、NAND、 和) 的使用需求,所以大多數(shù)SoC都在片內集成了存儲器控制器(我們開發(fā)的SoC 的片外存儲器控制器稱為EMI) ,所以該驗證平臺上設計了以上4 種存儲器, 用以驗證該EMI IP 核。由于ARM7TDMI 核除了可以實現(xiàn)32 位訪問存儲器的方式外,也可以支持16 位訪存方式,所以,通過在控制線上設置軟件可配置的實現(xiàn)了3 種數(shù)據寬度的訪存方式,即8 位() 、16 位(half word) 和32 位(word) 的訪存方式。
驗證平臺的調試和檢驗
當該系統(tǒng)中的各個模塊在PCB 上調試成功后,該驗證平臺能否很好地驗證SoC 的IP 核的開發(fā)呢? 我們將已經成熟的AMBA 總線IP 核的Verilog 代碼,通過Synplify ,利用 公司的QUARTUS Ⅱ軟件作布局布線,燒入APEX20K1500E ,再用同樣方式將新開發(fā)的EMI IP 核的Verilog 代碼燒入該FPGA(注意:在該過程中有很多和布局布線技巧) ,將其中的控制器作為驗證示例,選取其中最簡單的訪問方式,來驗證該平臺能否使用。該驗證平臺中使用的型號為W981216BH26。上電后,首先要對所有內存區(qū)(bank) 預充電,經8 個自刷新周期后需要設置訪問模式,即編程模式寄存器。以上3 個過程要求如下:
a) 預充電命令的發(fā)出要求:在時鐘周期的上升沿處CS、RAS、WE 為低,CAS 為高。
b) 自刷新命令的發(fā)出要求:在時鐘周期的上升沿處CS、RAS、CAS 和CKE 保持低,WE 為高。
c) 模式寄存器的激活:在時鐘的上升沿處RAS、CAS、CS 和WE 為低。
剛開始時,外部端口根本不能出現(xiàn)有用的波形,通過AMBA 總線的一些控制線能夠正確地引出,從而排除了該驗證平臺原理的正確性和PCB 上的硬件可靠性的疑問,再將內部狀態(tài)機的各個信號采出進行分析后,發(fā)現(xiàn)狀態(tài)機設計得不能工作,經過修改代碼后,重新采集端口信號如圖6所示。
從圖6 中tr 線處的時序看出,上電后滿足預充電命令的要求,緊接著是8 個自刷新命令,最后是模式寄存器的設置,命令字為020H( 00100000B) ,即CASLatency 設置為2 個時鐘周期, Addressing Mode 為Sequential 模式, Burst Length 為1 個數(shù)據訪問模式,模式設置命令通過地址線a02a9 發(fā)出,如圖7 所示。
將該SDRAM的地址映射成為從30000000 的地址空間開始的地址,利用SDRAM驅動程序(協(xié)同調試時,應通過實時操作系統(tǒng)進行SDRAM 的讀寫) , 向以30000000 開始的地址空間連續(xù)寫入300 個從數(shù)據0 遞增到299 的數(shù),截取中間一段波形如圖8 所示。圖6~圖8 中各信號如下:clk 為同步時鐘,圖中是10 MHz ;cse 為EMI 的8 個片選信號之一,即SDRAM的片選信號cs;ras 和cas 為SDRAM 的控制信號;we 為SDRAM 的讀寫控制信號;bank021 為SDRAM 的4 個bank 選擇控制信號;sd10 為既是SDRAM 的控制信號又是地址信號a10;a0211 為不包括a10 的地址信號;dqm021 為字節(jié)選擇信號;d027 為低位數(shù)據線。
寫命令應當滿足的時序要求是:在時鐘周期的上升沿處RAS 高,WE、CS、CAS 低;第一個要寫的數(shù)據必須與寫命令同時發(fā)出。從圖8 可以看出,確實能夠成功執(zhí)行寫操作訪問。注意: 在寫之前,必須將該bank激活,只有激活的bank 才能進行讀寫,圖中的激活命令沒有顯示出來,同時,由于該訪問總共300 個地址完全在一個行內,不用對其進行行預充電和再激活(在一個已經激活的bank 內,讀寫不同的行就要求對該bank進行預充電和再激活) 。
通過圖6~圖8 ,還可以看出各種操作命令的建立時間Tsetup和保持時間Thold都設置得比較緊,幾乎剛好滿足。這種IP 核沒有給用戶留出足夠的余量,一旦用戶對PCB 的制作稍有不慎,在PCB 板級違反建立時間和保持時間極有可能,造成SDRAM 的不正確訪問,所以需要進行檢查和修改。經過前端人員的仿真驗證,代碼中確實存在忽略建立時間和保持時間的問題,修改后重新在該平臺進行驗證,以上兩個時間都能很好地滿足,且有足夠的余量。另外,從圖中可以看出,數(shù)據線上有一些毛刺,這是由于FPGA 的I/ O 端口引腳對邏輯的接口沒有很好地分配造成的,重新分配FPGA 的I/ O 端口,絕大部分毛刺都能很好地消除。
通過以上實驗,說明該驗證平臺確實能夠達到驗證SOC IP 核的目的。要注意的是,當要驗證各個IP模塊(包括INT 中斷控制器、DMA 控制器、LCD 控制器和AC97 控制器等) 之間協(xié)同工作時,燒入的代碼較多,占用FPGA 資源較多,再加上需要實時運行,例如,播放PM3 實時解碼過程中,時鐘至少要求60 MHz ,需要工作的IP 核有總線、DMA 控制器、INT 中斷控制器、AC97 控制器等,在這種情況下,最好使用Multi PointSynthesis 的綜合流程和Timing driven 的綜合與優(yōu)化策略,使用Logic-lock 約束技術和人工干預布局布線,才能達到預期目的。
使用該平臺對我們開發(fā)的SoC 的各個模塊進行了驗證,并在10 MHz~70 MHz 條件下與代碼前(后) 仿真結果和SoC 實測結果進行了比較,結果見圖9。可以看出,該FPGA 驗證平臺在多模塊、高速情況下,性能有所下降,需進一步提高綜合和布局布線技術。
結束語
本文提出了一種常用的基于ARM內核SoC 的FPGA 驗證環(huán)境的設計方法,并給出了電路結構框圖和相應的外圍電路設計。根據該設計, 在FPGA 內實現(xiàn)AMBA 總線、存儲器接口和中斷控制器,加上外面的ARM處理器核,構成了ARM SoC 的最小系統(tǒng),根據具體目標系統(tǒng)的需要,可以增加LCD 控制器、AC97 控制器、USB 控制器等模塊,構成一個非常實用的驗證平臺。在IP 核燒入后,可以使用ARM ADS(ARM Developer Suite) 軟件開發(fā)工具,在線對設計的硬件電路、硬件驅動軟件、操作系統(tǒng)和高層應用軟件進行調試,從而大大縮短了基于SoC 芯片的應用系統(tǒng)的開發(fā)時間。隨著FPGA 的飛速發(fā)展,用戶可以選用更加先進和方便使用的FPGA ,還可選用內嵌ARM 核的FPGA 芯片來構建驗證平臺。同時,該系統(tǒng)在電壓設計、模塊選用甚至處理器核的選用方面都考慮了升級擴展技術,可供SoC 的驗證借鑒。