第1章 設計方法概認(Design Methodology Introduction)
1.1 Verilog HDL硬件設計語言
1.2 設計流程(Design Flow)
1.2.1 設計規(guī)格階段(Design Specification)
1.2.2 架構與設計劃分階段(Architecture&Design Partition)
1.2.3 編程與測試環(huán)境設計階段(RTL Coding&Test Bench)
1.2.4 集成和仿真階段(Integration&Simulation)
1.2.5 綜合階段(Synthesis)
1.2.6 布局前仿真階段(Pre-Layout Simulation)
1.2.7 布局與布線階段( Auto Placement &Route,AP&R)
1.2.8 布局后仿真/靜態(tài)時序分析/形式驗證階段(Post-Sim/STA/Formal Verification)
1.2.9 DRC/LVS檢查階段
1.2.10 Design Sing-off階段
1.2.11 手動修正(Engineering Change Order,ECO)
1.3 程序設計風格(Coding Style)
1.4 綜合(Synthesis)
1.4.1 不可綜合的Verilog HDL描述
1.4.2 不可綜合的運算符
1.4.3 操作條件(Operating Condition)
1.4.4 Setup Time & Hold Time
1.4.5 元件庫(Library)
1.4.6 時序約束(Timing Constraints)
1.4.7 時鐘信號綜合 (Synthesis for Clock)
1.4.8 線路負載模型 (Wire Load Model)
1.4.9 設計規(guī)則檢查(Design Rule Check,DRC)
1.4.10 綜合的原則
1.4.11 綜合掃描電路(Scan Synthesis)
1.5 布局與布線(Auto Placement & Route,AP&R)
1.5.1 布局的概念
1.5.2 Floorplan
1.5.3 Cut Scan Chain
1.5.4 Pre-Placement Optimization
1.5.5 Placement
1.5.6 Placement Optimization
1.5.7 CTS(Clock Tree Synthesis)
1.5.8 Connect Scan Chain
1.5.9 Post Placement & CTS Optimization
1.5.10Route
1.5.11 Chip Utilization
1.5.12 PAD Limited & Core Limited
1.6 標準延遲文件(Standard Delay Format,SDF)
1.6.1 線路延遲(Interconnect Delay)
1.6.2 元件延遲(Cell Delay)
1.7 現場可編程門陣列(Field Programming Gate Array,FPGA)
1.8 結構化ASIC(Structural ASIC)
1.9 測試
1.9.良率(Yield Rate)/缺陷比例(Defect Levels)
1.9.2 測試的階段
1.9.3 瑕疵(Fault)
1.9.4 測試向量(Test Vector)
1.9.5 自動測試向量產生 (Auto Test Pattern Generation,ATPG)
1.9.6 內存內建自我測試自動化(Built-In Self Test,BIST)
1.10 功率消耗(Power Consumption)
1.10.1 如何利用綜合器綜合出低功率消耗的電路
1.10.2 功耗計算
1.11 本章習題
第2章 硬件設計語言(Hardware Description language)
2.1 設計層次(Design Hierarchy)
2.2 模塊(Module)
2.3 端口聲明(Port Declarations)
2.4 參數聲明(Parameter Ddeclarations)
2.5 include directives
2.6 變量聲明(Variable Decalarations)
2.7 管腳對應規(guī)則(Port Mapping Rule)
2.8 輸出輸入管理腳規(guī)則(Port Connecting Rule)
2.9 測試平臺(Test Bench)
2.10 事件(Event)
2.11 仿真器(Simulator)
2.12 執(zhí)行過程(Executing Procedure)
2.12.1 initial statement
2.12.2 always statement
2.13 波形(Waveform)
2.14 空白與注釋(Space&Comments)
2.15 數字單位(Number of Specification)
2.16 數值邏輯(Value Logic)
2.17 數據類型(Data Type)
2.17.1 接線(Net)
2.17.2 寄存器(Register)
2.17.3 整數與實數(Integer&Real)
2.17.4 時間(Time)
2.17.5 參數(Parameter)
2.17.6 數組(Array)
2.17.7 存儲器(Memory)
2.17.8 字符串(String)
2.18 持續(xù)指定(Continuous Assignment)
2.19 運算符(operator)
2.19.1 位運算符(Logical Bit-wise Operator)
2.19.2 邏輯運算符(Logical operator)
2.19.3 等式運算符(Equality Operator)
2.19.4 關系運算符(Relational Operator)
2.19.5 移位運算符(Shift Operator)
2.19.6 縮減運算符(Reduction Operator)
2.19.7 算術運算符(Arithmetic Operator)
2.19.8 拼接運算符(Concatenation Operator)
2.19.9 條件運算符(Conditional Operator)
2.19.10 運算符的優(yōu)先級
2.20 三態(tài)緩沖器及雙向信號(Tristate Buffer & Bidirectional signals)
2.21 設計實例
2.21.1 CASE1:3-8譯器器
2.21.2 CASE2:BCD碼/加3碼轉換器
2.21.3 CASE3:奇偶校驗(Parity Check)
2.21.4 CASE4:算術邏輯單元(ALU,Arithmetic Logic Unit)
2.21.5 CASE5:NRZI編碼
2.22 本章習題
第3章 行為建模(Behavioral Modeling)
3.1 過程賦值(Procedure Assignment)
3.1.1 阻隔式賦值(Bolcking Assignment)
3.1.2 非阻隔式賦值(Non-Blocking Assignment)
3.2 時間延遲控制(Timing Delay Control)
3.3 門延遲(Gate Delay)
3.4 詳細的延遲模型
3.5 時間刻度(Timescale)
3.6 條件語句
3.7 case語句
3.8 if語句和case語句的比較
3.9 循環(huán)(Loops)
3.9.1 while循環(huán)
3.9.2 for循環(huán)
3.9.3 repeat循環(huán)
3.9.4 forever循環(huán)
3.10 wait語句
3.11 循序區(qū)塊與并行區(qū)塊
3.12 任務與函數(Task&Function)
3.12.1 任務(Task)
3.12.2 函數(Function)
3.12.3 任務與函數的比較
3.13 賦值(Assignment)
3.14 編譯指令(Compiler Directive)
3.15 信號提取(Signal Extraction)
3.16 隨機數產生器(Random Number Generator)
3.17 文件輸出輸入(File I/O)
3.17.1 打開文件(Open File)
3.17.2 寫入文件(Write to Flie)
3.17.3 讀取文件(Read from Flit )
3.17.4 關閉文件(Close File)
3.17.5 由文件設定存儲器初值
3.18 仿真控制任務(Simulation Control Task)
3.19 讀入sdf文件
3.20 enerate語句
3.21 除錯實例分析
3.22 AMBA Master設計實例
3.22.1 控制信號
3.22.2 程序代碼
3.22.3 仿真波形
3.23 本章習題
第4章 同步設計(Synchronous Design)
4.1 設計風格的重要性(Importance of Coding Style)
4.1.1 CASE1:多重驅動(Mutiple driven)
4.1.2 CASE2:正負沿混合設計(Mixed rising &falling edge trigger)
4.1.3 CASE3:多重時鐘驅動
4.1.4 CASE4:不以if-else作為的condition區(qū)分
4.1.5 CASE5: case語句里遺漏default的描述
4.1.6 CASE6:混合同步與異步Reset的語句
4.1.7 CASE7:對組合邏輯Reset
4.1.8 CASE8:不使用完整的敏感列表(Sen sitivity List)
4.1.9 CASE9:沒有初始狀態(tài)的程序狀態(tài)機
4.1.10 CASE10:在模塊與模塊間使用Bi-drectional Signal
4.2 資源共享(Resource Sharing)
4.3 流水線(PipeLine)
4.4 設計實例
4.4.1 七段顯示器設計實例
4.4.2 觸發(fā)器(Flip-Flops)的設計
4.4.3 時鐘信號分頻(Clock Divider)的設計
4.4.4 可以對任務數目分頻的分頻器
4.4.5 并行輸入/串行輸出(Parallel-In/Serial-out)的移位寄存器
4.4.6 串行輸入/并行輸出(Serial-In/Parallel-out)的移位寄存器
4.4.7 串行輸入/串行輸出(Serial-In/Serial-out)的移位寄存器
4.4.8 具有向上計數/向下計數(Up-Down Count)功能的計數器
4.4.9 可以同步加載(SynchronousLoad)的向上計數寄存器
4.4.10 Johnson計數器
4.4.11 以D觸發(fā)器(Flip-Flop)實現J-K觸發(fā)器(Flip-Flop)
4.4.12 Mealy程序狀態(tài)機(State Machine)設計
4.4.13 Moore程序狀態(tài)機設計——紅綠燈控制電路
4.4.14 同步緩沖器設計(Synchronous FIFO)
4.4.15 堆??刂圃O計(Stack)
4.5 本章習題
第5章 異步(Asynchronous Design)
5.1 同步設計與異步設計(Synchonous &Non-Synchronous design)
5.2 了解Latch
5.3 Timing Borrow
5.4 為什么產生Latch
5.4.1 CASE1:綜合電路產生Latch實例1(嵌套)
5.4.2 CASE2:綜合電路產生Latch實例2(嵌套)
5.4.3 CASE3:語句導致Latch的實例
5.4.4 CASE4:因為敏感列表(Sensitivity List)不全導致Latch的實例
5.5 以RTL綜合Latch-based的存儲器
5.6 跨越時鐘域(Clock Domain)的問題
5.7 亞穩(wěn)太(Metastable)
5.8 異步接口設計實例
5.8.1 設計概念
5.8.2 程序代碼
5.8.3 仿真波形
5.9 本間習題
第6章 功能性單元(Functional Unit)
6.1 概述
6.2 Ripple-Carry加法器
6.3 Carry Look-ahead加法器
6.4 CSA(Cary Save Adder)加法器
6.5 累加器(CSA Accumulator)
6.6 Ripple減法器
6.7 乘法器(Multiplier)
6.7.1 移位相加乘法器
6.7.2 CSD(Canonic Signed Digit)數
6.7.3 Ripple乘法器
6.7.4 CSA乘法器
6.7.5 SRAM乘法器
6.8 LFSR(Linear Feedback Shift Register)
6.9 CRC(Cyclic Redundancy Check)
6.10 4位CRC (Cyclic Redundancy Check)
6.11 本章習題
第7章 I2C Slave模型(I2C Slave Modeling)
7.1 規(guī)格說明
7.1.1 器件連接(Device Connection)
7.1.2 位傳輸(Bit Transfer)
7.1.3 協(xié)定的起始與終止(Start/Stop Condition)
7.1.4 數據傳輸(Data transfer)
7.1.5 時鐘信號的同步(Clock Synchronization)
7.1.6 仲裁(Arbitration)
7.2 程序設計概念
7.3 程序代碼
7.4 仿真波形
第8章 微處理器設計實例(Microprocessor Design)
8.1 CISC vs.RISC
8.2 計算機架構簡介
8.3 測試
8.4 執(zhí)行結果
8.5 程序代碼
第9章 JPEG編碼硬件加速器(JPEG Encoder Accelerator)
9.1 JPEG概述
9.2 設計描述(Design Description)
9.2.1 dct_ld模塊設計概念
9.2.2 dctctl模塊設計概念
9.2.3 jpegctl模塊設計概念
9.2.4 smul模塊設計概念
9.2.5 zzscan模塊設計概念
9.2.6 vlcctl模塊設計概念
9.2.7 packer模塊設計概念
9.3 程序代碼