基本介紹
- 書名:VHDL數字設計與計算機設計基礎
- 作者:Richard S. Sandige、Michael L. Sandige
- ISBN:9787302394440
- 定價:99元
- 出版社:清華大學出版社
- 出版時間:2015年11月
內容簡介,圖書目錄,
內容簡介
在數字設計所涵蓋的章節中,第1章介紹布爾代數的相關知識,引入通用的硬體描述語言VHDL來描述簡單的組合邏輯電路,以便讀者可以根據需要使用來自不同公司的VHDL工具。第祝殼提2章簡述數位訊號與模擬信號的不同,介紹了二進制數制轉換方法和二境才埋進制碼制,並給出了利用卡諾圖進行組合邏輯化簡的方法。第3章和第4章詳細介紹組合承漿愚邏輯電路的分析和設計方法,以及用只體海危VHDL如何設計此類電路。第5章和第6章給出了雙穩態存儲器和簡單有限狀態機等時序邏輯電路的VHDL設計方法。第7章給出雅煉凶盼了計算機設計所涉及的基本電路,特別是加法器電路。第8章給出了採用可程式邏輯器件和多路選擇器樹結構的電路實現技術。第9章介紹了用VHDL設計複雜有限狀態機的方法。
計算機設計部分所涵蓋的章節分成兩部分:第10~17章詳細介紹VBC1(非常基本計算機1)的指令、模組和系統設計,第18章和第19章則在VBC1的基礎之上,設計了更為複雜的VBC1-E。
除此之外,本書的附錄A詳細介紹了讀者學習本書時的34個設計實驗,附錄B至附錄E給出了完成附錄A的設計實驗所需的仿真方法、管腳綁定、EASY1工具和將指令載入到存儲器中的方法。
本書第1~4章由清華大學電子系羅嶸翻譯,第5~7章由王聰翻譯,第8~11章由汪玉翻譯,第嫌影12~16章由單羿翻譯,第17~25章由王子龍翻譯,附錄A至附錄E由王文強翻譯,全書由羅嶸審校。
圖書目錄
第1章 布爾代數、布爾函式、VHDL和門 1
1.1 引言 1
1.2 布爾代數基礎 1
1.2.1 維恩圖 2
1.2.2 布爾函式的黑盒子 3
1.2.3 基本邏輯符號 4
1.2.4 布爾代數公理 6
1.2.5 布爾代數定理 7
1.2.6 布爾代數定理的證明 8
1.3 從真值表推導出布爾函式 9
1.3.1 用函式的1值推導出布爾函式 10
1.3.2 用函式的0值推導出布爾函式 11
1.3.3 用最小項和最大項推導出布爾函式 11
1.4 簡單門函式的VHDL設計 14
1.4.1 NOT函式的VHDL設計 14
1.4.2 AND函洪譽趨數的VHDL設計 16
1.4.3 OR函式的VHDL設計 17
1.4.4 XOR函式的VHDL設計 19
1.4.5 NAND函式的VHDL設計 20
1.4.6 NOR函式的VHDL設計 22
1.4.7 XNOR函式的VHDL設計 23
1.4.8 BUFFER函式的VHDL設計 25
1.4.9 用標準形式給出的任意布爾函式的VHDL設計 27
1.5 有關邏輯門的更多內容 29
1.5.1 等價門符號 29
1.5.2 全功能門 30
1.5.3 等價門電路 30
1.5.4 門的簡化描述名稱 31
1.5.5 門的國際邏輯符號 32
習題 33
第2章 數制轉換、碼制和函式最簡化 39
2.1 引言 39
2.2 數字電路與模擬電路 39
2.2.1 人類心臟的數位化信號 39
2.2.2 離散信號與連續信號 39
2.3 二進制數制轉換 40
2.3.1 十進制數、二進制數、八進制數和十六進制數 40
2.3.2 轉換技術 42
2.4 二進制碼制 46
2.4.1 小鍵盤和鍵盤的最少比特表示 47
2.4.2 常見碼制:BCD、ASCII以及其他 47
2.4.3 二進制和反射格雷碼之間的模2加法和轉換 50
2.4.4 七段碼 52
2.4.5 字母顯示系統的VHDL設計 53
2.5 卡諾圖化簡方法 56
2.5.1 卡諾圖資源管理器 56
2.5.2 使用兩變數卡諾圖 57
2.5.3 使用三變數卡諾圖 59
2.5.4 使用四變數卡諾圖 61
2.5.5 無關的輸出 63
習題 65
第3章 邏輯電路分析和設計簡介 73
3.1 引言 73
3.2 積體電路器件 73
3.3 分析和設計邏輯電路 74
3.3.1 分析和設計繼電器邏輯電路 75
3.3.2 分析IC邏輯電路 76
3.3.3 設計IC邏輯電路 77
3.4 生成詳細的原理圖 80
3.5 用與非/與非和或非/或非形式設計電路 82
3.6 傳輸延時 84
3.7 解碼器 86
3.7.1 用解碼器和單個門設計邏輯電路 88
3.8 多路選擇器 91
3.8.1 用多路選擇器設計邏輯電路 93
3.9 險象 95
3.9.1 功能險象 95
3.9.2 邏輯險象 96
習題 97
第4章 用VHDL實現組合邏輯電路的設計 103
4.1 引言 103
4.2 VHDL 103
4.3 庫組成 104
4.4 實體聲明 105
4.5 結構體聲明 106
4.5.1 數據流設計風格評價 107
4.5.2 行為設計風格評價 107
4.5.3 結構設計風格評價 107
4.6 數據流設計風格 107
4.7 行為設計風格 111
4.8 結構設計風格 116
4.9 用連線和匯流排實現 122
4.10 VHDL設計實例 126
??4.10.1 用標量輸入和輸出設計 126
??4.10.2 用向量輸入和輸出設計 128
??4.10.3 通用VHDL架構 130
習題 131
第4章 雙穩態存儲器件的VHDL設計 138
5.1 引言 138
5.2 S-R NOR鎖存器分析 138
5.2.1 簡單的電燈開關 138
5.2.2 S-R NOR鎖存器的電路延遲模型 140
5.2.3 S-R NOR鎖存器的特性表 141
5.2.4 S-R NOR鎖存器的特徵方程 141
5.2.5 S-R NOR 鎖存器的PS/NS表 142
5.2.6 S-R NOR鎖存器的時序圖 143
5.3 S-R NAND鎖存器分析 145
5.3.1 S-R NAND鎖存器電路延遲模型 145
5.3.2 S-R NAND鎖存器的特性表 146
5.3.3 S-R NAND鎖存器的特徵方程 146
5.3.4 S-R NAND鎖存器的PS/NS表 146
5.3.5 S-R NAND鎖存器的時序圖 147
5.4 設計一個簡單的時鐘 148
5.5 設計一個D鎖存器 151
5.5.1 門控S-R鎖存器電路設計 151
5.5.2 用S-R鎖存器設計D鎖存器電路 152
5.5.3 利用D鎖存器的特性表來設計D鎖存器電路 153
5.5.4 D鎖存器的時序圖 154
5.5.5 用D鎖存器構造一個時鐘 156
5.5.6 構造一個8比特的D鎖存器 156
5.6 設計D觸發器電路 157
5.6.1 設計主從型D觸發器電路 157
5.6.2 用S-R NAND設計D觸發器 161
5.6.3 上升沿觸發的D觸發器的時序圖 164
習題 166
第6章 用VHDL設計簡單的有限狀態機 173
6.1 引言 173
6.2 同步電路 173
6.3 用VHDL構造一個D型觸發器 174
6.4 設計簡單的同步電路 176
6.5 用算法公式法設計計數器 176
6.6 用算法公式法設計非傳統計數器 184
6.7 用算術法設計計數器 188
6.8 分頻(降低一個快時鐘的頻率) 189
6.9 用PS/NS表格法設計計數器 192
6.10 用PS/NS表格法設計非傳統計數器 195
習題 197
第7章 計算機電路 207
7.1 引言 207
7.2 三態輸出與斷開狀態 207
7.3 微型計算機系統的數據匯流排共享 210
7.4 深入了解XOR和XNOR符號及功能 213
7.4.1 奇函式和偶函式 215
7.4.2 單比特錯誤檢測系統 216
7.4.3 比較器和大於電路 218
7.5 加法器設計 221
7.5.1 半加器模組的設計 221
7.5.2 全加器模組的設計 222
7.6 設計及使用行波進位加法器和減法器 224
7.7 行波進位加法器的傳播延遲時間 227
7.8 設計超前進位加法器 227
7.9 超前進位加法器的傳播延遲時間 230
習題 231
第8章 電路實現技術 236
8.1 引言 236
8.2 可程式邏輯器件 236
8.2.1 可程式唯讀存儲器(PROM)和查找表(LUT) 238
8.2.2 可程式邏輯陣列(PLA) 239
8.2.3 可程式陣列邏輯(PAL)或者通用陣列邏輯(GAL) 240
8.2.4 使用PROM或者LUT進行電路設計 241
8.2.5 使用PLA進行電路設計 242
8.2.6 使用PAL或者GAL進行電路設計 243
8.3 正邏輯規則和直接極性標誌 244
8.3.1 信號名稱 244
8.3.2 PLC和DPI系統的等效電路分析 245
8.4 更多關於多路選擇器和數據分路器的內容 247
8.4.1 MUX樹設計 249
8.4.2 DMUX樹設計 250
習題 250
第9章 複雜有限狀態機的VHDL設計 255
9.1 引言 255
9.2 基於雙進程PS/NS方法的設計 256
9.3 CPLD、FPGA和狀態機編碼風格淺析 260
9.4 有限狀態機模型總結 262
9.5 利用摩爾輸出設計緊湊編碼狀態機 264
9.6 利用摩爾輸出設計單熱點編碼的狀態機 266
9.7 利用摩爾和米利輸出設計緊湊編碼狀態機 270
9.8 利用摩爾和米利輸出設計單熱點編碼狀態機 273
9.9 利用算法公式法設計複雜狀態機 275
9.10 提高複雜狀態機的可靠性 281
9.11 其他狀態機設計方法 285
9.11.1 雙分配PS/NS方法 285
9.11.2 混合PS/NS方法 289
習題 292
第10章 基本的計算機體系結構 311
10.1 引言 311
10.2 通用數據處理系統或計算機 311
10.3 哈佛型計算機和RISC體系結構 312
10.4 普林斯頓(馮·諾依曼)型計算機和CISC體系結構 314
10.5 VBC1概述 315
10.6 VBC1設計原理 316
10.7 VBC1編程器暫存器模型 318
10.8 VBC1指令集體系結構 319
10.9 彙編語言程式的編寫格式 321
習題 322
第11章 VBC1的彙編語言編程 325
11.1 引言 325
11.2 VBC1指令集 325
11.3 IN指令 325
11.4 OUT指令 329
11.5 MOV指令 331
11.6 LOADI指令 333
11.7 ADDI指令 334
11.8 ADD指令 336
11.9 SR0指令 338
11.10 JNZ指令 339
11.11 VBC1編程實例和技術 342
11.11.1 無條件跳轉 342
11.11.2 標籤 342
11.11.3 循環計數器 342
11.11.4 程式“橫行” 343
11.11.5 減法指令 344
11.11.6 乘法指令 345
11.11.7 除法指令 345
習題 346
第12章 設計輸入輸出電路 351
12.1 引言 351
12.2 設計仲裁電路 351
12.3 設計匯流排仲裁電路 353
12.4 設計可載入暫存器電路 354
12.5 設計輸入電路 356
12.5.1 設計由4個滑動開關驅動的輸入電路 358
12.6 設計輸出電路 359
12.6.1 設計驅動4個LED的輸出電路 360
12.6.2 設計一個可以驅動七段顯示器的輸出電路 362
12.6.3 仔細觀察顯示0的電路 364
12.7 結合輸入輸出電路搭建一個簡單I/O系統 365
12.8 可選的VHDL設計風格 368
習題 369
第13章 設計指令存儲器、載入程式計數器和去抖動電路 372
13.1 引言 372
13.2 設計一個指令存儲器 372
13.2.1 指令存儲器的代碼變形 375
13.2.2 在啟動階段初始化VBC1的指令存儲器 377
13.3 設計一個載入程式計數器 380
13.4 設計一個去抖動單脈衝電路 382
13.5 設計去抖動單脈衝電路的驗證電路 385
習題 393
第14章 設計多路顯示系統 396
14.1 引言 396
14.2 4個七段LED顯示器構成的多路顯示系統 396
14.3 用VHDL設計多路顯示系統 399
14.3.1 設計模組1:四選一MUX陣列 399
14.3.2 設計模組2:十六進制顯示解碼器 400
14.3.3 設計模組3:2比特計數器和分頻器 401
14.3.4 設計模組4:2-4線解碼器 403
14.4 用平面設計方法設計多路顯示系統 404
14.5 用層次化設計方法設計多路顯示系統 407
14.6 利用平面設計方法設計一個字元顯示系統 413
習題 418
第15章 設計指令解碼器 421
15.1 引言 421
15.2 指令解碼器設計目標 421
15.3 指令IN、OUT和MOV的指令解碼器真值表 422
15.4 設計指令IN的指令解碼器 424
15.5 設計指令OUT和MOV的指令解碼器 425
15.6 指令LOADI的指令解碼器真值表 426
15.7 指令ADDI的指令解碼器真值表 427
15.8 指令ADD的指令解碼器真值表 428
15.9 指令SR0的指令解碼器真值表 428
15.10 設計指令SR0的指令解碼器 429
15.11 JNZ指令解碼器真值表 430
15.12 設計指令JNZ的指令解碼器 433
15.13 設計VBC1的指令解碼器 434
習題 435
第16章 設計算術邏輯單元 440
16.1 引言 440
16.2 算術邏輯單元的使用 440
16.3 設計ALU的LOADI指令部分 442
16.4 設計ALU的ADDI指令部分 442
16.5 設計ALU的ADD指令部分 443
16.6 設計ALU的SR0指令部分 444
16.7 設計一個用於VBC1的ALU 445
16.8 用VHDL設計的附加電路 445
16.8.1 設計額外的ALU電路 445
16.8.2 設計移位電路 448
16.8.3 設計桶形移位電路 452
16.8.4 設計移位暫存器電路 455
習題 457
第17章 完成VBC1的設計 460
17.1 引言 460
17.2 設計一個運行程式計數器 460
17.3 將載入程式計數器與運行程式計數器結合起來 463
17.4 設計運行頻率電路和速度電路 465
17.5 設計VBC1的指令存儲器的載入電路 467
習題 468
第18章 VBC1-E的彙編語言編程 470
18.1 引言 470
18.2 指令總結 470
18.3 輸入、輸出與中斷指令 472
18.4 數據存儲指令 477
18.5 算術指令與邏輯指令 480
18.6 移位指令與循環移位指令 482
18.7 跳轉指令、相對跳轉指令與暫停指令 485
18.8 關於中斷與彙編器命令的更多內容 489
18.9 VBC1-E完整指令集總結 494
習題 495
第19章 設計VBC1-E的輸入輸出電路 506
19.1 引言 506
19.2 VBC1-E的輸入電路設計 506
19.3 VBC1-E的修改後IN指令的指令解碼真值表 508
19.4 VBC1-E的輸出電路設計 510
19.5 VBC1-E的修改後OUT指令的指令解碼真值表 512
19.6 VBC1-E的修改後IN和OUT 指令的指令解碼器設計 515
19.7 VBC1-E的LOADI、ADDI和JNZ指令的指令解碼器設計 516
習題 517
第20章 設計VBC1-E的數據存儲器電路 520
20.1 引言 520
20.2 設計VBC1-E的數據存儲器 520
20.3 設計VBC1-E的暫存器和數據選擇電路 524
20.4 VBC1-E的STORE和FETCH指令的指令解碼器真值表 525
20.5 設計VBC1-E的STORE和FETCH指令的指令解碼器 527
20.6 設計VBC1-E的MOV指令的指令解碼器 528
習題 529
第21章 設計VBC1-E的算術、邏輯、移位、旋轉和無條件跳轉電路 531
21.1 引言 531
21.2 VBC1-E ALU的算術和邏輯指令部分設計 531
21.3 VBC1-E的算術和邏輯指令解碼器設計 533
21.4 VBC1-E ALU的移位和旋轉指令部分設計 534
21.5 VBC1-E的移位和旋轉指令解碼器設計 536
21.6 VBC1-E的JMP和JMPR電路設計 537
21.7 VBC1-E的JMP和JMPR指令解碼器設計 538
習題 539
第22章 設計VBC1-E中手動載入時阻止程式執行的電路 542
22.1 引言 542
22.2 設計VBC1-E中修改手動載入的電路 542
22.3 修改手動載入時VBC1-E中的指令解碼器 544
習題 544
第23章 設計VBC1-E的擴展指令存儲器 545
23.1 引言 545
23.2 為VBC1-E修改指令存儲器以增加擴展指令存儲器 545
23.3 為VBC1-E修改運行程式計數器電路 548
23.4 為VBC1-E修改合理地址電路 550
23.5 為VBC1-E修改載入程式計數器電路 550
23.6 為VBC1-E修改JMPR電路 551
習題 551
第24章 設計VBC1-E的軟體中斷電路 554
24.1 引言 554
24.2 設計VBC1-E的運行程式計數器與選擇電路的改進電路 554
24.3 設計VBC1-E的存儲PCPLUS1的電路 558
24.4 VBC1-E的INT和IRET指令的指令解碼器真值表 560
24.5 設計VBC1-E的INT和IRET指令的指令解碼器 561
習題 562
第25章 完成VBC1-E的設計 566
25.1 引言 566
25.2 設計VBC1-E的去抖動單脈衝觸發中斷電路並修改RPC電路 566
25.3 設計VBC1-E的RETA信號的顯示電路 570
25.4 設計VBC1-E的提供指令存儲器的載入器功能的電路 575
習題 575
附錄A 實驗案例 578
實驗1A:門電路的設計與仿真 578
實驗1B:完成設計流程 584
實驗2:鍵盤編碼系統的設計與測試 589
實驗3:門電路檢驗系統的設計與測試 592
實驗4:自定義十進制顯示解碼系統的設計與測試 596
實驗5A:D鎖存器與帶CLR輸入的D觸發器的設計與測試 599
實驗5B:8位暫存器及帶PRE輸入的D觸發器的設計與測試 603
實驗6A:簡單計數系統的設計與測試——8位單熱遞增計數器 607
實驗6B:簡單計數器系統的設計與測試——兩位格雷碼計數器 611
實驗6C:簡單非常規計數系統的設計與測試——機器眼電路 614
實驗6D:簡單非常規計數系統的設計與測試——笑臉電路 618
實驗7A:用平面設計方法進行簡單錯誤系統的設計與測試 621
實驗7B:用層次化設計方法進行簡單4位加減系統的設計與測試 626
實驗8:利用平面設計方法進行LUT系統的設計與測試 628
實驗9A:用平面設計方法進行單熱遞增/遞減計數系統的設計與測試 633
實驗9B:用層次化設計方法進行十狀態計數系統的設計與測試 637
實驗10:VBC1系統EASY1(編輯器/彙編器/仿真器)的使用 641
實驗11:用EASY1編寫和仿真VBC1程式 645
實驗12:VBC1系統的設計與測試(數據通路單元) 648
實驗13:VBC1系統的設計與測試(指令存儲單元) 653
實驗14:VBC1系統的設計與測試(顯示系統) 656
實驗15:VBC1系統的設計與測試(指令解碼器) 660
實驗16:VBC1系統的設計與測試(算術邏輯單元) 663
實驗17:VBC1系統的設計與測試(最終設計) 668
實驗17L:設計VBC1系統的指令載入器 673
實驗18:在VBC1系統上編寫並運行彙編程式 679
實驗19:VBC1-E的設計與測試(IN、OUT和未修改的指令) 682
實驗20:VBC1-E系統的設計與測試(數據轉移和訪存指令) 687
實驗21:VBC1-E系統的設計與測試(大部分指令) 692
實驗22:VBC1-E系統的設計與測試(添加手動載入電路) 697
實驗23:VBC1-E系統的設計與測試(添加擴展指令存儲器) 700
實驗24:VBC1-E系統的設計與測試(實現INT和IRET指令) 704
實驗25:VBC1-E系統的設計與測試(最終設計) 708
實驗25L:VBC1-E指令載入器的設計 713
附錄B 用VHDL測試平台程式進行仿真 721
B.1 簡介 721
B.2 例1:組合邏輯設計(工程:AND_3) 721
B.3 例2:同步時序邏輯設計(工程:DFF) 725
附錄C FPGA管腳連線關係查詢手冊 729
C.1 BASYS 2開發板 729
C.2 NEXYS 2開發板 730
C.3 BASYS 2及NEXYS 2開發板上FPGA存儲載入器的管腳接口 731
C.4 FX2MIB(模組轉接板)——NEXYS 2外加電路板 732
附錄D EASY1教程 733
D.1 簡介 733
D.2 EASY1用戶界面 733
D.3 EASY1界面布局 733
D.4 如何使用EASY1 735
D.5 例1:簡單輸入輸出程式 735
D.6 例2:修改後能夠一直執行的輸入輸出程式 741
D.7 例3:簡單狀態機程式 742
D.8 例4:複雜狀態機程式 742
D.9 例5:產生延時 744
D.10 用EASY1產生VBC1平台的機器碼 746
附錄E 將指令載入到存儲器中的三種方法 747
E.1 手動載入存儲器 747
E.2 在啟動時初始化存儲器內容 748
E.3 通過存儲器載入程式載入存儲器 749
1.5.1 等價門符號 29
1.5.2 全功能門 30
1.5.3 等價門電路 30
1.5.4 門的簡化描述名稱 31
1.5.5 門的國際邏輯符號 32
習題 33
第2章 數制轉換、碼制和函式最簡化 39
2.1 引言 39
2.2 數字電路與模擬電路 39
2.2.1 人類心臟的數位化信號 39
2.2.2 離散信號與連續信號 39
2.3 二進制數制轉換 40
2.3.1 十進制數、二進制數、八進制數和十六進制數 40
2.3.2 轉換技術 42
2.4 二進制碼制 46
2.4.1 小鍵盤和鍵盤的最少比特表示 47
2.4.2 常見碼制:BCD、ASCII以及其他 47
2.4.3 二進制和反射格雷碼之間的模2加法和轉換 50
2.4.4 七段碼 52
2.4.5 字母顯示系統的VHDL設計 53
2.5 卡諾圖化簡方法 56
2.5.1 卡諾圖資源管理器 56
2.5.2 使用兩變數卡諾圖 57
2.5.3 使用三變數卡諾圖 59
2.5.4 使用四變數卡諾圖 61
2.5.5 無關的輸出 63
習題 65
第3章 邏輯電路分析和設計簡介 73
3.1 引言 73
3.2 積體電路器件 73
3.3 分析和設計邏輯電路 74
3.3.1 分析和設計繼電器邏輯電路 75
3.3.2 分析IC邏輯電路 76
3.3.3 設計IC邏輯電路 77
3.4 生成詳細的原理圖 80
3.5 用與非/與非和或非/或非形式設計電路 82
3.6 傳輸延時 84
3.7 解碼器 86
3.7.1 用解碼器和單個門設計邏輯電路 88
3.8 多路選擇器 91
3.8.1 用多路選擇器設計邏輯電路 93
3.9 險象 95
3.9.1 功能險象 95
3.9.2 邏輯險象 96
習題 97
第4章 用VHDL實現組合邏輯電路的設計 103
4.1 引言 103
4.2 VHDL 103
4.3 庫組成 104
4.4 實體聲明 105
4.5 結構體聲明 106
4.5.1 數據流設計風格評價 107
4.5.2 行為設計風格評價 107
4.5.3 結構設計風格評價 107
4.6 數據流設計風格 107
4.7 行為設計風格 111
4.8 結構設計風格 116
4.9 用連線和匯流排實現 122
4.10 VHDL設計實例 126
??4.10.1 用標量輸入和輸出設計 126
??4.10.2 用向量輸入和輸出設計 128
??4.10.3 通用VHDL架構 130
習題 131
第4章 雙穩態存儲器件的VHDL設計 138
5.1 引言 138
5.2 S-R NOR鎖存器分析 138
5.2.1 簡單的電燈開關 138
5.2.2 S-R NOR鎖存器的電路延遲模型 140
5.2.3 S-R NOR鎖存器的特性表 141
5.2.4 S-R NOR鎖存器的特徵方程 141
5.2.5 S-R NOR 鎖存器的PS/NS表 142
5.2.6 S-R NOR鎖存器的時序圖 143
5.3 S-R NAND鎖存器分析 145
5.3.1 S-R NAND鎖存器電路延遲模型 145
5.3.2 S-R NAND鎖存器的特性表 146
5.3.3 S-R NAND鎖存器的特徵方程 146
5.3.4 S-R NAND鎖存器的PS/NS表 146
5.3.5 S-R NAND鎖存器的時序圖 147
5.4 設計一個簡單的時鐘 148
5.5 設計一個D鎖存器 151
5.5.1 門控S-R鎖存器電路設計 151
5.5.2 用S-R鎖存器設計D鎖存器電路 152
5.5.3 利用D鎖存器的特性表來設計D鎖存器電路 153
5.5.4 D鎖存器的時序圖 154
5.5.5 用D鎖存器構造一個時鐘 156
5.5.6 構造一個8比特的D鎖存器 156
5.6 設計D觸發器電路 157
5.6.1 設計主從型D觸發器電路 157
5.6.2 用S-R NAND設計D觸發器 161
5.6.3 上升沿觸發的D觸發器的時序圖 164
習題 166
第6章 用VHDL設計簡單的有限狀態機 173
6.1 引言 173
6.2 同步電路 173
6.3 用VHDL構造一個D型觸發器 174
6.4 設計簡單的同步電路 176
6.5 用算法公式法設計計數器 176
6.6 用算法公式法設計非傳統計數器 184
6.7 用算術法設計計數器 188
6.8 分頻(降低一個快時鐘的頻率) 189
6.9 用PS/NS表格法設計計數器 192
6.10 用PS/NS表格法設計非傳統計數器 195
習題 197
第7章 計算機電路 207
7.1 引言 207
7.2 三態輸出與斷開狀態 207
7.3 微型計算機系統的數據匯流排共享 210
7.4 深入了解XOR和XNOR符號及功能 213
7.4.1 奇函式和偶函式 215
7.4.2 單比特錯誤檢測系統 216
7.4.3 比較器和大於電路 218
7.5 加法器設計 221
7.5.1 半加器模組的設計 221
7.5.2 全加器模組的設計 222
7.6 設計及使用行波進位加法器和減法器 224
7.7 行波進位加法器的傳播延遲時間 227
7.8 設計超前進位加法器 227
7.9 超前進位加法器的傳播延遲時間 230
習題 231
第8章 電路實現技術 236
8.1 引言 236
8.2 可程式邏輯器件 236
8.2.1 可程式唯讀存儲器(PROM)和查找表(LUT) 238
8.2.2 可程式邏輯陣列(PLA) 239
8.2.3 可程式陣列邏輯(PAL)或者通用陣列邏輯(GAL) 240
8.2.4 使用PROM或者LUT進行電路設計 241
8.2.5 使用PLA進行電路設計 242
8.2.6 使用PAL或者GAL進行電路設計 243
8.3 正邏輯規則和直接極性標誌 244
8.3.1 信號名稱 244
8.3.2 PLC和DPI系統的等效電路分析 245
8.4 更多關於多路選擇器和數據分路器的內容 247
8.4.1 MUX樹設計 249
8.4.2 DMUX樹設計 250
習題 250
第9章 複雜有限狀態機的VHDL設計 255
9.1 引言 255
9.2 基於雙進程PS/NS方法的設計 256
9.3 CPLD、FPGA和狀態機編碼風格淺析 260
9.4 有限狀態機模型總結 262
9.5 利用摩爾輸出設計緊湊編碼狀態機 264
9.6 利用摩爾輸出設計單熱點編碼的狀態機 266
9.7 利用摩爾和米利輸出設計緊湊編碼狀態機 270
9.8 利用摩爾和米利輸出設計單熱點編碼狀態機 273
9.9 利用算法公式法設計複雜狀態機 275
9.10 提高複雜狀態機的可靠性 281
9.11 其他狀態機設計方法 285
9.11.1 雙分配PS/NS方法 285
9.11.2 混合PS/NS方法 289
習題 292
第10章 基本的計算機體系結構 311
10.1 引言 311
10.2 通用數據處理系統或計算機 311
10.3 哈佛型計算機和RISC體系結構 312
10.4 普林斯頓(馮·諾依曼)型計算機和CISC體系結構 314
10.5 VBC1概述 315
10.6 VBC1設計原理 316
10.7 VBC1編程器暫存器模型 318
10.8 VBC1指令集體系結構 319
10.9 彙編語言程式的編寫格式 321
習題 322
第11章 VBC1的彙編語言編程 325
11.1 引言 325
11.2 VBC1指令集 325
11.3 IN指令 325
11.4 OUT指令 329
11.5 MOV指令 331
11.6 LOADI指令 333
11.7 ADDI指令 334
11.8 ADD指令 336
11.9 SR0指令 338
11.10 JNZ指令 339
11.11 VBC1編程實例和技術 342
11.11.1 無條件跳轉 342
11.11.2 標籤 342
11.11.3 循環計數器 342
11.11.4 程式“橫行” 343
11.11.5 減法指令 344
11.11.6 乘法指令 345
11.11.7 除法指令 345
習題 346
第12章 設計輸入輸出電路 351
12.1 引言 351
12.2 設計仲裁電路 351
12.3 設計匯流排仲裁電路 353
12.4 設計可載入暫存器電路 354
12.5 設計輸入電路 356
12.5.1 設計由4個滑動開關驅動的輸入電路 358
12.6 設計輸出電路 359
12.6.1 設計驅動4個LED的輸出電路 360
12.6.2 設計一個可以驅動七段顯示器的輸出電路 362
12.6.3 仔細觀察顯示0的電路 364
12.7 結合輸入輸出電路搭建一個簡單I/O系統 365
12.8 可選的VHDL設計風格 368
習題 369
第13章 設計指令存儲器、載入程式計數器和去抖動電路 372
13.1 引言 372
13.2 設計一個指令存儲器 372
13.2.1 指令存儲器的代碼變形 375
13.2.2 在啟動階段初始化VBC1的指令存儲器 377
13.3 設計一個載入程式計數器 380
13.4 設計一個去抖動單脈衝電路 382
13.5 設計去抖動單脈衝電路的驗證電路 385
習題 393
第14章 設計多路顯示系統 396
14.1 引言 396
14.2 4個七段LED顯示器構成的多路顯示系統 396
14.3 用VHDL設計多路顯示系統 399
14.3.1 設計模組1:四選一MUX陣列 399
14.3.2 設計模組2:十六進制顯示解碼器 400
14.3.3 設計模組3:2比特計數器和分頻器 401
14.3.4 設計模組4:2-4線解碼器 403
14.4 用平面設計方法設計多路顯示系統 404
14.5 用層次化設計方法設計多路顯示系統 407
14.6 利用平面設計方法設計一個字元顯示系統 413
習題 418
第15章 設計指令解碼器 421
15.1 引言 421
15.2 指令解碼器設計目標 421
15.3 指令IN、OUT和MOV的指令解碼器真值表 422
15.4 設計指令IN的指令解碼器 424
15.5 設計指令OUT和MOV的指令解碼器 425
15.6 指令LOADI的指令解碼器真值表 426
15.7 指令ADDI的指令解碼器真值表 427
15.8 指令ADD的指令解碼器真值表 428
15.9 指令SR0的指令解碼器真值表 428
15.10 設計指令SR0的指令解碼器 429
15.11 JNZ指令解碼器真值表 430
15.12 設計指令JNZ的指令解碼器 433
15.13 設計VBC1的指令解碼器 434
習題 435
第16章 設計算術邏輯單元 440
16.1 引言 440
16.2 算術邏輯單元的使用 440
16.3 設計ALU的LOADI指令部分 442
16.4 設計ALU的ADDI指令部分 442
16.5 設計ALU的ADD指令部分 443
16.6 設計ALU的SR0指令部分 444
16.7 設計一個用於VBC1的ALU 445
16.8 用VHDL設計的附加電路 445
16.8.1 設計額外的ALU電路 445
16.8.2 設計移位電路 448
16.8.3 設計桶形移位電路 452
16.8.4 設計移位暫存器電路 455
習題 457
第17章 完成VBC1的設計 460
17.1 引言 460
17.2 設計一個運行程式計數器 460
17.3 將載入程式計數器與運行程式計數器結合起來 463
17.4 設計運行頻率電路和速度電路 465
17.5 設計VBC1的指令存儲器的載入電路 467
習題 468
第18章 VBC1-E的彙編語言編程 470
18.1 引言 470
18.2 指令總結 470
18.3 輸入、輸出與中斷指令 472
18.4 數據存儲指令 477
18.5 算術指令與邏輯指令 480
18.6 移位指令與循環移位指令 482
18.7 跳轉指令、相對跳轉指令與暫停指令 485
18.8 關於中斷與彙編器命令的更多內容 489
18.9 VBC1-E完整指令集總結 494
習題 495
第19章 設計VBC1-E的輸入輸出電路 506
19.1 引言 506
19.2 VBC1-E的輸入電路設計 506
19.3 VBC1-E的修改後IN指令的指令解碼真值表 508
19.4 VBC1-E的輸出電路設計 510
19.5 VBC1-E的修改後OUT指令的指令解碼真值表 512
19.6 VBC1-E的修改後IN和OUT 指令的指令解碼器設計 515
19.7 VBC1-E的LOADI、ADDI和JNZ指令的指令解碼器設計 516
習題 517
第20章 設計VBC1-E的數據存儲器電路 520
20.1 引言 520
20.2 設計VBC1-E的數據存儲器 520
20.3 設計VBC1-E的暫存器和數據選擇電路 524
20.4 VBC1-E的STORE和FETCH指令的指令解碼器真值表 525
20.5 設計VBC1-E的STORE和FETCH指令的指令解碼器 527
20.6 設計VBC1-E的MOV指令的指令解碼器 528
習題 529
第21章 設計VBC1-E的算術、邏輯、移位、旋轉和無條件跳轉電路 531
21.1 引言 531
21.2 VBC1-E ALU的算術和邏輯指令部分設計 531
21.3 VBC1-E的算術和邏輯指令解碼器設計 533
21.4 VBC1-E ALU的移位和旋轉指令部分設計 534
21.5 VBC1-E的移位和旋轉指令解碼器設計 536
21.6 VBC1-E的JMP和JMPR電路設計 537
21.7 VBC1-E的JMP和JMPR指令解碼器設計 538
習題 539
第22章 設計VBC1-E中手動載入時阻止程式執行的電路 542
22.1 引言 542
22.2 設計VBC1-E中修改手動載入的電路 542
22.3 修改手動載入時VBC1-E中的指令解碼器 544
習題 544
第23章 設計VBC1-E的擴展指令存儲器 545
23.1 引言 545
23.2 為VBC1-E修改指令存儲器以增加擴展指令存儲器 545
23.3 為VBC1-E修改運行程式計數器電路 548
23.4 為VBC1-E修改合理地址電路 550
23.5 為VBC1-E修改載入程式計數器電路 550
23.6 為VBC1-E修改JMPR電路 551
習題 551
第24章 設計VBC1-E的軟體中斷電路 554
24.1 引言 554
24.2 設計VBC1-E的運行程式計數器與選擇電路的改進電路 554
24.3 設計VBC1-E的存儲PCPLUS1的電路 558
24.4 VBC1-E的INT和IRET指令的指令解碼器真值表 560
24.5 設計VBC1-E的INT和IRET指令的指令解碼器 561
習題 562
第25章 完成VBC1-E的設計 566
25.1 引言 566
25.2 設計VBC1-E的去抖動單脈衝觸發中斷電路並修改RPC電路 566
25.3 設計VBC1-E的RETA信號的顯示電路 570
25.4 設計VBC1-E的提供指令存儲器的載入器功能的電路 575
習題 575
附錄A 實驗案例 578
實驗1A:門電路的設計與仿真 578
實驗1B:完成設計流程 584
實驗2:鍵盤編碼系統的設計與測試 589
實驗3:門電路檢驗系統的設計與測試 592
實驗4:自定義十進制顯示解碼系統的設計與測試 596
實驗5A:D鎖存器與帶CLR輸入的D觸發器的設計與測試 599
實驗5B:8位暫存器及帶PRE輸入的D觸發器的設計與測試 603
實驗6A:簡單計數系統的設計與測試——8位單熱遞增計數器 607
實驗6B:簡單計數器系統的設計與測試——兩位格雷碼計數器 611
實驗6C:簡單非常規計數系統的設計與測試——機器眼電路 614
實驗6D:簡單非常規計數系統的設計與測試——笑臉電路 618
實驗7A:用平面設計方法進行簡單錯誤系統的設計與測試 621
實驗7B:用層次化設計方法進行簡單4位加減系統的設計與測試 626
實驗8:利用平面設計方法進行LUT系統的設計與測試 628
實驗9A:用平面設計方法進行單熱遞增/遞減計數系統的設計與測試 633
實驗9B:用層次化設計方法進行十狀態計數系統的設計與測試 637
實驗10:VBC1系統EASY1(編輯器/彙編器/仿真器)的使用 641
實驗11:用EASY1編寫和仿真VBC1程式 645
實驗12:VBC1系統的設計與測試(數據通路單元) 648
實驗13:VBC1系統的設計與測試(指令存儲單元) 653
實驗14:VBC1系統的設計與測試(顯示系統) 656
實驗15:VBC1系統的設計與測試(指令解碼器) 660
實驗16:VBC1系統的設計與測試(算術邏輯單元) 663
實驗17:VBC1系統的設計與測試(最終設計) 668
實驗17L:設計VBC1系統的指令載入器 673
實驗18:在VBC1系統上編寫並運行彙編程式 679
實驗19:VBC1-E的設計與測試(IN、OUT和未修改的指令) 682
實驗20:VBC1-E系統的設計與測試(數據轉移和訪存指令) 687
實驗21:VBC1-E系統的設計與測試(大部分指令) 692
實驗22:VBC1-E系統的設計與測試(添加手動載入電路) 697
實驗23:VBC1-E系統的設計與測試(添加擴展指令存儲器) 700
實驗24:VBC1-E系統的設計與測試(實現INT和IRET指令) 704
實驗25:VBC1-E系統的設計與測試(最終設計) 708
實驗25L:VBC1-E指令載入器的設計 713
附錄B 用VHDL測試平台程式進行仿真 721
B.1 簡介 721
B.2 例1:組合邏輯設計(工程:AND_3) 721
B.3 例2:同步時序邏輯設計(工程:DFF) 725
附錄C FPGA管腳連線關係查詢手冊 729
C.1 BASYS 2開發板 729
C.2 NEXYS 2開發板 730
C.3 BASYS 2及NEXYS 2開發板上FPGA存儲載入器的管腳接口 731
C.4 FX2MIB(模組轉接板)——NEXYS 2外加電路板 732
附錄D EASY1教程 733
D.1 簡介 733
D.2 EASY1用戶界面 733
D.3 EASY1界面布局 733
D.4 如何使用EASY1 735
D.5 例1:簡單輸入輸出程式 735
D.6 例2:修改後能夠一直執行的輸入輸出程式 741
D.7 例3:簡單狀態機程式 742
D.8 例4:複雜狀態機程式 742
D.9 例5:產生延時 744
D.10 用EASY1產生VBC1平台的機器碼 746
附錄E 將指令載入到存儲器中的三種方法 747
E.1 手動載入存儲器 747
E.2 在啟動時初始化存儲器內容 748
E.3 通過存儲器載入程式載入存儲器 749