作者簡介
Clive“Max”Maxfield世界半導體設計界知名專家,FPGA專業網站Programmable Logic DesignLine 主編。Maxfield先生擁有豐富的電路設計和開發經驗,更以傑出的寫作才能享譽全球。他曾經長期為EDN、EE Design等一流雜誌和網站撰寫專欄,並撰寫了多部電子技術方面的暢銷書。
目錄
第1章 概論
1.1 什麼是FPGA
1.2 FPGA為什麼令人感興趣
1.3 FPGA的用途
1.4 本書內容
1.5 本書不包括什麼
1.6 讀者對象
第2章 基本概念
2.1 FPGA的核心
2.2 簡單的可程式功能
2.3 熔絲連線技術
2.4 反熔絲技術
2.5 掩模編程器件
2.6 PROM
2.7 基於EPROM的技術
2.8 基於EEPROM的技術
2.9 基於快閃記憶體的技術
2.10 基於SRAM的技術
2.11 小結
第3章 FPGA的起源
3.1 相關的技術
3.2 電晶體
3.3 積體電路
3.4 SRAM/DRAM和微處理器
3.5 SPLD和CPLD
3.5.1 PROM
3.5.2 PLA
3.5.3 PAL和GAL
3.5.4 其他可程式選擇
3.5.5 CPLD
3.5.6 ABEL、CUPL、PALASM、JEDEC等
3.6 專用積體電路(門陣列等)
3.6.1 全定製
3.6.2 Micromatrix和Micromosaic
3.6.3 門陣列
3.6.4 標準單元器件
3.6.5 結構化ASIC
3.7 FPGA
3.7.1 FPGA平台
3.7.2 FPGA-ASIC 混合
3.7.3 FPGA廠商如何設計晶片
第4章 FPGA結構的比較
4.1 一點提醒
4.2 一些背景信息
4.3 反熔絲與SRAM與其他
4.3.1 基於SRAM的器件
4.3.2 以SRAM為基礎器件的安全問題和解決方案
4.3.3 基於反熔絲的器件
4.3.4 基於EPROM的器件
4.3.5 基於E2PROM/FLASH的器件
4.3.6 FLASH-SRAM混合器件
4.3.7 小結
4.4 細粒、中等微粒和粗粒結構
4.5 MUX與基於LUT的邏輯塊
4.5.1 基於MUX的結構
4.5.2 基於LUT的結構
4.5.3 基於MUX還是基於LUT
4.5.4 3、4、5或6輸入LUT
4.5.5 LUT與分布RAM與SR
4.6 CLB、LAB與slices
4.6.1 Xlilinx 邏輯單元
4.6.2 Altera邏輯部件
4.6.3 slicing和dicing
4.6.4 CLB和LAB
4.6.5 分布RAM和移位暫存器
4.7 快速進位鏈
4.8 內嵌RAM
4.9 內嵌乘法器、加法器、MAC等
4.10 內嵌處理器核(硬的和軟的)
4.10.1 硬微處理器核
4.10.2 軟微處理器核
4.11 時鐘樹和時間管理器
4.11.1 時鐘樹
4.11.2 時鐘管理器
4.12 通用I/O
4.12.1 可配置I/O標準
4.12.2 可配置I/O阻抗
4.12.3 核與I/O電壓
4.13 吉比特傳輸
4.14 硬IP、軟IP和固IP
4.15 系統門與實際的門
4.16 FPGA年
第5章 FPGA編程(配置)
5.1 引言
5.2 配置檔案
5.3 配置單元
5.4 基於反熔絲的FPGA
5.5 基於SRAM的FPGA
5.5.1 迅速的過程欺騙了眼睛
5.5.2 對嵌入式(塊)RAM、分布RAM編程
5.5.3 多編程鏈
5.5.4 器件的快速重新初始化
5.6 使用配置連線埠
5.6.1 FPGA作為主設備串列下載
5.6.2 FPGA作為主設備並行下載
5.6.3 FPGA作為從設備並行下載
5.6.4 FPGA作為從設備串列下載
5.7 使用JTAG連線埠
5.8 使用嵌入式處理器
第6章 誰在參與遊戲
6.1 引言
6.2 FPGA和FPAA提供商
6.3 FPNA 提供商
6.4 全線EDA提供商
6.5 專業FPGA和獨立EDA提供商
6.6 使用專門工具的FPGA設計顧問
6.7 開源、免費和低成本的設計工具
第7章 FPGA與ASIC設計風格
7.1 引言
7.2 編碼風格
7.3 流水線和邏輯層次
7.3.1 什麼是流水線
7.3.2 電子系統中的流水線
7.3.3 邏輯層次
7.4 異步設計實踐
7.4.1 異步結構
7.4.2 組合迴路
7.4.3 延遲鏈
7.5 時鐘考慮
7.5.1 時鐘域
7.5.2 時鐘平衡
7.5.3 門控時鐘與使能時鐘
7.5.4 PLL和時鐘調節電路
7.5.5 跨時鐘域數據傳輸的可靠性
7.6 暫存器和鎖存器考慮
7.6.1 鎖存器
7.6.2 具有“置位”和“復位”輸入的觸發器
7.6.3 全局復位和初始化條件
7.7 資源共享(時分復用)
7.7.1 使用它或者放棄它
7.7.2 其他內容
7.8 狀態機編碼
7.9 測試方法學
第8章 基於原理圖的設計流程
8.1 往昔的時光
8.2 EDA初期
8.2.1 前端工具,如邏輯仿真
8.2.2 後端工具如版圖設計
8.2.3 CAE + CAD = EDA
8.3 簡單的原理圖驅動ASIC設計流程
8.4 簡單(早期)的原理圖驅動FPGA設計流程
8.4.1 映射
8.4.2 包裝
8.4.3 布局和布線
8.4.4 時序分析和布局布線後仿真
8.5 平坦的原理圖與分層次的原理圖
8.5.1 沉悶的扁平原理圖
8.5.2 分等級(基於模組)的原理圖
8.6 今天的原理圖驅動設計流程
第9章 基於HDL的設計流程
9.1 基於原理圖流程的問題
9.2 基於HDL設計流程的出現
9.2.1 不同的抽象層次
9.2.2 早期基於HDL的ASIC設計流程
9.2.3 早期基於HDL的FPGA設計流程
9.2.4 知道結構的FPGA流程
9.2.5 邏輯綜合與基於物理的綜合
9.3 圖形設計輸入的生活
9.4 絕對過剩的HDL
9.4.1 Verilog HDL
9.4.2 VHDL和VITAL
9.4.3 混合語言設計
9.4.4 UDL/I
9.4.5 Superlog 和 SystemVerilog
9.4.6 SystemC
9.5 值得深思的事
9.5.1 擔心,非常擔心
9.5.2 串列與並行多路復用器
9.5.3 小心鎖存器
9.5.4 聰明地使用常量
9.5.5 資源共用考慮
9.5.6 還有一些不可忽視的內容
第10章 FPGA設計中的矽虛擬原型
10.1 什麼是矽虛擬原型
10.2 基於ASIC的SVP方法
10.2.1 門級SVP(由快速綜合產生)
10.2.2 門級SVP(由基於增益的綜合產生)
10.2.3 團簇SVP
10.2.4 基於RTL的SVP
10.3 基於FPGA的SVP
10.3.1 互動式操作
10.3.2 增量式布局布線
10.3.3 基於RTL的FPGASVP
第11章 基於C/C++等語言的設計流程
11.1 傳統的HDL設計流程存在的問題
11.2 C對C++與並行執行對順序執行
11.3 基於SystemC的設計流程
11.3.1 什麼是SystemC以及它從哪裡來
11.3.2 SystemC 1.0
11.3.3 SystemC 2.0
11.3.4 抽象級
11.3.5 基於SystemC設計流程的可選方案
11.3.6 要么喜愛它,要么討厭它
11.4 基於增強型C/C++的設計流程
11.4.1 什麼是增強型C/C++
11.4.2 可選擇的增強型C/C++設計流程
11.5 基於純C/C++的設計流程
11.6 綜合的不同抽象級別
11.7 混合語言設計和驗證環境
第12章 基於DSP的設計流程
12.1 DSP簡介
12.2 可選擇的DSP實現方案
12.2.1 隨便選一個器件,不過不要讓我看到是哪種器件
12.2.2 系統級評估和算法驗證
12.2.3 在DSP核心中運行的軟體
12.2.4 專用DSP硬體
12.2.5 與DSP相關的嵌入式FPGA資源
12.3 針對DSP的以FPGA為中心的設計流程
12.3.1 專用領域語言
12.3.2 系統級設計和仿真環境
12.3.3 浮點與定點表示
12.3.4 系統/算法級向RTL的轉換(手工轉換)
12.3.5 系統/算法級向RTL的轉換(自動生成)
12.3.6 系統/算法級向C/C++的轉換
12.3.7 模組級IP環境
12.3.8 別忘了測試平台
12.4 DSP與VHDL/Verilog混合設計環境
第13章 基於嵌入式處理器的設計流程
13.1 引言
13.2 硬核與軟核
13.2.1 硬核
13.2.2 微處理器軟核
13.3 將設計畫分為硬體和軟體部分
13.4 硬體和軟體的世界觀
13.5 利用FPGA作為自身的開發環境
13.6 增強設計的可見性
13.7 其他一些混合驗證方法
13.7.1 RTL(VHDL或Verilog)
13.7.2 C/C++、SystemC等
13.7.3 硬體模擬器中的物理晶片
13.7.4 指令集仿真器
13.8 一個相當巧妙的設計環境
第14章 模組化設計和增量設計
14.1 將設計作為一個大的模組進行處理
14.2 將設計畫分為更小的模組
14.2.1 模組化設計
14.2.2 增量設計
14.2.3 存在的問題
14.3 總有其他辦法
第15章 高速設計與其他PCB設計注意事項
15.1 開始之前
15.2 我們都很年輕,因此
15.3 變革的時代
15.4 其他注意事項
15.4.1 高速設計
15.4.2 信號完整性分析
15.4.3 SPICE與IBIS
15.4.4 起動功率
15.4.5 使用內部末端阻抗
15.4.6 串列或並行處理數據
第16章 觀察FPGA的內部節點
16.1 缺乏可見性
16.2 使用多路復用技術
16.3 專用調試電路
16.4 虛擬邏輯分析儀
16.5 虛擬線路
16.5.1 問題描述
16.5.2 虛擬線路解決方案
第17章 IP
17.1 IP的來源
17.2 人工最佳化的IP
17.2.1 未加密的RTL級IP
17.2.2 加密的RTL級IP
17.2.3 未經布局布線的網表級IP
17.2.4 布局布線後的網表級IP
17.3 IP核生成器
17.4 綜合資料
第18章 ASIC設計與FPGA設計之間的移植
18.1 可供選擇的設計方法
18.1.1 只做FPGA設計
18.1.2 FPGA之間的轉換
18.1.3 FPGA到ASIC的轉換
18.1.4 ASIC到FPGA的轉換
第19章 仿真、綜合、驗證等設計工具
19.1 引言
19.2 仿真(基於周期、事件驅動等)
19.2.1 什麼是事件驅動邏輯仿真器
19.2.2 事件驅動邏輯仿真器發展過程簡述
19.2.3 邏輯值與不同邏輯值系統
19.2.4 混合語言仿真
19.2.5 其他延遲格式
19.2.6 基於周期的仿真器
19.2.7 選擇世界上最好的邏輯仿真器
19.3 綜合(邏輯/HDL綜合與物理綜合)
19.3.1 邏輯/HDL綜合技術
19.3.2 物理綜合技術
19.3.3 時序重調、複製及二次綜合
19.3.4 選擇世界上最好的綜合工具
19.4 時序分析(靜態與動態)
19.4.1 靜態時序分析
19.4.2 統計靜態時序分析
19.4.3 動態時序分析
19.5 一般驗證
19.5.1 驗證IP
19.5.2 驗證環境和創建testbench
19.5.3 分析仿真結果
19.6 形式驗證
19.6.1 形式驗證的不同種類
19.6.2 形式驗證究竟是什麼
19.6.3 術語及定義
19.6.4 其他可選的斷言/屬性規範技術
19.6.5 靜態形式驗證和動態形式驗證
19.6.6 各種語言的總結
19.7 混合設計
19.7.1 HDL語言到C語言的轉換
19.7.2 代碼覆蓋率
19.7.3 性能分析
第20章 選擇合適的器件
20.1 豐富的選擇
20.2 要是有選型工具就好了
20.3 工藝
20.4 基本資源和封裝
20.5 通用I/O接口
20.6 嵌入式乘法器、RAM等
20.7 嵌入式處理器核
20.8 吉比特I/O能力
20.9 可用的IP
20.10 速度等級
20.11 輕鬆的註解
第21章 吉比特收發器
21.1 引言
21.2 差分對
21.3 多種多樣的標準
21.4 8bit/10bit編碼等
21.5 深入收發器模組內部
21.6 組合多個收發器
21.7 可配置資源
21.7.1 逗號檢測
21.7.2 差分輸出擺幅
21.7.3 片內末端電阻
21.7.4 預加重
21.7.5 均衡化
21.8 時鐘恢復、抖動和眼圖
21.8.1 時鐘恢復
21.8.2 抖動和眼圖
第22章 可重配置計算
22.1 可動態重配置邏輯
22.2 可動態重配置互連線
22.3 可重配置計算
第23章 現場可程式節點陣列
23.1 引言
23.2 算法評估
23.3 picoChip公司的picoArray技術
23.3.1 一個理想的picoArray套用:無線基站
23.3.2 picoArray設計環境
23.4 QuickSilver公司的ACM技術
23.4.1 設計混合節點
23.4.2 系統控制器節點、輸入輸出節點及其他節點
23.4.3 空間與時間分割
23.4.4 在ACM上創建和運行程式
23.4.5 還有更多的內容
23.5 這就是矽,但與我們知道的並不相同
第24章 獨立的設計工具
24.1 引言
24.2 ParaCore Architect
24.2.1 產生浮點處理功能模組
24.2.2 產生FFT功能模組
24.2.3 基於網路的接口
24.3 Confluence系統設計語言
24.3.1 一個簡單的例子
24.3.2 還有更多的功能
24.3.3 免費評估版本
24.4 你是否具有這種工具
第25章 創建基於開源的設計流程
25.1 如何白手起家創辦一家FPGA設計工作室
25.2 開發平台:Linux
25.3 驗證環境
25.3.1 Icarus Verilog
25.3.2 Dinotrace和GTKWave
25.3.3 Covered代碼覆蓋率工具
25.3.4 Verilator
25.3.5 Python
25.4 形式驗證
25.4.1 開源模型檢查
25.4.2 基於開源的自動推斷
25.4.3 真正的問題是什麼
25.5 訪問公共IP元件
25.5.1 OpenCores
25.5.2 OVL
25.6 綜合與實現工具
25.7 FPGA開發板
25.8 綜合材料
第26章 FPGA未來的發展
26.1 一種擔憂
26.2 下一代結構和技術
26.2.1 十億電晶體級器件
26.2.2 超快速I/O
26.2.3 超快速配置
26.2.4 更多的硬IP
26.2.5 模擬與混合信號器件
26.2.6 ASMBL與其他結構
26.2.7 不同的結構粒度
26.2.8 ASIC結構中的嵌入式FPGA核心
26.2.9 ASIC和FPGA結構中嵌入FPNA核心或者相反
26.2.10 基於MRAM的器件
26.3 設計工具
26.4 期待意外的發生
附錄
附錄A 信號完整性簡介
附錄B 深亞微米延遲效應
附錄C 線性移位暫存器