關(guān)于我們
書單推薦
新書推薦
|
Verilog HDL高級數(shù)字設(shè)計(第二版)
本書依據(jù)數(shù)字集成電路系統(tǒng)工程開發(fā)的要求與特點,利用Verilog HDL對數(shù)字系統(tǒng)進(jìn)行建模、設(shè)計與驗證,對ASIC/FPGA系統(tǒng)芯片工程設(shè)計開發(fā)的關(guān)鍵技術(shù)與流程進(jìn)行了深入講解,內(nèi)容包括:集成電路芯片系統(tǒng)的建模、電路結(jié)構(gòu)權(quán)衡、流水線技術(shù)、多核微處理器、功能驗證、時序分析、測試平臺、故障模擬、可測性設(shè)計、邏輯綜合、后綜合驗證等集成電路系統(tǒng)的前后端工程設(shè)計與實現(xiàn)中的關(guān)鍵技術(shù)及設(shè)計案例。書中以大量設(shè)計實例敘述了集成電路系統(tǒng)工程開發(fā)須遵循的原則、基本方法、實用技術(shù)、設(shè)計經(jīng)驗與技巧。
第1章 數(shù)字設(shè)計方法概論
1.1 設(shè)計方法簡介 1.1.1 設(shè)計規(guī)格 1.1.2 設(shè)計劃分 1.1.3 設(shè)計輸入 1.1.4 仿真與功能驗證 1.1.5 設(shè)計整合與驗證 1.1.6 預(yù)綜合完成 1.1.7 門級綜合與工藝映射 1.1.8 后綜合設(shè)計確認(rèn) 1.1.9 后綜合時序驗證 1.1.10 測試生成與故障模擬 1.1.11 布局與布線 1.1.12 物理和電氣設(shè)計規(guī)則檢查 1.1.13 提取寄生參量 第1章 數(shù)字設(shè)計方法概論 1.1 設(shè)計方法簡介 1.1.1 設(shè)計規(guī)格 1.1.2 設(shè)計劃分 1.1.3 設(shè)計輸入 1.1.4 仿真與功能驗證 1.1.5 設(shè)計整合與驗證 1.1.6 預(yù)綜合完成 1.1.7 門級綜合與工藝映射 1.1.8 后綜合設(shè)計確認(rèn) 1.1.9 后綜合時序驗證 1.1.10 測試生成與故障模擬 1.1.11 布局與布線 1.1.12 物理和電氣設(shè)計規(guī)則檢查 1.1.13 提取寄生參量 1.1.14 設(shè)計完成 1.2 IC工藝選擇 1.3 后續(xù)內(nèi)容概覽 參考文獻(xiàn) 第2章 組合邏輯設(shè)計回顧 2.1 組合邏輯與布爾代數(shù) 2.1.1 ASIC庫單元 2.1.2 布爾代數(shù) 2.1.3 狄摩根定律 2.2 布爾代數(shù)化簡定理 2.3 組合邏輯的表示 2.3.1 積之和表示法 2.3.2 和之積表示法 2.4 布爾表達(dá)式的化簡 2.4.1 異或表達(dá)式的化簡 2.4.2 卡諾圖(積之和形式) 2.4.3 卡諾圖(和之積形式) 2.4.4 卡諾圖與任意項 2.4.5 擴(kuò)展的卡諾圖 2.5 毛刺與冒險 2.5.1 靜態(tài)冒險的消除(積之和形式) 2.5.2 消除兩級電路靜態(tài)冒險的小結(jié) 2.5.3 多級電路中的靜態(tài)冒險 2.5.4 消除多級電路靜態(tài)冒險的小結(jié) 2.5.5 動態(tài)冒險 2.6 邏輯設(shè)計模塊 2.6.1 與非或非結(jié)構(gòu) 2.6.2 多路復(fù)用器 2.6.3 多路解復(fù)用器 2.6.4 編碼器 2.6.5 優(yōu)先編碼器 2.6.6 譯碼器 2.6.7 優(yōu)先譯碼器 參考文獻(xiàn) 習(xí)題 第3章 時序邏輯設(shè)計基礎(chǔ) 3.1 存儲元件 3.1.1 鎖存器 3.1.2 透明鎖存器 3.2 觸發(fā)器 3.2.1 D觸發(fā)器 3.2.2 主從觸發(fā)器 3.2.3 J-K觸發(fā)器 3.2.4 T觸發(fā)器 3.3 總線與三態(tài)器件 3.4 時序機(jī)設(shè)計 3.5 狀態(tài)轉(zhuǎn)移圖 3.6 設(shè)計舉例: BCD碼到余3碼的轉(zhuǎn)換器 3.7 數(shù)據(jù)傳輸?shù)拇芯碼轉(zhuǎn)換器 3.7.1 設(shè)計舉例: 用Mealy型FSM實現(xiàn)串行線性碼轉(zhuǎn)換 3.7.2 設(shè)計舉例: 用Moore型FSM實現(xiàn)串行線碼轉(zhuǎn)換 3.8 狀態(tài)化簡與等價狀態(tài) 參考文獻(xiàn) 習(xí)題 第4章 Verilog邏輯設(shè)計介紹 4.1 組合邏輯的結(jié)構(gòu)化模型 4.1.1 Verilog原語和設(shè)計封裝 4.1.2 Verilog結(jié)構(gòu)化模型 4.1.3 模塊端口 4.1.4 語言規(guī)則 4.1.5 自頂向下的設(shè)計和模塊嵌套 4.1.6 設(shè)計層次和源代碼結(jié)構(gòu) 4.1.7 Verilog矢量 4.1.8 結(jié)構(gòu)化連接 4.2 邏輯系統(tǒng)設(shè)計驗證及測試方法 4.2.1 Verilog中的四值邏輯和信號解析 4.2.2 測試方法 4.2.3 測試平臺的信號發(fā)生器 4.2.4 事件驅(qū)動仿真 4.2.5 測試模板 4.2.6 定長數(shù) 4.3 傳播延時 4.3.1 慣性延時 4.3.2 傳輸延時 4.4 組合與時序邏輯的Verilog真值表模型 參考文獻(xiàn) 習(xí)題 第5章 用組合與時序邏輯的行為級模型進(jìn)行邏輯設(shè)計 5.1 行為建模 5.2 行為級建模的數(shù)據(jù)類型的簡要介紹 5.3 基于布爾方程的組合邏輯行為級模型 5.4 傳播延時與連續(xù)賦值 5.5 Verilog中的鎖存器和電平敏感電路 5.6 觸發(fā)器和鎖存器的周期性行為模型 5.7 周期性行為和邊沿檢測 5.8 行為建模方式的比較 5.8.1 連續(xù)賦值模型 5.8.2 數(shù)據(jù)流/寄存器傳輸級模型 5.8.3 基于算法的模型 5.8.4 端口名稱: 風(fēng)格問題 5.8.5 用行為級模型仿真 5.9 多路復(fù)用器、 編碼器和譯碼器的行為模型 5.10 線性反饋移位寄存器的數(shù)據(jù)流模型 5.11 用循環(huán)算法的數(shù)字機(jī)模型 5.11.1 IP(知識產(chǎn)權(quán))的復(fù)用和參數(shù)化模型 5.11.2 時鐘發(fā)生器 5.12 多循環(huán)操作狀態(tài)機(jī) 5.13 設(shè)計文件中的函數(shù)和任務(wù): 是精明還是愚蠢? 5.13.1 任務(wù) 5.13.2 函數(shù) 5.14 行為建模的算法狀態(tài)機(jī)圖 5.15 ASMD圖 5.16 計數(shù)器、 移位寄存器和寄存器組的行為級模型 5.16.1 計數(shù)器 5.16.2 移位寄存器 5.16.3 寄存器組和寄存器(存儲器)陣列 5.17 用于異步信號的去抖動開關(guān)、 亞穩(wěn)定性和同步裝置 5.18 設(shè)計實例: 鍵盤掃描器和編碼器 參考文獻(xiàn) 習(xí)題 第6章 組合邏輯與時序邏輯的綜合 6.1 綜合簡介 6.1.1 邏輯綜合 6.1.2 RTL綜合 6.1.3 高級綜合 6.2 組合邏輯的綜合 6.2.1 優(yōu)先級結(jié)構(gòu)的綜合 6.2.2 利用邏輯無關(guān)緊要條件 6.2.3 ASIC單元與資源共享 6.3 帶鎖存器的時序邏輯綜合 6.3.1 鎖存器的無意綜合 6.3.2 鎖存器的有意綜合 6.4 三態(tài)器件和總線接口的綜合 6.5 帶有觸發(fā)器的時序邏輯綜合 6.6 顯式狀態(tài)機(jī)的綜合 6.6.1 BCD碼/余3碼轉(zhuǎn)換器的綜合 6.6.2 設(shè)計舉例: Mealy型NRZ碼/Manchester線性碼轉(zhuǎn)換器的綜合 6.6.3 設(shè)計舉例: Moore型NRZ碼/Manchester線性碼轉(zhuǎn)換器的綜合 6.6.4 設(shè)計舉例: 序列檢測器的綜合 6.7 寄存器邏輯 6.8 狀態(tài)編碼 6.9 隱式狀態(tài)機(jī)、 寄存器和計數(shù)器的綜合 6.9.1 隱式狀態(tài)機(jī) 6.9.2 計數(shù)器綜合 6.9.3 寄存器綜合 6.10 復(fù)位 6.11 門控時鐘與時鐘使能的綜合 6.12 預(yù)測綜合結(jié)果 6.12.1 數(shù)據(jù)類型綜合 6.12.2 運算符分組 6.12.3 表達(dá)式替代 6.13 循環(huán)的綜合 6.13.1 不帶內(nèi)嵌定時控制的靜態(tài)循環(huán) 6.13.2 帶內(nèi)嵌定時控制的靜態(tài)循環(huán) 6.13.3 不帶內(nèi)嵌定時控制的非靜態(tài)循環(huán) 6.13.4 帶內(nèi)嵌定時控制的非靜態(tài)循環(huán) 6.13.5 用狀態(tài)機(jī)替代不可綜合的循環(huán) 6.14 要避免的設(shè)計陷阱 6.15 分割與合并: 設(shè)計劃分 參考文獻(xiàn) 習(xí)題 第7章 數(shù)據(jù)通路控制器的設(shè)計與綜合 7.1 時序狀態(tài)機(jī)的劃分 7.2 設(shè)計實例: 二進(jìn)制計數(shù)器 7.3 RISC存儲程序機(jī)的設(shè)計與綜合 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: 控制器設(shè)計 7.3.6 RISC SPM: 程序執(zhí)行 7.4 設(shè)計實例: UART 7.4.1 UART的操作 7.4.2 UART發(fā)送器 7.4.3 UART接收器 參考文獻(xiàn) 習(xí)題 第8章 可編程邏輯及存儲器件 8.1 可編程邏輯器件 8.2 存儲器件 8.2.1 只讀存儲器 8.2.2 可編程ROM(PROM) 8.2.3 可擦除ROM 8.2.4 基于ROM的組合邏輯實現(xiàn) 8.2.5 用于ROM的Verilog系統(tǒng)任務(wù) 8.2.6 ROM的比較 8.2.7 基于ROM的狀態(tài)機(jī) 8.2.8 閃存 8.2.9 靜態(tài)隨機(jī)存儲器(SRAM) 8.2.10 鐵電非易失性存儲器 8.3 可編程邏輯陣列(PLA) 8.3.1 PLA最小化 8.3.2 PLA建模 8.4 可編程陣列邏輯(PAL) 8.5 PLD的可編程性 8.6 復(fù)雜可編程邏輯器件 8.7 現(xiàn)場可編程門陣列 8.7.1 FPGA在ASIC市場中的角色 8.7.2 FPGA技術(shù) 8.7.3 Xilinx公司Virtex系列FPGA 8.8 片上系統(tǒng)(SoC)的嵌入式可編程IP核 8.9 基于Verilog的FPGA設(shè)計流程 8.10 FPGA綜合 參考文獻(xiàn) 相關(guān)網(wǎng)站 習(xí)題及基于FPGA的設(shè)計訓(xùn)練 第9章 數(shù)字處理器的算法和架構(gòu) 9.1 算法、 循環(huán)嵌套程序和數(shù)據(jù)流圖 9.2 設(shè)計實例: 半色調(diào)像素圖像轉(zhuǎn)換器 9.2.1 半色調(diào)像素圖像轉(zhuǎn)換器的原型設(shè)計 9.2.2 基于NLP的半色調(diào)像素圖像轉(zhuǎn)換器結(jié)構(gòu) 9.2.3 半色調(diào)像素圖像轉(zhuǎn)換器的最小并行處理器結(jié)構(gòu) 9.2.4 半色調(diào)像素圖像轉(zhuǎn)換器: 設(shè)計權(quán)衡 9.2.5 帶反饋數(shù)據(jù)流圖的結(jié)構(gòu) 9.3 數(shù)字濾波器和信號處理器 9.3.1 FIR濾波器 9.3.2 數(shù)字濾波器設(shè)計過程 9.3.3 IIR濾波器 9.4 構(gòu)建信號處理器的基本運算單元模型 9.4.1 積分器(累加器) 9.4.2 微分器 9.4.3 抽樣和插值濾波器 9.5 流水線結(jié)構(gòu) 9.5.1 設(shè)計實例: 流水線型加法器 9.5.2 設(shè)計實例: 流水線型FIR濾波器 9.6 環(huán)形緩沖器 9.7 異步FIFO——跨越時鐘域的同步問題 9.7.1 簡化異步FIFO 9.7.2 異步FIFO的時鐘同步 參考文獻(xiàn) 習(xí)題 第10章 算術(shù)處理器架構(gòu) 10.1 數(shù)的表示方法 10.1.1 負(fù)整數(shù)的原碼表示 10.1.2 負(fù)整數(shù)的反碼表示方法 10.1.3 正數(shù)和負(fù)數(shù)的補碼表示方法 10.1.4 小數(shù)的表示 10.2 加減法功能單元 10.2.1 行波進(jìn)位加法器 10.2.2 超前進(jìn)位加法器 10.2.3 上溢出和下溢出 10.3 乘法運算功能單元 10.3.1 組合(并行)二進(jìn)制乘法器 10.3.2 時序二進(jìn)制乘法器 10.3.3 時序乘法器設(shè)計: 層次化分解 10.3.4 基于STG的控制器設(shè)計 10.3.5 基于STG的高效二進(jìn)制時序乘法器 10.3.6 基于ASMD的時序二進(jìn)制乘法器 10.3.7 基于ASMD的高效二進(jìn)制時序乘法器 10.3.8 基于ASMD數(shù)據(jù)通路和控制器設(shè)計的總結(jié) 10.3.9 精簡寄存器時序乘法器 10.3.10 隱式狀態(tài)機(jī)二進(jìn)制乘法器 10.3.11 Booth算法時序乘法器 10.3.12 比特對編碼 10.4 有符號二進(jìn)制數(shù)乘法 10.4.1 有符號數(shù)的乘積: 被乘數(shù)為負(fù), 乘數(shù)為正 10.4.2 有符號數(shù)的乘積: 被乘數(shù)為正, 乘數(shù)為負(fù) 10.4.3 有符號數(shù)的乘積: 被乘數(shù)、 乘數(shù)均為負(fù) 10.5 小數(shù)乘法 10.5.1 有符號小數(shù): 被乘數(shù)、 乘數(shù)均為正 10.5.2 有符號小數(shù): 被乘數(shù)為負(fù), 乘數(shù)為正 10.5.3 有符號小數(shù): 被乘數(shù)為正, 乘數(shù)為負(fù) 10.5.4 有符號小數(shù): 被乘數(shù)、 乘數(shù)均為負(fù) 10.6 除法功能單元 10.6.1 無符號二進(jìn)制數(shù)的除法 10.6.2 無符號二進(jìn)制數(shù)的高效除法 10.6.3 精簡寄存器時序除法器 10.6.4 有符號二進(jìn)制數(shù)(補碼)的除法 10.6.5 帶符號的計算 參考文獻(xiàn) 習(xí)題 第11章 后綜合設(shè)計任務(wù) 11.1 后綜合設(shè)計驗證 11.2 后綜合時序驗證 11.2.1 靜態(tài)時序分析 11.2.2 時序規(guī)范 11.2.3 影響時序的因素 11.3 ASIC中時序違約的消除 11.4 虛假路徑 11.5 用于時序驗證的系統(tǒng)任務(wù) 11.5.1 時序檢查: 建立時間條件 11.5.2 時序檢查: 保持時間約束 11.5.3 時序檢查: 建立時間和保持時間約束 11.5.4 時鐘檢查: 脈沖寬度約束 11.5.5 時序檢查: 信號偏移約束 11.5.6 時序檢查: 時鐘周期 11.5.7 時序檢查: 恢復(fù)時間 11.6 故障模擬及制造測試 11.6.1 電路缺陷和故障 11.6.2 故障檢測與測試 11.6.3 D標(biāo)記法 11.6.4 組合電路的自動測試模板生成 11.6.5 故障覆蓋和缺陷級別 11.6.6 時序電路的測試生成 11.7 故障模擬 11.7.1 故障解析 11.7.2 串行故障模擬 11.7.3 并行故障模擬 11.7.4 并發(fā)性故障模擬 11.7.5 概率性故障模擬 11.8 JTAG端口和可測性設(shè)計 11.8.1 邊界掃描和JTAG端口 11.8.2 JTGA操作模式 11.8.3 JTAG寄存器 11.8.4 JTAG指令 11.8.5 TAP結(jié)構(gòu) 11.8.6 TAP控制器狀態(tài)機(jī) 11.8.7 設(shè)計實例: JTAG測試 11.8.8 設(shè)計實例: 內(nèi)建自測試 參考文獻(xiàn) 習(xí)題 附錄A Verilog原語 附錄B Verilog關(guān)鍵詞 附錄C Verilog數(shù)據(jù)類型 附錄D Verilog運算符 附錄E Verilog語言形式化語法(I) 附錄F Verilog語言形式化語法(II) 附錄G Verilog語言的附加特性 附錄H 觸發(fā)器和鎖存器類型 附錄I Verilog 2001, 2005 附錄J 編程語言接口 附錄K 相關(guān)網(wǎng)站 中英文術(shù)語對照表
前 言
精煉、明晰化與驗證 用硬件描述語言(HDL)建立行為級模型是現(xiàn)代專用集成電路設(shè)計的關(guān)鍵技術(shù)。如今, 大多數(shù)設(shè)計者使用基于硬件描述語言的設(shè)計方法, 創(chuàng)建基于語言的高層、抽象的電路描述, 以驗證其功能和時序。在本書第一版的使用過程中, 講授設(shè)計方法學(xué)所用的語言(IEEE 1464-1995)已經(jīng)歷了兩次修改, 分別是IEEE 1364-2001及2005年的修訂版, 即Verilog-2001和Verilog-2005, 以提高其有效性和效率。 這一版的編寫動機(jī)和第一版基本是相同的。對那些準(zhǔn)備在產(chǎn)品研發(fā)團(tuán)隊做出成績的學(xué)生們來說, 必須了解如何在設(shè)計流程的關(guān)鍵階段使用硬件描述語言。因此, 需要有一門在內(nèi)容上超越先修課程“數(shù)字設(shè)計”中學(xué)習(xí)過的基本原則和方法的課程, 本書就是為該課程而著的。 現(xiàn)在, 市面上討論硬件描述語言的書籍的數(shù)量已遠(yuǎn)遠(yuǎn)超過本書第一版出版時的數(shù)量。但是, 這些書大部分都定位于解釋語法, 而不是如何運用語言進(jìn)行設(shè)計, 不太適合于課堂教學(xué)。本書的重點是硬件描述語言的設(shè)計方法學(xué), 因此語言本身只是一個配角。這一版中強(qiáng)化了如何通過實例證明, 將一個數(shù)字系統(tǒng)描述并劃分為數(shù)據(jù)通路、狀態(tài)(反饋)信號和控制器(有限狀態(tài)機(jī))系統(tǒng)結(jié)構(gòu)的重要性。我們認(rèn)為, 這種描述可使設(shè)計和驗證復(fù)雜數(shù)字系統(tǒng)的方法更加清楚、直接、明了。本書給出了大量的仿真結(jié)果和注釋, 以幫助學(xué)生掌握時序機(jī)的操作過程, 并深入理解由控制器產(chǎn)生的信號間的時序互動關(guān)系, 數(shù)據(jù)通路的操作, 以及從數(shù)據(jù)通路回饋給控制器的信號。其目的都是為了開發(fā)出可綜合、 無鎖存且無競爭的設(shè)計。 Verilog 2001和2005的語言增強(qiáng)功能已用于重新描述和簡化書中模型的代碼。我們強(qiáng)調(diào)工業(yè)界通用的規(guī)范和風(fēng)格, 但并不鼓勵不考慮模型能否被綜合的學(xué)術(shù)模型風(fēng)格。本書第二版已把第一版中處理同步FIFO的部分改為同步和異步FIFO, 并給出了精心設(shè)計的例子, 以解釋使用異步FIFO來同步跨越時鐘域的數(shù)據(jù)傳輸問題。 書中的設(shè)計實例已多次優(yōu)化和改進(jìn)登錄華信教育資源網(wǎng)www.hxedu.com.cn可注冊下載本書相關(guān)配套資源。。從設(shè)計方法學(xué)的角度, 對一個嵌入式控制器, 用C語言建模和用Verilog建模, 這兩種設(shè)計方法學(xué)之間存在著競爭和互補的關(guān)系;贑的方法執(zhí)行陳述性語句, 而Verilog HDL模擬了某個機(jī)器的多個并發(fā)的行為動作。后一種設(shè)計方法對硬件進(jìn)行編譯, 而前一種是編譯預(yù)先存儲在硬件單元中的語句。對于某個特定應(yīng)用, Verilog模型編譯的硬件在主機(jī)接口處生成了等效的I/O信號。對于嵌入式代碼而言, 其區(qū)別是不會產(chǎn)生等效的硬件。本書的目標(biāo)就是講授硬件建模/編譯的范例, 并預(yù)測綜合實現(xiàn)后的結(jié)果。C語言編程是預(yù)測程序產(chǎn)生的數(shù)據(jù), 而狀態(tài)機(jī)/處理器的應(yīng)用卻顯而易見。作為對比, 用Verilog描述的模型預(yù)測該硬件將產(chǎn)生應(yīng)用所需求的I/O信號, 因此需要開發(fā)者根據(jù)寄存器操作時序控制進(jìn)行思考和設(shè)計。Verilog的模型鼓勵學(xué)習(xí)者理解一個數(shù)字電路和系統(tǒng)的本質(zhì)。 本書要求學(xué)生已學(xué)過邏輯設(shè)計的入門課程, 本書的目標(biāo)是:(1) 簡要復(fù)習(xí)組合時序邏輯的基本原理, (2) 介紹HDL在設(shè)計中的應(yīng)用, (3) 強(qiáng)調(diào)的是快速設(shè)計通過ASIC和/或FPGA實現(xiàn)的電路設(shè)計描述風(fēng)格, (4) 提供具有一定難度的設(shè)計實例。章末習(xí)題的目的是鼓勵學(xué)生精煉、明晰化并驗證他們自己的設(shè)計。從本質(zhì)上講, 許多習(xí)題均為開放式的設(shè)計, 要求驗證以達(dá)到所要求的設(shè)計規(guī)范。 廣泛使用的Verilog硬件描述語言(IEEE 1364標(biāo)準(zhǔn)), 作為一個公共框架為本書的設(shè)計實例的討論提供了支持。第一版重點關(guān)注數(shù)字電路的設(shè)計、驗證和綜合, 而不是Verilog語言本身的語法, 本版仍然保持這種風(fēng)格。 選修數(shù)字設(shè)計中級課程的多數(shù)學(xué)生至少應(yīng)該熟悉一種編程語言, 并且在閱讀本書時能夠?qū)⑵渥鳛榭梢越梃b的背景知識。本書僅討論Verilog的核心設(shè)計方法及其廣泛使用的特性。為了強(qiáng)調(diào)在面向綜合的設(shè)計環(huán)境中使用該語言, 我們還特意將許多語法的細(xì)節(jié)、特點和解釋放在附錄中中, 以便于讀者參考。附錄中也提供了Verilog的所有形式化語法。 大部分?jǐn)?shù)字設(shè)計的入門課程都介紹過通過狀態(tài)轉(zhuǎn)移圖表示的有限狀態(tài)機(jī)及算法狀態(tài)機(jī)(ASM)圖。同樣, 本書中也大量使用了ASM圖, 演示了其在設(shè)計時序狀態(tài)機(jī)的行為模型中的功用。對利用ASMD圖(即通過標(biāo)注顯示出被控數(shù)據(jù)通道的寄存器操作的ASM圖)系統(tǒng)地設(shè)計有限狀態(tài)機(jī)來控制數(shù)字狀態(tài)機(jī)中復(fù)雜數(shù)據(jù)通道的重要問題, 進(jìn)行了深入論述。并將精簡指令集計算機(jī)中央處理器(RSIC CPU)和其他重要硬件單元的設(shè)計作為實例給出。我們的支持網(wǎng)站上包含了RISC計算機(jī)的源代碼和可用于應(yīng)用程序開發(fā)的匯編程序。這個匯編程序也可作為研究魯棒性更好的指令集和其他派生架構(gòu)的基礎(chǔ)。 本書完整地引入了Verilog語言, 但僅在支持設(shè)計實例的需要時才進(jìn)行詳細(xì)說明。正文中使用了大量的實例, 講解使用Verilog硬件描述語言進(jìn)行VLSI電路設(shè)計時的重要和關(guān)鍵設(shè)計步驟。設(shè)計實例的源代碼都經(jīng)過了驗證, 并且所有實例的源代碼和測試平臺都可以從出版社的網(wǎng)站下載。 讀者對象 本書適用于學(xué)習(xí)高級數(shù)字系統(tǒng)設(shè)計課程的學(xué)生, 以及那些想通過實例學(xué)習(xí)Verilog的現(xiàn)代集成電路設(shè)計專業(yè)工程師。本書適合電子工程、計算機(jī)工程和計算機(jī)科學(xué)等專業(yè)的高年級本科生和低年級研究生, 也適合學(xué)習(xí)過邏輯設(shè)計入門課程的專業(yè)工程師使用。本書假定讀者具有布爾代數(shù)及其在邏輯電路設(shè)計中應(yīng)用的背景知識, 并熟悉同步時序有限狀態(tài)機(jī)。在此基礎(chǔ)上, 本書討論了一些應(yīng)用于計算機(jī)系統(tǒng)、數(shù)字信號處理、圖像處理、跨時鐘域的數(shù)據(jù)傳輸、內(nèi)建自測試(BIST)和一些其他應(yīng)用的重要電路的設(shè)計實例。這些實例涵蓋了建模、架構(gòu)的設(shè)計折中、流水線技術(shù)、多處理器執(zhí)行、功能驗證、定時分析、測試生成、故障模擬、可測性分析、邏輯綜合和綜合后驗證的關(guān)鍵設(shè)計問題。 本版的新穎之處 ● 探索了Verilog 2001和2005的主要特點 ● 闡述并推廣基于Verilog 2001和2005且可綜合的寄存器傳輸級(RTL)描述和算法建模的設(shè)計風(fēng)格 ● 深入討論基于Verilog 2001和2005的數(shù)字處理系統(tǒng)(如圖像處理器、數(shù)字濾波器和環(huán)形緩沖器)算法和架構(gòu) ● 給出了基于Verilog 2001和2005語言的綜合設(shè)計實例(如RISC計算機(jī)和各種數(shù)據(jù)通道控制器) ● 提供了大量有評注和解釋的仿真結(jié)果的圖形化描述 ● 給出了150多個經(jīng)過完全驗證的基于Verilog 2001和2005的設(shè)計實例 ● 含有利用Verilog 2001和2005編寫的具備JTAG和BIST可測功能的實用設(shè)計案例 ● 附錄中給出了Verilog 2001和2005 HDL的語法形式 ● 討論了異步和同步FIFO設(shè)計 本書特色 ● 簡要回顧了組合時序邏輯設(shè)計的基本原則 ● 重點討論現(xiàn)代數(shù)字設(shè)計方法 ● 說明了行為級建模中ASM和ASMD圖的作用 ● 明確指出了可綜合和不可綜合循環(huán)的區(qū)別 ● 通過實例對時序分析、故障模擬、測試和可測性設(shè)計進(jìn)行切合實際的討論 ● 每章后均設(shè)計了一些涉及面廣且難度高的習(xí)題相關(guān)教輔的申請(PPT, 習(xí)題解答)請與電子工業(yè)出版社聯(lián)系, 聯(lián)系電話: 010-88254555,E-mail: Te_serivce@phei?com?cn。 課程講授次序 本書首先對組合邏輯設(shè)計進(jìn)行簡要介紹和回顧, 接著描述了一個ASIC或FPGA的設(shè)計流程。按照書中內(nèi)容的順序, 第1章至第6章利用綜合的方法來研究設(shè)計了一些題目和內(nèi)容。但是, 閱讀第7章至第10章時, 則不必按照書中的順序。課后作業(yè)具有挑戰(zhàn)性, 而且基于FPGA的實驗練習(xí)適于同步實驗或?qū)W期末的課題。第10章列出了一些算術(shù)運算的架構(gòu), 覆蓋了較多的應(yīng)用范圍。第11章介紹了后綜合設(shè)計驗證、時序分析、故障模擬和可測試性設(shè)計。根據(jù)課程教學(xué)的深度和重點, 本章涵蓋的內(nèi)容和范圍也可省略。 說明 我們沒有堅持常規(guī)使用大寫和小寫字體, 或使用代碼清單專用字體。本書的選擇一直是基于最大化的整體視覺效果及所列代碼的可讀性。我們認(rèn)為, 設(shè)計實例中的代碼得到正確表達(dá)才是至關(guān)重要的。模塊框圖已被簡化, 以減少視覺混亂。所以, 我們通常只顯示信號的實際外部名稱, 而省略其形式化的內(nèi)在對應(yīng)名稱。由于D觸發(fā)器在現(xiàn)代EDA工具的綜合中起著主導(dǎo)作用, 因此書中幾乎唯一性地使用了D觸發(fā)器。 各章概述 第1章簡要論述了硬件描述語言在基于庫單元的ASIC和FPGA設(shè)計流程中的作用。第2章和第3章則根據(jù)傳統(tǒng)的教學(xué)方式(例如卡諾圖算法), 回顧了數(shù)字設(shè)計先修課程中涉及的主要知識。這些資料可以奠定讀者的數(shù)字設(shè)計的背景知識, 便于之后利用實例介紹許多基于硬件描述語言的數(shù)字設(shè)計方法。第4章和第5章介紹了組合電路與時序電路的Verilog語言建模方法, 重點強(qiáng)調(diào)了行為級建模中的代碼編寫風(fēng)格。第6章著重基于庫單元的ASIC綜合, 介紹了組合邏輯與時序邏輯的綜合。這一章追求兩個主要目標(biāo):(1) 提出可綜合的代碼描述風(fēng)格; (2) 建立能夠讓讀者預(yù)測綜合結(jié)果的基礎(chǔ)知識和能力。尤其在對時序狀態(tài)機(jī)綜合時, 通常會把時序狀態(tài)機(jī)分成數(shù)據(jù)通道和控制通道兩部分來編寫。第7章介紹了一些例子, 這些例子描述了怎樣設(shè)計一個數(shù)據(jù)通道的控制器, 包括帶有從數(shù)據(jù)通道反饋給控制器的狀態(tài)信號的狀態(tài)機(jī)設(shè)計。而RISC CPU設(shè)計和通用異步收發(fā)器(UART, 用于系統(tǒng)間傳輸數(shù)據(jù)的電路)的設(shè)計作為這個例子的應(yīng)用平臺。第8章講述了可編程邏輯器件(PLD)、復(fù)雜PLD、只讀存儲器(ROM)和靜態(tài)隨機(jī)存儲器(SRAM)的知識, 并將綜合目標(biāo)擴(kuò)展為FPGA的綜合。第9章主要涉及計算機(jī)結(jié)構(gòu)、數(shù)字濾波器和其他信號處理器中有關(guān)計算單元和算法的建模和綜合。第10章研究并描述了數(shù)字狀態(tài)機(jī)中計算單元的算法和結(jié)構(gòu)。第11章使用Verilog語言, 結(jié)合故障仿真器和時序分析器, 重新審查了之前設(shè)計的狀態(tài)機(jī)選擇方案, 并考慮性能、時序問題及可測性問題, 來優(yōu)化和完善這個主要取決于設(shè)計者的設(shè)計流程和任務(wù)。本章建模的測試訪問端口(TAP)控制器由IEEE 1149.1標(biāo)準(zhǔn)定義(即俗稱的JTAG標(biāo)準(zhǔn)), 并提出了其應(yīng)用實例。另外還給出了一個內(nèi)建自測試(BIST)的詳細(xì)實例。 致謝 本書作者非常感謝曾為本書做出貢獻(xiàn)并提出寶貴意見的同事和學(xué)生們的支持。本書是我的研發(fā)經(jīng)驗和在科羅拉多大學(xué)教學(xué)經(jīng)歷的綜合成果, 也包括我在惠普、福特微電子公司和Prisma公司的工作經(jīng)歷, 在荷蘭的Delft技術(shù)大學(xué)的教學(xué)經(jīng)驗, 以及在歐洲和亞洲的短期課程的教學(xué)經(jīng)驗。雖然其中有的公司如今已成回憶, 但是我仍然深深感謝這些公司和科羅拉多大學(xué)對我進(jìn)行VLSI電路設(shè)計研究工作的支持。本書手稿的第一版審稿人也提出了鼓勵、關(guān)鍵內(nèi)容的調(diào)整與許多有益的建議。我非常感謝Jim Tracey博士和Rodger Ziemer博士, 他們支持并肯定了我在VLSI電路設(shè)計方面的努力和成就, 我也十分感謝福特微電子公司的Deepak Goel先生, 他向我介紹了后來成為最先進(jìn)的VLSI設(shè)計平臺的福特微電子的Daisy工作站。感謝Simucad公司的Bill Fuchs先生, 他幫助我獲取了工業(yè)級的Verilog仿真器。感謝惠普公司的Tom Saponas和Dave Ritchey先生, 他們給我機(jī)會領(lǐng)導(dǎo)完成一個動態(tài)時序分析器的反向設(shè)計工程, 兩名學(xué)生David Uranek和Jerry Barnett參與并獲成功。十分感謝我在Prisma公司暑期工作的主管Dave Still先生, 提供了設(shè)計環(huán)境與精神鼓勵, 使我完成了高性能多核系統(tǒng)中建模的難題。感謝Sutherland HDL的Stu Sutherland幫助我理解并更深入研究了數(shù)字系統(tǒng)建模中的競爭條件問題, 這些觀點使我堅持使用非阻塞賦值來進(jìn)行邊緣敏感的行為級建模和使用阻塞賦值進(jìn)行電平敏感的行為級建模的描述風(fēng)格, 讓我更好地幫助學(xué)生理解同步數(shù)字系統(tǒng)的操作和設(shè)計。謝謝我的朋友兼同行、瑞士聯(lián)邦理工學(xué)院的Hubert Kaeslin博士, 與他進(jìn)行的有意義的討論讓我能更深入鉆研數(shù)字處理器的算法和結(jié)構(gòu)。感謝Kirk Sprague和Scott Kukel幫助研發(fā)了一個可用于UART的漢明編碼器。同時感謝Cris Hagan, 他的論文提供了本書第9章的數(shù)字信號處理器中的抽取器和其他功能單元建模。非常感謝Rex Anderson先生幫助校正了幾章的內(nèi)容, 并對第一版進(jìn)行了修改。謝謝我的學(xué)生Terry Hansen和Lisa Horton, 他們提供了咖啡自動販賣機(jī)例子的靈感, 并開發(fā)了支持RISC CPU的匯編代碼。同時我還要感謝科羅拉多大學(xué)的Greg Tumbush教授和Temple大學(xué)的Chen-Huan Chiang教授為本書第二版提供了重要建議, 也謝謝許多學(xué)生的課堂討論, 他們的發(fā)言為第二版提供了幫助。謝謝Scott Disanno和Irwin Zucker領(lǐng)導(dǎo)了第二版的出版, 謝謝Haseen Khan精心策劃本書的結(jié)構(gòu)。我向所有給予本書支持的朋友表示衷心的感謝!
你還可能感興趣
我要評論
|