CPU 自製入門

[日]水頭一壽 米澤遼 藤田裕士 著

  • CPU 自製入門-preview-1
CPU 自製入門-preview-1

買這商品的人也買了...

商品描述

<內容簡介>

水頭一壽、米澤遼、藤田裕士所著的《圖靈程序設計叢書:CPU自製入門》教讀者製作原創的電腦系統。第1章以介紹CPU為主,同時介紹如何製作存儲程序與數據的內存、輸入與輸出的I∕O以及將這些模塊連接起來的總線,這些模塊可以組合成一個簡單的電腦系統。為了讓這個電腦系統運轉起來,第2章介紹電路板的設計和製作。第3章為這個電腦系統編寫程序,並上機測試。
    《圖靈程序設計叢書:CPU自製入門》可以幫助軟件工程師瞭解硬件與底層,開發出高效代碼。硬件工程師可以在該書基礎上設計定製硬件,開發高速電腦系統。相信讀者可以在本書的閱讀過程中,體會到自製電腦系統的樂趣。

<目錄>

 第1章  CPU的設計與實現
  1.1  序
  1.2  電腦系統
    1.2.1  什麼是電腦
    1.2.2  什麼是CPU
    專欄  CPU的位寬
    1.2.3  什麼是內存
    1.2.4  什麼是I/O
    專欄  字節序
    1.2.5  什麼是總線
    專欄  總線的優缺點
    1.2.6  小結
    專欄  電腦相關書籍
  1.3  數字電路基礎
    1.3.1  什麼是數字電路
    1.3.2  數值表達
    1.3.3  有符號二進制數
    專欄  比特和字節
    專欄  1K字節有多大
    1.3.4  MOSFET的結構
    1.3.5  邏輯運算
    1.3.6  CMOS基本邏輯門電路
    1.3.7  存儲元件
    專欄  建立時間與保持時間
    1.3.8  組合電路和時序電路
    1.3.9  時鐘同步設計
    1.3.10  小結
    專欄  數字電路相關書籍
  1.4  Verilog HDL語言
    1.4.1  什麼是Verilog HDL
    1.4.2  電路描述
    專欄  默認網絡類型
    專欄  組合電路描述中鎖存器的推定與Don't care
    專欄  正邏輯與負邏輯
    1.4.3  電路模擬
    專欄  同步電路中信號變化的時序
    1.4.4  Verilog HDL的模擬環境
    1.4.5  小結
    專欄  Verilog HDL相關書籍
  1.5  系統藍圖
    1.5.1  目標系統整體介紹
    1.5.2  關於本章中的代碼
    專欄  字編址與字節位移
  1.6  總線的設計與實現
    1.6.1  總線的設計
    1.6.2  總線的實現
    1.6.3  小結
  1.7  存儲器的設計與實現
    1.7.1  FPGA的RAM區域
    1.7.2  ROM的設計與實現
    1.7.3  小結
    專欄  存儲器相關書籍
  1.8  AZ Processor的設計與實現
    1.8.1  關於CPU
    專欄  CPI和MIPS值
    1.8.2  AZ Processor的設計
    專欄  指令集架構與微架構
    1.8.3  AZ Processor的實現
    1.8.4  小結
    專欄  電腦架構相關書籍
  1.9  I/O的設計與實現
    1.9.1  定時器
    1.9.2  UART
    專欄  UART實例
    1.9.3  GPIO
    1.9.4  小結
    專欄  I/O相關書籍
  1.10  AZPR  SoC整體連接
    1.10.1  各模塊的連接
    1.10.2  時鐘模塊的實現
    1.10.3  頂層模塊的實現
    1.10.4  小結
  1.11  AZPR SoC的模擬
    1.11.1  模擬模型的編寫
    1.11.2  Testbench的編寫
    1.11.3  執行模擬
    1.11.4  小結
  1.12  本章總結
第2章  電路板的設計與製作
  2.1  序
  2.2  電路板規格
    2.2.1  電路板名稱
    2.2.2  電路板的構成
    2.2.3  電路板尺寸
    2.2.4  電路板層數
    2.2.5  FPGA選型
    2.2.6  外圍電路的選定
    專欄  關於FPGA
    專欄  關於JTAG
  2.3  元件選型
    2.3.1  元件選型標準
    2.3.2  元件選型
    2.3.3  元件的選購
  2.4  電路設計
    2.4.1  下載規格書
    2.4.2  配置電路
    2.4.3  外圍電路
    2.4.4  電源電路
    2.4.5  電路板設計環境
    2.4.6  使用Eagle設計電路圖
    專欄  關於ULP
    專欄  Eagle使用方法相關的書籍/說明書
    2.4.7  完成的電路圖
  2.5  佈局設計
    2.5.1  電路板設計約束條件及布線策略
    2.5.2  FPGA板的佈局設計
    2.5.3  電源板的佈局設計
    2.5.4  使用Eagle佈局
    2.5.5  完成的佈局
  2.6  製作元件庫
    2.6.1  製作Symbol
    2.6.2  製作Package
    2.6.3  製作Device
  2.7  電路板3D模型
    2.7.1  軟件使用說明
    2.7.2  準備3D模型庫
    專欄  關於3D模型庫的管理
    2.7.3  製作電路板模型
  2.8  製作感光板電路板
    2.8.1  整體流程
    2.8.2  製作光罩
    2.8.3  粘合光罩
    2.8.4  曝光
    2.8.5  顯像
    2.8.6  蝕刻
    2.8.7  阻焊劑
    2.8.8  開孔
    2.8.9  在背面安裝VPort接頭時的處理
    2.8.10  製作通孔
    2.8.11  飛線
  2.9  使用電路板製造服務
    2.9.1  電路板製造服務
    2.9.2  DRC
    2.9.3  輸出Gerber數據
    2.9.4  檢查Gerber數據
    專欄  執行DFM檢查的方法
    專欄  阻焊層遮罩的印刷設置
    2.9.5  向P板.com公司下單制板
    專欄  拼板數據的準備
    2.9.6  向OLIMEX公司下單制板
  2.10  組裝電路板
    2.10.1  電源板
    2.10.2  組裝FPGA板
  2.11  功能測試
    2.11.1  識別FPGA
    2.11.2  診斷程序
  2.12  本章總結
第3章  編程
  3.1  序
  3.2  開發環境
    3.2.1  準備工作
    3.2.2  FPGA開發環境
    3.2.3  ISE WebPACK
    3.2.4  UrJTAG
    專欄  cblsrv-0.1_ft2232
    3.2.5  交叉彙編程序
    3.2.6  第一個程序
  3.3  串口通信
    3.3.1  安裝Tera  Term
    3.3.2  編寫程序
    專欄  子程序
    專欄  ASCII碼
    3.3.3  執行程序
  3.4  程序加載器
    3.4.1  XMODEM協議
    3.4.2  編寫程序
    3.4.3  編寫加載測試程序
    3.4.4  執行程序
  3.5  中斷與異常
    3.5.1  什麼是中斷
    3.5.2  編寫程序
    3.5.3  執行程序
    3.5.4  什麼是異常
    3.5.5  編寫程序
    3.5.6  執行程序
  3.6  七段數碼管
    3.6.1  什麼是七段數碼管
    3.6.2  七段數碼管的控制
    3.6.3  七段數碼管計數器概要
    3.6.4  編寫程序
    3.6.5  執行程序
  3.7  製作一個實用程序
    3.7.1  功能概要
    3.7.2  製作程序
    3.7.3  執行程序
  3.8  結語
謝辭
後記
版權聲明

作者簡介

水头 一寿(KAZUTOSHI SUITOU)

庆应义塾大学硕士毕业。现在在庆应义塾大学攻读博士学位。目前从事实时嵌入式系统的系统LSI相关研究和开发。兴趣为音乐、摄影、自行车等。在RESPON小组担任逻辑设计工作。

 

米泽 辽(RYO YONEZAWA)

庆应义塾大学硕士毕业后,进入东芝株式会社半导体与存储子公司工作。目前从事高速串行接口IP的开发。兴趣为电子制作、家庭服务器管理等。在RESPON小组担任电路板设计与封面设计工作。

 

藤田 裕士(YUJI FUJITA)

庆应义塾大学硕士毕业后,进入日本电气株式会社工作。目前从事固件开发工作。兴趣为音乐欣赏、吉他演奏等。在RESPON小组担任软件设计工作。

 

赵谦

2007年于青岛科技大学取得学士学位。2008年到今在日本熊本大学攻读博士学位。目前从事容错性FPGA架构及其CAD相关研究与开发。在FPGA领域著名国际会议FPGA、FPL以及ICFPT等发表过多篇学术论文。

目錄大綱

目 錄

 

第 1章 CPU的設計與實現 1

1.1 序 2

1.2 電腦系統 4

1.2.1 什麽是電腦 4

1.2.2 什麽是CPU 5

專欄 CPU的位寬 8

1.2.3 什麽是內存 8

1.2.4 什麽是I/O 9

專欄 字節序 10

1.2.5 什麽是總線 12

專欄 總線的優缺點 14

1.2.6 小結 14

專欄 電腦相關書籍 14

1.3 數字電路基礎 15

1.3.1 什麽是數字電路 15

1.3.2 數值表達 15

1.3.3 有符號二進制數 16

專欄 比特和字節 17

專欄 1K字節有多大 17

1.3.4 MOSFET的結構 17

1.3.5 邏輯運算 19

1.3.6 CMOS基本邏輯門電路 20

1.3.7 存儲元件 21

專欄 建立時間與保持時間 24

1.3.8 組合電路和時序電路 25

1.3.9 時鐘同步設計 25

1.3.10 小結 25

專欄 數字電路相關書籍 25

1.4 Verilog HDL語言 26

1.4.1 什麽是Verilog HDL 26

1.4.2 電路描述 27

專欄 默認網絡類型 32

專欄 組合電路描述中鎖存器的推定與Don’t care 37

專欄 正邏輯與負邏輯 42

1.4.3 電路模擬 43

專欄 同步電路中信號變化的時序 45

1.4.4 Verilog HDL的模擬環境 50

1.4.5 小結 56

專欄 Verilog HDL相關書籍 56

1.5 系統藍圖 57

1.5.1 目標系統整體介紹 57

1.5.2 關於本章中的代碼 58

專欄 字編址與字節位移 62

1.6 總線的設計與實現 63

1.6.1 總線的設計 63

1.6.2 總線的實現 66

1.6.3 小結 78

1.7 存儲器的設計與實現 79

1.7.1 FPGA的RAM區域 79

1.7.2 ROM的設計與實現 81

1.7.3 小結 83

專欄 存儲器相關書籍 83

1.8 AZ Processor的設計與實現 84

1.8.1 關於CPU 84

專欄 CPI和MIPS值 93

1.8.2 AZ Processor的設計 93

專欄 指令集架構與微架構 105

1.8.3 AZ Processor的實現 106

1.8.4 小結 159

專欄 電腦架構相關書籍 159

1.9 I/O的設計與實現 162

1.9.1 定時器 162

1.9.2 UART 167

專欄 UART實例 168

1.9.3 GPIO 181

1.9.4 小結 188

專欄 I/O相關書籍 188

1.10 AZPR SoC整體連接 189

1.10.1 各模塊的連接 189

1.10.2 時鐘模塊的實現 191

1.10.3 頂層模塊的實現 193

1.10.4 小結 193

1.11 AZPR SoC的模擬 194

1.11.1 模擬模型的編寫 194

1.11.2 Testbench的編寫 197

1.11.3 執行模擬 200

1.11.4 小結 201

1.12 本章總結 202

 

第 2章 電路板的設計與製作 203

2.1 序 204

2.2 電路板規格206

2.2.1 電路板名稱 206

2.2.2 電路板的構成 206

2.2.3 電路板尺寸 206

2.2.4 電路板層數 207

2.2.5 FPGA選型 207

2.2.6 外圍電路的選定 208

專欄 關於FPGA 209

專欄 關於JTAG 211

2.3 元件選型 212

2.3.1 元件選型標準 212

2.3.2 元件選型 212

2.3.3 元件的選購 218

2.4 電路設計 221

2.4.1 下載規格書 222

2.4.2 配置電路 223

2.4.3 外圍電路 228

2.4.4 電源電路 232

2.4.5 電路板設計環境 234

2.4.6 使用Eagle設計電路圖 236

專欄 關於ULP 241

專欄 Eagle使用方法相關的書籍/說明書 241

2.4.7 完成的電路圖 241

2.5 佈局設計 247

2.5.1 電路板設計約束條件及布線策略 247

2.5.2 FPGA板的佈局設計 248

2.5.3 電源板的佈局設計 252

2.5.4 使用Eagle佈局 254

2.5.5 完成的佈局 259

2.6 製作元件庫261

2.6.1 製作Symbol 261

2.6.2 製作Package 263

2.6.3 製作Device 264

2.7 電路板3D模型 269

2.7.1 軟件使用說明 269

2.7.2 準備3D模型庫 271

專欄 關於3D模型庫的管理 278

2.7.3 製作電路板模型 279

2.8 製作感光板電路板 280

2.8.1 整體流程 280

2.8.2 製作光罩 282

2.8.3 粘合光罩 284

2.8.4 曝光 285

2.8.5 顯像 288

2.8.6 蝕刻 289

2.8.7 阻焊劑 291

2.8.8 開孔 296

2.8.9 在背面安裝VPort接頭時的處理 298

2.8.10 製作通孔 299

2.8.11 飛線 300

2.9 使用電路板製造服務 302

2.9.1 電路板製造服務 302

2.9.2 DRC 302

2.9.3 輸出Gerber數據 305

2.9.4 檢查Gerber數據 306

專欄 執行DFM檢查的方法 309

專欄 阻焊層遮罩的印刷設置 312

2.9.5 向P板.com公司下單制板 312

專欄 拼板數據的準備 314

2.9.6 向OLIMEX公司下單制板 318

2.10 組裝電路板 321

2.10.1 電源板 321

2.10.2 組裝FPGA板 321

2.11 功能測試 323

2.11.1 識別FPGA 323

2.11.2 診斷程序 323

2.12 本章總結 326

 

第3章 編程 327

3.1 序 328

3.2 開發環境 329

3.2.1 準備工作 329

3.2.2 FPGA開發環境 330

3.2.3 ISE WebPACK 331

3.2.4 UrJTAG 359

專欄 cblsrv-0.1_ft2232 370

3.2.5 交叉匯編程序 370

3.2.6 第 一個程序 376

3.3 串口通信 381

3.3.1 安裝Tera Term 381

3.3.2 編寫程序 382

專欄 子程序 388

專欄 ASCII碼 389

3.3.3 執行程序 390

3.4 程序加載器 391

3.4.1 XMODEM協議 391

3.4.2 編寫程序 393

3.4.3 編寫加載測試程序 402

3.4.4 執行程序 403

3.5 中斷與異常 406

3.5.1 什麽是中斷 406

3.5.2 編寫程序 410

3.5.3 執行程序 414

3.5.4 什麽是異常 415

3.5.5 編寫程序 415

3.5.6 執行程序 419

3.6 七段數碼管 420

3.6.1 什麽是七段數碼管 420

3.6.2 七段數碼管的控制 420

3.6.3 七段數碼管計數器概要 422

3.6.4 編寫程序 423

3.6.5 執行程序 428

3.7 製作一個實用程序 429

3.7.1 功能概要 429

3.7.2 製作程序 433

3.7.3 執行程序 446

3.8 結語 447

 

謝辭 448

後記 449

版權聲明 450