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