Verilog HDL高級數位設計(第二版)(簡體書)
商品資訊
系列名:國外電子與通信教材系列
ISBN13:9787121221934
替代書名:Advanced Digital Design with the Verilog HDL Second Edition
出版社:電子工業出版社
作者:(美)邁克爾‧D.西勒提
譯者:李廣軍
出版日:2019/01/01
裝訂/頁數:平裝/649頁
規格:23.5cm*16.8cm (高/寬)
版次:一版
人民幣定價:115 元
定價
:NT$ 690 元優惠價
:87 折 600 元
絕版無法訂購
商品簡介
作者簡介
序
目次
書摘/試閱
相關商品
商品簡介
本書依據數字集成電路系統工程開發的要求與特點,利用Verilog HDL對數字系統進行建模、設計與驗證,對ASIC/FPGA系統芯片工程設計開發的關鍵技術與流程進行了深入講解,內容包括:集成電路芯片系統的建模、電路結構權衡、流水線技術、多核微處理器、功能驗證、時序分析、測試平臺、故障模擬、可測性設計、邏輯綜合、后綜合驗證等集成電路系統的前后端工程設計與實現中的關鍵技術及設計案例。書中以大量設計實例敘述了集成電路系統工程開發須遵循的原則、基本方法、實用技術、設計經驗與技巧。
作者簡介
科羅拉多大學電氣與計算機工程系教授。研究方向包括通過硬件描述語言進行數字系統的建模、綜合與驗證、系統級設計語言和fpga嵌入式系統。其著作還有digital design,fourth edition(其翻譯版和影印版均由電子工業出版社出版)。作者曾在惠普、福特微電子和prisma等公司進行vlsi電路設計的研發工作,在數字系統和嵌入式系統研究、設計等領域有豐富的研發和教學經歷。
序
精煉、明晰化與驗證
用硬件描述語言(HDL)建立行為級模型是現代專用集成電路設計的關鍵技術。如今,大多數設計者使用基於硬件描述語言的設計方法,創建基於語言的高層、抽象的電路描述,以驗證其功能和時序。在本書第一版的使用過程中,講授設計方法學所用的語言(IEEE 1464-1995)已經歷了兩次修改,分別是IEEE 1364-2001及2005年的修訂版,即Verilog-2001和Verilog -2005,以提高其有效性和效率。
這一版的編寫動機和第一版基本是相同的。對那些準備在產品研發團隊做出成績的學生們來說,必須了解如何在設計流程的關鍵階段使用硬件描述語言。因此,需要有一門在內容上超越先修課程“數字設計”中學習過的基本原則和方法的課程,本書就是為該課程而著的。
現在,市面上討論硬件描述語言的書籍的數量已遠遠超過本書第一版出版時的數量。但是,這些書大部分都定位於解釋語法,而不是如何運用語言進行設計,不太適合於課堂教學。本書的重點是硬件描述語言的設計方法學,因此語言本身只是一個配角。這一版中強化瞭如何通過實例證明,將一個數字系統描述並劃分為數據通路、狀態(反饋)信號和控制器(有限狀態機)系統結構的重要性。我們認為,這種描述可使設計和驗證複雜數字系統的方法更加清楚、直接、明了。本書給出了大量的仿真結果和註釋,以幫助學生掌握時序機的操作過程,並深入理解由控制器產生的信號間的時序互動關係,數據通路的操作,以及從數據通路回饋給控制器的信號。其目的都是為了開發出可綜合、無鎖存且無競爭的設計。
Verilog 2001和2005的語言增強功能已用於重新描述和簡化書中模型的代碼。我們強調工業界通用的規範和風格,但並不鼓勵不考慮模型能否被綜合的學術模型風格。本書第二版已把第一版中處理同步FIFO的部分改為同步和異步FIFO,並給出了精心設計的例子,以解釋使用異步FIFO來同步跨越時鐘域的數據傳輸問題。
書中的設計實例已多次優化和改進①。從設計方法學的角度,對一個嵌入式控制器,用C語言建模和用Verilog建模,這兩種設計方法學之間存在著競爭和互補的關係。基於C的方法執行陳述性語句,而Verilog HDL模擬了某個機器的多個並發的行為動作。後一種設計方法對硬件進行編譯,而前一種是編譯預先存儲在硬件單元中的語句。對於某個特定應用,Verilog模型編譯的硬件在主機接口處生成了等效的I/O信號。對於嵌入式代碼而言,其區別是不會產生等效的硬件。本書的目標就是講授硬件建模/編譯的範例,並預測綜合實現後的結果。C語言編程是預測程序產生的數據,而狀態機/處理器的應用卻顯而易見。作為對比,用Verilog描述的模型預測該硬件將產生應用所需求的I/O信號,因此需要開發者根據寄存器操作時序控制進行思考和設計。Verilog的模型鼓勵學習者理解一個數字電路和系統的本質。
本書要求學生已學過邏輯設計的入門課程,本書的目標是:(1)簡要復習組合時序邏輯的基本原理,(2)介紹HDL在設計中的應用,(3)強調的是快速設計通過ASIC和/或FPGA實現的電路設計描述風格,(4)提供具有一定難度的設計實例。章末習題的目的是鼓勵學生精煉、明晰化並驗證他們自己的設計。從本質上講,許多習題均為開放式的設計,要求驗證以達到所要求的設計規範。
廣泛使用的Verilog硬件描述語言(IEEE 1364標準),作為一個公共框架為本書的設計實例的討論提供了支持。第一版重點關注數字電路的設計、驗證和綜合,而不是Verilog語言本身的語法,本版仍然保持這種風格。
選修數字設計中級課程的多數學生至少應該熟悉一種編程語言,並且在閱讀本書時能夠將其作為可以藉鑑的背景知識。本書僅討論Verilog的核心設計方法及其廣泛使用的特性。為了強調在面向綜合的設計環境中使用該語言,我們還特意將許多語法的細節、特點和解釋放在附錄中中,以便於讀者參考。附錄中也提供了Verilog的所有形式化語法。
大部分數字設計的入門課程都介紹過通過狀態轉移圖表示的有限狀態機及算法狀態機( ASM)圖。同樣,本書中也大量使用了ASM圖,演示了其在設計時序狀態機的行為模型中的功用。對利用ASMD圖(即通過標註顯示出被控數據通道的寄存器操作的ASM圖)系統地設計有限狀態機來控制數字狀態機中復雜數據通道的重要問題,進行了深入論述。並將精簡指令集計算機中央處理器( RSIC CPU)和其他重要硬件單元的設計作為實例給出。我們的支持網站上包含了RISC計算機的源代碼和可用於應用程序開發的彙編程序。這個彙編程序也可作為研究魯棒性更好的指令集和其他派生架構的基礎。
本書完整地引入了Verilog語言,但僅在支持設計實例的需要時才進行詳細說明。正文中使用了大量的實例,講解使用Verilog硬件描述語言進行VLSI電路設計時的重要和關鍵設計步驟。設計實例的源代碼都經過了驗證,並且所有實例的源代碼和測試平台都可以從出版社的網站下載。讀者對象
本書適用於學習高級數字系統設計課程的學生,以及那些想通過實例學習Verilog的現代集成電路設計專業工程師。本書適合電子工程、計算機工程和計算機科學等專業的高年級本科生和低年級研究生,也適合學習過邏輯設計入門課程的專業工程師使用。本書假定讀者俱有布爾代數及其在邏輯電路設計中應用的背景知識,並熟悉同步時序有限狀態機。在此基礎上,本書討論了一些應用於計算機系統、數字信號處理、圖像處理、跨時鐘域的數據傳輸、內建自測試( BIST)和一些其他應用的重要電路的設計實例。這些實例涵蓋了建模、架構的設計折中、流水線技術、多處理器執行、功能驗證、定時分析、測試生成、故障模擬,可測性分析、邏輯綜合和綜合後驗證的關鍵設計問題。
用硬件描述語言(HDL)建立行為級模型是現代專用集成電路設計的關鍵技術。如今,大多數設計者使用基於硬件描述語言的設計方法,創建基於語言的高層、抽象的電路描述,以驗證其功能和時序。在本書第一版的使用過程中,講授設計方法學所用的語言(IEEE 1464-1995)已經歷了兩次修改,分別是IEEE 1364-2001及2005年的修訂版,即Verilog-2001和Verilog -2005,以提高其有效性和效率。
這一版的編寫動機和第一版基本是相同的。對那些準備在產品研發團隊做出成績的學生們來說,必須了解如何在設計流程的關鍵階段使用硬件描述語言。因此,需要有一門在內容上超越先修課程“數字設計”中學習過的基本原則和方法的課程,本書就是為該課程而著的。
現在,市面上討論硬件描述語言的書籍的數量已遠遠超過本書第一版出版時的數量。但是,這些書大部分都定位於解釋語法,而不是如何運用語言進行設計,不太適合於課堂教學。本書的重點是硬件描述語言的設計方法學,因此語言本身只是一個配角。這一版中強化瞭如何通過實例證明,將一個數字系統描述並劃分為數據通路、狀態(反饋)信號和控制器(有限狀態機)系統結構的重要性。我們認為,這種描述可使設計和驗證複雜數字系統的方法更加清楚、直接、明了。本書給出了大量的仿真結果和註釋,以幫助學生掌握時序機的操作過程,並深入理解由控制器產生的信號間的時序互動關係,數據通路的操作,以及從數據通路回饋給控制器的信號。其目的都是為了開發出可綜合、無鎖存且無競爭的設計。
Verilog 2001和2005的語言增強功能已用於重新描述和簡化書中模型的代碼。我們強調工業界通用的規範和風格,但並不鼓勵不考慮模型能否被綜合的學術模型風格。本書第二版已把第一版中處理同步FIFO的部分改為同步和異步FIFO,並給出了精心設計的例子,以解釋使用異步FIFO來同步跨越時鐘域的數據傳輸問題。
書中的設計實例已多次優化和改進①。從設計方法學的角度,對一個嵌入式控制器,用C語言建模和用Verilog建模,這兩種設計方法學之間存在著競爭和互補的關係。基於C的方法執行陳述性語句,而Verilog HDL模擬了某個機器的多個並發的行為動作。後一種設計方法對硬件進行編譯,而前一種是編譯預先存儲在硬件單元中的語句。對於某個特定應用,Verilog模型編譯的硬件在主機接口處生成了等效的I/O信號。對於嵌入式代碼而言,其區別是不會產生等效的硬件。本書的目標就是講授硬件建模/編譯的範例,並預測綜合實現後的結果。C語言編程是預測程序產生的數據,而狀態機/處理器的應用卻顯而易見。作為對比,用Verilog描述的模型預測該硬件將產生應用所需求的I/O信號,因此需要開發者根據寄存器操作時序控制進行思考和設計。Verilog的模型鼓勵學習者理解一個數字電路和系統的本質。
本書要求學生已學過邏輯設計的入門課程,本書的目標是:(1)簡要復習組合時序邏輯的基本原理,(2)介紹HDL在設計中的應用,(3)強調的是快速設計通過ASIC和/或FPGA實現的電路設計描述風格,(4)提供具有一定難度的設計實例。章末習題的目的是鼓勵學生精煉、明晰化並驗證他們自己的設計。從本質上講,許多習題均為開放式的設計,要求驗證以達到所要求的設計規範。
廣泛使用的Verilog硬件描述語言(IEEE 1364標準),作為一個公共框架為本書的設計實例的討論提供了支持。第一版重點關注數字電路的設計、驗證和綜合,而不是Verilog語言本身的語法,本版仍然保持這種風格。
選修數字設計中級課程的多數學生至少應該熟悉一種編程語言,並且在閱讀本書時能夠將其作為可以藉鑑的背景知識。本書僅討論Verilog的核心設計方法及其廣泛使用的特性。為了強調在面向綜合的設計環境中使用該語言,我們還特意將許多語法的細節、特點和解釋放在附錄中中,以便於讀者參考。附錄中也提供了Verilog的所有形式化語法。
大部分數字設計的入門課程都介紹過通過狀態轉移圖表示的有限狀態機及算法狀態機( ASM)圖。同樣,本書中也大量使用了ASM圖,演示了其在設計時序狀態機的行為模型中的功用。對利用ASMD圖(即通過標註顯示出被控數據通道的寄存器操作的ASM圖)系統地設計有限狀態機來控制數字狀態機中復雜數據通道的重要問題,進行了深入論述。並將精簡指令集計算機中央處理器( RSIC CPU)和其他重要硬件單元的設計作為實例給出。我們的支持網站上包含了RISC計算機的源代碼和可用於應用程序開發的彙編程序。這個彙編程序也可作為研究魯棒性更好的指令集和其他派生架構的基礎。
本書完整地引入了Verilog語言,但僅在支持設計實例的需要時才進行詳細說明。正文中使用了大量的實例,講解使用Verilog硬件描述語言進行VLSI電路設計時的重要和關鍵設計步驟。設計實例的源代碼都經過了驗證,並且所有實例的源代碼和測試平台都可以從出版社的網站下載。讀者對象
本書適用於學習高級數字系統設計課程的學生,以及那些想通過實例學習Verilog的現代集成電路設計專業工程師。本書適合電子工程、計算機工程和計算機科學等專業的高年級本科生和低年級研究生,也適合學習過邏輯設計入門課程的專業工程師使用。本書假定讀者俱有布爾代數及其在邏輯電路設計中應用的背景知識,並熟悉同步時序有限狀態機。在此基礎上,本書討論了一些應用於計算機系統、數字信號處理、圖像處理、跨時鐘域的數據傳輸、內建自測試( BIST)和一些其他應用的重要電路的設計實例。這些實例涵蓋了建模、架構的設計折中、流水線技術、多處理器執行、功能驗證、定時分析、測試生成、故障模擬,可測性分析、邏輯綜合和綜合後驗證的關鍵設計問題。
目次
目 錄
第1章 數字設計方法概論
1.1 設計方法簡介
1.1.1 設計規格
1.1.2 設計劃分
1.1.3 設計輸入
1.1.4 仿真與功能驗證
1.1.5 設計整合與驗證
1.1.6 預綜合完成
1.1.7 門級綜合與工藝映射
1.1.8 后綜合設計確認
1.1.9 后綜合時序驗證
1.1.10 測試生成與故障模擬
1.1.11 布局與布線
1.1.12 物理和電氣設計規則檢查
1.1.13 提取寄生參量
1.1.14 設計完成
1.2 IC工藝選擇
1.3 后續內容概覽
參考文獻
第2章 組合邏輯設計回顧
2.1 組合邏輯與布爾代數
2.1.1 ASIC庫單元
2.1.2 布爾代數
2.1.3 狄摩根定律
2.2 布爾代數化簡定理
2.3 組合邏輯的表示
2.3.1 積之和表示法
2.3.2 和之積表示法
2.4 布爾表達式的化簡
2.4.1 異或表達式的化簡
2.4.2 卡諾圖(積之和形式)
2.4.3 卡諾圖(和之積形式)
2.4.4 卡諾圖與任意項
2.4.5 擴展的卡諾圖
2.5 毛刺與冒險
2.5.1 靜態冒險的消除(積之和形式)
2.5.2 消除兩級電路靜態冒險的小結
2.5.3 多級電路中的靜態冒險
2.5.4 消除多級電路靜態冒險的小結
2.5.5 動態冒險
2.6 邏輯設計模塊
2.6.1 與非或非結構
2.6.2 多路復用器
2.6.3 多路解復用器
2.6.4 編碼器
2.6.5 優先編碼器
2.6.6 譯碼器
2.6.7 優先譯碼器
參考文獻
習題
第3章 時序邏輯設計基礎
3.1 存儲元件
3.1.1 鎖存器
3.1.2 透明鎖存器
3.2 觸發器
3.2.1 D觸發器
3.2.2 主從觸發器
3.2.3 J-K觸發器
3.2.4 T觸發器
3.3 總線與三態器件
3.4 時序機設計
3.5 狀態轉移圖
3.6 設計舉例: BCD碼到余3碼的轉換器
3.7 數據傳輸的串行線碼轉換器
3.7.1 設計舉例: 用Mealy型FSM實現串行線性碼轉換
3.7.2 設計舉例: 用Moore型FSM實現串行線碼轉換
3.8 狀態化簡與等價狀態
參考文獻
習題
第4章 Verilog邏輯設計介紹
4.1 組合邏輯的結構化模型
4.1.1 Verilog原語和設計封裝
4.1.2 Verilog結構化模型
4.1.3 模塊端口
4.1.4 語言規則
4.1.5 自頂向下的設計和模塊嵌套
4.1.6 設計層次和源代碼結構
4.1.7 Verilog矢量
4.1.8 結構化連接
4.2 邏輯系統設計驗證及測試方法
4.2.1 Verilog中的四值邏輯和信號解析
4.2.2 測試方法
4.2.3 測試平臺的信號發生器
4.2.4 事件驅動仿真
4.2.5 測試模板
4.2.6 定長數
4.3 傳播延時
4.3.1 慣性延時
4.3.2 傳輸延時
4.4 組合與時序邏輯的Verilog真值表模型
參考文獻
習題
第5章 用組合與時序邏輯的行為級模型進行邏輯設計
5.1 行為建模
5.2 行為級建模的數據類型的簡要介紹
5.3 基于布爾方程的組合邏輯行為級模型
5.4 傳播延時與連續賦值
5.5 Verilog中的鎖存器和電平敏感電路
5.6 觸發器和鎖存器的周期性行為模型
5.7 周期性行為和邊沿檢測
5.8 行為建模方式的比較
5.8.1 連續賦值模型
5.8.2 數據流/寄存器傳輸級模型
5.8.3 基于算法的模型
5.8.4 端口名稱: 風格問題
5.8.5 用行為級模型仿真
5.9 多路復用器、 編碼器和譯碼器的行為模型
5.10 線性反饋移位寄存器的數據流模型
5.11 用循環算法的數字機模型
5.11.1 IP(知識產權)的復用和參數化模型
5.11.2 時鐘發生器
5.12 多循環操作狀態機
5.13 設計文件中的函數和任務: 是精明還是愚蠢?
5.13.1 任務
5.13.2 函數
5.14 行為建模的算法狀態機圖
5.15 ASMD圖
5.16 計數器、 移位寄存器和寄存器組的行為級模型
5.16.1 計數器
5.16.2 移位寄存器
5.16.3 寄存器組和寄存器(存儲器)陣列
5.17 用于異步信號的去抖動開關、 亞穩定性和同步裝置
5.18 設計實例: 鍵盤掃描器和編碼器
參考文獻
習題
第6章 組合邏輯與時序邏輯的綜合
6.1 綜合簡介
6.1.1 邏輯綜合
6.1.2 RTL綜合
6.1.3 高級綜合
6.2 組合邏輯的綜合
6.2.1 優先級結構的綜合
6.2.2 利用邏輯無關緊要條件
6.2.3 ASIC單元與資源共享
6.3 帶鎖存器的時序邏輯綜合
6.3.1 鎖存器的無意綜合
6.3.2 鎖存器的有意綜合
6.4 三態器件和總線接口的綜合
6.5 帶有觸發器的時序邏輯綜合
6.6 顯式狀態機的綜合
6.6.1 BCD碼/余3碼轉換器的綜合
6.6.2 設計舉例: Mealy型NRZ碼/Manchester線性碼轉換器的綜合
6.6.3 設計舉例: Moore型NRZ碼/Manchester線性碼轉換器的綜合
6.6.4 設計舉例: 序列檢測器的綜合
6.7 寄存器邏輯
6.8 狀態編碼
6.9 隱式狀態機、 寄存器和計數器的綜合
6.9.1 隱式狀態機
6.9.2 計數器綜合
6.9.3 寄存器綜合
6.10 復位
6.11 門控時鐘與時鐘使能的綜合
6.12 預測綜合結果
6.12.1 數據類型綜合
6.12.2 運算符分組
6.12.3 表達式替代
6.13 循環的綜合
6.13.1 不帶內嵌定時控制的靜態循環
6.13.2 帶內嵌定時控制的靜態循環
6.13.3 不帶內嵌定時控制的非靜態循環
6.13.4 帶內嵌定時控制的非靜態循環
6.13.5 用狀態機替代不可綜合的循環
6.14 要避免的設計陷阱
6.15 分割與合并: 設計劃分
參考文獻
習題
第7章 數據通路控制器的設計與綜合
7.1 時序狀態機的劃分
7.2 設計實例: 二進制計數器
7.3 RISC存儲程序機的設計與綜合
7.3.1 RISC SPM: 處理器
7.3.2 RISC SPM: ALU
7.3.3 RISC SPM: 控制器
7.3.4 RISC SPM: 指令集
7.3.5 RISC SPM: 控制器設計
7.3.6 RISC SPM: 程序執行
7.4 設計實例: UART
7.4.1 UART的操作
7.4.2 UART發送器
7.4.3 UART接收器
參考文獻
習題
第8章 可編程邏輯及存儲器件
8.1 可編程邏輯器件
8.2 存儲器件
8.2.1 只讀存儲器
8.2.2 可編程ROM(PROM)
8.2.3 可擦除ROM
8.2.4 基于ROM的組合邏輯實現
8.2.5 用于ROM的Verilog系統任務
8.2.6 ROM的比較
8.2.7 基于ROM的狀態機
8.2.8 閃存
8.2.9 靜態隨機存儲器(SRAM)
8.2.10 鐵電非易失性存儲器
8.3 可編程邏輯陣列(PLA)
8.3.1 PLA最小化
8.3.2 PLA建模
8.4 可編程陣列邏輯(PAL)
8.5 PLD的可編程性
8.6 復雜可編程邏輯器件
8.7 現場可編程門陣列
8.7.1 FPGA在ASIC市場中的角色
8.7.2 FPGA技術
8.7.3 Xilinx公司Virtex系列FPGA
8.8 片上系統(SoC)的嵌入式可編程IP核
8.9 基于Verilog的FPGA設計流程
8.10 FPGA綜合
參考文獻
相關網站
習題及基于FPGA的設計訓練
第9章 數字處理器的算法和架構
9.1 算法、 循環嵌套程序和數據流圖
9.2 設計實例: 半色調像素圖像轉換器
9.2.1 半色調像素圖像轉換器的原型設計
9.2.2 基于NLP的半色調像素圖像轉換器結構
9.2.3 半色調像素圖像轉換器的最小并行處理器結構
9.2.4 半色調像素圖像轉換器: 設計權衡
9.2.5 帶反饋數據流圖的結構
9.3 數字濾波器和信號處理器
9.3.1 FIR濾波器
9.3.2 數字濾波器設計過程
9.3.3 IIR濾波器
9.4 構建信號處理器的基本運算單元模型
9.4.1 積分器(累加器)
9.4.2 微分器
9.4.3 抽樣和插值濾波器
9.5 流水線結構
9.5.1 設計實例: 流水線型加法器
9.5.2 設計實例: 流水線型FIR濾波器
9.6 環形緩沖器
9.7 異步FIFO――跨越時鐘域的同步問題
9.7.1 簡化異步FIFO
9.7.2 異步FIFO的時鐘同步
參考文獻
習題
第10章 算術處理器架構
10.1 數的表示方法
10.1.1 負整數的原碼表示
10.1.2 負整數的反碼表示方法
10.1.3 正數和負數的補碼表示方法
10.1.4 小數的表示
10.2 加減法功能單元
10.2.1 行波進位加法器
10.2.2 超前進位加法器
10.2.3 上溢出和下溢出
10.3 乘法運算功能單元
10.3.1 組合(并行)二進制乘法器
10.3.2 時序二進制乘法器
10.3.3 時序乘法器設計: 層次化分解
10.3.4 基于STG的控制器設計
10.3.5 基于STG的高效二進制時序乘法器
10.3.6 基于ASMD的時序二進制乘法器
10.3.7 基于ASMD的高效二進制時序乘法器
10.3.8 基于ASMD數據通路和控制器設計的總結
10.3.9 精簡寄存器時序乘法器
10.3.10 隱式狀態機二進制乘法器
10.3.11 Booth算法時序乘法器
10.3.12 比特對編碼
10.4 有符號二進制數乘法
10.4.1 有符號數的乘積: 被乘數為負, 乘數為正
10.4.2 有符號數的乘積: 被乘數為正, 乘數為負
10.4.3 有符號數的乘積: 被乘數、 乘數均為負
10.5 小數乘法
10.5.1 有符號小數: 被乘數、 乘數均為正
10.5.2 有符號小數: 被乘數為負, 乘數為正
10.5.3 有符號小數: 被乘數為正, 乘數為負
10.5.4 有符號小數: 被乘數、 乘數均為負
10.6 除法功能單元
10.6.1 無符號二進制數的除法
10.6.2 無符號二進制數的高效除法
10.6.3 精簡寄存器時序除法器
10.6.4 有符號二進制數(補碼)的除法
10.6.5 帶符號的計算
參考文獻
習題
第11章 后綜合設計任務
11.1 后綜合設計驗證
11.2 后綜合時序驗證
11.2.1 靜態時序分析
11.2.2 時序規范
11.2.3 影響時序的因素
11.3 ASIC中時序違約的消除
11.4 虛假路徑
11.5 用于時序驗證的系統任務
11.5.1 時序檢查: 建立時間條件
11.5.2 時序檢查: 保持時間約束
11.5.3 時序檢查: 建立時間和保持時間約束
11.5.4 時鐘檢查: 脈沖寬度約束
11.5.5 時序檢查: 信號偏移約束
11.5.6 時序檢查: 時鐘周期
11.5.7 時序檢查: 恢復時間
11.6 故障模擬及制造測試
11.6.1 電路缺陷和故障
11.6.2 故障檢測與測試
11.6.3 D標記法
11.6.4 組合電路的自動測試模板生成
11.6.5 故障覆蓋和缺陷級別
11.6.6 時序電路的測試生成
11.7 故障模擬
11.7.1 故障解析
11.7.2 串行故障模擬
11.7.3 并行故障模擬
11.7.4 并發性故障模擬
11.7.5 概率性故障模擬
11.8 JTAG端口和可測性設計
11.8.1 邊界掃描和JTAG端口
11.8.2 JTGA操作模式
11.8.3 JTAG寄存器
11.8.4 JTAG指令
11.8.5 TAP結構
11.8.6 TAP控制器狀態機
11.8.7 設計實例: JTAG測試
11.8.8 設計實例: 內建自測試
參考文獻
習題
附錄A Verilog原語
附錄B Verilog關鍵詞
附錄C Verilog數據類型
附錄D Verilog運算符
附錄E Verilog語言形式化語法(I)
附錄F Verilog語言形式化語法(II)
附錄G Verilog語言的附加特性
附錄H 觸發器和鎖存器類型
附錄I Verilog 2001, 2005
附錄J 編程語言接口
附錄K 相關網站
中英文術語對照表
第1章 數字設計方法概論
1.1 設計方法簡介
1.1.1 設計規格
1.1.2 設計劃分
1.1.3 設計輸入
1.1.4 仿真與功能驗證
1.1.5 設計整合與驗證
1.1.6 預綜合完成
1.1.7 門級綜合與工藝映射
1.1.8 后綜合設計確認
1.1.9 后綜合時序驗證
1.1.10 測試生成與故障模擬
1.1.11 布局與布線
1.1.12 物理和電氣設計規則檢查
1.1.13 提取寄生參量
1.1.14 設計完成
1.2 IC工藝選擇
1.3 后續內容概覽
參考文獻
第2章 組合邏輯設計回顧
2.1 組合邏輯與布爾代數
2.1.1 ASIC庫單元
2.1.2 布爾代數
2.1.3 狄摩根定律
2.2 布爾代數化簡定理
2.3 組合邏輯的表示
2.3.1 積之和表示法
2.3.2 和之積表示法
2.4 布爾表達式的化簡
2.4.1 異或表達式的化簡
2.4.2 卡諾圖(積之和形式)
2.4.3 卡諾圖(和之積形式)
2.4.4 卡諾圖與任意項
2.4.5 擴展的卡諾圖
2.5 毛刺與冒險
2.5.1 靜態冒險的消除(積之和形式)
2.5.2 消除兩級電路靜態冒險的小結
2.5.3 多級電路中的靜態冒險
2.5.4 消除多級電路靜態冒險的小結
2.5.5 動態冒險
2.6 邏輯設計模塊
2.6.1 與非或非結構
2.6.2 多路復用器
2.6.3 多路解復用器
2.6.4 編碼器
2.6.5 優先編碼器
2.6.6 譯碼器
2.6.7 優先譯碼器
參考文獻
習題
第3章 時序邏輯設計基礎
3.1 存儲元件
3.1.1 鎖存器
3.1.2 透明鎖存器
3.2 觸發器
3.2.1 D觸發器
3.2.2 主從觸發器
3.2.3 J-K觸發器
3.2.4 T觸發器
3.3 總線與三態器件
3.4 時序機設計
3.5 狀態轉移圖
3.6 設計舉例: BCD碼到余3碼的轉換器
3.7 數據傳輸的串行線碼轉換器
3.7.1 設計舉例: 用Mealy型FSM實現串行線性碼轉換
3.7.2 設計舉例: 用Moore型FSM實現串行線碼轉換
3.8 狀態化簡與等價狀態
參考文獻
習題
第4章 Verilog邏輯設計介紹
4.1 組合邏輯的結構化模型
4.1.1 Verilog原語和設計封裝
4.1.2 Verilog結構化模型
4.1.3 模塊端口
4.1.4 語言規則
4.1.5 自頂向下的設計和模塊嵌套
4.1.6 設計層次和源代碼結構
4.1.7 Verilog矢量
4.1.8 結構化連接
4.2 邏輯系統設計驗證及測試方法
4.2.1 Verilog中的四值邏輯和信號解析
4.2.2 測試方法
4.2.3 測試平臺的信號發生器
4.2.4 事件驅動仿真
4.2.5 測試模板
4.2.6 定長數
4.3 傳播延時
4.3.1 慣性延時
4.3.2 傳輸延時
4.4 組合與時序邏輯的Verilog真值表模型
參考文獻
習題
第5章 用組合與時序邏輯的行為級模型進行邏輯設計
5.1 行為建模
5.2 行為級建模的數據類型的簡要介紹
5.3 基于布爾方程的組合邏輯行為級模型
5.4 傳播延時與連續賦值
5.5 Verilog中的鎖存器和電平敏感電路
5.6 觸發器和鎖存器的周期性行為模型
5.7 周期性行為和邊沿檢測
5.8 行為建模方式的比較
5.8.1 連續賦值模型
5.8.2 數據流/寄存器傳輸級模型
5.8.3 基于算法的模型
5.8.4 端口名稱: 風格問題
5.8.5 用行為級模型仿真
5.9 多路復用器、 編碼器和譯碼器的行為模型
5.10 線性反饋移位寄存器的數據流模型
5.11 用循環算法的數字機模型
5.11.1 IP(知識產權)的復用和參數化模型
5.11.2 時鐘發生器
5.12 多循環操作狀態機
5.13 設計文件中的函數和任務: 是精明還是愚蠢?
5.13.1 任務
5.13.2 函數
5.14 行為建模的算法狀態機圖
5.15 ASMD圖
5.16 計數器、 移位寄存器和寄存器組的行為級模型
5.16.1 計數器
5.16.2 移位寄存器
5.16.3 寄存器組和寄存器(存儲器)陣列
5.17 用于異步信號的去抖動開關、 亞穩定性和同步裝置
5.18 設計實例: 鍵盤掃描器和編碼器
參考文獻
習題
第6章 組合邏輯與時序邏輯的綜合
6.1 綜合簡介
6.1.1 邏輯綜合
6.1.2 RTL綜合
6.1.3 高級綜合
6.2 組合邏輯的綜合
6.2.1 優先級結構的綜合
6.2.2 利用邏輯無關緊要條件
6.2.3 ASIC單元與資源共享
6.3 帶鎖存器的時序邏輯綜合
6.3.1 鎖存器的無意綜合
6.3.2 鎖存器的有意綜合
6.4 三態器件和總線接口的綜合
6.5 帶有觸發器的時序邏輯綜合
6.6 顯式狀態機的綜合
6.6.1 BCD碼/余3碼轉換器的綜合
6.6.2 設計舉例: Mealy型NRZ碼/Manchester線性碼轉換器的綜合
6.6.3 設計舉例: Moore型NRZ碼/Manchester線性碼轉換器的綜合
6.6.4 設計舉例: 序列檢測器的綜合
6.7 寄存器邏輯
6.8 狀態編碼
6.9 隱式狀態機、 寄存器和計數器的綜合
6.9.1 隱式狀態機
6.9.2 計數器綜合
6.9.3 寄存器綜合
6.10 復位
6.11 門控時鐘與時鐘使能的綜合
6.12 預測綜合結果
6.12.1 數據類型綜合
6.12.2 運算符分組
6.12.3 表達式替代
6.13 循環的綜合
6.13.1 不帶內嵌定時控制的靜態循環
6.13.2 帶內嵌定時控制的靜態循環
6.13.3 不帶內嵌定時控制的非靜態循環
6.13.4 帶內嵌定時控制的非靜態循環
6.13.5 用狀態機替代不可綜合的循環
6.14 要避免的設計陷阱
6.15 分割與合并: 設計劃分
參考文獻
習題
第7章 數據通路控制器的設計與綜合
7.1 時序狀態機的劃分
7.2 設計實例: 二進制計數器
7.3 RISC存儲程序機的設計與綜合
7.3.1 RISC SPM: 處理器
7.3.2 RISC SPM: ALU
7.3.3 RISC SPM: 控制器
7.3.4 RISC SPM: 指令集
7.3.5 RISC SPM: 控制器設計
7.3.6 RISC SPM: 程序執行
7.4 設計實例: UART
7.4.1 UART的操作
7.4.2 UART發送器
7.4.3 UART接收器
參考文獻
習題
第8章 可編程邏輯及存儲器件
8.1 可編程邏輯器件
8.2 存儲器件
8.2.1 只讀存儲器
8.2.2 可編程ROM(PROM)
8.2.3 可擦除ROM
8.2.4 基于ROM的組合邏輯實現
8.2.5 用于ROM的Verilog系統任務
8.2.6 ROM的比較
8.2.7 基于ROM的狀態機
8.2.8 閃存
8.2.9 靜態隨機存儲器(SRAM)
8.2.10 鐵電非易失性存儲器
8.3 可編程邏輯陣列(PLA)
8.3.1 PLA最小化
8.3.2 PLA建模
8.4 可編程陣列邏輯(PAL)
8.5 PLD的可編程性
8.6 復雜可編程邏輯器件
8.7 現場可編程門陣列
8.7.1 FPGA在ASIC市場中的角色
8.7.2 FPGA技術
8.7.3 Xilinx公司Virtex系列FPGA
8.8 片上系統(SoC)的嵌入式可編程IP核
8.9 基于Verilog的FPGA設計流程
8.10 FPGA綜合
參考文獻
相關網站
習題及基于FPGA的設計訓練
第9章 數字處理器的算法和架構
9.1 算法、 循環嵌套程序和數據流圖
9.2 設計實例: 半色調像素圖像轉換器
9.2.1 半色調像素圖像轉換器的原型設計
9.2.2 基于NLP的半色調像素圖像轉換器結構
9.2.3 半色調像素圖像轉換器的最小并行處理器結構
9.2.4 半色調像素圖像轉換器: 設計權衡
9.2.5 帶反饋數據流圖的結構
9.3 數字濾波器和信號處理器
9.3.1 FIR濾波器
9.3.2 數字濾波器設計過程
9.3.3 IIR濾波器
9.4 構建信號處理器的基本運算單元模型
9.4.1 積分器(累加器)
9.4.2 微分器
9.4.3 抽樣和插值濾波器
9.5 流水線結構
9.5.1 設計實例: 流水線型加法器
9.5.2 設計實例: 流水線型FIR濾波器
9.6 環形緩沖器
9.7 異步FIFO――跨越時鐘域的同步問題
9.7.1 簡化異步FIFO
9.7.2 異步FIFO的時鐘同步
參考文獻
習題
第10章 算術處理器架構
10.1 數的表示方法
10.1.1 負整數的原碼表示
10.1.2 負整數的反碼表示方法
10.1.3 正數和負數的補碼表示方法
10.1.4 小數的表示
10.2 加減法功能單元
10.2.1 行波進位加法器
10.2.2 超前進位加法器
10.2.3 上溢出和下溢出
10.3 乘法運算功能單元
10.3.1 組合(并行)二進制乘法器
10.3.2 時序二進制乘法器
10.3.3 時序乘法器設計: 層次化分解
10.3.4 基于STG的控制器設計
10.3.5 基于STG的高效二進制時序乘法器
10.3.6 基于ASMD的時序二進制乘法器
10.3.7 基于ASMD的高效二進制時序乘法器
10.3.8 基于ASMD數據通路和控制器設計的總結
10.3.9 精簡寄存器時序乘法器
10.3.10 隱式狀態機二進制乘法器
10.3.11 Booth算法時序乘法器
10.3.12 比特對編碼
10.4 有符號二進制數乘法
10.4.1 有符號數的乘積: 被乘數為負, 乘數為正
10.4.2 有符號數的乘積: 被乘數為正, 乘數為負
10.4.3 有符號數的乘積: 被乘數、 乘數均為負
10.5 小數乘法
10.5.1 有符號小數: 被乘數、 乘數均為正
10.5.2 有符號小數: 被乘數為負, 乘數為正
10.5.3 有符號小數: 被乘數為正, 乘數為負
10.5.4 有符號小數: 被乘數、 乘數均為負
10.6 除法功能單元
10.6.1 無符號二進制數的除法
10.6.2 無符號二進制數的高效除法
10.6.3 精簡寄存器時序除法器
10.6.4 有符號二進制數(補碼)的除法
10.6.5 帶符號的計算
參考文獻
習題
第11章 后綜合設計任務
11.1 后綜合設計驗證
11.2 后綜合時序驗證
11.2.1 靜態時序分析
11.2.2 時序規范
11.2.3 影響時序的因素
11.3 ASIC中時序違約的消除
11.4 虛假路徑
11.5 用于時序驗證的系統任務
11.5.1 時序檢查: 建立時間條件
11.5.2 時序檢查: 保持時間約束
11.5.3 時序檢查: 建立時間和保持時間約束
11.5.4 時鐘檢查: 脈沖寬度約束
11.5.5 時序檢查: 信號偏移約束
11.5.6 時序檢查: 時鐘周期
11.5.7 時序檢查: 恢復時間
11.6 故障模擬及制造測試
11.6.1 電路缺陷和故障
11.6.2 故障檢測與測試
11.6.3 D標記法
11.6.4 組合電路的自動測試模板生成
11.6.5 故障覆蓋和缺陷級別
11.6.6 時序電路的測試生成
11.7 故障模擬
11.7.1 故障解析
11.7.2 串行故障模擬
11.7.3 并行故障模擬
11.7.4 并發性故障模擬
11.7.5 概率性故障模擬
11.8 JTAG端口和可測性設計
11.8.1 邊界掃描和JTAG端口
11.8.2 JTGA操作模式
11.8.3 JTAG寄存器
11.8.4 JTAG指令
11.8.5 TAP結構
11.8.6 TAP控制器狀態機
11.8.7 設計實例: JTAG測試
11.8.8 設計實例: 內建自測試
參考文獻
習題
附錄A Verilog原語
附錄B Verilog關鍵詞
附錄C Verilog數據類型
附錄D Verilog運算符
附錄E Verilog語言形式化語法(I)
附錄F Verilog語言形式化語法(II)
附錄G Verilog語言的附加特性
附錄H 觸發器和鎖存器類型
附錄I Verilog 2001, 2005
附錄J 編程語言接口
附錄K 相關網站
中英文術語對照表
書摘/試閱
第1章數字設計方法概論
電路設計的經典設計方法是依賴於電路原理圖的人工設計方法,而現在的大規模複雜電路廣泛採用基於計算機語言的現代設計方法。這種實踐變革有幾方面的原因,其中最重要的原因是沒有任何一支設計工程師團隊能夠用人工方法有效、全面、正確地設計和管理含數百萬門級的現代集成電路(ⅡC)。但使用硬件描述語言(HDL),工程師們能很容易地實現對大型複雜電路系統的設計和管理。即使小規模電路的設計也更多地依賴於基於語言的描述,因為工程師們必須快速設計生產出滿足瞬息萬變的市場需求的產品。
基於語言的設計易於移植且不依賴於工藝,設計團隊也可以重用或修改以前的設計,以保持與更先進工藝的一致性。隨著器件物理尺寸的縮小,電路密度的提高,基於原有HDL模型進行綜合生成的電路同樣具有更高的性能。
硬件描述語言也是將各種設計專利成果集成為知識產權核(IP)的一種方便而有效的工具和手段。通過使用這種通用設計語言的描述,電路模塊可以根據需要單獨或合併進行綜合和測試,以縮短設計週期。有些仿真工具還支持基於多種語言的混合描述。
採用HDL最顯著的優點在於:基於語言描述的電路及其優化可以自動地進行綜合,而不用經歷人工設計方法中那些費力的步驟(如用卡諾圖化簡邏輯函數)。
目前,基於HDL的綜合方法是工業界普遍採用的主流設計方法。設計者可以通過構建一個軟件原型或模型來驗證其功能,然後利用綜合工具自動對所設計的電路進行優化,並且可以生成針對某物理工藝技術的網表(nctlist)。
HDL和綜合工具的應用使得工程師們更關注有關功能的設計,而不是具體的單個晶體管或邏輯門的設計;綜合得到的電路可以實現預期的功能,並滿足面積和/或性能的約束要求。無論是功能模型還是行為模型的HDL模型描述,都可綜合出不同的結構,並可據此快速對設計進行評估和折中。
HDL可作為多種設計工具的平台,包括:設計輸入、設計驗證、測試向量生成、故障分析和仿真、時序分析和/或驗證、綜合和原理圖的自動生成等任務。HDL這種寬範圍的覆蓋使得設計者的設計工作通過工具鏈路時,由於不再需要考慮設計描述在不同工具間的轉換過程而大大提高了設計流程的工作效率。
Veriog和VHDL兩種語言受到工業界的廣泛支持,這兩種語言都成為了IEEE(電氣和電子工程師協會)標準,並都得到ASIC(專用集成電路)和PPGA(現場可編程門陣列)相關綜合工具的支持。模擬電路設計語言,如SpiceL3,,在驗證電路的關鍵時序路徑上扮演著重要角色。但由於這些模擬電路描述語言對大型設計來說需要大得驚人的計算量,而且也不支持抽象設計,使得它們在大規模電路設計應用中變得很不實際。混合語言(如Verilog.A語言)用於設計兼有數字和模擬電路的混合信號系統。近幾年還出現了SystcmC和Superlog這樣的系統級設計語言,它們能夠支持比Verilog或VHDL語言更高抽象級別的設計。
……
電路設計的經典設計方法是依賴於電路原理圖的人工設計方法,而現在的大規模複雜電路廣泛採用基於計算機語言的現代設計方法。這種實踐變革有幾方面的原因,其中最重要的原因是沒有任何一支設計工程師團隊能夠用人工方法有效、全面、正確地設計和管理含數百萬門級的現代集成電路(ⅡC)。但使用硬件描述語言(HDL),工程師們能很容易地實現對大型複雜電路系統的設計和管理。即使小規模電路的設計也更多地依賴於基於語言的描述,因為工程師們必須快速設計生產出滿足瞬息萬變的市場需求的產品。
基於語言的設計易於移植且不依賴於工藝,設計團隊也可以重用或修改以前的設計,以保持與更先進工藝的一致性。隨著器件物理尺寸的縮小,電路密度的提高,基於原有HDL模型進行綜合生成的電路同樣具有更高的性能。
硬件描述語言也是將各種設計專利成果集成為知識產權核(IP)的一種方便而有效的工具和手段。通過使用這種通用設計語言的描述,電路模塊可以根據需要單獨或合併進行綜合和測試,以縮短設計週期。有些仿真工具還支持基於多種語言的混合描述。
採用HDL最顯著的優點在於:基於語言描述的電路及其優化可以自動地進行綜合,而不用經歷人工設計方法中那些費力的步驟(如用卡諾圖化簡邏輯函數)。
目前,基於HDL的綜合方法是工業界普遍採用的主流設計方法。設計者可以通過構建一個軟件原型或模型來驗證其功能,然後利用綜合工具自動對所設計的電路進行優化,並且可以生成針對某物理工藝技術的網表(nctlist)。
HDL和綜合工具的應用使得工程師們更關注有關功能的設計,而不是具體的單個晶體管或邏輯門的設計;綜合得到的電路可以實現預期的功能,並滿足面積和/或性能的約束要求。無論是功能模型還是行為模型的HDL模型描述,都可綜合出不同的結構,並可據此快速對設計進行評估和折中。
HDL可作為多種設計工具的平台,包括:設計輸入、設計驗證、測試向量生成、故障分析和仿真、時序分析和/或驗證、綜合和原理圖的自動生成等任務。HDL這種寬範圍的覆蓋使得設計者的設計工作通過工具鏈路時,由於不再需要考慮設計描述在不同工具間的轉換過程而大大提高了設計流程的工作效率。
Veriog和VHDL兩種語言受到工業界的廣泛支持,這兩種語言都成為了IEEE(電氣和電子工程師協會)標準,並都得到ASIC(專用集成電路)和PPGA(現場可編程門陣列)相關綜合工具的支持。模擬電路設計語言,如SpiceL3,,在驗證電路的關鍵時序路徑上扮演著重要角色。但由於這些模擬電路描述語言對大型設計來說需要大得驚人的計算量,而且也不支持抽象設計,使得它們在大規模電路設計應用中變得很不實際。混合語言(如Verilog.A語言)用於設計兼有數字和模擬電路的混合信號系統。近幾年還出現了SystcmC和Superlog這樣的系統級設計語言,它們能夠支持比Verilog或VHDL語言更高抽象級別的設計。
……
主題書展
更多
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。