目錄
篇 基礎篇
第1章 的數字邏輯電路知識 3
1.1 數字邏輯和邏輯電平 3
1.1.1 模擬器件構成的數字電路 3
1.1.2 TTL反相器電路 4
1.1.3 現實中的數字信號波形 5
1.1.4 了解常用的邏輯電平 6
1.2 布爾代數 7
1.2.1 布爾和幾個基本運算規(guī)則 7
1.2.2 常用的布爾代數法則 8
1.3 組合邏輯電路基礎 9
1.3.1 組合邏輯電路的表示方法 9
1.3.2 為什么會產生競爭冒險 10
1.4 時序邏輯電路基礎 11
1.4.1 時序邏輯電路的結構 11
1.4.2 D觸發(fā)器的工作波形 12
1.4.3 計數器與寄存器電路 13
1.5 小結 16
第2章 可編程邏輯器件基礎 17
2.1 可編程邏輯器件的歷史 17
2.1.1 PROM是可編程邏輯器件 17
2.1.2 從PROM到GAL 19
2.1.3 從SPLD到CPLD 21
2.1.4 FPGA的時代 22
2.2 FPGA的發(fā)展趨勢 24
2.3 FPGA的結構 26
2.4 FPGA與其他處理平臺的比較 28
2.4.1 ASIC、DSP、ARM的特點 29
2.4.2 FPGA的特點及優(yōu)勢 30
2.4.3 FPGA與CPLD的區(qū)別 31
2.5 工程中如何選擇FPGA器件 31
2.6 小結 32
第3章 準備好開發(fā)環(huán)境 33
3.1 安裝FPGA開發(fā)環(huán)境 33
3.1.1 安裝高云云源軟件 33
3.1.2 安裝ModelSim軟件 35
3.2 開發(fā)平臺CGD100簡介 38
3.3 Verilog HDL基本語法 39
3.3.1 Verilog HDL的程序結構 39
3.3.2 數據類型及基本運算符 42
3.3.3 運算符優(yōu)先級及關鍵詞 44
3.3.4 賦值語句與塊語句 44
3.3.5 條件語句和分支語句 47
3.4 小結 48
第二篇 初識篇
第4章 FPGA設計流程—LED流水燈電路 51
4.1 FPGA設計流程 51
4.2 流水燈設計實例要求 54
4.3 讀懂電路原理圖 55
4.4 流水燈的設計輸入 57
4.4.1 建立FPGA工程 57
4.4.2 Verilog HDL程序輸入 59
4.5 程序文件下載 62
4.6 小結 64
第5章 從組合邏輯電路學起 65
5.1 從簡單的與非門電路開始 65
5.1.1 調用門級結構描述與非門 65
5.1.2 二合一的命名原則 66
5.1.3 用門級電路搭建一個投票電路 67
5.2 設計復雜一點的投票電路 68
5.2.1 門電路設計方法的短板 68
5.2.2 利用assign語句完成門電路功能 69
5.2.3 常用的if…else語句 71
5.2.4 reg與wire的用法區(qū)別 73
5.2.5 記住“<=”與“=”賦值的規(guī)則 74
5.2.6 非常重要的概念—信號位寬 75
5.2.7 行為級建模的5人投票電路 75
5.3 ModelSim仿真電路功能 76
5.3.1 4線-2線編碼器設計 77
5.3.2 建立ModelSim工程 78
5.3.3 設計測試激勵文件 79
5.3.4 查看ModelSim仿真波形 82
5.4 典型組合邏輯電路Verilog HDL設計 84
5.4.1 8421BCD編碼器電路 85
5.4.2 8線-3線優(yōu)先編碼器電路 86
5.4.3 74LS138譯碼器電路 88
5.4.4 與if…else語句齊名的case語句 90
5.4.5 數據分配器與數據選擇器電路 91
5.5 數碼管靜態(tài)顯示電路設計 93
5.5.1 數碼管的基本工作原理 93
5.5.2 實例需求及電路原理分析 94
5.5.3 數碼管顯示電路Verilog HDL設計 95
5.5.4 板載測試 97
5.6 小結 98
第6章 時序邏輯電路的靈魂—D觸發(fā)器 101
6.1 深入理解D觸發(fā)器 101
6.1.1 D觸發(fā)器產生一個時鐘周期的延時 101
6.1.2 D觸發(fā)器能工作的時鐘頻率分析 102
6.2 D觸發(fā)器的描述方法 104
6.2.1 單個D觸發(fā)器的Verilog HDL設計 104
6.2.2 異步復位的D觸發(fā)器 106
6.2.3 同步復位的D觸發(fā)器 108
6.2.4 時鐘使能的D觸發(fā)器 109
6.2.5 D觸發(fā)器的ModelSim仿真 111
6.2.6 其他形式的D觸發(fā)器 112
6.3 初試牛刀—邊沿檢測電路設計 113
6.3.1 邊沿檢測電路的功能描述 113
6.3.2 邊沿檢測電路的Verilog HDL設計 114
6.3.3 改進的邊沿檢測電路 115
6.4 連續(xù)序列檢測電路—邊沿檢測電路的升級 116
6.4.1 連續(xù)序列檢測電路設計 116
6.4.2 分析Verilog HDL并行語句 118
6.4.3 再論“<=”與“=”賦值 119
6.4.4 序列檢測電路的ModelSim仿真 121
6.5 任意序列檢測器—感受D觸發(fā)器的強大 124
6.5.1 完成飲料質量檢測電路功能設計 124
6.5.2 優(yōu)化檢測電路的設計代碼 128
6.6 小結 129
第7章 時序邏輯電路的精華—計數器 131
7.1 簡單的十六進制計數器 131
7.1.1 計數器設計 131
7.1.2 計數器就是加法器和觸發(fā)器 133
7.2 十進制計數器 134
7.2.1 具有復位及時鐘使能功能的計數器 134
7.2.2 討論計數器的進制 135
7.2.3 計數器代碼的花式寫法 136
7.3 計數器是流水燈的核心 137
7.3.1 設計一個秒信號 137
7.3.2 流水燈電路的設計方案 139
7.3.3 閃爍頻率可控制的流水燈 140
7.3.4 采用移位運算設計流水燈電路 142
7.4 Verilog的本質是并行語言 142
7.4.1 典型的Verilog錯誤用法—同一信號重復賦值 142
7.4.2 并行語言與順序語言 144
7.4.3 采用并行思維分析信號重復賦值問題 145
7.5 呼吸燈電路設計 146
7.5.1 呼吸燈的工作原理 146
7.5.2 設計思路分析 147
7.5.3 亮度實現模塊Verilog HDL設計 147
7.5.4 亮度控制模塊Verilog HDL設計 148
7.5.5 頂層模塊Verilog HDL設計 150
7.6 小結 151
第三篇 入門篇
第8章 設計簡潔美觀的秒表電路 155
8.1 設定一個目標—4位秒表電路 155
8.1.1 明確功能需求 155
8.1.2 形成設計方案 156
8.2 頂層文件的Verilog HDL設計 157
8.3 設計一個完善的數碼管顯示模塊 158
8.4 秒表計數模塊的Verilog HDL設計 160
8.4.1 秒表計數電路設計 160
8.4.2 秒表計數電路的ModelSim仿真 162
8.4.3 簡潔美觀的秒表計數器設計 163
8.4.4 實現秒表的啟停功能 166
8.5 按鍵消抖模塊的Verilog HDL設計 166
8.5.1 按鍵消抖產生的原理 166
8.5.2 按鍵消抖模塊Verilog HDL設計 167
8.5.3 將按鍵消抖模塊集成到秒表電路中 169
8.6 小結 169
第9章 數字密碼鎖電路設計 171
9.1 數字密碼鎖的功能描述 171
9.2 規(guī)劃好數字密碼鎖的功能模塊 172
9.2.1 數字密碼鎖總體結構框圖 172
9.2.2 數字密碼鎖的頂層模塊設計 172
9.3 數字密碼鎖功能子模塊設計 174
9.3.1 按鍵消抖模塊Verilog HDL設計 174
9.3.2 計數模塊Verilog HDL設計 175
9.3.3 密碼設置模塊才是核心模塊 176
9.4 小結 178
第10章 簡易電子琴電路設計 179
10.1 音符產生原理 179
10.2 琴鍵功能電路設計 180
10.2.1 頂層模塊設計 180
10.2.2 琴鍵模塊設計 182
10.2.3 音符產生模塊設計 183
10.3 自動演奏樂曲《梁?!?185
10.3.1 自動演奏樂曲的原理 185
10.3.2 自動演奏樂曲《梁?!菲?186
10.4 完整的電子琴電路設計 189
10.5 小結 190
第11章 應用廣泛的串口通信電路 191
11.1 RS-232串口通信的概念 191
11.2 串口硬件電路原理分析 192
11.3 串口通信電路Verilog HDL設計 193
11.3.1 頂層文件的Verilog HDL設計 193
11.3.2 時鐘模塊的Verilog HDL設計 195
11.3.3 接收模塊的Verilog HDL設計 196
11.3.4 發(fā)送模塊的Verilog HDL設計 198
11.3.5 FPGA實現及板載測試 199
11.4 采用串口控制秒表電路 201
11.4.1 設計需求分析 201
11.4.2 頂層文件的Verilog HDL設計 202
11.4.3 秒表時間獲取模塊Verilog HDL設計 204
11.4.4 完善秒表電路頂層模塊Verilog HDL代碼 205
11.4.5 完善秒表計數模塊Verilog HDL代碼 207
11.4.6 FPGA實現及板載測試 210
11.5 小結 210
第12章 對狀態(tài)機的討論 211
12.1 有限狀態(tài)機的概念 211
12.2 狀態(tài)機的Verilog設計方法 212
12.2.1 一段式狀態(tài)機Verilog代碼 212
12.2.2 二段式狀態(tài)機Verilog代碼 213
12.2.3 三段式狀態(tài)機Verilog HDL代碼 215
12.3 計數器電路的狀態(tài)機描述方法 216
12.4 序列檢測器的狀態(tài)機描述方法 218
12.5 小結 221
第四篇 提高篇
第13章 基本的時序約束方法 225
13.1 電路的速度極限 225
13.2 時序約束方法 227
13.2.1 查看計數器的邏輯電路結構 227
13.2.2 計數器電路添加時鐘周期約束 229
13.3 速度與面積的取舍 231
13.3.1 多路加法器電路的結構分析 231
13.3.2 流水線操作的本質—討論多路加法器的運行速度 233
13.3.3 用一個加法器完成4路加法 235
13.3.4 串行加法器時序分析 238
13.4 小結 238
第14章 采用IP核設計 241
14.1 FPGA設計中的“拿來主義”—使用IP核 241
14.1.1 IP核的一般概念 241
14.1.2 FPGA設計中的IP核類型 242
14.2 時鐘IP核 244
14.2.1 全局時鐘資源 244
14.2.2 采用時鐘IP核生成多路時鐘信號 244
14.3 乘法器IP核 248
14.3.1 乘法器IP核參數的設置 248
14.3.2 乘法器IP核的功能仿真 250
14.4 存儲器IP核 251
14.4.1 ROM核 251
14.4.2 RAM核 255
14.5 小結 260
第15章 采用在線邏輯分析儀調試程序 261
15.1 在線邏輯分析儀的優(yōu)勢 261
15.2 GAO的使用流程 262
15.3 采用GAO調試串口通信程序 263
15.3.1 調試目的 263
15.3.2 添加GAO到項目中 263
15.3.3 設置觸發(fā)信號及觸發(fā)條件 264
15.3.4 設置捕獲信號參數 265
15.3.5 觀察串口收發(fā)信號波