• 沒有找到結果。

嵌入式晶片設計演進

第二章 嵌入式單晶片發展平台介

2.1 嵌入式晶片設計演進

FPGA 是一種具有可重配置邏輯閘的晶片,與供應商提供功能定義的 ASIC 晶片不同,FPGA 可根據每個應用的不同需要而進行配置和重新配置。由於 FPGA 允許在硬體中實現自定義算法,因此它具有精確時序和同步、快速決策及平行任 務同時執行等優點。

由於硬體製程技術提高,在單一晶片中可容納的電晶體數量亦不斷提昇,因 此在考慮晶片功耗,面積及成本上,我們會希望將多個功能完整的電路整合成一 顆積體電路,就是系統單晶片(SoC)。整合到系統單晶片的電路可以包括中央處 理器、記憶體、傳輸介面,以及使用者自己設計的功能模組等。基本上若可以將 上述的所有電路模組完整的放入單晶片中,則該電路就可以滿足人們許多生活上

的需求及應用,因此目前有越來越多的人力陸續投入嵌入式系統的發展。

嵌入式系統SoC採用現場可程式閘陣列(Field Programmable Gate Array , 簡稱FPGA)或專用積體電路(Application Specific Integrated Circuit,ASIC) 實現。傳統設計的方法,如圖 2-1(a)所示,會將軟硬體明顯分離獨立設計,最 後階段才將軟硬體整合。但是往往由於對彼此設計的東西不甚了解,因此導致修 改上的困難度提高,延遲了產品上市的時間。

(a) 傳統設計流程 (b)軟硬體共同設計流程

圖 2-1 嵌入式系統 SoC 設計流程圖

隨著設計方式的改良,慢慢的出現了軟硬體共同設計(Software/Hardware Co-design)這個名詞。這是一個以系統觀點出發的方法論,強調軟硬體設計時的 一致性與整合性,如圖 2-1(b),對於軟體發展的驗證(Verification)更加容易,且 硬體設計的錯誤也能提早發現,降低設計所需的時間與成本,大大縮短系統設計 的時間,因應市場的即時性。

2.1 軟硬體共同設計

一般而言,典型的軟硬體共同設計流程,可以用圖 2-2來表示。

圖 2-2 典型軟硬體設計流程

軟硬體協同設計主要分為5個階段:(1)訂定系統規格、(2)軟硬體分割、(3) 軟硬體實作、(4)軟硬體協同模擬,以及(5)軟硬體協同驗證。

z 訂定系統規格(System spec.):確定系統的目的與可行性,接著訂出此系統 需有哪些功能。

z 軟硬體分割(H/W & S/W partition):依照系統的功能,為了求取最大之效 率,可將某些元件作成硬體以產生最快的速度與最多的產出。此時必須評估 哪些元件須作成硬體,哪些元件須以軟體方式呈現,為降低整體成本與達到 最高效率取得平衡。

z 軟硬體實作:

„ 硬體實作:當我們把硬體規格訂出來後,利用HDL語言描述此硬體並根 據板子的規格實作此硬體。

„ 軟體實作:分別撰寫驅動程式與使用此硬體之軟體,整合系統產生之標

頭檔與使用者之檔案。

z 軟硬體協同模擬(Software/Hardware Co-Simulation):在使用硬體的地方 以軟體模擬硬體工作後得到的資訊,並以之作為輸入以驗證軟體的正確性。

z 軟硬體協同驗證(Software/Hardware Co-Verification):實際將軟硬體放到模擬 板上驗證是否可以正確工作。

在本篇論文中會將我們的 FBP 演算法利用可程式閘陣列(FPGA)來實現,設 計流程也將模仿上述的軟硬體共同設計的方式來完成我們的 FBP 演算法嵌入式 系統的實作。

2.3 嵌入式系統發展平台

在我們的實作中採用的是Xilinx公司生產的嵌入式系統發展平台⎯ML310 Development Board,如圖 2-3所示:

圖 2-3 Xilinx 公司的 ML310 Development Board

平台的核心是一顆 Virtex-Ⅱ pro FPGA(Field Programmable Gate Array),

型號是 XC2VP30。這顆 FPGA 共有 30,816 Logic Cells 提供邏輯合成的電路資源,

且具有 2 顆內建的 PowerPC 405 處理器,可以當作嵌入式系統的核心處理器。此 外,FPGA 內尚有內建的 18x18 bits 的乘法器 136 顆及 136 塊 18Kbits 的 Block RAM 提供現成的電路元件。

除了 FPGA 外,發展平台提供一個嵌入式系統相當完整的發展環境,除了電 源與一些 I/O 介面,並利用匯流排將核心模組與邏輯模組整合在一起。平台上重 要的邏輯模組像是 DDR Memory,System ACE CF Controller,CompactFlash Slot,

IDE Drive Connectors,PCI Slots 等。

平台上主要的匯流排是 Process Local Bus(PLB)與 On-chip Peripheral Bus(OPB),PLB bus 與 OPB bus 是 IBM CoreConnect 的標準匯流排,其中 PLB bus 是高速匯流排,而 OPB bus 是低速匯流排,兩個匯流排中間有個 Bridge 作連接,

形成整個嵌入式系統的骨幹。圖 2-4 是以 PowerPC 405 處理器為核心的嵌入式 系統架構圖。

圖 2-5 以 PowerPC 405 為核心的嵌入式系統架構

我們配合 ML310 平台使用的發展工具是 Embedded Development Kit(EDK)及 Integrated Software Enviroment(ISE)。EDK 提供以 PowerPC 405 為核心的嵌 入式系統設計者豐富的設計工具及多樣的嵌入式系統週邊設備,如 Memory

Controller 、 UART(Uni-versal Asynchronous Receiver/Transmitter) 、 GPIO(General Purpose Input/Output)等。EDK 發展工具主要包括下面幾部分:

z 嵌入式系統核心及週邊元件的硬體 IP(Intellectual Property)。

z 嵌入式系統軟體所需要的驅動程式(Drivers),函式庫(Libraries)。

z 具有整合軟硬體研發環境的 Xilinx Platform Studio(XPS)。

其中 Xilinx Platform Studio 中有幾個重要的發展工具,在我們的 FBP 演算法 嵌入式系統實作中將使用到,所以下面簡單介紹這些工具:

z The Base System Builder(BSB) wizard:這是一個軟體工具可以幫助使用 者快速的建立特定平台上可以執行的基礎嵌入式系統。在執行完 BSB wizard 後,會產生兩個重要的檔案,一個是硬體規格檔(Microprocessor Hardware Specification,MHS),另一個是軟體規格檔(Microprocessor Software Specification,MSS)。MHS 檔案定義系統的架構及使用到的週邊元件及核 心處理器。也定義了系統中週邊與核心元件間匯流排的連接關係,以及各個 週邊元件的參數設定。MSS 檔案則是定義週邊元件的驅動程式,系統的標準 輸入輸出設備,系統中斷處理常式及相關的軟體設定。

z The Platform Generator Tool(PlatGen):輸入 MHS 檔案,建立系統的 netlist 檔案,並支援檔案下載到 FPGA 時所需的相關檔案,及新增週邊元件到系統 中的相關工作。在執行 PlatGen 工具時,ISE 將自動被呼叫去完成整個硬體 平台的邏輯合成,電路佈局到產生 netlist 檔案。

z The Library Generator Tool(LibGen):輸入 MSS 檔案,建立個人化週邊元 件驅動程式、函式庫、系統中斷處理常式及檔案系統。

z The Bitstream Initializer tool:在 FPGA 中對處理器將存取的指令記憶 體區塊進行初始化設定,而指令記憶體區塊則存在 Block RAM 中。這個工具 將讀入 MHS 檔案,並且呼叫 ISE 的 Data2MEM 工具來初始化 FPGA 中使用到的

Block RAM。

z Create/Import Peripheral Wizard:幫助使用者建立自己的週邊元件並且 加入嵌入式系統中。

此外,在實作過程中我們還有用到 Xilinx 公司生產的 ISE 軟體,ISE 是套 IC 設計的整合軟體環境,包含多個軟體套件,可以執行完整的設計流程。從硬 體 描 述 語 言 (Hardware Description Language) 程 式 的 編 寫 ( 如 VHDL 及 Verilog),設計的輸入,邏輯模擬,邏輯合成,電路佈局,產生 netlist 檔案,

產生可以載入 FPGA 配置電路的 BitStream 檔等工作。

第三章 FBP 演算法嵌入式系統實作 3 第三章

在這個章節中我們要介紹的是整個 FBP 演算法的實作過程,採用的硬體裝備 是 ML310 Development Board,搭配 EDK 發展工具來完成我們的實作。圖 3-1 是 EDK 這套軟體的設計流程,採軟硬體共同設計的方式。

圖 3-2 EDK 設計流程概觀

由此流程圖中可以看出,其實我們也可以直接採用 Standard Embedded SW Development Flow 此種設計方式來得到我們要的結果,也就是直接在 EDK 這套 軟體上撰寫 C 語言,經編譯後 Download to FPGA,這樣一樣可以讓整個過程順 利運作,並產生正確的結果。但很不幸的 PowerPC 405 處理器的運算頻率並不高,

尤其相較於現今的 CPU 頻率,更是毫無優勢可言,因此並不符合我們的期望,所 以這樣一來我們勢必要把重複性高、運算次數多的部份利用硬體來實作,充分發 揮硬體執行效率較高的優勢。所以接下來將會介紹我們自己的 FBP 演算法如何在 硬體上面實作出來。

3.1 FBP 演算法分析

在介紹我們的 FBP 演算法實作過程之前,有一件重要的工作,那就是必須先 對將要實作的 FBP 演算法做分析,簡單的說就是先將演算法分成幾塊,再去決定 哪些要用軟體而哪些要採硬體實作,圖 3-2 即是將我們演算法做最初步的區分。

(a)將影像資訊讀入 以及將最後重建好 的影像寫出。

(c)計算重建每個 block 所需資訊。

(b)將資料作 fft、

filter、以及 ifft。

(d)針對每一個 block 做影像重建。

圖 3-2 演算法分析示意圖

圖 3-2 主要將我們的實作過程分成四大部分,而我們的目的是希望將那些運 算量高、時間耗費大的部分以硬體來實作,而由於圖 3-2 (a)本身是處理記憶卡 (CompacFlash card)與軟體間的資料傳輸,因此自然是直接以軟體來實作。至於 圖 3-2 (c)則是計算重建每個 block 所需資訊,這個部分由於運算次數以及所耗時 間在可容忍範圍內,因此為增加實作的便利性,我們也將以軟體直接實作。接下 來的圖 3-2 (b) 、(d)由於所需的運算量較高且亦較耗時,因此自然成為我們實作 成硬體的重點部份。

3.2 FBP 建立及系統設定

在這一小節中,我們將簡單介紹整個系統初步的相關設定,包含 processor、

I/O interfaces、軟體及硬體參數設定,以及所用到的 IP(Intellectual Property)。

3.2.1 專案建立

利用 Base System Builder Wizard 選擇 New Design,選定使用版子及版本,

然後選擇 processor 為 PowerPC 且維持 processor 的相關設定,接下來 configure I/O interfaces 選擇有用到的部分包括 RS232_Uart、DDR_SDRAM_32Mx64 以及 SysACE_CompacFlash。

3.2.2 建立 FBP 元件及連結其週邊

這裡使用 EDK 軟體所提供的 Create/Import Peripheral Wizard 幫我們建立 自己的週邊元件,首先用 Create Peripheral wizard 建立 FBP 元件。關於 FBP 元件的硬體描述,我們將最上層電路的 VHDL 模組,取名為 fbp,然後將 FBP 元 件連接上 PLB Bus,如圖 3-3 所示。

連上 PLB Bus

FBP 元件

圖 3-3 Add/Edit Hardware Platform Specifications

到目前為止我們訂下了整個系統最初步的架構,包含了 FBP 元件以及各個

z CompactFlash 與 RS232_Uart:

RS232_Uart 的功用是可以讓我們透過 terminal 程式經由 serial port 與系統溝 通。而 Compact Flash 則讓我們可以透過 System ACE CF Controller 控制 CompactFlash card,作為 sinogram 影像及完成重建後影像的儲存設備。如下圖所 示,其中 Input sonogram image 以及 Output reconstructed image 都是利用此一 CompactFlash card 來完成。

圖 3-5 FBP 簡易流程圖

而由於我們的 FBP 程式要能讀取 CompactFlash card 上的 sinogram 影像以及

Input

sinogram image Filter Backproject Output

reconstructed image

PLB2OPB

將重建結果回存,所以我們需要一個可以讀寫 CompactFlash card 的函式庫。在 這部分 Xilinx 公司有提供一個名稱為 xilfatfs 的函式庫可以幫助我們達成此功 能,其使用方式只要在 EDK 的 Software Platform Settings 中勾選此函式庫,並在

將重建結果回存,所以我們需要一個可以讀寫 CompactFlash card 的函式庫。在 這部分 Xilinx 公司有提供一個名稱為 xilfatfs 的函式庫可以幫助我們達成此功 能,其使用方式只要在 EDK 的 Software Platform Settings 中勾選此函式庫,並在

相關文件