《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于NiosII的智能多接口片上系統(tǒng)設(shè)計(jì)
基于NiosII的智能多接口片上系統(tǒng)設(shè)計(jì)
來源:電子技術(shù)應(yīng)用2012年第7期
張興堂1,高 勇2,王偉強(qiáng)1
1.江蘇自動(dòng)化研究所,江蘇 連云港222006; 2.空軍駐揚(yáng)州地區(qū)軍代室,江蘇 揚(yáng)州225000
摘要: 設(shè)計(jì)了一種基于NiosII處理器的片上系統(tǒng)(SoC),集成了NiosII處理器IP、PCI接口IP、網(wǎng)絡(luò)接口IP以及基于Wishbone總線的串行接口IP核、CAN接口IP核等。系統(tǒng)具有可重配置、可擴(kuò)展、靈活、兼容性高、功耗低等優(yōu)點(diǎn),適合于片上系統(tǒng)開發(fā)與應(yīng)用。本設(shè)計(jì)使用Verilog HDL硬件描述語(yǔ)言在QuartusII環(huán)境下進(jìn)行IP軟核設(shè)計(jì)、綜合、布局布線,在Model Sim下完成功能、時(shí)序仿真,在SoPC下完成系統(tǒng)的定制與集成,在NiosII IDE環(huán)境下完成片上系統(tǒng)軟件程序的開發(fā),最后在FPGA器件上實(shí)現(xiàn)了智能多接口功能的片上系統(tǒng)。
關(guān)鍵詞: FPGA NiosII 片上系統(tǒng) IP核
中圖分類號(hào): TN47
文獻(xiàn)標(biāo)識(shí)碼: B
文章編號(hào): 0258-7998(2012)07-0061-04
Design of a multi-interface SoC based on NiosII
Zhang Xingtang1,Gao Yong2,Wang Weiqiang1
1.Jiangsu Automation Research Insititute,Lianyungang 222006,China; 2.Airforce Military Representation Oftice in Yangzhou Area,Yangzhou 225000,China
Abstract: This paper analyses the design of a SoC based on NiosII,that composed of the NiosII Processor and the Interface of PCI,Network,UART and CAN that based on Wishbone bus. The SoC has the advantages of flexibility, configurability, opening, extending, smallness and low consuming. So it is ideal for the research and develop of SoC. Verilog hardware description language in the Quartus II environment has been used for its design, compilation and simulation. The multi-interface SoC based on NiosII has been implemented using FPGA technology in the SoPC environment of Nios II IDE.
Key words : FPGA;NiosII;SoC;IP core

    隨著超大規(guī)模片上系統(tǒng)需求的日益增多,基于傳統(tǒng)IC芯片的微電子應(yīng)用系統(tǒng)設(shè)計(jì)技術(shù)正在轉(zhuǎn)向基于知識(shí)產(chǎn)權(quán)IP(Intellectual Property)核的片上系統(tǒng)技術(shù)發(fā)展[1]。因此,基于資源IP核的復(fù)用設(shè)計(jì)方式已開始逐漸成為國(guó)內(nèi)外微電子系統(tǒng)設(shè)計(jì)的一項(xiàng)支撐技術(shù)。從應(yīng)用功能角度劃分IP核有三大類[2]:微處理器IP核(如8位8051核、32位NiosII、Microblaze核等)、各種接口IP核(如SDRAM控制器、PCI總線接口、CAN總線接口、串行總線接口IP核等)和專用算法IP核(圖形編解碼H.264、加密核等)。使用IP核復(fù)用技術(shù),將IP集成到FPGA芯片上,可縮小PCB板體積,降低功耗;還可以根據(jù)需要進(jìn)行功能的升級(jí)、擴(kuò)充和裁減[3]。本文以Altera公司的NiosII為主處理器并集成PCI接口、串行接口、CAN接口、網(wǎng)絡(luò)接口設(shè)計(jì)為例,說明片上系統(tǒng)的設(shè)計(jì)方法。

1 設(shè)計(jì)原理
    采用片上系統(tǒng)設(shè)計(jì)的智能多接口模塊一般可以不需要外部主處理器操作系統(tǒng)的干預(yù),其典型結(jié)構(gòu)如圖1所示。在工作時(shí),片上系統(tǒng)收到的信號(hào)經(jīng)過本板上Nios II處理器處理轉(zhuǎn)換后,即可將數(shù)據(jù)信號(hào)送出或做其他處理。信號(hào)轉(zhuǎn)換、處理工作全部由片上系統(tǒng)完成,不增加外主處理器操作系統(tǒng)的軟件開銷,因而對(duì)整個(gè)系統(tǒng)的負(fù)擔(dān)更小。也可以要通過接入的PCI等系統(tǒng)總線,以中斷提請(qǐng)等方式向外部主處理器提請(qǐng)?jiān)L問,可完成與外主處理器的數(shù)據(jù)交換[4]。

    在開源OpenCores組織的網(wǎng)站上,可以獲取大量共享IP核, 但是大多數(shù)是未被驗(yàn)證的,或者由于是不同人撰寫的,其代碼風(fēng)格也不盡相同。其接口信號(hào)定義為標(biāo)準(zhǔn)Wishbone總線形式,Wishbone著重定義IP核的接口信號(hào)和總線周期標(biāo)準(zhǔn)來實(shí)現(xiàn)IP核的重用。通過對(duì)IP軟核代碼的分析,在原代碼的基礎(chǔ)上可通過修改IP核的部分邏輯功能(如增加內(nèi)嵌數(shù)據(jù)收發(fā)FIFO深度),優(yōu)化部分接口邏輯;通過對(duì)異步信號(hào)同步采樣一次,可以去干擾,消除亞穩(wěn)態(tài)以及虛假的Glitch;可通過增加復(fù)位狀態(tài)寄存器等實(shí)現(xiàn)優(yōu)化設(shè)計(jì)。最終完成基于Wishbone總線的IP軟核設(shè)計(jì)。下面以串行接口IP核設(shè)計(jì)為例說明,其他類型的IP核也可以通過類似方法獲得。串行接口IP設(shè)計(jì)是以異步串行控制器16C550為原型的。
2.1.1 波特率發(fā)生器設(shè)計(jì)
    波特率發(fā)生器通過兩個(gè)8位的分頻寄存器實(shí)現(xiàn),它提供發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的基準(zhǔn)時(shí)鐘。波特率發(fā)生器產(chǎn)生的時(shí)鐘是串行數(shù)據(jù)波特率的16倍。上電復(fù)位后兩個(gè)分頻寄存器都為00H,不使能所有的I/O操作。
2.1.2 數(shù)據(jù)收發(fā)
    數(shù)據(jù)發(fā)送主要由線控制寄存器、計(jì)數(shù)器、FIFO控制器、發(fā)送FIFO、發(fā)送移位寄存器等實(shí)現(xiàn)。在波特率設(shè)置好后,計(jì)數(shù)器統(tǒng)計(jì)幀數(shù)據(jù)的位數(shù),確保發(fā)送的幀數(shù)據(jù)包括起始位、有效數(shù)據(jù)位、奇偶校驗(yàn)位、停止位。發(fā)送FIFO可以暫存總線接口發(fā)送過來的數(shù)據(jù),數(shù)據(jù)從發(fā)送FIFO移入到輸出移位寄存器,每16個(gè)時(shí)鐘時(shí)間向外發(fā)送一位數(shù)據(jù),先發(fā)送起始位,有效數(shù)據(jù)從移位寄存器的高位逐位移出,最后輸出奇偶檢驗(yàn)位和終止位。當(dāng)發(fā)送FIFO內(nèi)的數(shù)據(jù)低于FIFO設(shè)置觸發(fā)深度時(shí),會(huì)觸發(fā)發(fā)送FIFO空中斷。
    數(shù)據(jù)接收由線控制寄存器、計(jì)數(shù)器、接收FIFO和輸入移位寄存器等組成。接收數(shù)據(jù)的線控制寄存器、計(jì)數(shù)器功能同發(fā)送模塊。接收器始終監(jiān)視著串行輸入端,將8位串行數(shù)據(jù)逐位接收進(jìn)來。數(shù)據(jù)接收后會(huì)通過移位寄存器暫存在接收FIFO中, FIFO深度可支持1 B、32 B、64 B、128 B等。
2.1.3 中斷設(shè)計(jì)
    串行接口IP核中包含一個(gè)8位的中斷使能寄存器(IER)和一個(gè)8位的中斷識(shí)別寄存器(IIR)。中斷使能寄存器可以使能5種中斷源,分別是:接收線狀態(tài)中斷、發(fā)送線狀態(tài)中斷、時(shí)間溢出中斷、發(fā)送寄存器空中斷、Modem狀態(tài)中斷等,共4個(gè)優(yōu)先級(jí)。上電復(fù)位時(shí)默認(rèn)狀態(tài)為全部中斷屏蔽。上電復(fù)位時(shí)IIR為C1H,通過讀取IIR數(shù)值可獲取相應(yīng)的4路中斷狀態(tài)信息。
2.2 總線轉(zhuǎn)換橋接邏輯設(shè)計(jì)
    為了實(shí)現(xiàn)Wishbone和Avalon總線協(xié)議之間的協(xié)議轉(zhuǎn)換, 根據(jù)兩種片上總線的特性, 通過狀態(tài)機(jī)的使用來實(shí)現(xiàn)總線協(xié)議的轉(zhuǎn)換, 并使用軟件仿真的方法建立模型來驗(yàn)證總線轉(zhuǎn)換橋的可用性。 Wishbone到Avalon總線轉(zhuǎn)換橋的總體組成原理如圖3所示。

    Wishbone到Avalon總線轉(zhuǎn)換橋的基本功能是使得符合Wishbone總線體系結(jié)構(gòu)的IP核可以在采用Avalon總線的NiosII 固核處理器片上系統(tǒng)中集成,從而實(shí)現(xiàn)對(duì)定制外設(shè)的訪問。接口支持32位總線操作??偩€轉(zhuǎn)換橋由相對(duì)獨(dú)立的Avalon主從端口單元和Wishbone主從端口單元組成,每個(gè)單元都有一套完整的功能來支持Avalon總線和Wishbone端口上所掛載的IP核之間的交易,讀寫數(shù)據(jù)實(shí)行分開存儲(chǔ),由配置和狀態(tài)寄存器控制操作模式和數(shù)據(jù)的輸入輸出。Avalon總線接口邏輯與Wishbone接口邏輯兩側(cè)都包含本地狀態(tài)機(jī)及其他控制邏輯,并且總線橋接口邏輯還包括地址譯碼、命令譯碼、接口控制狀態(tài)機(jī)、數(shù)據(jù)輸出MUX、奇偶校驗(yàn)輸出、地址溢出檢查等功能模塊。
2.3 片上系統(tǒng)集成設(shè)計(jì)
    基于NiosII固核處理器的片上系統(tǒng)集成是在SoPC Builder環(huán)境下完成的。片上系統(tǒng)集成主要完成對(duì)片上系統(tǒng)的定制、片上系統(tǒng)的資源分配、總線交換操作、中斷處理等幾個(gè)點(diǎn)關(guān)鍵技術(shù)點(diǎn)。
2.3.1 片上系統(tǒng)定制設(shè)計(jì)
    片上系統(tǒng)的定制設(shè)計(jì)主要是完成片上系統(tǒng)集成所需要的處理器IP和外設(shè)IP的選型,是集成設(shè)計(jì)的第一步,設(shè)置系統(tǒng)主頻,同時(shí)可選配指令、數(shù)據(jù)Cache大小、外部數(shù)據(jù)指令、硬件乘法器、流水線支持、浮點(diǎn)運(yùn)算支持等特性,并設(shè)置NiosII的Cache和CPU直接相連的存儲(chǔ)器。外設(shè)IP主要包括PCI總線接口IP、外部SRAM接口IP、外部Flash接口IP、外部GPIO接口IP、外部網(wǎng)絡(luò)接口IP、自定制的基于OpenCore的串行接口IP核、CAN總線接口IP軟核等。
2.3.2 片上系統(tǒng)資源分配
    SoPC為各IP自動(dòng)分配了一個(gè)默認(rèn)地址??紤]到資源有效利用,還需要對(duì)系統(tǒng)資源進(jìn)行重配置,主要包括:對(duì)Boot Loader的存儲(chǔ)器選擇和設(shè)置Boot Loader在存儲(chǔ)器中的偏移;存放異常向量的存儲(chǔ)器選擇及其偏移量;各外設(shè)在Avalon總線上的偏移地址、中斷號(hào)的分配;PCI總線對(duì)片上Avalon總線上設(shè)備的Memnry或I/O的空間以及地址映射;DMA傳輸配置;消息寄存器(Mailbox)雙口RAM的使用等。具體分配如下:
    (1)考慮到可以通過PCI到Avalon總線的地址映射,從PCI通過BAR端口直接訪問兩路UART、CAN、GPIO等設(shè)備,根據(jù)各接口IP地址特性,其他外設(shè)在Avalon端地址分配不沖突的前提下,有效分配Avalon地址資源,并可以在PCI端直接使用BAR2/BAR3以及Memory或I/O訪問此類外設(shè)。
    (2)可以通過Auto Bass Address操作,解決外設(shè)的地址分配沖突問題。通過調(diào)整其他外設(shè)地址避免與Flash地址的沖突。
    (3)可通過手動(dòng)方式修改各個(gè)外設(shè)的中斷號(hào),也可以通過Auto Assign IRQs 操作,自動(dòng)分配中斷號(hào)(最低為0,最高31)。
2.3.3 總線數(shù)據(jù)交換操作
    PCI總線與Avalon總線實(shí)現(xiàn)互相訪問,須先確定PCI核的資源配置,然后根據(jù)資源配置選擇總線數(shù)據(jù)操作方式。從PCI總線方向看PCI軟核主要有以下幾個(gè)部分:寄存器組、BAR0~BAR3、DMAC、PCI訪問端口。帶有PCI核的整體架構(gòu)如圖4所示。

 

 

    對(duì)于含PCI總線接口IP的片上系統(tǒng)總線操作,可以分為DMA方式和非DMA方式。非DMA方式即PCI總線通過PCI核的BAR空間訪問Avalon總線設(shè)備,而不經(jīng)過DAMC的控制。非DMA方式的操作共分為4類,其中數(shù)據(jù)類操作兩類:PCI總線讀取Avalon總線設(shè)備的數(shù)據(jù)(支持連續(xù)數(shù)據(jù))、PCI總線將數(shù)據(jù)寫入Avalon總線設(shè)備(支持連續(xù)數(shù)據(jù));配置類操作兩類:PCI總線讀取Avalon總線設(shè)備的寄存器、PCI總線寫入Avalon總線設(shè)備的寄存器。數(shù)據(jù)類操作與配置類操作沒有本質(zhì)上的區(qū)別,只是數(shù)據(jù)類操作支持連續(xù)數(shù)據(jù)操作,數(shù)據(jù)通道是雙口RAM,而配置類操作只支持單次操作,數(shù)據(jù)通道是MailBox組。PCI核的寄存器組包含兩類MailBox寄存器組:P-A MBR和A-P MBR,每類MailBox組含8個(gè)32位寄存器。
3 軟件設(shè)計(jì)
    NiosII EDS(嵌入式開發(fā)包)基于開放式、可擴(kuò)展Eclipse IDE的工程以及Eclipse C/C++開發(fā)工具提供了統(tǒng)一的開發(fā)平臺(tái),適用于所有NiosII處理器。 NiosII EDS為基于NiosII的系統(tǒng)自動(dòng)生成板級(jí)支持包(BSP),包括硬件抽象層(HAL)、可選的RTOS以及設(shè)備驅(qū)動(dòng)。BSP提供了C/C++運(yùn)行環(huán)境,可以避免與硬件直接打交道。所有軟件開發(fā)任務(wù)都可以在Nios II IDE下完成,包括編輯、編譯和程序調(diào)試。
    基于NiosII固核處理器的片上系統(tǒng)的BSP(板級(jí)支持包)設(shè)計(jì)主要以開發(fā)板源碼為基礎(chǔ)進(jìn)行修改移植。系統(tǒng)通過bootloader進(jìn)行引導(dǎo),采用Altera的集成開發(fā)環(huán)境NiosII 7.2 IDE進(jìn)行操作系統(tǒng)?滋C/OSII的開發(fā)。在開發(fā)過程中采用軟件模塊化、通用化的編程思想進(jìn)行設(shè)計(jì),具體實(shí)現(xiàn)的驅(qū)動(dòng)包括NiosII的驅(qū)動(dòng)、PCI驅(qū)動(dòng)、串行驅(qū)動(dòng)、CAN接口驅(qū)動(dòng)等。首先創(chuàng)建IDE的管理工程,然后選擇目標(biāo)硬件,IDE會(huì)建立系統(tǒng)庫(kù),根據(jù)向?qū)Ь涂梢詣?chuàng)建一個(gè)NiosII C/C++應(yīng)用工程。最后是建立C的源文件和頭文件,對(duì)C源文件和頭文件編輯好后可對(duì)工程進(jìn)行編譯,編譯中出的錯(cuò)誤與警告IDE都會(huì)給出提示。
4 仿真與驗(yàn)證
    為了驗(yàn)證串行接口IP核設(shè)計(jì)功能,需進(jìn)行仿真測(cè)試與驗(yàn)證,其功能仿真如圖5所示。

    在Quartues II環(huán)境下完成該IP核編輯、編譯、綜合布局布線,并完成IP核相應(yīng)的Testbench測(cè)試源代碼的編輯、編譯,在Model Sim環(huán)境下進(jìn)行功能與時(shí)序仿真。對(duì)IP核的測(cè)試可以分別對(duì)Wishbone總線接口核和內(nèi)部功能核兩部分進(jìn)行測(cè)試來完成。首先要對(duì)接口核部分測(cè)試,以確保能夠正常進(jìn)行讀寫操作,然后對(duì)功能核的每個(gè)功能模塊和寄存器進(jìn)行測(cè)試驗(yàn)證。結(jié)果證明其IP功能齊備,符合設(shè)計(jì)要求。
    本文詳細(xì)介紹了基于NiosII處理器的智能多接口片上系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn),采用Altera公司Cyclonell系列FPGA芯片EP2C35F672I8實(shí)現(xiàn)設(shè)計(jì)時(shí),占用芯片資源小于50%。
    隨著超大規(guī)模片上系統(tǒng)的設(shè)計(jì)需求不斷增加,其對(duì)IP核的性能、功能、可重用性以及靈活性等方面的要求將越來越高,而目前Xilinx、Altera等公司都已經(jīng)推出了工作頻率更高、布線時(shí)延更小、容量更大的新型FPGA芯片??梢詫⑻幚砥骱?、總線接口核和專用算法核等集成在頻率更高、性能更強(qiáng)大的FPGA芯片上。
參考文獻(xiàn)
[1] 夏宇聞.Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程[M].北京:北京航空航天大學(xué)出版社,2003.
[2] 牛風(fēng)舉,劉元成,朱明成.基于IP復(fù)用的數(shù)字IC設(shè)計(jì)技術(shù)[M].北京:電子工業(yè)出版社,2003.
[3] 劉明業(yè),蔣敬奇,刁嵐松,等譯.硬件描述語(yǔ)言Verilog[M]. 北京:清華大學(xué)出版社,2002.
[4] CHANG H,COOKE L,HUNTETE M.Surviving the SoC platform baseddesign[M].USA:Kluwer Acedemic Publisher. 2005.
[5] 蔡偉剛.NiosII 軟件架構(gòu)解析[M].西安:西安電子科技大學(xué)出版社,2007.
[6] 楊強(qiáng)號(hào).基于EDK的FPGA嵌入式系統(tǒng)開發(fā)[M].北京:機(jī)械工業(yè)出版社,2008.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。