根據(jù)電子信息類課程理論教學和實踐教學要求,以提高數(shù)字系統(tǒng)設計能力為目的,系統(tǒng)闡述EDA技術(shù)、FPGA/CPLD器件、VHDL語言和相關(guān)數(shù)字系統(tǒng)設計技術(shù)。以QuartusPrime、ModelSim軟件為工具,按“器件-軟件-語言-案例”為主線展開,內(nèi)容緊貼教學實際,以可綜合的設計為重點,通過諸多精選設計案例,闡述數(shù)字系統(tǒng)設計的方法,由淺入深介紹VHDL工程開發(fā)的技能。案例豐富,富于啟發(fā),并全部基于目標板做了驗證。VHDL語言規(guī)則以VHDL-1993、VHDL-2002和VHDL-2008語言標準為依據(jù),涵蓋所有常用語法規(guī)則,對語言、語法規(guī)則用案例做闡釋,用綜合工具和仿真工具做驗證,語言講解全面深入。
第1章 EDA技術(shù)概述 1
1.1 EDA技術(shù)及其發(fā)展歷程 1
1.2 Top-down設計思路 2
1.2.1 Top-down設計 3
1.2.2 Bottom-up設計 3
1.3 IP核復用 4
1.3.1 IP核復用技術(shù) 4
1.3.2 片上系統(tǒng)SoC 5
1.4 EDA設計的流程 6
1.4.1 設計輸入 6
1.4.2 綜合 6
1.4.3 布局布線 7
1.4.4 時序分析 7
1.4.5 功能仿真與時序仿真 7
1.4.6 編程與配置 8
1.5 常用的EDA工具軟件 8
習題1 11
第2章 FPGA/CPLD器件 12
2.1 PLD器件概述 12
2.1.1 PLD器件的發(fā)展歷程 12
2.1.2 PLD器件的分類 12
2.2 PLD的原理與結(jié)構(gòu) 14
2.3 低密度PLD的原理與結(jié)構(gòu) 15
2.4 CPLD的原理與結(jié)構(gòu) 18
2.4.1 宏單元結(jié)構(gòu) 18
2.4.2 典型CPLD的結(jié)構(gòu) 19
2.5 FPGA的原理與結(jié)構(gòu) 20
2.5.1 查找表結(jié)構(gòu) 21
2.5.2 典型FPGA的結(jié)構(gòu) 23
2.5.3 MAX 10器件結(jié)構(gòu) 24
2.5.4 Cyclone IV器件結(jié)構(gòu) 27
2.6 FPGA/CPLD的編程工藝 29
2.6.1 熔絲型開關(guān) 29
2.6.2 反熔絲型開關(guān) 29
2.6.3 浮柵編程工藝 30
2.6.4 SRAM編程工藝 31
2.7 邊界掃描測試技術(shù) 32
2.8 FPGA/CPLD的編程與配置 33
2.8.1 在系統(tǒng)可編程 33
2.8.2 Cyclone IV器件的配置 35
2.8.3 MAX 10器件的配置 37
2.9 FPGA/CPLD產(chǎn)品系列 38
習題2 40
第3章 原理圖與基于IP核的設計 42
3.1 Quartus Prime設計流程 42
3.2 原理圖設計方式 43
3.2.1 半加器設計 43
3.2.2 1位全加器設計 46
3.2.3 編譯 47
3.2.4 仿真 48
3.2.5 下載 54
3.3 基于IP核的設計 57
3.3.1 用原理圖方式實現(xiàn) 57
3.3.2 用文本例化ROM實現(xiàn) 63
3.4 SignalTap II的使用方法 63
3.5 Quartus Prime的優(yōu)化設置 67
習題3 69
第4章 VHDL設計入門 72
4.1 VHDL的歷史 72
4.2 用VHDL設計組合電路 73
4.3 用VHDL設計時序電路 76
習題4 78
第5章 VHDL結(jié)構(gòu)與要素 79
5.1 實體 79
5.1.1 類屬參數(shù)說明 79
5.1.2 端口說明 81
5.2 結(jié)構(gòu)體 82
5.3 VHDL庫和程序包 83
5.3.1 庫 83
5.3.2 程序包 84
5.4 配置 86
5.5 子程序 89
5.5.1 過程 89
5.5.2 函數(shù) 90
5.5.3 過程、函數(shù)的使用方法 90
習題5 94
第6章 VHDL基礎(chǔ)語法 95
6.1 標識符 95
6.2 數(shù)據(jù)對象 95
6.2.1 常量 96
6.2.2 變量 96
6.2.3 信號 97
6.2.4 別名 97
6.3 VHDL數(shù)據(jù)類型 98
6.3.1 VHDL標準數(shù)據(jù)類型 98
6.3.2 IEEE預定義數(shù)據(jù)類型 101
6.3.3 其他預定義數(shù)據(jù)類型 102
6.3.4 用戶自定義數(shù)據(jù)類型 104
6.4 數(shù)據(jù)類型的轉(zhuǎn)換與位寬轉(zhuǎn)換 107
6.4.1 數(shù)據(jù)類型的轉(zhuǎn)換 107
6.4.2 位寬轉(zhuǎn)換 109
6.5 VHDL運算符 110
6.5.1 邏輯運算符 110
6.5.2 關(guān)系運算符 111
6.5.3 算術(shù)運算符 112
6.5.4 并置運算符 114
6.5.5 運算符重載 114
6.5.6 省略賦值運算符 115
習題6 116
第7章 VHDL基本語句 118
7.1 順序語句 118
7.1.1 賦值語句 118
7.1.2 IF語句 118
7.1.3 CASE語句 123
7.1.4 LOOP語句 126
7.1.5 NEXT與EXIT語句 129
7.1.6 WAIT語句 129
7.1.7 子程序調(diào)用語句 131
7.1.8 ASSERT(斷言)語句 131
7.1.9 REPORT語句 132
7.1.10 NULL語句 132
7.2 并行語句 133
7.2.1 并行信號賦值語句 133
7.2.2 進程語句 137
7.2.3 塊語句 139
7.2.4 元件例化語句 141
7.2.5 生成語句 142
7.2.6 并行過程調(diào)用語句 144
7.3 屬性說明與定義語句 145
7.3.1 數(shù)據(jù)類型屬性 145
7.3.2 數(shù)組屬性 146
7.3.3 信號屬性 147
7.4 VHDL-2008 148
習題7 149
第8章 VHDL設計進階 151
8.1 行為描述 151
8.2 數(shù)據(jù)流描述 152
8.3 結(jié)構(gòu)描述 157
8.3.1 用結(jié)構(gòu)描述實現(xiàn)1位全加器 157
8.3.2 用結(jié)構(gòu)描述設計4位加法器 159
8.3.3 用結(jié)構(gòu)描述設計8位加法器 159
8.4 三態(tài)邏輯設計 160
8.5 分頻器設計 162
8.5.1 占空比為50%的奇數(shù)分頻 162
8.5.2 半整數(shù)分頻 163
8.5.3 數(shù)控分頻器 164
8.6 乘法器設計 165
8.6.1 用乘法運算符實現(xiàn) 165
8.6.2 布斯乘法器 167
8.6.3 查找表乘法器 170
8.7 存儲器設計 174
8.7.1 用數(shù)組例化存儲器 175
8.7.2 例化lpm_rom模塊實現(xiàn)存儲器 176
8.8 流水線設計 179
8.9 資源共享設計 181
8.10 用鎖相環(huán)IP核實現(xiàn)倍頻和相移 183
8.10.1 鎖相環(huán)IP核的定制 183
8.10.2 鎖相環(huán)例化和仿真 186
8.11 屬性 188
習題8 189
第9章 VHDL有限狀態(tài)機設計 190
9.1 有限狀態(tài)機 190
9.1.1 有限狀態(tài)機 190
9.1.2 枚舉數(shù)據(jù)類型 192
9.2 有限狀態(tài)機的描述方式 193
9.2.1 三進程表述方式 193
9.2.2 雙進程表述方式 194
9.2.3 單進程表述方式 196
9.3 狀態(tài)編碼 197
9.3.1 常用的編碼方式 197
9.3.2 狀態(tài)編碼的定義 199
9.3.3 用屬性指定狀態(tài)編碼方式 199
9.4 用有限狀態(tài)機實現(xiàn)除法器 201
9.5 用有限狀態(tài)機控制流水燈 204
9.5.1 流水燈控制器 204
9.5.2 引腳分配與鎖定 205
9.6 用狀態(tài)機控制交通燈 210
9.7 用狀態(tài)機控制字符液晶 211
習題9 216
第10章 VHDL驅(qū)動常用I/O外設 218
10.1 PS/2鍵盤 218
10.2 4×4矩陣鍵盤 222
10.3 漢字圖形點陣液晶 227
10.4 VGA顯示器 233
10.4.1 VGA顯示原理與時序 233
10.4.2 VGA彩條信號發(fā)生器 235
10.4.3 VGA圖像顯示 238
10.5 TFT-LCD液晶屏 243
10.5.1 TFT-LCD屏 243
10.5.2 TFT-LCD屏顯示彩色圓環(huán) 246
10.5.3 TFT-LCD屏顯示動態(tài)矩形 250
10.6 音符、音樂演奏電路 252
10.6.1 音符演奏 252
10.6.2 音樂演奏 257
習題10 262
第11章 Test Bench測試與時序分析 264
11.1 Test Bench測試 264
11.1.1 Test Bench 264
11.1.2 用VHDL描述激勵信號 264
11.1.3 用TEXTIO進行仿真 268
11.2 Test Bench測試實例 272
11.2.1 ASSERT(斷言)語句 272
11.2.2 RECODE(記錄)數(shù)據(jù)類型 274
11.3 ModelSim SE使用指南 276
11.3.1 圖形界面仿真方式 278
11.3.2 命令行仿真方式 281
11.3.3 ModelSim SE時序仿真 282
11.4 時序約束與時序分析 284
11.4.1 時序分析的有關(guān)概念 284
11.4.2 用Timing Analyzer進行時序分析 286
習題11 290
第12章 VHDL設計實例 291
12.1 超聲波測距 291
12.2 乘累加器 295
12.3 m序列與Gold碼產(chǎn)生器 298
12.3.1 m序列產(chǎn)生器 298
12.3.2 Gold碼產(chǎn)生器 301
12.4 頻率測量 302
12.5 數(shù)字鐘 306
12.6 FIR濾波器 314
12.6.1 FIR濾波器的參數(shù)設計 315
12.6.2 FIR濾波器的FPGA實現(xiàn) 319
習題12 323
附錄 VHDL保留字 324
參考文獻 325