本書涵蓋“VHDL設計描述語言”和“FPGA設計及應用”兩門課程的主要內容,內容緊湊、重點突齣、條理清晰、針對性強、注重實踐,精心選取瞭大量通用、貼近工程實踐的設計實例。
劉樹林,博士,西安科技大學教授、博士生導師,四川大學半導體物理專業本科畢業,航天部西安微電子研究所碩士、博士畢業。先後在西安電力電子研究所、中興通訊股份有限公司、西安科技大學從事科研和教學工作。現任西安科技大學電氣與控製工程學院副院長、“電力電子電路與係統科研創新團隊”負責人、礦山機電工程博士點學科帶頭人、微電子學與固體電子學學科帶頭人等。
第1章 緒論 1
1.1 電路係統 1
1.1.1 電路係統的分類 1
1.1.2 模擬電路係統及其特點 1
1.1.3 數字電路係統及其特點 2
1.2 VHDL語言的産生背景、功能及特點 2
1.2.1 EDA概念 2
1.2.2 EDA技術發展階段 2
1.2.3 EDA技術的研究內容 4
1.2.4 HDL語言的概念及分類 5
1.2.5 VHDL語言的發展及特點 6
1.3 PLD與FPGA 7
1.3.1 簡單低密度器件(SPLD) 8
1.3.2 CPLD 9
1.3.3 FPGA 12
1.3.4 器件供應商及第三方軟件介紹 13
習題 16
第2章 VHDL程序框架及組成 17
2.1 概述 17
2.2 語法規則及命名 17
2.2.1 書寫規定 17
2.2.2 標識符 18
2.2.3 擴展標識符 18
2.2.4 保留字及專用字 19
2.3 VHDL基本架構 19
2.3.1 設計庫 20
2.3.2 包集閤 22
2.3.3 實體 24
2.3.4 構造體 26
2.3.5 配置 28
3.配置的格式 28
2.4 小結 31
習題 31
第3章 VHDL語言數據類型 32
3.1 數據類型概述 32
3.2 標準預定義數據類型 32
3.2.1 可綜閤數據類型 33
3.2.1 不可綜閤數據類型 36
3.3 用戶自定義數據類型 38
3.3.1 枚舉類型 39
3.3.2 數組類型 39
3.3.3 記錄類型 40
3.3.4 尋址類型 41
3.3.5 文件類型 41
3.4 數據類型的轉換 42
3.5 小結 44
習題 44
第4章 VHDL語言數據對象及運算操作符 45
4.1 數據對象及其分類 45
4.1.1 常量 45
4.1.2 信號 46
4.1.3 變量 47
4.1.4 文件 49
4.2 運算操作符 51
4.2.1 邏輯運算符 51
4.2.2 算術運算符 52
4.2.3 關係運算符 52
4.2.4 移位操作符 53
4.2.5 並置運算符 54
4.3 小結 55
習題 55
第5章 VHDL語言主要描述語句 57
5.1 概述 57
5.2 並發描述語句 57
5.2.1 進程語句 58
5.2.2 信號代入語句 59
5.2.3 元件例化語句 64
5.2.4 過程調用語句 69
5.2.5 類屬語句 71
5.2.6 生成語句 72
5.2.7 並行仿真語句 75
5.2.8 塊語句 77
5.3 順序描述語句 78
5.3.1 進程語句 79
5.3.2 賦值語句 79
5.3.3 條件判斷語句 81
5.3.4 CASE語句 83
5.3.5 調用語句 87
5.3.6 循環語句 90
5.3.7 仿真描述語句 94
5.3.8 空語句 98
5.4 小結 99
習題 99
第6章 VHDL語言屬性 100
6.1 概述 100
6.2 數值類屬性 100
6.2.1 常規數據類型的數值屬性 101
6.2.2 數組類型的數值屬性 101
6.2.3 塊的數值屬性 102
6.3 函數類屬性 103
6.3.1 函數數據類型屬性 103
6.3.2 函數數組屬性 105
6.3.3 函數信號屬性 106
6.3.4 信號類屬性 110
6.4 數據類型屬性 113
6.5 數據區間類屬性 113
6.6 用戶自定義屬性 114
6.7 小結 115
習題 115
第7章 VHDL語言構造體的描述方式 117
7.1 概述 117
7.2 行為描述方式 117
7.2.1 行為描述方式的概念和特點 117
7.2.2 行為描述方式舉例 117
7.3 結構化描述方式 119
7.3.1 結構化描述方式的概念和特點 119
7.3.2 結構化描述舉例 119
7.4 數據流描述方式 123
7.4.1 數據流描述方式的概念和特點 123
7.4.2 數據流描述方式舉例 124
7.5 混閤描述方式 125
7.5.1 混閤描述方式的概念和特點 125
7.5.2 混閤描述方式舉例 126
7.6 數據流描述中應注意的問題 126
7.6.1 非法狀態傳遞問題 126
7.6.2 進程中時鍾沿的使用問題 128
7.6.3 綜閤電路問題 128
7.7 小結 132
習題 132
第8章 數字邏輯電路設計 133
8.1 概述 133
8.2 組閤邏輯電路設計 133
8.2.1 選擇器和分配器 133
8.2.2 編碼器和譯碼器 138
8.2.3 數字比較器 144
8.2.4 加法器 146
8.2.5 三態門及總綫緩衝器 148
8.2.6 奇偶校驗器 152
8.3 時序邏輯電路設計 153
8.3.1 觸發器 153
8.3.2 寄存器的設計 159
8.3.3 計數器 162
8.4 小結 168
習題 168
第9章 狀態機設計 169
9.1 概述 169
9.2 狀態機的特點 170
9.3 狀態機的組成 170
9.4 狀態機的描述風格 174
9.5 狀態機的狀態編碼 175
9.5.1 直接輸齣型編碼 175
9.5.2 順序編碼 176
9.5.3 格雷碼編碼 176
9.5.4 獨熱碼編碼 177
9.6 狀態機剩餘狀態處理 178
9.7 有限狀態機的復位 179
9.8 小結 183
習題 183
第10章 MODELSIM仿真與測試平颱的搭建 184
10.1 引言 184
10.2 ModelSim仿真軟件 184
10.2.1 ModelSim簡介 184
10.2.2 ModelSim軟件的安裝及破解 184
10.2.3 軟件仿真步驟 188
10.3 測試及驗證平颱 192
10.3.1 仿真軟件編輯輸入 193
10.3.2 仿真輸入波形的産生 193
10.3.3 測試平颱的搭建 198
10.4 小結 201
習題 201
第11章 QUARTUS II集成開發環境 202
11.1 概述 202
11.2 Quartus II軟件開發流程 203
11.2.1 新建工程設計流程 204
11.2.2 設計輸入流程 207
11.2.3 編譯及綜閤流程 217
11.2.4 仿真驗證 220
11.2.5 硬件下載與驗證 224
11.3 Quartus II軟件其他常用功能應用 227
11.3.1 嵌入式邏輯分析儀 227
11.3.2 信號探針 230
11.3.3 功耗分析工具 231
11.3.4 存儲器內容編輯 233
11.3.5 邏輯分析儀接口編輯器 235
11.4 小結 236
習題 236
第12章 FPGA器件及其開發平颱 237
12.1 FPGA工作原理 237
12.2 Altera FPGA芯片 237
12.2.1 Altera PLD芯片的分類 237
12.2.2 Altera PLD的命名 237
12.2.3 Cylone係列FPGA的功能和結構 238
12.3 FPGA與CPLD的比較 245
12.3.1 FPGA與CPLD的相同點 245
12.3.2 CPLD和FPGA的區彆 245
12.4 FPGA開發流程 246
12.5 FPGA開發平颱:最小係統設計 247
12.5.1 FPGA芯片有關引腳 247
12.5.2 PROM芯片型號及電路連接 248
12.5.3 全局時鍾發生電路 249
12.5.4 JTAG下載電路 250
12.5.5 電源電路設計 250
12.5.6 其他IO接口電路 251
12.6 小結 252
習題 252
第13章 FPGA典型應用設計 253
13.1 IP知識産權模塊 253
13.1.1 IP模塊的概念 253
13.1.2 IP模塊的分類 253
13.1.3 IP模塊的復用 254
13.2 分頻器的設計驗證 255
13.2.1 奇偶數分頻器通用IP核的設計 255
13.2.2 占空比可調的分頻器的設計 258
13.3 交通燈控製器的設計 260
13.3.1 設計要求 260
13.3.2 設計原理 260
13.3.3 VHDL語句描述 261
13.3.4 元件符號及端口說明 262
13.3.5 仿真驗證 263
13.4 串口異步收發控製器的設計 263
13.4.1 UART數據幀格式 264
13.4.2 UART的實現 264
13.5 I2C總綫通信控製器的設計 274
13.5.1 I2C總綫簡介 274
13.5.2 I2C總綫幀格式 274
13.5.3 I2C總綫頂層模塊設計 275
13.5.4 I2C時鍾模塊的設計 275
13.5.5 I2C寫數據模塊設計 276
13.6 並行ADC0809控製模塊設計 279
13.6.1 設計原理 279
13.6.2 狀態機設計 279
13.6.3 VHDL語言描述 280
13.6.4 測試平颱的設計 281
13.6.5 仿真結果 282
13.7 串行DAC TLC5615控製模塊設計 282
13.7.1 設計原理 283
13.7.2 設計狀態圖 283
13.7.3 VHDL源程序 283
13.7.4 元件符號及端口說明 285
13.7.5 仿真驗證 285
13.8 正弦信號發生器的設計 285
13.8.1 正弦信號發生器工作原理 285
13.8.2 定製初始化數據文件 286
13.8.3 定製LPM_ROM元件 286
13.9 小結 289
習題 289
主要參考文獻 291
前 言
隨著微電子技術和電子設計自動化(Electronic Design Automation,EDA)的快速發展,現場可編程門陣列(Field Programmable Gate Array,FPGA)正朝著全新一代片上可編程FPGA器件(System on Chip FPGA,SoC FPGA)的方嚮發展。和傳統的FPGA相比,SoC FPGA不僅繼承瞭傳統FPGA器件的功能,而且在性能和容量上有瞭很大的提升,在器件功能方麵也取得瞭很大的擴展。SoC FPGA已經從最初的單一邏輯運算角色演變為麵嚮不同應用領域的可優化高速處理平颱,即將核心硬件和各類軟件平颱融閤在一起,提供瞭一種單芯片係統解決方案。硬件描述語言(Hardware Description Language,HDL)作為一種形式化的描述語言,在FPGA的發展過程中起到瞭舉足輕重的作用。從誕生到現在,硬件描述語言已經從早期的隻能完成單一數字電路描述功能的角色演變為具有大規模、復雜係統行為的描述能力,並可以藉助EDA軟件平颱,自上而下地逐層完成相應電路的描述、仿真、優化和綜閤,直到生成器件。VHDL語言作為最早齣現的硬件描述語言,與其他硬件描述語言相比,具有層次化的設計結構,更強的行為描述能力,豐富的仿真語句和庫函數。VHDL語言的行為描述能力和程序結構決定瞭VHDL語言更適閤一些大型復雜係統的早期驗證功能的可行性,具備對係統進行仿真模擬的可能性,符閤市場化的設計係統高效的特點。VHDL語言現已成為國際標準語言,也被絕大多數的EDA軟件和半導體器件廠商所接受,掌握VHDL語言正日益成為我國高校大學生和工程技術人員的必備技能。目前,在很多高校的電子相關專業開設瞭FPGA和硬件描述語言兩方麵的課程,內容和側重點有所相同。
本書以“淡化理論,夠用為度”的原則,在理論學習方麵,注重基本概念、基本方法及常用設計方法的學習,淡化語法結構復雜、使用頻次少的語句。本書力求通俗易懂,精練實用。在設計驗證方麵,本書精心選取瞭大量通用性廣、工程實踐性強的設計實例,通過仿真驗證,強化設計理論和設計方法。為瞭鞏固讀者的學習效果,每章都配有一定數量的習題。
本書是編著者依據多年的教學和科研經驗,參考大量的國內外優秀教材編寫而成的,書中配有豐富的設計實例,並且全部經過仿真驗證。全書共13章,除緒論外可分為兩大部分:第2~7章為第一部分,詳細介紹VHDL硬件描述語言;第8~13章為第二部分,詳細介紹基於VHDL的數字電路設計及驗證方法。
第1章是緒論,內容包括電路係統的概念、分類及特點,VHDL語言産生的背景、功能及特點,可編程器件的基本概念及特點。
第2章是VHDL語言的程序框架及組成,介紹VHDL語言的語法規則和命名,以及程序框架和組成。
第3章是VHDL語言的數據類型,介紹標準的預定義數據類型、用戶自定義數據類型和數據類型轉換函數。
第4章是VHDL語言數據對象及運算操作符,介紹數據對象的概念、分類和特點,以及運算操作符的分類。
第5章是VHDL語言的主要描述語句,介紹並發描述語句和順序描述語句。
第6章是VHDL語言的屬性,介紹VHDL語言預定義的數值類屬性、函數類屬性、數據類型類屬性、數據區間屬性和用戶自定義屬性。
第7章是VHDL語言構造體的描述方式,介紹行為描述方式、結構化描述方式、數據流描述方式和混閤描述方式。
第8章是數字邏輯電路設計,介紹簡單組閤邏輯電路和時序邏輯電路的設計。
第9章是狀態機設計,介紹狀態機的組成、描述風格、狀態編碼、狀態機剩餘狀態處理方法及狀態機的復位方法。
第10章是ModelSim仿真與測試平颱的搭建,介紹ModelSim軟件的使用方法,測試激勵文件的産生方法和測試平颱的搭建步驟。
第11章是Quartus II集成開發環境,介紹Quartus II 集成開發軟件的主要功能、開發流程和一些輔助功能。
第12章是FPGA器件及開發平颱,介紹Altera公司FPGA芯片的分類、命名和結構特點,以及FPGA最小係統和各部分的電路組成。
第13章是FPGA典型應用設計,介紹IP核的概念,若乾典型應用實例的設計及驗證方法。
“VHDL及數字電路驗證”是微電子科學與工程專業的必修課,是通信工程、測控技術、電子工程等相關電子類專業的選修課,屬於一門理論和實踐並重的課程。該課程旨在培養學生在集成電路設計方麵的前端設計驗證能力,是非常注重工程實踐的一門課程。
本課程的先修課程是“數字電子技術基礎”和“數字邏輯電路設計”。本課程的參考課時為64~72學時,實踐訓練為10~20學時,使用者可根據實際情況對內容進行取捨。
本書第1章由劉樹林編寫,第6、7、8、10、11、13章由劉寜莊編寫,第2、3、4章由王媛媛編寫,第5章由楊波編寫,第9章由高瑜編寫,第12章由伍鳳娟編寫。本書電子教學課件(PPT文檔)可從華信教育資源網(www.hxedu.com.cn)注冊後免費下載,或者通過與本書責任編輯(zhangls@phei.com.cn)聯係獲取。
本書由西安郵電大學電子工程學院副院長杜慧敏教授負責審定。在本書編寫過程中,西安郵電學院劉有耀副教授和江南大學物聯網工程學院的柴誌雷博士提齣瞭寶貴的意見,在此錶示衷心的感謝。
在本書的編寫過程中,參考瞭大量的國內外教材和論文,在此嚮這些文獻的作者錶示衷心的感謝。
由於編著者水平有限,加之時間倉促,書中難免存在不當之處,敬請廣大讀者和同行批評指正。
編著者
2016年10月
作為一名在數字設計領域摸爬滾打多年的工程師,我一直覺得“驗證”是整個流程中最耗時、也最容易被忽視的環節。很多時候,項目進度壓力之下,大傢往往更傾嚮於快速完成 RTL 設計,而將驗證放在相對靠後的位置。然而,一旦設計進入瞭仿真驗證階段,就會發現各種各樣的問題層齣不窮,不僅嚴重拖慢瞭項目進度,甚至可能導緻整個項目的失敗。我曾經遇到過一個項目,因為驗證不充分,導緻流片後纔發現嚴重的邏輯錯誤,那損失和教訓真是慘痛。所以,我一直在尋找能夠係統性地講解數字電路驗證方法和技巧的書籍。這本書的標題,尤其是“驗證”二字,吸引瞭我。我猜測它可能會深入探討如何有效地進行功能驗證、性能驗證,甚至時序驗證。它是否會介紹如何利用 VHDL 編寫高效的驗證環境,如何進行覆蓋率分析 (coverage analysis) 來衡量驗證的完整性?我更希望它能提供一些實用的技巧,比如如何進行迴歸測試 (regression testing),如何利用各種仿真工具的特性來加速驗證過程。對於那些想要提升驗證效率和質量的工程師來說,一本內容紮實、條理清晰的驗證書籍,無疑是寶貴的財富。我期待它能夠提供一些“乾貨”,幫助我們避免重蹈覆轍,並且能夠設計齣更加健壯、可靠的數字電路。
評分這本書的封麵上“VHDL及數字電路驗證”這幾個字,瞬間就勾起瞭我這個數字 IC 設計新手的好奇心。我目前正在學習數字電路設計的基礎知識,也瞭解到 VHDL 是 FPGA 設計中不可或缺的語言。然而,市麵上關於 VHDL 的書籍實在太多,各種介紹從入門到進階都有,讓我有些無從下手。尤其是“驗證”這個詞,更是讓我感到一絲迷茫。在學校的學習中,我們更多的是關注如何用 VHDL 實現功能,而對於如何“驗證”設計是否正確,則瞭解得不多。我一直好奇,為什麼驗證如此重要?一個功能實現得看起來沒問題,難道還需要耗費大量精力去“驗證”嗎?這本書的標題讓我覺得它可能會解答我的這些睏惑,比如,它會不會講解如何編寫測試平颱 (testbench) 來模擬各種輸入信號,檢測輸齣是否符閤預期?會不會深入剖析一些常見的驗證方法論,比如 UVM (Universal Verification Methodology)?我特彆期待它能用一些生動形象的例子,將抽象的驗證概念變得易於理解,而不是枯燥的理論堆砌。畢竟,對於我這樣的初學者來說,能夠將所學知識融會貫通,並且運用到實際項目中,纔是最終的目標。這本書的齣現,讓我看到瞭一個可能性,它或許能為我打開數字電路驗證的另一扇門,讓我不再僅僅滿足於“實現”,而是追求“可靠”。
評分從我的角度來看,這本書的齣現,恰好填補瞭市場上一部分空白。我們都知道,VHDL 是一種硬件描述語言,它的核心在於描述硬件的結構和行為。而“驗證”則是確保這種描述準確無誤、能夠滿足設計要求的關鍵步驟。很多現有的 VHDL 教材,雖然能夠教會讀者如何編寫 VHDL 代碼,但在如何係統地驗證這些代碼方麵,往往筆墨不多,或者隻是點到為止。這導緻很多初學者在編寫完 RTL 代碼後,麵對龐大而復雜的電路,不知道如何下手進行有效的驗證,最終隻能依賴於經驗或者簡單地進行功能測試。這本書的標題直接點明瞭“驗證”的重要性,這讓我非常期待。我希望它不僅僅停留在 VHDL 的語法層麵,而是能夠將 VHDL 的應用與驗證技術緊密結閤起來。它是否會講解如何在 VHDL 中編寫高效的測試平颱,如何模擬各種復雜的輸入場景,以及如何利用 VHDL 的一些特性來簡化驗證過程?我更希望它能夠引入一些先進的驗證理念和方法,例如如何利用 VHDL 進行形式驗證 (formal verification),或者如何構建一個模塊化的驗證框架。對於那些想要深入理解 VHDL 和數字電路驗證之間內在聯係的讀者來說,這本書具有很高的潛在價值。
評分我在工程實踐中,深切體會到“質量”的重要性,而數字電路的“質量”很大程度上就體現在其驗證的充分性上。我的工作內容涉及到一些需要高度可靠性的數字係統,例如在醫療設備和航空電子領域。在這種場景下,一次小小的驗證疏漏都可能導緻災難性的後果。因此,對於 VHDL 和數字電路驗證的學習,我一直抱有極大的熱情。我尋找的書籍,不僅僅是教授 VHDL 語法,更重要的是能夠指導我如何運用 VHDL 來實現更嚴謹、更有效的驗證。這本書的標題“VHDL及數字電路驗證”讓我看到瞭希望。我希望它能夠提供一些關於如何設計驗證策略的指導,比如如何根據設計的復雜度和關鍵性來製定不同的驗證級彆。它是否會深入探討一些高級的驗證技術,例如性能分析,功耗驗證,以及如何與物理驗證相結閤?我特彆期待它能夠分享一些關於如何構建可維護、可擴展的驗證IP (Verification IP) 的經驗,並且如何利用這些 IP 來加速驗證進程。對於一個對數字電路驗證有較高要求的工程師來說,我期待這本書能夠提供一套完整的解決方案,幫助我提升驗證的層次和水平。
評分我一直對 FPGA 的應用充滿興趣,尤其是看到許多復雜的數字係統能夠通過 FPGA 實現,感到非常驚嘆。學習 VHDL 是入門 FPGA 設計的必經之路,而我恰恰在這方麵遇到瞭一些瓶頸。雖然我已經能夠掌握 VHDL 的基本語法,並且可以編寫一些簡單的模塊,但在實際的項目應用中,我總是感覺自己對設計驗證這一塊瞭解得不夠深入。很多時候,我隻是簡單地編寫一些測試嚮量,然後觀察輸齣結果,這種驗證方式顯得非常被動和低效。我迫切地希望能夠學習到更係統、更專業的驗證方法。這本書的標題“VHDL及數字電路驗證”正是我一直在尋找的。我很好奇,它是否會從 VHDL 的角度齣發,講解如何設計齣易於驗證的 RTL 代碼?它是否會介紹一些先進的驗證技術,比如約束隨機驗證 (constrained random verification),以及如何有效地管理和組織驗證項目?我特彆希望能從中學習到如何構建一個可復用、可擴展的驗證平颱,而不是每次都從零開始。對於我這樣希望將 VHDL 技能提升到新的高度,並且能夠獨立完成復雜數字係統驗證的愛好者來說,這本書可能會成為我的重要導師。
本站所有內容均為互聯網搜尋引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度,google,bing,sogou 等
© 2025 book.cndgn.com All Rights Reserved. 新城书站 版權所有