第1章布爾代數、布爾函數、VHDL和門 11.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.1NOT函數的VHDL設計 14
1.4.2AND函數的VHDL設計 16
1.4.3OR函數的VHDL設計 17
1.4.4XOR函數的VHDL設計 19
1.4.5NAND函數的VHDL設計 20
1.4.6NOR函數的VHDL設計 22
1.4.7XNOR函數的VHDL設計 23
1.4.8BUFFER函數的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.2VHDL 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.10VHDL設計實例 126
??4.10.1用標量輸入和輸出設計 126
??4.10.2用向量輸入和輸出設計 128
??4.10.3通用VHDL架構 130
習題 131
第4章雙穩態存儲器件的VHDL設計 138
5.1引言 138
5.2S-RNOR鎖存器分析 138
5.2.1簡單的電燈開關 138
5.2.2S-RNOR鎖存器的電路延遲模型 140
5.2.3S-RNOR鎖存器的特性表 141
5.2.4S-RNOR鎖存器的特征方程 141
5.2.5S-RNOR鎖存器的PS/NS表 142
5.2.6S-RNOR鎖存器的時序圖 143
5.3S-RNAND鎖存器分析 145
5.3.1S-RNAND鎖存器電路延遲模型 145
5.3.2S-RNAND鎖存器的特性表 146
5.3.3S-RNAND鎖存器的特征方程 146
5.3.4S-RNAND鎖存器的PS/NS表 146
5.3.5S-RNAND鎖存器的時序圖 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.4D鎖存器的時序圖 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-RNAND設計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.2PLC和DPI系統的等效電路分析 245
8.4更多關于多路選擇器和數據分路器的內容 247
8.4.1MUX樹設計 249
8.4.2DMUX樹設計 250
習題 250
第9章復雜有限狀態機的VHDL設計 255
9.1引言 255
9.2基于雙進程PS/NS方法的設計 256
9.3CPLD、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.5VBC1概述 315
10.6VBC1設計原理 316
10.7VBC1編程器寄存器模型 318
10.8VBC1指令集體系結構 319
10.9匯編語言程序的編寫格式 321
習題 322
第11章VBC1的匯編語言編程 325
11.1引言 325
11.2VBC1指令集 325
11.3IN指令 325
11.4OUT指令 329
11.5MOV指令 331
11.6LOADI指令 333
11.7ADDI指令 334
11.8ADD指令 336
11.9SR0指令 338
11.10JNZ指令 339
11.11VBC1編程實例和技術 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.24個七段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.11JNZ指令譯碼器真值表 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.9VBC1-E完整指令集總結 494
習題 495
第19章設計VBC1-E的輸入輸出電路 506
19.1引言 506
19.2VBC1-E的輸入電路設計 506
19.3VBC1-E的修改后IN指令的指令譯碼真值表 508
19.4VBC1-E的輸出電路設計 510
19.5VBC1-E的修改后OUT指令的指令譯碼真值表 512
19.6VBC1-E的修改后IN和OUT指令的指令譯碼器設計 515
19.7VBC1-E的LOADI、ADDI和JNZ指令的指令譯碼器設計 516
習題 517
第20章設計VBC1-E的數據存儲器電路 520
20.1引言 520
20.2設計VBC1-E的數據存儲器 520
20.3設計VBC1-E的寄存器和數據選擇電路 524
20.4VBC1-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.2VBC1-EALU的算術和邏輯指令部分設計 531
21.3VBC1-E的算術和邏輯指令譯碼器設計 533
21.4VBC1-EALU的移位和旋轉指令部分設計 534
21.5VBC1-E的移位和旋轉指令譯碼器設計 536
21.6VBC1-E的JMP和JMPR電路設計 537
21.7VBC1-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.4VBC1-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
附錄CFPGA管腳連接關系查詢手冊 729
C.1BASYS2開發板 729
C.2NEXYS2開發板 730
C.3BASYS2及NEXYS2開發板上FPGA存儲加載器的管腳接口 731
C.4FX2MIB(模塊轉接板)——NEXYS2外加電路板 732
附錄DEASY1教程 733
D.1簡介 733
D.2EASY1用戶界面 733
D.3EASY1界面布局 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