FPGA嵌入式系統設計原理與實踐

FPGA嵌入式系統設計原理與實踐

《FPGA嵌入式系統設計原理與實踐》的目的是向讀者介紹平台FPGA的系統開發。它主要關注的是嵌入式系統,但是也可以作為構建自定義計算系統的通用指南。本書描述了指導平台FPGA系統開發的硬體、軟體以及一系列設計原理的基本技術。指導讀者系統地和有創造性地套用這些原理構建專用的嵌入式系統架構。同時也特別關注了免費開源軟體,以提高生產率。

基本介紹

  • 中文名:FPGA嵌入式系統設計原理與實踐
  • 外文名:Embedded Systems Design with Platform FPGAs, Principles and Practices
  • 原出版社:Elsevier
  • 譯者:李楊
  • 出版社清華大學出版社
基本信息,圖書目錄,前言,

基本信息

原書名:Embedded Systems Design with Platform FPGAs, Principles and Practices
原出版社:Elsevier
作者:(美)Ron Sass Andrew G.Schmidt
譯者:李楊
叢書名:移動與嵌入式開發技術
出版社:清華大學出版社
ISBN:9787302279693
出版日期:2012 年3月
開本:16開
頁碼:301
版次:1-1

圖書目錄

《fpga嵌入式系統設計原理與實踐》
第1章 簡介 1
1.1 嵌入式系統 3
1.1.1 嵌入式系統和通用計算機 4
1.1.2 硬體、軟體和fpga 5
1.1.3 執行模型 5
1.2 設計的挑戰 8
1.2.1 設計生命周期 8
1.2.2 成功的度量 9
1.2.3 成本 12
1.3 平台fpga 15
1.a 光譜儀示例 17
1.a.1 場景 18
1.a.2 兩種解決方案 18
1.a.3 討論 19
1.b 平台fpga工具鏈簡介 20
1.b.1 xilinx platform studio入門 21
1.b.2 使用xilinx平台工作室 22
習題 32
參考文獻 33
.第2章 目標 35
2.1 cmos電晶體 36
2.2 可程式邏輯器件 38
2.3 現場可程式門陣列 40
2.3.1 函式發生器 40
2.3.2 存儲元件 41
2.3.3 邏輯單元 42
2.3.4 邏輯塊 42
2.3.5 輸入/輸出塊 42
2.3.6 特殊用途功能塊 43
2.4 硬體描述語言 46
2.4.1 vhdl 46
2.4.2 verilog 54
2.4.3 其他高級hdl 59
2.5 從hdl到配置位流 59
2.a xilinx virtex 5 64
2.a.1 查找表 65
2.a.2 slice 65
2.a.3 可配置邏輯塊 66
2.a.4 塊ram 67
2.a.5 dsp slice 67
2.a.6 選擇i/o 68
2.a.7 高速串口收發器 69
2.a.8 時鐘 69
2.a.9 powerpc 440 70
2.b xilinx集成軟體環境 71
2.c 創建和生成自定義ip 77
2.c.1 xilinx核生成器 77
2.c.2 創建/導入外設嚮導 81
2.c.3 硬核項目目錄 87
習題 89
參考文獻 90
第3章 系統設計 93
3.1 系統設計的準則 94
3.1.1 設計質量 94
3.1.2 模組和接口 96
3.1.3 抽象和狀態 99
3.1.4 內聚和耦合 100
3.1.5 設計可重用元件 102
3.2 控制流圖 103
3.3 硬體設計 105
3.3.1 平台fpga的起源 105
3.3.2 平台fpga元件 107
3.3.3 完善平台fpga系統 112
3.3.4 裝配自定義計算核 114
3.4 軟體設計 120
3.4.1 系統軟體選項 120
3.4.2 根檔案系統 122
3.4.3 交叉開發工具 123
3.4.4 監視器和引導程式 123
3.a 平台fpga架構設計 126
3.a.1 關聯xilinx edk
和ibm核 126
3.a.2 構建基本系統 130
3.a.3 增強基本系統 130
3.a.4 xps項目檔案 131
3.a.5 實踐示例:浮點加法器 133
3.a.6 基本系統 133
3.a.7 創建和導入外設嚮導 133
3.a.8 核發生器 134
3.a.9 用戶邏輯 135
3.a.10 修改硬核項目檔案 139
3.a.11 基本系統的硬核連線 140
3.a.12 測試系統 140
3.b 嵌入式gnu/linux系統 142
3.b.1 unix檔案系統的組織
結構 142
3.b.2 配置軟體和工具 144
3.b.3 交叉開發工具和庫 148
3.b.4 交叉編譯linux 151
3.b.5 建立根檔案系統 154
3.b.6 在ml510開發板上啟動
linux 156
習題 157
參考文獻 158
第4章 劃分 161
4.1 劃分問題概述 162
4.1.1 配置簡檔表 163
4.1.2 性能分析 164
4.1.3 實際套用 164
4.2 劃分問題的分析法解決方案 164
4.2.1 基本定義 165
4.2.2 期望性能增益 167
4.2.3 資源的考慮 168
4.2.4 分析方法 169
4.3 通信 171
4.3.1 調用/協調 173
4.3.2 狀態轉移 176
4.4 實踐問題 180
4.4.1 分析問題 180
4.4.2 數據結構 182
4.4.3 操作特徵大小 183
4.a 使用gprof調試 184
4.b linux核心 188
4.b.1 核心模組 188
4.b.2 地址空間 190
4.b.3 應用程式視圖 192
4.b.4 字元型設備驅動器 193
4.b.5 總結 195
習題 195
參考文獻 198
第5章 空間設計 199
5.1 並行的原理 200
5.1.1 並行粒度 201
5.1.2 並行度 202
5.1.3 空間組織結構 203
5.2 確認並行性 207
5.2.1 排序 208
5.2.2 依賴性 208
5.2.3 一致依賴向量 212
5.3 平台fpga的空間並行 214
5.3.1 fpga硬核中的並行 215
5.3.2 fpga設計中的並行 219
5.a 有益於空間設計的vhdl
探討 220
5.a.1 常量和類屬 220
5.a.2 用戶定義類型 221
5.a.3 生成語句 223
5.a.4 設計約束 224
5.b 調試平台fpga設計 225
5.b.1 仿真 225
5.b.2 軟體可訪問暫存器 228
5.b.3 xilinx chipscope 229
習題 235
參考文獻 236
第6章 頻寬管理 237
6.1 均衡頻寬 238
6.1.1 kahn處理網路 239
6.1.2 同步設計 241
6.1.3 異步設計 241
6.2 平台fpga頻寬技術 241
6.2.1 片上和片外存儲器 242
6.2.2 流式儀表數據 250
6.2.3 實際問題 252
6.3 可擴展性設計 253
6.3.1 可擴展性約束 253
6.3.2 可擴展性解決方案 256
6.a 片上存儲器訪問 259
6.a.1 fifo 259
6.a.2 塊ram 260
6.a.3 本地連結接口 261
6.b 片外存儲器訪問 263
6.b.1 可程式i/o 263
6.b.2 中央dma控制器 263
6.b.3 匯流排主控裝置 265
6.b.4 本地連線埠接口 270
習題 277
參考文獻 277
第7章 外圍世界 279
7.1 點對點通信 280
7.1.1 rs-232串口通信協定 280
7.1.2 其他低速通信 281
7.2 網際網路通信 281
7.2.1 概念 281
7.2.2 應用程式接口 284
7.2.3 高層協定 287
7.2.4 作業系統配置 290
7.a 高速串口通信 291
7.a.1 rocket io 291
7.a.2 aurora示例 292
7.a.3 本地連結接口 293
7.a.4 時鐘修正 293
7.a.5 誤差測試 294
7.a.6 環回 294
7.b 低速通信 294
7.b.1 生成硬體基本系統 294
7.b.2 設計測試 299
習題 299
參考文獻 300
術語表 301

前言

Xilinx公司在1984年推出了一款高級的可程式邏輯器件,現場可程式門陣列(Field- Programmable Gate Array,FPGA)。現在FPGA已經形成了數十億的市場規模,開發的產品種類繁多,從數位相機、汽車,到驅動網際網路的網路交換機;FPGA甚至飛向了火星(Ratter, 2004)。
幾乎從FPGA推出之始,人們就認識到了使用這些器件構建自定義的計算架構的潛力,但是迄今為止市場上的絕大多數器件是“膠合邏輯”和原型機。不過,技術的進步已經使得現代FPGA晶片具有非常大的容量以及各種各樣的特性。這些特性的匯集—— 包括多個處理器、大量存儲器、數百個乘法器以及高速I/O—— 已經達到這樣一個臨界點:平台FPGA比以往任何時候都有望在計算系統中發揮更為突出的作用。
可在單個FPGA器件上部署複雜計算系統的能力,很有可能對嵌入式計算系統產生巨大的影響。雖然小型的(實際上是微型)8位或16位計算系統仍然並且將會在嵌入式系統市場上占據一席之地,但過去幾年的趨勢表明嵌入式系統使用標準的現成的32位處理器也方興未艾。這些更為高端的嵌入式系統在更高層次進行了集成,通常在(固定和製造)的晶片上已經納入了嵌入式系統的相當一部分元件。該層次的集成益處眾多,但是其中一個顯著的缺點是有太多的系統架構被預先設定,這可能對於特定目標的應用程式來說並非是最優的。而替代方案,即在自定義的片上系統(System-on-a-Chip,SoC)中開發系統架構則過於昂貴,除非是用於大容量(百萬單元級)的產品。當應用程式與所提供的資源相匹配時,那么一切安好。但事實往往並非如此:一些集成的資源被廢置,而需要增加額外零散的硬體以彌補其不足來實現應用程式。有了平台FPGA,工程師們可以獲得集成所帶來的全部好處,同時也能夠根據每一個應用程式,靈活地開發一個均衡的系統架構。
平台FPGA配置了多種匯流排、各種直接通信連結、橋、I/O元件以及琳琅滿目的其他專用IP核,設計者可以隨時自定義系統架構。例如,設計者可以使用數百個分散式塊RAM來配置一個大型的可訪問存儲器,而將RAM作為獨立快取分布於系統各處;或者也可以設計一些兩兩組合的RAM;還可以設計專用功能模組(即自定義硬核)。儘管專用積體電路(ASIC)的性能通常優於相同架構的FPGA實現,但是較之ASIC的製造,基於FPGA的解決方案避免了昂貴的資源、需要承擔的潛在風險以及上市的時間等問題。FPGA是一個虛擬的白板,使得工程師在對物理器件進行製造、測試以及驗證之後,能夠分配資源以最佳匹配應用程式。這樣的靈活性提高了系統解決方案的效率,節省下來的每個離散元件都會降低成本,同時增加可靠性。
當然,這種硬體的強大靈活性也要付出代價。除了了解編譯器、調試器以及其他用於基於處理器的嵌入式系統開發的傳統軟體工具以外,平台FPGA設計者還必須熟練掌握對硬體設計、綜合和系統集成工具的使用。以前,架構的選擇在很大程度上制約了設計者所能做出的決定—— 例如,如何在硬體和軟體之間劃分應用程式—— 而現在卻有了充分的空間來提出解決方案。在理解特定處理器系統匯流排的特性之外,設計者還必須權衡多個通信機制之間的優勢和劣勢。對於熟悉在預先設定架構上工作的設計者來說,均衡片上元件組成的複雜網路是一個新的挑戰。
這些挑戰在很多方面體現了計算機工程的特點。然而直到平台FPGA的出現,這一挑戰帶來的實際問題(例如構建自定義晶片解決方案的代價問題)一直使得著手研究代價高昂。學生過去只是從教科書和概念模型中了解計算機系統架構,因此徹底地了解開發自定義計算機系統的實踐環節則只局限於少數專業人士。知識和實踐工具—— 例如,如何創建嵌入式系統的板級支持包—— 只是在用到的時候才開始接觸。
本書的目的是向讀者介紹平台FPGA的系統開發。它主要關注的是嵌入式系統,但是也可以作為構建自定義計算系統的通用指南。本書描述了指導平台FPGA系統開發的硬體、軟體以及一系列設計原理的基本技術。其目標是表明如何系統地和有創造性地套用這些原理構建專用的嵌入式系統架構。同時也特別關注了免費開源軟體,以提高生產率。
本書每一章節的組織結構都包括兩部分:白色頁面描述的是基本概念、原理以及常識;灰色頁面則包括本章主要問題的技術實踐,並且展示了套用於實踐的概念,這包括對特定開發板和工具集的逐步詳述,以便讀者能夠自己完成同樣的步驟。本書並不試圖在種類不同的開發板和工具鏈上示範這些概念,而是通篇只使用單個工具集(Xilinx Platform Studio、Linux和GNU)以及在示例中使用的開發板(Xilinx ML-510)。相信對於讀者來說,完整地描述單個系統比部分地描述各種系統更有價值。
如何閱讀本書
本書的編寫是為了讓不同的讀者更快捷地找到所需要的信息。如果您是只有軟體背景而沒有參加過任何電子方面的課程的本科生,那么第2章白色頁面的開始部分介紹了電晶體和FPGA(一種固態器件)實現可程式硬體的基本知識。如果您是在嵌入式系統方面經驗豐富而對FPGA缺乏了解的工程師,那么只需閱讀灰色頁面,可以跳過理論部分而直接進入實踐層面,在FPGA上構建基於Linux的系統。如果您是參加過高級設計課程的學生,那么學習的重點可能是項目管理,您可能不會在此找到過多的資料,但是您會發現本書是完成項目的一個方便且實用的指南。另一方面,如果您有一個涉及尖端技術的非常具體的項目,那么本書可能沒有以足夠的深度涵蓋這一特定的主題。不過如果您想入門,需要縱覽一般性的概念,同時希望有足夠的逐步指導來實現一個真實的工作系統,那么本書是您的最佳選擇!
給教師的建議
本書在不同的計算機課程中可以扮演不同的角色。在很多院系中,嵌入式系統課程是高年級學生的技術選修課。該課程的主要內容是花費一個學期的時間講述內容繁多的技術工程中的細節。本書是學習嵌入式系統內容的入門經典—— 因為它給學生提供了實現其項目所需的所有實踐資料—— 教師可以根據情況在課堂上選擇一些內容講授。對於介紹嵌入式系統特定領域的課程(包括多種技術類的選修課程)來說,本書可以用於可重構計算的課程。該課程是對深入理解嵌入式系統的一個補充,其內容全面,包括小型系統以及實時問題的擴展描述。IEEE-CS/ACM聯合工作組計算機課程分組(Ironman草案)將計算機工程基本元件作為“終極課程”。通常這在當今的課程中是作為高級設計或者畢業課程設計的。嚴格來說,該課程貫穿了上述課程計畫中要求的獨立的主題,有助於將學生的學術理論與職業生涯聯繫起來。FPGA在該類課程中與其他技術相得益彰,並且經常被用到。其靈活地支持各種工程,同時這些工程中也必然包含軟體和硬體元件:這是計算機工程的精髓。因此,在本書中,許多教師會為“終極課程”的學生找到非常優秀的資源。

相關詞條

熱門詞條

聯絡我們