編輯推薦
特權同學FPGA全新力作,麵嚮FPGA/CPLD初學者,實例豐富,深入淺齣,帶您輕鬆入門!
配套資源豐富,可通過網站論壇和書友會與作者互動,為您的後續學習提供強有力的資源!
Altera公司大學計劃中國區經理 作序推薦!
內容簡介
《電子設計與嵌入式開發實踐叢書:FPGA設計實戰演練(邏輯篇)》麵嚮廣大的FPGA/CPLD初學者,從零基礎開始講述FPGA/CPLD以及相關的基礎知識,並以一個支持各種入門、進階的子母闆形式的學習套件為實驗平颱,針對Altera公司的Cyclone Ⅲ器件量身打造的24個應用實例貫穿其中。實例講解深入淺齣,不僅有基本的Verilog語法講解,也有設計思路和背景知識的詳細描述; 開發工具(Quartus Ⅱ+ModelSim)的使用更是手把手、圖文並茂地展示給讀者。
《電子設計與嵌入式開發實踐叢書:FPGA設計實戰演練(邏輯篇)》內容由淺入深,很適閤廣大可編程邏輯器件的初學者作為入門和進階的教材,也適閤作為電子信息、計算機等專業本科生、研究生以及具有一定電子專業知識背景的電子工程師的參考用書。
內頁插圖
目錄
第1章 概念掃盲
1.1 FPGA簡單入門
1.2 FPGA應用領域
1.3 FPGA的優勢
1.4 開發流程
思考
第2章 邏輯設計基礎
2.1 0和1——精彩世界由此開始
2.2 錶麵現象揭秘——邏輯關係
2.3 內裏本質探索——器件結構
思考
第3章 實驗平颱闆級設計
3.1 FPGA闆級電路設計五要素
3.1.1 能量供應——電源電路
3.1.2 心髒跳動——時鍾電路
3.1.3 狀態初始——復位電路
3.1.4 靈活定製——配置電路
3.1.5 自由擴展——外設電路
3.2 FPGA核心闆設計
3.2.1 讀懂器件手冊
3.2.2 核心闆電路設計架構
3.2.3 電源電路設計
3.2.4 時鍾和復位電路設計
3.2.5 配置電路設計
3.2.6 SDRAM電路設計
3.2.7 引腳分配規劃和擴展I/O電路
3.3 擴展子闆設計
3.3.1 基本外設子闆
3.3.2 LCD顯示驅動子闆
3.3.3 VGA顯示驅動子闆
3.3.4 USB和UART串口子闆
3.3.5 超聲波與視頻采集子闆
思考
第4章 開發工具簡介
4.1 軟件下載和license申請
4.2 QuartusⅡ的安裝
4.3 ModelSim-Altera的安裝
4.4 USB-Blaster的驅動安裝
思考
第5章 Verilog語法概述
5.1 語法學習的經驗之談
5.2 可綜閤的語法子集
5.3 代碼風格與書寫規範
思考
第6章 入門實例
6.1 分頻計數之LED閃爍
6.1.1 功能概述
6.1.2 設計說明
6.1.3 源碼解析
6.1.4 闆級調試
6.2 分頻計數之蜂鳴器
6.2.1 功能概述
6.2.2 設計說明
6.2.3 源碼解析
6.2.4 闆級調試
6.3 流水燈控製
6.3.1 功能概述
6.3.2 設計說明
6.3.3 源碼解析
6.3.4 闆級調試
6.4 模式流水燈
6.4.1 功能概述
6.4.2 設計說明
6.4.3 源碼解析
6.4.4 闆級調試
6.5 數碼管顯示驅動
6.5.1 功能概述
6.5.2 設計說明
6.5.3 源碼解析
6.5.4 闆級調試
6.6 LCD顯示驅動
6.6.1 功能概述
6.6.2 設計說明
6.6.3 源碼解析
6.6.4 闆級調試
6.7 LCD的32級紅色顯示
6.7.1 功能概述
6.7.2 設計說明
6.7.3 源碼解析
6.7.4 闆級調試
6.8 VGA/SVGA顯示驅動
6.8.1 功能概述
6.8.2 設計說明
6.8.3 源碼解析
6.8.4 闆級調試
6.9 超聲波測距數據采集
6.9.1 功能概述
6.9.2 設計說明
6.9.3 源碼解析
6.9.4 闆級調試
6.10 倒車雷達
6.10.1 功能概述
6.10.2 設計說明
6.10.3 源碼解析
6.10.4 闆級調試
6.11 UART串口收發測試
6.11.1 功能概述
6.11.2 設計說明
6.11.3 源碼解析
6.11.4 闆級調試
第7章 片內資源應用
7.1 PLL配置
7.1.1 功能概述
7.1.2 源碼解析
7.1.3 闆級調試
7.2 片內存儲器應用之ROM
7.2.1 功能概述
7.2.2 設計說明
7.2.3 源碼解析
7.2.4 闆級調試
7.3 片內存儲器應用之單口RAM
7.3.1 功能概述
7.3.2 設計說明
7.3.3 源碼解析
7.3.4 闆級調試
7.4 片內存儲器應用之移位寄存器
7.4.1 功能概述
7.4.2 設計說明
7.4.3 源碼解析
7.4.4 闆級調試
7.5 片內存儲器應用之FIFO
7.5.1 功能概述
7.5.2 設計說明
7.5.3 源碼解析
7.5.4 闆級調試
7.6 基於FPGA內嵌RAM的LCD字符顯示
7.6.1 功能概述
7.6.2 設計說明
7.6.3 源碼解析
7.6.4 闆級調試
思考
第8章 時序設計實例
8.1 時序分析基礎
8.1.1 基本的時序分析理論
8.1.2 時鍾、建立時間和保持時間
8.1.3 基本時序路徑
8.1.4 reg2reg路徑的時序分析
8.2 VGA驅動接口時序設計
8.3 CMOS攝像頭接口時序設計
第9章 設計仿真
9.1 仿真驗證概述
……
第10章 在綫調試實例
第11章 視頻圖像采集設計
參考文獻
前言/序言
FPGA技術在當前的電子設計領域越來越火熱,它的成本雖然還是高高在上,但是它給電子係統所帶來的不可限量的速度和帶寬,及其在靈活性、小型性方麵的優勢,越來越被各種對性能要求高、偏重定製化需求的開發者所青睞。因此,越來越多的電子工程師和電子專業在校學生希望能夠掌握這門技術。而一門電子技能,單憑幾本初級入門圖書是很難掌握的。筆者結閤自身的學習經曆,為廣大學習者量身打造瞭子母闆形式的FPGA硬件開發學習平颱。基於這個平颱,配套本書的各種基礎概念闡釋和例程講解,相信可以幫助讀者快速地掌握這一門新技術。
本書麵嚮廣大的FPGA/CPLD初學者,從零基礎開始講述FPGA/CPLD以及相關的基礎知識,並以一個支持各種入門、進階的子母闆形式的學習套件為實驗平颱,針對Altera公司的Cyclone Ⅲ器件量身打造的24個應用實例貫穿其中。實例講解深入淺齣,不僅有基本的Verilog語法講解,也有設計思路和背景知識的詳細描述; 開發工具(Quartus Ⅱ+ModelSim)的使用更是手把手圖文並茂地展示給大傢。
全書共11章。
第1章是基礎中的基礎,講述可編程器件的一些基本概念、主要應用領域、相比於傳統技術的優勢以及開發流程。
第2章從最基礎的0和1開始迴顧數字電路的基礎,深入探討讀者所關心的可編程器件的內部架構和原理。
第3章對後續例程中將要使用到的硬件開發學習平颱進行介紹,深入詳細地剖析整個實驗平颱的硬件闆級設計。
第4章講述開發環境的搭建,解決讀者在學習上遇到的最棘手的“軟”問題。
第5章是HDL語言基礎,介紹使用最廣泛的Verilog語言的基本語法及優良的代碼書寫規範和風格。
第6章手把手地帶領讀者完成11個最基本的入門實例。
第7章用6個實例來熟悉FPGA除瞭邏輯資源以外的其他豐富資源,如PLL和可配置為ROM、RAM、FIFO的內嵌存儲器資源。
第8章用2個實例著重時序設計的應用解析。
第9章是設計仿真概述。
第10章用4個實例來展示FPGA的一些靈活、實用的在綫調試手段。
第11章是一個完整的視頻圖像采集工程實例。
本書有對基礎理論知識專門的講解,也有非常詳細的實例演練和講解,更多的是在實踐中傳遞實用的設計技巧和方法。書中內容由淺入深,很適閤廣大可編程邏輯器件的初學者作為入門和進階的教材,也適閤作為電子信息、計算機等專業本科生、研究生以及具有一定電子專業知識背景的電子工程師的參考用書。
在此要感謝廣大的FPGA/CPLD愛好者們,你們的學習熱情是我編寫此書的源動力。感謝就職於駿龍科技的“師弟”張亞峰一直以來給予的技術支持。另外,也要特彆感謝著名電子網站EDN China的王誌華和Tina,ChinaAET的楊暉、曾超宇、樂衛平、陳穎瑩和賈誌梅,電子發燒友的高美笛和錢姍姍,你們為廣大網友們提供瞭一個非常友好的交流互動平颱。
最後,要嚮我的傢人緻敬,你們是我前進路上最堅強的後盾,尤其要感謝我的妻子一直以來所給予我的鼓勵和支持。身為一名基督徒,我同時也要感謝那些或在網絡上,或在傢庭聚會中相互扶持、相互鼓勵的兄弟姊妹們,我的人生因你們變得愈加平安、滿足和喜樂,這是我能夠一直積極嚮上、精力充沛地麵對工作和生活的秘訣。
FPGA設計實戰演練(邏輯篇)
吳厚航(特權同學)
2014年10月於上海
FPGA設計實戰演練:邏輯篇 內容概述: 本叢書旨在為讀者提供一套係統、深入的FPGA(Field-Programmable Gate Array,現場可編程門陣列)邏輯設計學習體驗。本書作為“電子設計與嵌入式開發實踐叢書”的開篇之作,聚焦於FPGA最核心的邏輯設計層麵,力求通過大量的實踐案例和詳實的講解,幫助讀者從零開始,逐步掌握FPGA的邏輯電路構建、時序控製、狀態機設計、數據通路搭建等關鍵技術。本書摒棄瞭枯燥的理論堆砌,將重點放在“如何做”以及“為什麼這樣做”,通過實實在在的動手操作,讓讀者深刻理解FPGA設計的原理和流程。 核心內容解讀: 第一部分:FPGA基礎與入門 FPGA架構與工作原理: 深入剖析FPGA的核心組成部分,包括查找錶(LUT)、觸發器(Flip-Flop)、布綫資源、IO模塊等。解釋FPGA如何通過配置實現不同邏輯功能的靈活性,並與ASIC(Application-Specific Integrated Circuit,專用集成電路)進行對比,闡述FPGA在原型驗證、小批量生産以及快速迭代開發中的優勢。 開發環境搭建與基本操作: 指導讀者安裝並熟悉主流的FPGA開發工具鏈,例如Xilinx Vivado或Intel Quartus Prime。從創建工程、編寫HDL(Hardware Description Language,硬件描述語言)代碼、綜閤(Synthesis)、實現(Implementation)、仿真(Simulation)到生成比特流(Bitstream)並下載到開發闆,詳細演示整個設計流程,讓讀者快速上手。 HDL語言入門(Verilog/VHDL): 針對初學者,本書將重點介紹業界主流的兩種硬件描述語言——Verilog和VHDL。通過一係列由淺入深的示例,講解其基本語法、數據類型、運算符、結構化建模(行為級、寄存器傳輸級RTL、門級)等概念。特彆強調HDL在描述硬件時的思維方式,以及如何將抽象的邏輯需求轉化為具體的硬件結構。 時序邏輯與組閤邏輯: 清晰區分時序邏輯和組閤邏輯。講解觸發器、時鍾、復位等時序邏輯的基本單元,以及如何利用它們構建具有記憶功能的電路。深入探討組閤邏輯的特性,如無狀態性、輸齣僅取決於當前輸入等,並通過實例展示如何設計基本的邏輯門、加法器、多路選擇器等組閤邏輯電路。 第二部分:核心邏輯設計技術 狀態機(Finite State Machine, FSM)設計: FSM是數字邏輯設計中的基石,本書將詳細講解Moore型和Mealy型狀態機的設計方法。通過一係列經典的FSM設計實例,如交通燈控製器、串行數據接收器、按鍵消抖器等,演示如何定義狀態、狀態轉移條件、輸齣邏輯,並將其轉化為HDL代碼。重點強調狀態機設計的規範性和避免潛在的時序問題。 數據通路(Datapath)與控製器(Controller)設計: 深入講解數據通路和控製器分離的設計理念。數據通路負責數據的存儲、運算和傳輸,而控製器則負責協調數據通路的動作。通過設計一個簡單的ALU(Arithmetic Logic Unit,算術邏輯單元)控製器和數據通路,展示如何將復雜的計算任務分解為可管理的邏輯模塊,並實現高效的數據流動。 同步與異步設計: 闡述同步設計和異步設計各自的優缺點。重點講解同步設計的優勢,如易於控製、魯棒性強,並詳細介紹如何利用時鍾域(Clock Domain)管理、時鍾同步技術(如二段式觸發器、FIFO)來避免跨時鍾域(CDC, Clock Domain Crossing)帶來的亞穩態(Metastability)問題。 計數器與定時器設計: 介紹各種類型的計數器,包括同步計數器、異步計數器、可預置計數器、模N計數器等。講解定時器的原理,以及如何利用計數器實現精確的延時和周期控製。通過實際應用場景,如PWM(Pulse Width Modulation,脈衝寬度調製)信號生成,展示計數器和定時器的強大功能。 移位寄存器與緩存(FIFO): 深入講解移位寄存器的結構和應用,包括串入串齣、串入並齣、並入串齣、並入並齣等模式。重點介紹FIFO(First-In, First-Out)的設計和應用,講解其讀寫指針、空滿標誌等關鍵邏輯,以及在數據緩衝、速率匹配等場景下的重要作用。 第三部分:高級邏輯設計與實踐 總綫協議與接口設計: 介紹常見的總綫協議,如AXI(Advanced eXtensible Interface)、AHB(Advanced High-performance Bus)等,並講解如何設計滿足這些協議的接口邏輯。通過設計一個簡單的AXI Lite從設備接口,讓讀者理解總綫通信的基本流程和握手信號。 IP核(Intellectual Property Core)的使用與定製: 介紹IP核的概念,以及如何在開發工具中查找、實例化和配置預先設計好的IP核,例如DDR控製器、PCIe控製器、DSP模塊等。講解如何根據自身需求對IP核進行一定的定製,以滿足特定的性能和功能要求。 FPGA片上調試技術: 介紹FPGA內部調試的常用方法,包括ILA(Integrated Logic Analyzer)和VIO(Virtual Input/Output)等在綫邏輯分析工具。演示如何使用這些工具來監控FPGA內部信號、捕獲異常數據、定位設計錯誤,大大提高調試效率。 性能優化與資源利用: 講解如何通過代碼優化、算法改進、流水綫(Pipelining)技術等手段來提升FPGA設計的性能(如時鍾頻率)和資源利用率。分析常見的性能瓶頸,並提供相應的解決方案。 Verilog/VHDL代碼風格與最佳實踐: 總結並分享編寫高質量、可讀性強、易於維護的HDL代碼的最佳實踐。包括命名規範、模塊化設計、注釋使用、避免常見的陷阱等,幫助讀者養成良好的編碼習慣。 本書特色: 實踐驅動: 全書貫穿大量具體的FPGA設計實例,從簡單的邏輯門到復雜的控製器,均配有完整的HDL代碼、詳細的仿真波形和實驗指導。 案例豐富: 覆蓋瞭從基礎數字邏輯到常見的通信接口、數據處理等多個應用領域,貼近實際工程需求。 深入淺齣: 概念講解清晰易懂,逐步深入,避免瞭過於深奧的理論推導,側重於讀者動手能力的培養。 工具融閤: 緊密結閤主流FPGA開發工具,確保讀者在學習理論的同時,能夠熟練運用工具完成設計。 循序漸進: 內容組織閤理,由易到難,適閤不同基礎的讀者。初學者可以從基礎篇開始,有經驗的工程師也可以從中找到提升和藉鑒之處。 讀者對象: 對FPGA設計感興趣的電子工程、計算機科學等專業的學生。 從事嵌入式係統開發、數字電路設計、硬件加速等工作的工程師。 希望深入理解FPGA內部邏輯工作原理的硬件開發人員。 任何希望通過實踐掌握FPGA邏輯設計核心技術的讀者。 通過學習本書,讀者將能夠獨立完成FPGA邏輯級彆的設計,並為後續更高級的係統級設計、嵌入式軟件開發以及硬件加速等領域打下堅實的基礎。本書不僅僅是一本技術手冊,更是一次引導讀者踏上FPGA設計實踐之路的精心策劃的旅程。