基于FPGA的SOC設(shè)計(jì)與實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
為減少在印制電路板(PCB)設(shè)計(jì)中的面積開銷,介紹一種Flash結(jié)構(gòu)的現(xiàn) 場(chǎng)可編程門陣列(FPGA)器件,進(jìn)而介紹采用該器件搭建基于先進(jìn)精簡(jiǎn)指令集機(jī)器(ARM)的片上系統(tǒng)(SOC)電路的設(shè)計(jì)方法,該方法按照高級(jí)微控制器總線架構(gòu)(AMBA),設(shè)計(jì)ARM7處理器微系統(tǒng)及其外設(shè)電路,通過用搭建的系統(tǒng)對(duì)片外存儲(chǔ)器進(jìn)行擦寫,以及通過編寫軟硬件代碼定制符合ARM7外圍低速總線協(xié)議的用戶邏輯外設(shè),驗(yàn)證了系統(tǒng)的準(zhǔn)確性,該系統(tǒng)可用于驗(yàn)證SOC設(shè)計(jì)系統(tǒng)。
近年來,SOC技術(shù)得到了快速的發(fā)展,逐漸 成為微電子行業(yè)的主流。SOC稱為系統(tǒng)級(jí)芯片,是一個(gè)有專用目標(biāo)的集成電路,能集成數(shù)字電路、硬件專用電路、存儲(chǔ)器、微處理器等多種異構(gòu)模塊,實(shí)現(xiàn)多個(gè)復(fù)雜的應(yīng)用功能,具有速度快、集成度高、功耗低、開發(fā)周期短等優(yōu)點(diǎn)。
隨著集成電路速度的加快和設(shè)計(jì)復(fù)雜性提高,新的技術(shù)不斷被引進(jìn),國(guó)內(nèi)外相繼開展了SOC技術(shù)及器件的研究,其中一個(gè)顯著的特點(diǎn)就是將SOC的可靠性和低成本與FPGA的靈活性等優(yōu)勢(shì)結(jié)合起來,在業(yè)界中知名的FPGA芯片公司中,如Ahera公司的Cyclone V和A1Tia V系列引,Xilinx公司的Zynp系列,Actel公司的M7A3P1000,其都內(nèi)嵌了ARM微處理器,在邏輯設(shè)計(jì)、片上系統(tǒng)中都有廣泛的應(yīng)用。
本文選用Actel公司的FPGA器件,型號(hào)為M7A3P1000,采用該器件對(duì)SOC進(jìn)行設(shè)計(jì)驗(yàn)證。該器件采用Flash結(jié)構(gòu),相比于采用靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)結(jié)構(gòu)的Ahera和Xilinx公司的FPGA器件,其下載的程序在掉電后不丟失,因此不需專用的配置芯片,故在PCB設(shè)計(jì)中可降低設(shè)計(jì)的復(fù)雜度,減少面積的開銷。此外,該器件所具有的的 加密功能,可有效的保護(hù)知識(shí)產(chǎn)權(quán)。設(shè)計(jì)中,首先在該芯片中搭建基于ARM7的SOC系統(tǒng),最后用兩種方法驗(yàn)證該SOC系統(tǒng)的正確性:一是用該系統(tǒng)對(duì)片外存儲(chǔ)器進(jìn)行擦寫操作;二是用該系統(tǒng)測(cè)試用戶定制邏輯外設(shè)。
1 系統(tǒng)原理
在SOC設(shè)計(jì)中,常見的架構(gòu)都是以微處理器或數(shù)字信號(hào)處理器(DSP)為中心,加上存儲(chǔ)器,外設(shè)等,再通過片上總線把處理器和外設(shè)進(jìn)行互連,本設(shè)計(jì)采用的FPGA型號(hào)為M7A3P1000芯片,因其內(nèi)嵌一個(gè)基于AMBA總線架構(gòu)、且完全兼容ARM7微處理器,故可以在非常低的功耗下安全、可靠地運(yùn)行。上述的AMBA總線架構(gòu),是ARM公司設(shè)計(jì)的一種高性能嵌入式系統(tǒng)總線的標(biāo)準(zhǔn),因其具有的高速度、低功耗等特點(diǎn),故其在SOC設(shè)計(jì)中已被廣泛采用,典型的基于AMBA架構(gòu)的SOC核心部分如圖1。
由圖1中可看出,AMBA規(guī)范中定義了兩種不同類型的總線:先進(jìn)的高速總線(AHB)、先進(jìn)的系統(tǒng)總線 (ASB)和先進(jìn)的外圍總線(APB)。其中AHB適用于高性能和高時(shí)鐘頻率的系統(tǒng)模塊,主要用于高性能和高吞吐量設(shè)備之間的連接,如片上存儲(chǔ)器、DSP、直接存儲(chǔ)器訪問(OMA)、高速片外存儲(chǔ)器控制器(該部件用于連接片外存儲(chǔ)器Flash和SRAM)等設(shè)備;ASB和AHB屬同一功能類型總線,只不過AHB總線是ASB總線的升級(jí)版,增強(qiáng)了對(duì)性能、綜合及時(shí)序驗(yàn)證的支持;APB總線主要用于連接低速、低帶寬的外圍器件,如集成電路總線(IIC)接口、計(jì)數(shù)器(Timer),通用輸入輸出(GPIO)、通用異步收發(fā)器(UART)等。下文將以此架構(gòu),進(jìn)行SOC設(shè)計(jì)。
圖1 AMBA架構(gòu)的SOC核心部分
2 系統(tǒng)設(shè)計(jì)
2.1 SOC設(shè)計(jì)流程
采用Aetel公司的Libero IDE 8.6集成開發(fā)環(huán)境,設(shè)計(jì)基于ARM7的SOC.SOC包括硬件和軟件設(shè)計(jì)兩部分,在硬件設(shè)計(jì)中,一般將系統(tǒng)經(jīng)行分模塊設(shè)計(jì),之后針對(duì)各模塊功能,逐個(gè)進(jìn)行功能驗(yàn)證,待各模塊功能準(zhǔn)確后,依據(jù)總線架構(gòu),組成要設(shè)計(jì)的目標(biāo)系統(tǒng),最后通過軟硬件協(xié)同調(diào)試,證明系統(tǒng)功能的完備性。其SOC設(shè)計(jì)的主要流程如圖2。
在圖2顯示的SOC設(shè)計(jì)流程中,若要設(shè)計(jì)一個(gè)模塊或系統(tǒng),首先對(duì)其進(jìn)行功能/需求分析,下來針對(duì)虛線 框內(nèi)的步驟, 其中步驟HDL-Editor,User-Testbeneh.ModelsimSimulator,可用于模塊的設(shè)計(jì)、功能仿真,若再增加步驟Synthesis,Compile,Layout,Programming Genetation,可對(duì)所設(shè)計(jì)的模塊進(jìn)行實(shí)際驗(yàn)證,待各模塊功能驗(yàn)證準(zhǔn)確后,就可以依據(jù)指定的互連結(jié)構(gòu)組成系統(tǒng),然后結(jié)合相應(yīng)的軟件代碼,進(jìn)行系統(tǒng)功能調(diào)試、驗(yàn)證。
圖2 SOC設(shè)計(jì)的主要流程
2.2 SoC設(shè)計(jì)搭建
本文采用在Libero IDE 8.6集成開發(fā)環(huán)境中內(nèi)嵌的Coreconsole軟件8,搭建基于ARM7的SOC系統(tǒng),搭建的系統(tǒng)如圖3所示。
圖3 基于ARM7的SOC系統(tǒng)
如圖3所示,在Coreeonsole環(huán)境中搭建的系統(tǒng),包括總線,微處理器,外圍器件,以及驅(qū)動(dòng)和頂層端口,其中1)CoreMP7:32/16位精簡(jiǎn)指令集架構(gòu)處理器、支持32位ARM指令和16位Thumb指令、三級(jí)流水線,32位即4G尋址范圍等;2)CoreMP7Bridge:橋接器,連接CoreMP7 和CoreAHB,它將CoreMP7處理器發(fā)出的信號(hào)轉(zhuǎn)換成一個(gè)適合AHB總線連接的信號(hào),且包含一組聯(lián)合測(cè)試行動(dòng)小組(JTAG)信號(hào)接口,JTAG接口用于下載程序和軟件調(diào)試。3)CoreAHBLite:先進(jìn)的高速總線,一般連接DMA、DSP、SRAM等設(shè)備。包含16個(gè)AHB從器件節(jié)點(diǎn),每個(gè)從器件依次占有256MB地址空間,在本設(shè)計(jì)中,片外的Flash和SRAM分別連接在節(jié)點(diǎn)0和節(jié)點(diǎn)1上。2.1部分中用到的片外Flash就是通過外部存儲(chǔ)器接口連接在節(jié)點(diǎn)0上,故其基地址是Ox00000000;4)CoreMemCtrl:外部存儲(chǔ)器控制器,用于連接片上系統(tǒng)與外部寄存器,如對(duì)片外Flash、SRAM進(jìn)行讀寫訪問;5)CoreAHBtoAPB:橋接器。連接CoreAHB和CoreAPB;6)CoreAPB:先進(jìn)的外圍總線,一般連接UART、GPIO、IIC等外設(shè)。包含16個(gè)APB從器件節(jié)點(diǎn),每個(gè)從器件依次占有16MB地址空間,地址計(jì)算公式是:物理地址=基地址+偏移地址。7)驅(qū)動(dòng)和頂層端口包括:16 MHz系統(tǒng)時(shí)鐘SYSCLK;系統(tǒng)低電平復(fù)位端口NSYSRESET,程序下載和調(diào)試端口JTAG,外部存儲(chǔ)器連接端口ExtemalMomopyInterthce,串口通信接口等,圖中底色為灰色的是一般的輸入輸出(PIO)模塊,該模塊的設(shè)計(jì)和驗(yàn)證將在3.2部分詳細(xì)說明。至此,文中介紹了基于AMBA總線架構(gòu)的SOC中涉及到的時(shí)鐘、復(fù)位、總線、微處理器、外部存儲(chǔ)器及外圍輸入輸出端口,即最小系統(tǒng)框架,在圖3中清晰地確定了SOC系統(tǒng)的互連結(jié)構(gòu),實(shí)現(xiàn)了各模塊之間的通信功能。
3 實(shí)際驗(yàn)證
下面將對(duì)所搭建的SOC系統(tǒng)進(jìn)行驗(yàn)證,通過對(duì)系統(tǒng)翻譯、編譯、綜合、分配管腳、生成下載文件,最后將下載文件燒寫到FPGA片中。為驗(yàn)證該系統(tǒng)的準(zhǔn)確性,本設(shè)計(jì)采用兩種方法對(duì)其進(jìn)行測(cè)試驗(yàn)證,詳細(xì)過程見3.1和3.2部分。
3.1 搭建的系統(tǒng)對(duì)片外Flash的擦寫操作
本測(cè)試主要是在已經(jīng)搭建好的SOC系統(tǒng)的基礎(chǔ)上,在外部存儲(chǔ)器控制器接口連接外部存儲(chǔ)器Flash,通過能否對(duì)Flash進(jìn)行正常的擦寫操作來驗(yàn)證系統(tǒng)的準(zhǔn)確性,測(cè)試選用的片外Flash芯片型號(hào)Numonyx公司是28F640J3D,它是64M的16位只讀存儲(chǔ)器,分配的基地址是Ox00000000,由于該芯片16位模式的訪問特性,地址線0位拉低不予鏈接,其余地址線管腳依次連接到頂層外部寄存器控制器的地址端口。
FS2是一款集合了大量指令和可用軟件、用以調(diào)試基于ARM的SOC系統(tǒng)內(nèi)核的工具,利用該工具對(duì)片外Flash進(jìn)行配置和擦寫操作,來驗(yàn)證系統(tǒng)的準(zhǔn)確性。測(cè)試首先對(duì)片外Flash進(jìn)行配置,進(jìn)而對(duì)指定存儲(chǔ)空間進(jìn)行擦除操作,然后對(duì)該存儲(chǔ)空間進(jìn)行寫操作,最后觀察此存儲(chǔ)空間中的數(shù)據(jù),具體過程如圖4所示。[!--empirenews.page--]
在圖4中顯示的是FS2工具的用戶界面,設(shè)計(jì)中用到的八條指令,分別是:1>、2>、3>……8>,其中指令1>、2>用來配置片外Flash芯片;指令3>用來選擇將要擦寫的存儲(chǔ)空間,由圖中可知,本設(shè)計(jì)中要進(jìn)行的讀寫操作 的存儲(chǔ)空間是Ox00000000-0x003FFFFF;指令4>用來對(duì)Flash指定的存儲(chǔ)空間進(jìn)行擦除操作;指令5>用來把已經(jīng)準(zhǔn)備好的二進(jìn)制文件寫到上述存儲(chǔ)空間中,設(shè)計(jì)中使用的二進(jìn)制文件名是QUICK.HEX;指令6>是用來顯示指定存儲(chǔ)空間中的內(nèi)容,從圖中可看出,寫到存儲(chǔ)空間Ox00000000-0x0000003F的內(nèi)容是18、FO、9F……、12、E3;指令7>執(zhí)行對(duì)上述存儲(chǔ)空間寫入的數(shù)據(jù)的擦除操作;指令8>顯示上述存儲(chǔ)單元擦除后的內(nèi)容。
圖4 片外Flash的擦寫演示過程
通過對(duì)上述過程的分析可知,所搭建的SOC系統(tǒng)可準(zhǔn)確實(shí)現(xiàn)片外Flash的擦寫操作,進(jìn)而說明了該系統(tǒng)的準(zhǔn)確性。
3.2 搭建的系統(tǒng)對(duì)外設(shè)接口的讀寫操作
本測(cè)試在遵循ARM7先進(jìn)外圍總線APB的讀寫時(shí)序的前提下,定制用戶邏輯外設(shè)PIO,通過該系統(tǒng)對(duì)PIO接口進(jìn)行讀寫操作來進(jìn)一步驗(yàn)證設(shè)計(jì)的準(zhǔn)確,驗(yàn)證中的用到的APB總線的讀寫時(shí)序如圖5。
圖5 APB總線的讀寫時(shí)序
下面將主要遵循系統(tǒng)中先進(jìn)的外圍總線APB的讀寫時(shí)序,首先采用硬件描述語言和C代碼,定制八位的用戶邏輯外設(shè)PIO,然后將PIO的輸入端口接到開關(guān)Switch0一Switch7,輸出端口接到八個(gè)發(fā)光二極管Led0一Led7,通過軟硬件調(diào)試,使八位開關(guān)的輸入電平顯示到八個(gè)發(fā)光二極管上,以此來進(jìn)一步驗(yàn)證設(shè)計(jì)中搭建的SOC系統(tǒng)的準(zhǔn)確,針對(duì)上述過程及要求,為了更直觀地展示驗(yàn)證結(jié)果,制作了簡(jiǎn)單的實(shí)驗(yàn)板,當(dāng)開關(guān)鍵在高電平時(shí),發(fā)光二極管變亮,否則,發(fā)光二極管不亮。其中定制用戶邏輯外設(shè)的主要步驟如下:
1)規(guī)劃元件的硬件功能;
2)使用硬件描述來描述硬件邏輯;
3)單獨(dú)驗(yàn)證元件的硬件功能;
4)描述寄存器的C頭文件來為軟件定義硬件寄存器映像;
5)將元件集成到ARM7系統(tǒng)中,使用ARM7來測(cè)試寄存器的訪問是否正確,并為該元件編寫軟件驅(qū)動(dòng);
6)執(zhí)行系統(tǒng)級(jí)的驗(yàn)證等。
圖6是在Aetel公司的調(diào)試軟件Sofleonsole和實(shí)驗(yàn)板上的實(shí)際調(diào)試結(jié)果。
圖6 調(diào)試結(jié)果
由圖6顯示的調(diào)試結(jié)果可知,八位開關(guān)Switeh0-Switeh7的輸入分別是11001011和11100101,這個(gè)和八個(gè)發(fā)光二極管Led0-Led7的輸出結(jié)果一致,由此進(jìn)一步驗(yàn)證了設(shè)計(jì)的準(zhǔn)確性。
4 結(jié)束語
本文通過對(duì)基于ARM7的SOC系統(tǒng)的設(shè)計(jì),介紹了一種Flash結(jié)構(gòu)的FPGA器件及其片上系統(tǒng)的設(shè)計(jì)方法,進(jìn)而給出了兩種驗(yàn)證該片上系統(tǒng)準(zhǔn)確性的方法,通過實(shí)際驗(yàn)證,該系統(tǒng)不僅能準(zhǔn)確進(jìn)行片外存儲(chǔ)器的擦寫,而且可以準(zhǔn)確進(jìn)行外設(shè)接口的讀寫的操作,由此驗(yàn)證了設(shè)計(jì)的準(zhǔn)確性。文中所搭建SOC系統(tǒng),可以與符合ARM公司的AHB2.0協(xié)議的北斗基帶芯片無縫連接,在北斗接收機(jī)的設(shè)計(jì)、測(cè)試中有重要的參考價(jià)值。