內容簡介
硬體描述語言與FPGA設計技術是電子電氣及通信信息類專業的一門重要的基礎課程。本書主要介紹了在EDA軟體平台上,用硬體描述語言VHDL完成設計檔案,然後由計算機自動地完成邏輯編譯、化簡、分割、綜合、最佳化、布局、布線,之後再通過仿真驗證設計項目完成情況,直至掌握對特定目標晶片的適配編譯、邏輯映射和編程下載等的工作流程和實現方法。
本書以工程實例為導向,按照理論與實踐相結合的要求,對FPGA套用中的理論、方法和設計技巧作了全面深入的討論,大部分實例在軟體設計環境Quartus Ⅱ和Cyclone Ⅲ系列FPGA器件上實現。
本書可以作為電子電氣及通信信息類專業本科學生的教科書,也可以作為相關領域的工程技術人員的參考書。
目錄
第1章 EDA技術概述 (1)
1.1 硬體描述語言 (1)
1.2 EDA設計流程 (2)
1.2.1 設計輸入 (2)
1.2.2 綜合與適配 (3)
1.2.3 時序仿真與功能仿真 (4)
1.2.4 編程下載與器件測試 (5)
1.3 Quartus Ⅱ設計環境 (5)
1.4 EDA技術開發中的IP (6)
習題與思考題 (7)
第2章 可程式邏輯器件硬體基礎 (8)
2.1 可程式器件結構 (8)
2.2 可程式邏輯器件的分類 (8)
2.2.1 按集成度分類 (9)
2.2.2 按組成結構分類 (9)
2.2.3 按編程工藝分類 (9)
2.3 PLD電路表示 (10)
2.4 GAL器件結構原理 (10)
2.5 CPLD的結構原理 (13)
2.6 FPGA的結構原理 (16)
2.6.1 查找表邏輯結構 (16)
2.6.2 Cyclone Ⅲ系列器件的結構原理 (17)
2.7 CPLD/FPGA的編程與配置 (21)
2.7.1 CPLD在系統編程 (22)
2.7.2 FPGA配置方式 (23)
2.7.3 用JTAG進行FPGA的配置 (23)
2.7.4 FPGA專用配置器件 (24)
習題與思考題 (25)
第3章 VHDL組合電路設計 (26)
3.1 2選1多路選擇器及其VHDL描述 (26)
3.2 IEEE庫預定義標準邏輯位與矢量數據類型 (29)
3.3 設計庫和標準程式包 (30)
3.4 ENTITY(實體)語句結構和語法含義 (30)
3.4.1 實體名 (31)
3.4.2 連線埠語句和連線埠信號名 (31)
3.4.3 連線埠模式 (31)
3.4.4 數據類型 (31)
3.5 ARCHITECTURE(結構體)語句結構和語法含義 (32)
3.5.1 賦值符號和數據比較符號 (32)
3.5.2 邏輯操作符 (33)
3.5.3 條件語句 (33)
3.5.4 進程語句和順序語句 (34)
3.5.5 IF語句 (37)
3.6 83線優先編碼器VHDL設計 (38)
3.7 檔案保存與檔案名稱 (40)
3.8 1位二進制全加器的VHDL描述 (40)
3.8.1 半加器的VHDL描述 (40)
3.8.2 CASE語句 (41)
3.8.3 並置操作符 (42)
3.8.4 全加器的VHDL描述 (42)
3.8.5 元件例化語句 (43)
3.9 硬體乘法器VHDL設計 (44)
3.9.1 變數 (45)
3.9.2 信號 (46)
3.9.3 進程中的信號與變數賦值特點 (47)
3.9.4 FOR_LOOP循環語句 (48)
3.10 參數傳遞說明語句 (49)
3.11 整數類型 (49)
3.12 VHDL操作符 (50)
3.12.1 移位操作符 (51)
3.12.2 省略賦值操作符 (51)
3.12.3 邏輯操作符 (52)
3.12.4 關係操作符 (53)
3.12.5 求和操作符 (54)
3.12.6 求積操作符 (55)
3.12.7 符號操作符 (55)
3.12.8 混合操作符 (55)
3.13 數據類型轉換函式 (55)
3.14 參數傳遞映射語句 (57)
習題與思考題 (58)
第4章 VHDL時序電路設計 (59)
4.1 基本時序電路D觸發器的VHDL描述 (59)
4.1.1 上升沿檢測表達式和信號屬性函式 (60)
4.1.2 不完整條件語句與時序電路 (60)
4.1.3 VHDL實現時序電路的其他表述方法 (61)
4.2 計數器的VHDL設計 (63)
4.2.1 十六進制加法計數器 (63)
4.2.2 十進制加法計數器 (64)
4.3 移位暫存器的VHDL設計 (66)
4.4 移位相加乘法器的VHDL設計 (67)
4.5 屬性描述與定義語句 (72)
4.5.1 信號類屬性 (73)
4.5.2 數據區間類屬性 (73)
4.5.3 數值類屬性 (73)
4.5.4 數組屬性 (74)
4.5.5 用戶定義屬性 (74)
習題與思考題 (75)
第5章 FPGA開發環境QuartusⅡ套用基礎 (76)
5.1 Quartus Ⅱ文本輸入設計方法 (76)
5.1.1 建立工作庫資料夾和編輯設計檔案 (76)
5.1.2 創建工程 (77)
5.1.3 編譯前設定 (80)
5.1.4 全程編譯 (81)
5.1.5 時序仿真 (83)
5.1.6 暫存器傳輸級(RTL)電路圖 (88)
5.2 器件引腳鎖定與程式下載 (89)
5.2.1 引腳鎖定 (89)
5.2.2 配置檔案下載 (91)
5.3 JTAG間接模式編程配置器件 (92)
5.3.1 將SOF檔案轉化為JTAG間接配置檔案 (93)
5.3.2 下載JTAG間接配置檔案 (94)
5.3.3 USB Blaster編程配置器件使用方法 (95)
5.4 嵌入式邏輯分析儀使用方法 (95)
5.4.1 打開SignalTap Ⅱ編輯視窗 (96)
5.4.2 調入待測信號 (96)
5.4.3 SignalTap Ⅱ參數設定 (97)
5.4.4 檔案存檔與綜合適配 (98)
5.4.5 編譯下載 (99)
5.4.6 啟動SignalTap Ⅱ進行採樣與分析 (99)
5.4.7 SignalTap Ⅱ的其他設定和控制方法 (100)
5.5 Quartus Ⅱ原理圖輸入設計方法 (101)
5.5.1 輸入設計項目和檔案保存 (101)
5.5.2 將設計項目設定成可調用的元件 (102)
5.5.3 設計全加器頂層檔案 (103)
5.5.4 將設計項目設定成工程和時序仿真 (103)
習題與思考題 (104)
第6章 宏功能模組與IP套用 (105)
6.1 LPM存儲器設計 (105)
6.1.1 ROM模組設計 (105)
6.1.2 RAM模組設計 (111)
6.1.3 FIFO(先進先出)存儲器模組設計 (113)
6.2 DSP模組構建乘法器 (114)
6.3 正弦信號發生器設計 (115)
6.3.1 正弦信號發生器模組設計 (115)
6.3.2 使用嵌入式邏輯分析儀測試數據波形 (116)
6.4 在系統存儲器數據讀寫編輯器套用 (117)
6.4.1 打開在系統存儲單元編輯視窗 (117)
6.4.2 讀取ROM中的波形數據 (117)
6.4.3 ROM寫入數據 (118)
6.4.4 輸入/輸出數據檔案 (118)
6.5 IP核NCO數控振盪器設計 (119)
6.5.1 選擇IP核NCO並確定檔案名稱 (119)
6.5.2 進入檔案生成設定視窗 (119)
6.5.3 NCO參數設定 (120)
6.5.4 生成仿真檔案 (121)
6.5.5 加入IP授權檔案 (121)
6.5.6 編譯與功能檢測 (122)
6.6 LPM嵌入式鎖相環設計 (122)
6.6.1 建立嵌入式鎖相環元件 (122)
6.6.2 鎖相環仿真測試和硬體特性 (124)
6.7 8051單片機IP軟核套用 (125)
6.8 LPM模組的文本調用 (129)
6.8.1 在Quartus Ⅱ中對宏功能模組進行例化 (129)
6.8.2 LPM模組的VHDL文本方式調用 (129)
習題與思考題 (132)
第7章 狀態機設計 (133)
7.1 數字系統中的狀態機套用特性 (133)
7.2 有限狀態機的設計 (134)
7.2.1 數據類型定義語句 (134)
7.2.2 有限狀態機的設計 (136)
7.3 狀態機的編碼方式 (144)
7.3.1 狀態位直接輸出型編碼 (144)
7.3.2 順序編碼 (146)
7.3.3 一位熱碼編碼 (146)
7.3.4 剩餘狀態處理 (146)
習題與思考題 (147)
第8章 FPGA設計工程實踐 (149)
8.1 LED數碼管顯示控制 (149)
8.1.1 LED數碼管的工作原理 (149)
8.1.2 採用FPGA實現LED數據管靜態顯示控制 (149)
8.1.3 採用FPGA實現LED數碼管動態顯示控制 (150)
8.1.4 LED顯示程式設計與仿真測試 (150)
8.2 液晶顯示器(LCD)控制 (152)
8.2.1 LCD顯示的原理 (152)
8.2.2 MDLS字元型液晶顯示模組FPGA驅動控制電路 (154)
8.2.3 液晶顯示器驅動模組的VHDL控制程式 (154)
8.3 TLC5510採樣控制設計 (156)
8.3.1 TLC5510與FPGA接口電路原理 (156)
8.3.2 TLC5510 VHDL採樣控制程式設計 (157)
8.4 TLC7524數/模轉換控制設計 (158)
8.4.1 TLC7524接口電路原理 (158)
8.4.2 TLC7524 數/模轉換控制程式設計 (159)
8.5 2FSK調製與解調設計 (161)
8.5.1 2FSK信號調製原理和VHDL模組設計 (161)
8.5.2 2FSK信號解調原理和VHDL模組設計 (165)
8.6 4PSK調製與解調設計 (168)
8.6.1 4PSK信號調製原理和VHDL模組設計 (168)
8.6.2 4PSK信號解調原理和VHDL模組設計 (172)
8.7 交織編碼器設計 (175)
8.7.1 交織編碼原理 (175)
8.7.2 交織編碼FPGA模組設計與仿真測試 (176)
8.8 數字音樂播放控制器設計 (180)
8.8.1 數字音樂播放控制原理 (180)
8.8.2 數字音樂播放控制器VHDL模組設計 (180)
8.9 步進電機驅動控制設計 (185)
8.9.1 步進電機驅動原理 (185)
8.9.2 步進電機步距八細分系統設計 (187)
8.9.3 細分驅動的VHDL程式和仿真測試 (189)
8.10 直流電機控制設計 (192)
8.10.1 直流電機轉速PWM控制原理 (192)
8.10.2 直流電機PWM驅動的VHDL模組設計和仿真測試 (193)
8.11 數字頻率計設計 (195)
8.11.1 頻率計原理和VHDL模組設計 (195)
8.11.2 頻率計VHDL程式及仿真測試 (195)
8.12 LED顯示時鐘設計 (199)
8.12.1 數字顯示時鐘實現原理 (199)
8.12.2 LED時鐘的VHDL程式和仿真測試 (200)
8.13 VHDL工程設計風格與最佳化 (205)
8.13.1 描述方法與編碼風格 (205)
8.13.2 不同的狀態機描述 (208)
8.13.3 層次化設計方法 (211)
8.13.4 相似邏輯設計在一個層次 (211)
8.13.5 使用暫存器作為模組的分界線 (212)
8.13.6 最佳化設計方法 (212)
參考文獻 (219)