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









