摘要:提出了一種以自主研發的32位RISC結構高性能嵌入式微處理器“龍騰”R2為核心,包括存儲控制單元、中斷控制器、微處理器接口單元、中央控制單元、配置寄存器單元等的嵌入式SOC微處理器的設計方法,成功實現了VxWorks操作系統的移植。
關鍵詞:嵌入式微處理器;VxWorks;龍騰
中圖分類號:TP303文獻標志碼:A
文章編號:1001-3695(2007)08-0269-03
VxWorks是美國Wind River System(WRS)公司專門為嵌入式系統設計開發的實時操作系統(RTOS),為編程人員提供了高效的實時多任務調度、中斷管理、實時系統資源以及實時任務間通信。VxWorks是一個運行在目標機上的高性能、可裁減的嵌入式實時操作系統,以其良好的可靠性和卓越的實時性被廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中,如衛星通信、軍事演習、彈道制導和飛機導航等。在F16、FA18戰斗機、B-2隱形轟炸機、愛國者導彈以及火星探測器上均使用了VxWorks操作系統[1]。
西北工業大學航空微電子中心對VxWorks操作系統進行了深入的研究,以自主研發的32位RISC結構高性能嵌入式微處理器“龍騰”R2為核心,設計了包括控制外部SRAM、串行設備、flash的存儲控制單元、用于中斷處理的中斷控制器、與微處理器連接的微處理器接口單元、用于總控的中央控制單元、保存配置信息的配置寄存器單元等,實現了VxWorks操作系統的移植。
1嵌入式實時操作系統VxWorks
VxWorks操作系統是一個具有可伸縮、可裁減、高可靠,同時適用于所有流行CPU平臺的嵌入式實時操作系統[2]。所謂可伸縮性指VxWorks提供了超過1 800個應用編程接口供用戶自行選擇使用;可裁減性是指用戶可以根據自己的應用需求對VxWorks進行配置,產生具有各種不同功能集的操作系統映像;可靠性是指能夠勝任一些諸如飛行控制這樣的關鍵性任務。
根據面向嵌入式系統的需求,對VxWorks操作系統進行裁減。裁減后的主要組件包括:
a)BSP(board support package)。VxWorks采用模塊化設計方法,將依賴于硬件環境的函數和信息分離出來,放入稱為BSP的組件中,保證BSP可以向上層軟件提供一致的接口。BSP中包括硬件環境中CPU的初始化及系統各項硬件資源的安裝和配置,包括RAM、clock、中斷控制器等。
b)Wind。微內核wind是WindRiver公司自行開發的一種嵌入式操作系統內核。該內核具有標準的嵌入式實時操作系統的基本特征,如可裁減性、搶占式任務調度、異步事件響應等。
c)輸入/輸出。VxWorks的輸入/輸出系統提供了操作系統與各硬件設備的接口,主要包括字符設備、串行設備、塊設備、虛擬設備(管道、socket)、監控設備和網絡設備等。
在嵌入式系統中運行VxWorks操作系統使用的是一種壓縮ROM駐留型鏡像,編譯后生成的壓縮型的VxWorks鏡像文件被固化在一片flash中。當系統上電后,首先將VxWorks鏡像文件解壓后拷貝到內存,然后再運行。這種啟動方式,在上電后的開始階段,程序由于需要解壓縮,系統的啟動時間較長,但是這種VxWorks的鏡像文件比非壓縮型的VxWorks鏡像文件占用的空間要少得多(接近一半)。
2嵌入式SOC微處理器
如圖1所示,根據面向嵌入式系統的需求,以“龍騰”R2微處理器為核心,設計了包括控制外部SRAM、串行設備、flash的存儲控制單元、用于中斷處理的中斷控制器、與微處理器連接的微處理器接口單元、用于總控的中央控制單元、保存配置信息的配置寄存器單元等[3]。
微處理器接口單元:提供與“龍騰”R2微處理器的接口,提供對總線地址周期和數據周期的響應。
中央控制單元:識別微處理器接口單元發送過來的對地址空間訪問的請求,將相應的請求發送到中斷控制器、配置寄存器單元、存儲控制器單元等模塊。
存儲控制器單元:控制對SRAM和flash的讀寫操作;處理串行設備的讀寫操作。
配置寄存器單元:包含所有的可配置寄存器,同時向中斷控制器、配置寄存器單元、存儲控制器單元提供相應的配置寄存器信息。
中斷控制器:處理串行設備發送過來的讀中斷,產生定時中斷和寫中斷。
332位RISC結構高性能嵌入式微處理器
整個嵌入式SOC系統的核心是該中心自主研發的32位超標量RISC微處理器“龍騰”R2?!褒堯v”R2微處理器的結構如圖2所示。主要包含九個功能部件:取指譯碼單元、定點執行單元、浮點執行單元、load/store單元、存儲管理單元、一級指令/數據cache單元、二級混合cache單元、總線接口單元以及系統支持單元等。
取指譯碼單元(fetch decode unit,FDU)是其主要的控制部件,它產生取指的PC,從指令cache接收指令并進行譯碼;根據不同類型的指令,產生不同的控制信號,并將指令發射到相應的執行部件。指令譯碼部件還包含一個分支預測單元,專門用來處理轉移指令,產生轉移指令的目標地址?!褒堯v”R1微處理器采用集中式、硬連線技術實現控制邏輯。
定點執行單元(integer execute unit,IEU)用來完成定點指令的執行,主要由寄存器堆(包括32個32位的通用寄存器、特殊寄存器和臨時寄存器)、32位ALU、桶式移位器、前導零計算模塊、立即數模塊、掩碼模塊和32位陣列乘法器組成。
浮點執行單元(float point process unit,FPPU)負責整個處理器的浮點數據處理,包括浮點數據的各種算術操作(加、減、乘、除、倒數以及倒數平方根)、定浮點數據的相互轉換和浮點數據的比較與控制操作。浮點執行部件相對比較獨立,有自己的獨立譯碼器對接收到浮點指令進行譯碼,使用了七級流水來實現整個浮點執行部件的數據通路和控制通路。
Load/store單元(load store unit,LSU)主要完成load/store指令有效地址的計算,同時完成指令的異常檢測和跨頁邊界處理。
存儲管理部件(memory management unit,MMU)完成地址轉換和存儲保護兩大功能,包括地址、數據兩部分。存儲管理部件支持三種有效地址到物理地址的轉換方式,即頁地址轉換、塊地址轉換和實地址轉換。數據存儲管理和地址存儲管理的地址轉換部分類似,但其存儲保護不盡相同,主要原因是數據需要考慮寫操作,而指令不需要。此外存儲管理部件還包括異常處理邏輯來處理與存儲保護相關的異常,以及地址、數據轉換后援緩沖區(translation lookaside buffer,TLB)來加快頁地址轉換速度。
一級指令/數據cache單元(L1 cache)主要用于緩沖最近使用的指令及數據,以便能快速為后續操作提供指令或數據。它包含cache的命中、預取、替換、訪存和輸出邏輯等。數據cache的一致性通過MEI一致性協議來保證。二級混合cache單元(L2 cache)的功能與一級指令/數據cache相似,均是為了彌補CPU與內存之間的速度差異。與一級cache相比,二級cache的容量要大一些,而訪問的延遲也會長一些。
總線接口單元(bus interface unit,BIU)為微處理器內核與處理器外部總線提供了一個數據交換通道,主要完成取數和預取數操作、取指和預取指操作,同時進行地址、數據的校驗檢查和總線監聽,實現外部總線的流水、亂序執行和總線重傳操作。
系統支持單元主要包括時鐘倍頻和時間基數計數器、減量器幾個部分。當減量寄存器的內容從全0變為全1時,產生遞減異常事件。
4外圍控制單元
微處理器接口單元內部由地址總線控制狀態機、數據總線控制狀態機、地址、數據總線控制通路三個模塊構成。根據“龍騰”R2微處理器的接口協議,微處理器接口單元提供與“龍騰”R2微處理器的接口,提供對總線地址周期和數據周期的響應。微處理器接口單元對微處理器的總線操作產生應答信號,將微處理器的訪存請求傳送給中央控制單元(中央控制單元再傳送給存儲控制器單元)。
中央控制單元由中央控制單元數據通路和中央控制單元控制狀態機構成。中央控制單元接收由中斷控制器和微處理器接口單元發送過來的訪問地址空間的請求。這些請求包括對SRAM和flash的訪問、對配置寄存器單元的訪問、對串行設備的訪問。
存儲控制器單元控制對SRAM和flash的讀寫操作,處理串行設備的讀寫操作。
配置寄存器單元包含所有的可配置寄存器,同時向中斷控制器、配置寄存器單元、存儲控制器單元提供相應的配置寄存器的信息。
中斷控制器的主要功能是收集外部中斷和內部的硬件中斷,區分它們的優先次序,將中斷傳給微處理器。中斷控制器有三種工作模式。在微處理器初始化時,通過設置相應的寄存器位,來設置中斷控制器實際的三種工作模式:
a)中斷直連模式。只能處理一個外部中斷。外部中斷信號直接輸出給微處理器。
b)直接中斷模式。五級中斷通過優先級判斷傳遞給微處理器。
c)串行中斷模式??纱刑幚碜疃?6個中斷,中斷優先級從1~16。這種模式可以處理多個中斷請求而不增加管腳數。
在系統初始化后,中斷控制器默認配置為直接中斷模式。
中斷的處理流程為:當串行設備發出讀寫中斷請求,或內部產生了定時中斷時,中斷控制器向微處理器發送中斷信號,同時寫中斷響應寄存器,將中斷編號寫入;系統接收到中斷后,會讀中斷響應寄存器,此時需要總線監控,發現讀中斷響應寄存器時,給中斷控制器發中斷結束信號,中斷控制器接收到后,將中斷信號取消;系統讀出中斷向量后,查詢中斷向量表,轉到相應的中斷處理子程序進行中斷處理;中斷處理完成后,寫中斷結束寄存器,總線監控到寫中斷結束寄存器時,通知中斷控制器,這樣就可以進行下一個中斷處理。
5結束語
嵌入式SOC微處理器的整個設計采用自頂向下的設計流程,使用Verilog語言作為設計輸入,采用Cadence和Synopsy的工具進行仿真和綜合,使用Altra的FPGA來進行功能驗證,采用Cadence工具進行后端設計。在整個后端設計中,使用Synopsys公司的PhysicalCompiler物理綜合器針對每一個模塊進行布局(place);使用Cadence公司的SoCEncounter工具進行時鐘樹產生(clock tree generation)、模塊布線(route),以及最后的模塊拼接(assemble)和最后的頂層優化。
通過使用Altera的EP1S80 FPGA開發板對整個嵌入式SOC系統進行功能驗證。通過在此系統上成功穩定地運行嵌入式操作系統VxWorks,使用超級終端,成功運行VxWorks操作系統命令,并且可以在VxWorks操作系統中運行多個自主開發的應用程序。本文采用0.18μm CMOS工藝庫。綜合結果表明,嵌入式SOC微處理器最大延遲為3.30 ns。
參考文獻:
[1]羅國慶.VxWorks與嵌入式軟件開發[M].北京:機械工業出版社,2004.
[2]陳智育,溫彥軍,陳琪.VxWorks程序開發實踐[M].北京:人民郵電出版社,2004.
[3]CHAKRAVARTY D,CANNON C.PowerPC概念、體系結構與設計[M].周長春,王志言,等譯.北京:電子工業出版社,1995.
[4]Motorola. MPC107 microprocessor family user’s manual[K].USA:Motorola Inc,2001.
[5]Motorola. PowerPC microprocessor family: the programming environments for 32 bit microprocessors[K].USA:Motorola,1999:156159.
[6]HENNESSY J L,PATTERSON D A.Computer architecture: a quantitative approach[M].USA:Morgan Kaufmann Publishers,2000.
注:“本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文”