文獻標識碼: B
文章編號: 0258-7998(2012)07-0061-04
隨著超大規(guī)模片上系統(tǒng)需求的日益增多,,基于傳統(tǒng)IC芯片的微電子應用系統(tǒng)設計技術正在轉(zhuǎn)向基于知識產(chǎn)權IP(Intellectual Property)核的片上系統(tǒng)技術發(fā)展[1],。因此,基于資源IP核的復用設計方式已開始逐漸成為國內(nèi)外微電子系統(tǒng)設計的一項支撐技術,。從應用功能角度劃分IP核有三大類[2]:微處理器IP核(如8位8051核,、32位NiosII、Microblaze核等),、各種接口IP核(如SDRAM控制器,、PCI總線接口、CAN總線接口、串行總線接口IP核等)和專用算法IP核(圖形編解碼H.264,、加密核等),。使用IP核復用技術,將IP集成到FPGA芯片上,,可縮小PCB板體積,,降低功耗;還可以根據(jù)需要進行功能的升級,、擴充和裁減[3],。本文以Altera公司的NiosII為主處理器并集成PCI接口、串行接口,、CAN接口,、網(wǎng)絡接口設計為例,說明片上系統(tǒng)的設計方法,。
1 設計原理
采用片上系統(tǒng)設計的智能多接口模塊一般可以不需要外部主處理器操作系統(tǒng)的干預,,其典型結構如圖1所示。在工作時,,片上系統(tǒng)收到的信號經(jīng)過本板上Nios II處理器處理轉(zhuǎn)換后,,即可將數(shù)據(jù)信號送出或做其他處理。信號轉(zhuǎn)換,、處理工作全部由片上系統(tǒng)完成,,不增加外主處理器操作系統(tǒng)的軟件開銷,因而對整個系統(tǒng)的負擔更小,。也可以要通過接入的PCI等系統(tǒng)總線,,以中斷提請等方式向外部主處理器提請訪問,可完成與外主處理器的數(shù)據(jù)交換[4],。
在開源OpenCores組織的網(wǎng)站上,,可以獲取大量共享IP核, 但是大多數(shù)是未被驗證的,,或者由于是不同人撰寫的,,其代碼風格也不盡相同。其接口信號定義為標準Wishbone總線形式,,Wishbone著重定義IP核的接口信號和總線周期標準來實現(xiàn)IP核的重用,。通過對IP軟核代碼的分析,在原代碼的基礎上可通過修改IP核的部分邏輯功能(如增加內(nèi)嵌數(shù)據(jù)收發(fā)FIFO深度),,優(yōu)化部分接口邏輯,;通過對異步信號同步采樣一次,可以去干擾,,消除亞穩(wěn)態(tài)以及虛假的Glitch,;可通過增加復位狀態(tài)寄存器等實現(xiàn)優(yōu)化設計。最終完成基于Wishbone總線的IP軟核設計。下面以串行接口IP核設計為例說明,,其他類型的IP核也可以通過類似方法獲得,。串行接口IP設計是以異步串行控制器16C550為原型的。
2.1.1 波特率發(fā)生器設計
波特率發(fā)生器通過兩個8位的分頻寄存器實現(xiàn),,它提供發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的基準時鐘,。波特率發(fā)生器產(chǎn)生的時鐘是串行數(shù)據(jù)波特率的16倍。上電復位后兩個分頻寄存器都為00H,,不使能所有的I/O操作,。
2.1.2 數(shù)據(jù)收發(fā)
數(shù)據(jù)發(fā)送主要由線控制寄存器、計數(shù)器,、FIFO控制器,、發(fā)送FIFO、發(fā)送移位寄存器等實現(xiàn),。在波特率設置好后,,計數(shù)器統(tǒng)計幀數(shù)據(jù)的位數(shù),確保發(fā)送的幀數(shù)據(jù)包括起始位,、有效數(shù)據(jù)位,、奇偶校驗位、停止位,。發(fā)送FIFO可以暫存總線接口發(fā)送過來的數(shù)據(jù),,數(shù)據(jù)從發(fā)送FIFO移入到輸出移位寄存器,每16個時鐘時間向外發(fā)送一位數(shù)據(jù),,先發(fā)送起始位,,有效數(shù)據(jù)從移位寄存器的高位逐位移出,最后輸出奇偶檢驗位和終止位,。當發(fā)送FIFO內(nèi)的數(shù)據(jù)低于FIFO設置觸發(fā)深度時,,會觸發(fā)發(fā)送FIFO空中斷,。
數(shù)據(jù)接收由線控制寄存器,、計數(shù)器、接收FIFO和輸入移位寄存器等組成,。接收數(shù)據(jù)的線控制寄存器,、計數(shù)器功能同發(fā)送模塊。接收器始終監(jiān)視著串行輸入端,,將8位串行數(shù)據(jù)逐位接收進來,。數(shù)據(jù)接收后會通過移位寄存器暫存在接收FIFO中, FIFO深度可支持1 B,、32 B,、64 B、128 B等。
2.1.3 中斷設計
串行接口IP核中包含一個8位的中斷使能寄存器(IER)和一個8位的中斷識別寄存器(IIR),。中斷使能寄存器可以使能5種中斷源,,分別是:接收線狀態(tài)中斷、發(fā)送線狀態(tài)中斷,、時間溢出中斷,、發(fā)送寄存器空中斷、Modem狀態(tài)中斷等,,共4個優(yōu)先級,。上電復位時默認狀態(tài)為全部中斷屏蔽。上電復位時IIR為C1H,,通過讀取IIR數(shù)值可獲取相應的4路中斷狀態(tài)信息,。
2.2 總線轉(zhuǎn)換橋接邏輯設計
為了實現(xiàn)Wishbone和Avalon總線協(xié)議之間的協(xié)議轉(zhuǎn)換, 根據(jù)兩種片上總線的特性,, 通過狀態(tài)機的使用來實現(xiàn)總線協(xié)議的轉(zhuǎn)換,, 并使用軟件仿真的方法建立模型來驗證總線轉(zhuǎn)換橋的可用性。 Wishbone到Avalon總線轉(zhuǎn)換橋的總體組成原理如圖3所示,。
Wishbone到Avalon總線轉(zhuǎn)換橋的基本功能是使得符合Wishbone總線體系結構的IP核可以在采用Avalon總線的NiosII 固核處理器片上系統(tǒng)中集成,,從而實現(xiàn)對定制外設的訪問。接口支持32位總線操作,??偩€轉(zhuǎn)換橋由相對獨立的Avalon主從端口單元和Wishbone主從端口單元組成,每個單元都有一套完整的功能來支持Avalon總線和Wishbone端口上所掛載的IP核之間的交易,,讀寫數(shù)據(jù)實行分開存儲,,由配置和狀態(tài)寄存器控制操作模式和數(shù)據(jù)的輸入輸出。Avalon總線接口邏輯與Wishbone接口邏輯兩側都包含本地狀態(tài)機及其他控制邏輯,,并且總線橋接口邏輯還包括地址譯碼,、命令譯碼、接口控制狀態(tài)機,、數(shù)據(jù)輸出MUX,、奇偶校驗輸出、地址溢出檢查等功能模塊,。
2.3 片上系統(tǒng)集成設計
基于NiosII固核處理器的片上系統(tǒng)集成是在SoPC Builder環(huán)境下完成的,。片上系統(tǒng)集成主要完成對片上系統(tǒng)的定制、片上系統(tǒng)的資源分配,、總線交換操作,、中斷處理等幾個點關鍵技術點。
2.3.1 片上系統(tǒng)定制設計
片上系統(tǒng)的定制設計主要是完成片上系統(tǒng)集成所需要的處理器IP和外設IP的選型,,是集成設計的第一步,,設置系統(tǒng)主頻,,同時可選配指令、數(shù)據(jù)Cache大小,、外部數(shù)據(jù)指令,、硬件乘法器、流水線支持,、浮點運算支持等特性,,并設置NiosII的Cache和CPU直接相連的存儲器。外設IP主要包括PCI總線接口IP,、外部SRAM接口IP,、外部Flash接口IP、外部GPIO接口IP,、外部網(wǎng)絡接口IP,、自定制的基于OpenCore的串行接口IP核、CAN總線接口IP軟核等,。
2.3.2 片上系統(tǒng)資源分配
SoPC為各IP自動分配了一個默認地址,。考慮到資源有效利用,,還需要對系統(tǒng)資源進行重配置,,主要包括:對Boot Loader的存儲器選擇和設置Boot Loader在存儲器中的偏移;存放異常向量的存儲器選擇及其偏移量,;各外設在Avalon總線上的偏移地址,、中斷號的分配;PCI總線對片上Avalon總線上設備的Memnry或I/O的空間以及地址映射,;DMA傳輸配置,;消息寄存器(Mailbox)雙口RAM的使用等。具體分配如下:
(1)考慮到可以通過PCI到Avalon總線的地址映射,,從PCI通過BAR端口直接訪問兩路UART,、CAN、GPIO等設備,,根據(jù)各接口IP地址特性,,其他外設在Avalon端地址分配不沖突的前提下,有效分配Avalon地址資源,,并可以在PCI端直接使用BAR2/BAR3以及Memory或I/O訪問此類外設,。
(2)可以通過Auto Bass Address操作,解決外設的地址分配沖突問題,。通過調(diào)整其他外設地址避免與Flash地址的沖突。
(3)可通過手動方式修改各個外設的中斷號,,也可以通過Auto Assign IRQs 操作,,自動分配中斷號(最低為0,,最高31)。
2.3.3 總線數(shù)據(jù)交換操作
PCI總線與Avalon總線實現(xiàn)互相訪問,,須先確定PCI核的資源配置,,然后根據(jù)資源配置選擇總線數(shù)據(jù)操作方式。從PCI總線方向看PCI軟核主要有以下幾個部分:寄存器組,、BAR0~BAR3,、DMAC、PCI訪問端口,。帶有PCI核的整體架構如圖4所示,。
對于含PCI總線接口IP的片上系統(tǒng)總線操作,可以分為DMA方式和非DMA方式,。非DMA方式即PCI總線通過PCI核的BAR空間訪問Avalon總線設備,,而不經(jīng)過DAMC的控制。非DMA方式的操作共分為4類,,其中數(shù)據(jù)類操作兩類:PCI總線讀取Avalon總線設備的數(shù)據(jù)(支持連續(xù)數(shù)據(jù)),、PCI總線將數(shù)據(jù)寫入Avalon總線設備(支持連續(xù)數(shù)據(jù));配置類操作兩類:PCI總線讀取Avalon總線設備的寄存器,、PCI總線寫入Avalon總線設備的寄存器,。數(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個32位寄存器。
3 軟件設計
NiosII EDS(嵌入式開發(fā)包)基于開放式,、可擴展Eclipse IDE的工程以及Eclipse C/C++開發(fā)工具提供了統(tǒng)一的開發(fā)平臺,,適用于所有NiosII處理器。 NiosII EDS為基于NiosII的系統(tǒng)自動生成板級支持包(BSP),,包括硬件抽象層(HAL),、可選的RTOS以及設備驅(qū)動。BSP提供了C/C++運行環(huán)境,,可以避免與硬件直接打交道,。所有軟件開發(fā)任務都可以在Nios II IDE下完成,包括編輯,、編譯和程序調(diào)試,。
基于NiosII固核處理器的片上系統(tǒng)的BSP(板級支持包)設計主要以開發(fā)板源碼為基礎進行修改移植。系統(tǒng)通過bootloader進行引導,,采用Altera的集成開發(fā)環(huán)境NiosII 7.2 IDE進行操作系統(tǒng)?滋C/OSII的開發(fā),。在開發(fā)過程中采用軟件模塊化,、通用化的編程思想進行設計,具體實現(xiàn)的驅(qū)動包括NiosII的驅(qū)動,、PCI驅(qū)動,、串行驅(qū)動、CAN接口驅(qū)動等,。首先創(chuàng)建IDE的管理工程,,然后選擇目標硬件,IDE會建立系統(tǒng)庫,,根據(jù)向?qū)Ь涂梢詣?chuàng)建一個NiosII C/C++應用工程,。最后是建立C的源文件和頭文件,對C源文件和頭文件編輯好后可對工程進行編譯,,編譯中出的錯誤與警告IDE都會給出提示,。
4 仿真與驗證
為了驗證串行接口IP核設計功能,需進行仿真測試與驗證,,其功能仿真如圖5所示,。
在Quartues II環(huán)境下完成該IP核編輯、編譯,、綜合布局布線,,并完成IP核相應的Testbench測試源代碼的編輯、編譯,,在Model Sim環(huán)境下進行功能與時序仿真,。對IP核的測試可以分別對Wishbone總線接口核和內(nèi)部功能核兩部分進行測試來完成。首先要對接口核部分測試,,以確保能夠正常進行讀寫操作,,然后對功能核的每個功能模塊和寄存器進行測試驗證。結果證明其IP功能齊備,,符合設計要求,。
本文詳細介紹了基于NiosII處理器的智能多接口片上系統(tǒng)設計與實現(xiàn),采用Altera公司Cyclonell系列FPGA芯片EP2C35F672I8實現(xiàn)設計時,,占用芯片資源小于50%,。
隨著超大規(guī)模片上系統(tǒng)的設計需求不斷增加,其對IP核的性能,、功能,、可重用性以及靈活性等方面的要求將越來越高,而目前Xilinx,、Altera等公司都已經(jīng)推出了工作頻率更高,、布線時延更小、容量更大的新型FPGA芯片,??梢詫⑻幚砥骱?、總線接口核和專用算法核等集成在頻率更高,、性能更強大的FPGA芯片上,。
參考文獻
[1] 夏宇聞.Verilog數(shù)字系統(tǒng)設計教程[M].北京:北京航空航天大學出版社,2003.
[2] 牛風舉,,劉元成,朱明成.基于IP復用的數(shù)字IC設計技術[M].北京:電子工業(yè)出版社,,2003.
[3] 劉明業(yè),蔣敬奇,,刁嵐松,,等譯.硬件描述語言Verilog[M]. 北京:清華大學出版社,2002.
[4] CHANG H,,COOKE L,,HUNTETE M.Surviving the SoC platform baseddesign[M].USA:Kluwer Acedemic Publisher. 2005.
[5] 蔡偉剛.NiosII 軟件架構解析[M].西安:西安電子科技大學出版社,2007.
[6] 楊強號.基于EDK的FPGA嵌入式系統(tǒng)開發(fā)[M].北京:機械工業(yè)出版社,,2008.