第1章 设计方法概认(Design Methodology Introduction)
1.1 Verilog HDL硬件设计语言
1.2 设计流程(Design Flow)
1.2.1 设计规格阶段(Design Specification)
1.2.2 架构与设计划分阶段(Architecture&Design Partition)
1.2.3 编程与测试环境设计阶段(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 布局后仿真/静态时序分析/形式验证阶段(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 设计规则检查(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 管脚对应规则(Port Mapping Rule)
2.8 输出输入管理脚规则(Port Connecting Rule)
2.9 测试平台(Test Bench)
2.10 事件(Event)
2.11 仿真器(Simulator)
2.12 执行过程(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 持续指定(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 运算符的优先级
2.20 三态缓冲器及双向信号(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 循环(Loops)
3.9.1 while循环
3.9.2 for循环
3.9.3 repeat循环
3.9.4 forever循环
3.10 wait语句
3.11 循序区块与并行区块
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区分
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:没有初始状态的程序状态机
4.1.10 CASE10:在模块与模块间使用Bi-drectional Signal
4.2 资源共享(Resource Sharing)
4.3 流水线(PipeLine)
4.4 设计实例
4.4.1 七段显示器设计实例
4.4.2 触发器(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触发器(Flip-Flop)实现J-K触发器(Flip-Flop)
4.4.12 Mealy程序状态机(State Machine)设计
4.4.13 Moore程序状态机设计——红绿灯控制电路
4.4.14 同步缓冲器设计(Synchronous FIFO)
4.4.15 堆栈控制设计(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 亚稳太(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 规格说明
7.1.1 器件连接(Device Connection)
7.1.2 位传输(Bit Transfer)
7.1.3 协定的起始与终止(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 执行结果
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 程序代码