編輯推薦
適讀人群 :本書可作為高等院校計算機專業本、專科生的教材或教學參考書,也可以作為電子技術課程設計、電子設計大賽或數字係統設計工程技術人員學習EDA 技術的參考書。 1.本書先講解語法,然後以實例講解硬件描述語言,並給齣仿真和實驗波形,盡可能地減少FPGA硬件內部結構的講解、注重應用。
2.本書的所有實例都是經過編程、下載以及調試過程,是作者多年的教學和科研實踐的經驗積纍。
內容簡介
本書內容包括FPGA的設計環境、設計流程和所使用的語言,QuartusⅡ集成開發環境,Modelsim仿真,VHDL語言基礎,VHDL數據類型與運算操作符,VHDL的主要描述語句,利用FPGA進行程序設計的應用實例等。
本書有很多實例分析,這些實例大都是以特定的工程項目為依托,具有一定的藉鑒價值,可以幫助讀者從係統角度理解FPGA的開發流程。
本書可作為高等院校計算機專業本、專科生的教材或教學參考書,也可以作為電子技術課程設計、電子設計大賽或數字係統設計工程技術人員學習EDA 技術的參考書。
內頁插圖
目錄
第1章概述/001
1.1可編程邏輯器件001
1.2FPGA/CPLD的軟件開發工具002
1.3硬件描述語言002
1.3.1AHDL語言002
1.3.2VerilogHDL語言002
1.3.3VHDL語言003
1.4FPGA/CPLD的開發流程003
第2章QuartusⅡ集成開發環境/005
2.1QuartusⅡ界麵概況005
2.2QuartusⅡ軟件開發流程006
2.2.1創建工程006
2.2.2原理圖輸入方式008
2.2.3文本輸入方式015
2.2.4波形仿真017
2.2.5引腳分配021
2.2.6編程下載021
2.3LPM參數化宏功能模塊024
2.3.1LPM參數化宏功能模塊定製管理器024
2.3.2LPM參數化宏功能模塊的應用030
第3章仿真/034
3.1Modelsim簡介034
3.2安裝034
3.3Modelsim仿真方法035
3.3.1前仿真035
3.3.2後仿真035
3.3.3Modelsim仿真的基本步驟036
3.3.4Modelsim的運行方式036
3.4Modelsim功能仿真036
3.4.1建立仿真工程038
3.4.2Altera仿真庫的編譯與映射039
3.4.3編譯HDL源代碼和Testbench041
3.4.4啓動仿真器並加載設計頂層042
3.4.5打開觀察窗口,添加信號044
3.4.6執行仿真045
3.5Modelsim時序仿真046
3.5.1仿真路徑設置046
3.5.2QuartusⅡ仿真環境設置047
3.5.3利用QuartusⅡ編譯源文件048
3.5.4生成測試模闆並編寫測試程序048
3.5.5執行仿真051
第4章VHDL語言基礎/054
4.1VHDL語言的特點054
4.2VHDL語言的程序結構055
4.3VHDL語言的庫055
4.4VHDL語言的程序包057
4.5VHDL語言的實體058
4.5.1實體說明058
4.5.2實體的類屬說明058
4.5.3實體的端口說明059
4.6VHDL語言的結構體060
4.7VHDL語言的配置062
第5章VHDL數據類型與運算操作符/065
5.1VHDL的基本語法規則065
5.2VHDL語言的數據對象066
5.2.1常量(CONSTANT)066
5.2.2變量(VARIABLE)066
5.2.3信號(SIGNAL)067
5.2.4文件(FILES)068
5.3VHDL語言的數據類型068
5.3.1預定義的數據類型068
5.3.2用戶自定義數據類型071
5.3.3數據類型的轉換073
5.4VHDL語言的操作符075
5.4.1邏輯操作符076
5.4.2算術操作符076
5.4.3關係操作符077
第6章VHDL的主要描述語句/079
6.1順序描述語句079
6.1.1變量賦值語句079
6.1.2信號賦值語句080
6.1.3WAIT語句080
6.1.4IF語句082
6.1.5CASE語句085
6.1.6NULL語句087
6.1.7斷言(ASSERT)語句087
6.1.8LOOP語句088
6.1.9NEXT語句090
6.1.10EXIT語句091
6.2並發描述語句092
6.2.1進程語句092
6.2.2並發信號賦值語句093
6.2.3並發過程調用語句095
6.2.4塊(BLOCK)語句097
6.2.5元件例化語句098
6.2.6生成語句100
6.3屬性描述與定義語句102
第7章應用實例/111
7.1自動郵票售票機設計111
7.1.1自動郵票售票係統總體模塊圖的設計111
7.1.2票價設定模塊的設計112
7.1.3郵票類型選擇模塊的設計113
7.1.4點陣票型顯示模塊的設計116
7.1.5郵票類型選擇與票價設定模塊的設計120
7.1.6郵票數量設定模塊的設計121
7.1.7郵票購買模塊的設計123
7.1.8數據轉換模塊的設計126
7.1.9動態掃描模塊的設計127
7.1.10數碼管顯示模塊的設計128
7.1.11綜閤設計129
7.2交通燈控製係統的設計130
7.2.1交通燈控製係統模塊圖130
7.2.2控製模塊設計130
7.2.3顯示模塊設計135
7.2.4綜閤設計139
7.3八路搶答器的設計140
7.3.1主持人控製模塊141
7.3.2搶答信號鎖存模塊142
7.3.3倒計時模塊144
7.3.4二進製編碼轉BCD碼模塊146
7.3.5掃描信號産生模塊147
7.3.6數碼管位信號與段信號匹配模塊147
7.3.7BCD碼轉七段碼模塊148
7.3.8報警模塊149
7.3.9綜閤設計150
7.4數字頻率計VHDL程序與仿真151
7.5樂麯硬件演奏電路設計155
7.5.1頂層設計156
7.5.2音調産生模塊157
7.5.3音調查詢158
7.5.4節拍和音符數據發生器模塊159
7.5.5“梁祝”樂麯演奏數據160
7.6數控分頻器的設計161
7.7狀態機A/D采樣控製電路實現162
7.8比較器和D/A器件164
7.9ASK調製解調VHDL程序及仿真165
7.9.1ASK調製VHDL程序及仿真165
7.9.2ASK解調VHDL程序及仿真166
7.10FSK調製與解調VHDL程序及仿真167
7.10.1FSK調製VHDL程序及仿真167
7.10.2FSK解調方框圖及電路符號168
7.10.3FSK解調VHDL程序及仿真169
7.11多功能波形發生器VHDL程序與仿真171
參考文獻/178
前言/序言
近年來,隨著電子技術、計算機應用技術和EDA技術的不斷發展,利用FPGA/CPLD進行數字係統的開發已被廣泛應用於交通運輸、航空航天、精密儀器、醫療電子、工業控製等各領域。FPGA/CPLD具有功能強大、開發周期短以及産品集成度高、易於修改等特點,並且FPGA/CPLD本身發展非常迅速,高密度、高性能、低成本的FPGA器件推陳齣新,也促進瞭FPGA/CPLD成為當今硬件設計的首選方式之一。熟練掌握FPGA/CPLD設計技術已經是電子設計工程師的基本要求。
VHDL語言作為國際標準的硬件描述語言,已經成為工程技術人員和高校學生的必備技能。本書例子中的文本編輯均采用VHDL語言編寫,書中所有實例都已通過仿真和硬件測試。
全書根據EDA應用技術,特彆是結閤FPGA應用領域包含的主要內容編寫,並以實例的形式介紹瞭Altera公司推齣的QuartusⅡ13.1設計平颱以及Modelsim10.0c仿真平颱。本書由淺入深,先介紹FPGA設計流程,然後介紹開發平颱、仿真平颱、VHDL語言,最後講解瞭典型的應用實例。
本書分7章,其中第1章介紹瞭什麼是FPGA,FPGA設計的環境,設計流程,所使用的語言等;第2章介紹瞭FPGA的開發平颱,主要講解Altera的QuartusⅡ13.1,本章圖文並茂,以簡單的實例為主,重點講述使用軟件的完整開發流程,包括輸入、編譯、仿真以及下載;第3章介紹瞭Modelsim10.0c仿真平颱,介紹瞭使用Modelsim10.0c進行功能仿真與時序仿真,學完本章即可完成基本的仿真,Modelsim功能十分強大,由於篇幅的限製,不做進一步講解;第4章介紹瞭VHDL的語言基礎,以簡單的實例說明VHDL程序的基本組成;第5章介紹瞭VHDL的數據類型與運算操作符,為後續程序奠定基礎;第6章介紹瞭VHDL的主要描述語句;第7章是實例,詳細介紹瞭如何利用FPGA進行程序設計,既有設計原理,也有程序說明,並在最後給齣仿真結果。
本書是編者在FPGA學習和實踐中的經驗點滴,書中既有日常的學習筆記,對一些常用設計技巧和方法進行深入探討,也有很多生動的實例,這些實例大都是以特定的工程項目為依托,具有一定的藉鑒價值,還有多個完整的項目工程實例,讓讀者從係統角度理解FPGA的開發流程。
本書從工程實踐齣發,旨在引領讀者學會如何在FPGA的開發設計過程中發現問題、分析問題並解決問題。本書所有程序都是測試過的,讀者如果需要可發電子郵件至yj74615@163.com聯係索取相應資料。
本書可用作高等院校計算機專業本、專科生的教材或教學參考書,也可以作為電子技術課程設計、電子設計大賽或數字係統設計工程技術人員學習EDA技術的參考書。
本書由郭明良任主編,常國祥、王歡任副主編,書中第1章、第2章、第4章、第5章由王歡編寫;第6章以及第7章的7.8~7.10節由楊立新編寫,第7章的示例7.4~7.7節、7.11節由郭明良編寫,第3章與第7章7.1~7.3節由常國祥編寫,全書由常國祥主審。
由於水平有限,書中難免有不足之處,敬請讀者批評指正。
編者
《嵌入式係統軟件開發實戰指南》 內容簡介: 本書是一本麵嚮嵌入式係統開發者,尤其是初學者和希望提升實際開發能力的工程師的實戰指南。書中深入淺齣地講解瞭嵌入式係統軟件開發的各個關鍵環節,從硬件基礎知識的梳理,到嵌入式操作係統的選擇與移植,再到驅動程序開發、應用程序設計以及係統調試與優化,力求為讀者構建一個全麵、係統且貼近實用的開發知識體係。本書強調理論與實踐相結閤,通過大量詳實的案例和代碼示例,幫助讀者快速掌握嵌入式軟件開發的各項核心技能,並能在實際項目中靈活運用。 第一部分:嵌入式係統基礎與硬件交互 在嵌入式係統開發的世界裏,硬件與軟件的緊密結閤是其核心特徵。本書的開篇將帶領讀者走進嵌入式係統的微觀世界,從理解微處理器與微控製器(MCU)的基本架構入手。我們將詳細介紹CPU的核心工作原理,包括指令集、流水綫、中斷機製等,這些是理解軟件如何在硬件上運行的基礎。同時,書中會係統闡述嵌入式係統中常見的存儲器類型,如RAM、ROM、Flash Memory等,並解釋它們在係統啓動、程序執行以及數據存儲中的作用。 更重要的是,本書將重點關注嵌入式係統中不可或缺的硬件接口。我們將深入講解GPIO(通用輸入輸齣)的工作原理和配置方法,這是最基礎的硬件交互方式,可用於控製LED、讀取按鍵等。接著,我們會詳細介紹串行通信接口,如UART(通用異步收發傳輸器)、SPI(串行外設接口)和I2C(集成電路總綫)。讀者將學習如何配置這些接口,發送和接收數據,並理解它們在連接外部傳感器、通信模塊時的實際應用。例如,我們將通過實例演示如何使用UART與PC進行通信,如何使用SPI驅動SPI接口的顯示屏,以及如何使用I2C讀取溫度傳感器的數值。 此外,本書還將介紹一些更高級的硬件概念,如ADC(模數轉換器)和DAC(數模轉換器),它們在處理模擬信號時至關重要,對於需要與現實世界進行交互的嵌入式係統尤為關鍵。我們將講解它們的原理,並提供如何配置和讀取ADC數據的實例。定時器/計數器也是嵌入式係統中非常重要的資源,它們可以用於産生延時、定時中斷、PWM(脈衝寬度調製)等。本書將詳述定時器的不同工作模式,並通過實例展示如何利用定時器實現精確的延時和PWM波形生成,這在電機控製、LED亮度調節等應用中至關重要。 理解中斷機製是嵌入式軟件開發的核心技能之一。本書將深入講解中斷的工作原理,包括中斷嚮量錶、中斷服務程序(ISR)的設計以及中斷優先級管理。我們將通過實際例子,如按鍵中斷、定時器中斷等,演示如何編寫高效且可靠的中斷服務程序,以實現對外部事件的及時響應。 第二部分:嵌入式操作係統(RTOS)的選擇與移植 對於大多數功能相對復雜的嵌入式係統而言,采用嵌入式實時操作係統(RTOS)是提高開發效率和係統穩定性的必然選擇。本部分將首先深入剖析RTOS的核心概念,包括任務(Task)、任務調度(Task Scheduling)、信號量(Semaphore)、互斥鎖(Mutex)、消息隊列(Message Queue)以及事件標誌組(Event Flag Group)等。讀者將理解這些概念如何在多任務環境下協調並發執行,以及如何利用它們來構建健壯的應用程序。 本書將重點介紹當前主流的嵌入式RTOS,如FreeRTOS、RT-Thread等。我們將詳細分析它們的架構、特點、優勢以及適用場景,幫助讀者根據實際項目需求做齣明智的選擇。對於FreeRTOS,我們將從其輕量級、易於移植的特點齣發,深入講解其API接口,包括任務創建與刪除、任務優先級管理、任務間通信機製等。對於RT-Thread,我們將介紹其模塊化設計、豐富的組件以及強大的實時性,並展示如何利用其生態係統快速構建復雜應用。 RTOS的移植是將其應用到特定硬件平颱上的關鍵步驟。本書將提供一套係統性的RTOS移植流程,從硬件平颱初始化、時鍾配置、內存管理到中斷控製器配置,再到RTOS核心的初始化。我們將以一個典型的ARM Cortex-M係列MCU為例,詳細演示如何將FreeRTOS移植到目標開發闆上,包括配置芯片的啓動文件、中斷嚮量錶以及提供底層的硬件抽象層(HAL)。讀者將學會如何理解RTOS內核與硬件之間的接口,並能夠根據自己的硬件平颱進行相應的修改和適配。 除瞭核心的RTOS功能,本書還將介紹RTOS提供的其他關鍵組件,如文件係統(如FATFS)、網絡協議棧(如lwIP)以及設備驅動框架。我們將講解如何在RTOS環境下集成和使用這些組件,從而為嵌入式係統提供文件存儲、網絡通信等高級功能。 第三部分:嵌入式設備驅動程序開發 設備驅動程序是連接操作係統與硬件之間的橋梁,其穩定性和高效性直接關係到整個嵌入式係統的性能。本部分將係統地講解嵌入式設備驅動程序的開發方法和技巧。我們將從驅動程序的基本結構和工作原理開始,介紹常用的驅動程序模型,如字符設備驅動、塊設備驅動和網絡設備驅動。 本書將重點講解如何為常見的嵌入式硬件編寫驅動程序。我們將從簡單的GPIO驅動入手,講解如何通過編程控製LED的亮滅、讀取按鍵的狀態。接著,我們將深入到串口(UART)驅動的開發,講解如何實現數據的發送和接收,以及如何處理收發過程中的各種異常情況。對於SPI和I2C設備,我們將詳細介紹如何編寫相應的驅動程序,以控製外部傳感器、存儲器等設備。例如,我們將演示如何編寫一個驅動程序來控製一個SPI接口的OLED顯示屏,並在屏幕上顯示文本和圖形。 對於需要更復雜交互的硬件,如ADC、DAC、PWM等,本書也將提供詳細的驅動開發指導。我們將講解如何配置硬件寄存器,編寫中斷服務程序來處理數據轉換完成等事件,並展示如何將這些驅動集成到RTOS的設備驅動框架中,方便應用程序調用。 此外,本書還將探討驅動程序開發的最佳實踐,包括如何進行錯誤處理、如何優化驅動程序的性能、如何保證驅動程序的穩定性和可重用性。我們將介紹一些常用的調試技巧,如使用邏輯分析儀、示波器以及printf調試等,幫助讀者快速定位和解決驅動程序中的問題。 第四部分:嵌入式應用程序設計與開發 掌握瞭RTOS和驅動程序開發的基礎後,本部分將聚焦於嵌入式應用程序的設計與開發。我們將從應用程序的整體架構設計開始,講解如何根據項目需求劃分模塊,如何設計清晰的接口,以及如何選擇閤適的開發模式,如狀態機、生産者-消費者模式等。 本書將提供大量實例,展示如何利用RTOS提供的服務來構建功能豐富的應用程序。我們將從一個簡單的任務管理應用開始,演示如何創建和管理多個任務,並使用信號量和互斥鎖來解決任務間的同步和互斥問題。接著,我們將介紹如何使用消息隊列實現任務間的數據傳遞,以及如何使用事件標誌組來協調復雜的多任務交互。 對於涉及用戶界麵的嵌入式係統,我們將介紹圖形用戶界麵(GUI)庫的集成和應用。例如,我們將演示如何將一個輕量級的GUI庫集成到RTOS環境中,並創建簡單的窗口、按鈕和文本顯示,實現與用戶的交互。 網絡通信是現代嵌入式係統中越來越重要的組成部分。本書將講解如何利用RTOS提供的網絡協議棧(如lwIP)來開發網絡應用程序。我們將從TCP/IP協議的基本概念講起,演示如何編寫客戶端和服務器應用程序,實現數據的遠程傳輸和控製。例如,我們將開發一個簡單的Web服務器,允許用戶通過瀏覽器訪問嵌入式設備並進行控製。 文件係統的應用也是嵌入式係統開發中常見的功能。本書將介紹如何使用RTOS提供的文件係統接口,如FATFS,來管理存儲設備上的文件。我們將演示如何創建、讀取、寫入和刪除文件,以及如何將數據保存到Flash或SD卡中。 第五部分:嵌入式係統調試與優化 在嵌入式係統開發過程中,調試和優化是至關重要的環節,直接影響到産品的質量和性能。本部分將係統地介紹嵌入式係統的調試方法和優化策略。 我們將首先講解常用的調試工具和技術,包括集成開發環境(IDE)提供的調試器(如GDB)、邏輯分析儀、示波器、串口調試助手以及JTAG/SWD調試接口。我們將詳細介紹如何使用這些工具來設置斷點、單步執行、查看變量值、監視內存以及跟蹤程序執行流程,從而快速定位代碼中的錯誤。 對於RTOS環境下的調試,我們將介紹一些特有的技巧,如利用RTOS提供的調試信息(如任務狀態、堆棧使用情況)來分析係統行為,以及使用RTOS自帶的調試工具(如果可用)來監控任務間的通信和同步。 除瞭功能性調試,代碼性能優化也是嵌入式開發中不可忽視的一環。本書將介紹多種性能優化方法,包括算法優化、數據結構優化、代碼重構以及編譯器優化選項的閤理使用。我們將重點關注嵌入式係統資源受限的特點,講解如何在保證功能性的前提下,最大程度地提升代碼的執行效率和降低資源占用。 內存管理是嵌入式係統優化的另一個關鍵領域。我們將介紹如何分析內存使用情況,如何避免內存泄漏,以及如何使用嵌入式內存分配器來提高內存使用效率。對於實時性要求極高的應用,我們將介紹如何進行CPU時間片優化,如何減少中斷延遲,以及如何對關鍵代碼路徑進行性能分析和優化。 最後,本書還將討論嵌入式係統的功耗優化。我們將介紹如何分析和測量係統的功耗,以及如何通過軟件和硬件相結閤的方式來降低功耗,延長電池壽命。 總結: 《嵌入式係統軟件開發實戰指南》是一本集理論、實踐、技巧於一體的全麵指導手冊。本書旨在幫助讀者建立起紮實的嵌入式軟件開發基礎,掌握從硬件交互到係統級應用的各項核心技能。通過本書的學習,讀者將能夠獨立完成嵌入式係統的軟件設計、開發、調試和優化工作,為應對日益復雜的嵌入式項目打下堅實的基礎。