《精通Verilog HDL IC设计核心技术实例详解》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:简弘伦编著
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2005
  • ISBN:7121017741
  • 页数:365 页
图书介绍:传统采取的Schematic设计方法已不能符合快速Time to Market的需求,高级的硬件设计语言(HDL: Hardware Design Language)应运而生。高级HDL设计方法的最大优点是可以通过EDA(Electrical Design Automation tool)来进行自动化的设计,从而实现许多以前难以达成的复杂功能。

第1章 设计方法概论(Design Methodology Introduction) 1

1.1 Verilog HDL硬件设计语言 1

1.2 设计流程(Design Flow) 4

1.2.1 设计规格阶段(Design Specification) 5

1.2.2 架构与设计划分阶段(Architecture Design Partition) 6

1.2.3 编程与测试环境设计阶段(RTL Coding Test Bench) 6

1.2.4 集成和仿真阶段(Integration Simulation) 7

1.2.5 综合阶段(Synthesis) 8

1.2.6 布局前仿真阶段(Pre-Layout Simulation) 9

1.2.7 布局与布线阶段(Auto Placement Route,AP R) 9

1.2.8 布局后仿真/静态时序分析/形式验证阶段(Post-Sim/STA/Formal Verification) 10

1.2.9 DRC/LVS检查阶段 11

1.2.10 Design Sign-off阶段 11

1.2.11 手动修正(Engineering Change Order,ECO) 11

1.3 程序设计风格(Coding Style) 12

1.4 综合(Synthesis) 15

1.4.1 不可综合的Verilog HDL描述 15

1.4.2 不可综合的运算符 15

1.4.3 操作条件(Operating Condition) 16

1.4.4 Setup Time Hold Time 16

1.4.5 元件库(Library) 17

1.4.6 时序约束(Timing Constraints) 18

1.4.7 时钟信号综合(Synthesis for Clock) 19

1.4.8 线路负载模型(Wire Load Model) 19

1.4.9 设计规则检查(Design Rule Check,DRC) 20

1.4.10 综合的原则 20

1.4.11 综合扫描电路(Scan Synthesis) 22

1.5 布局与布线(Auto Placement Route,AP R) 23

1.5.1 布局的概念 23

1.5.2 Floorplan 25

1.5.3 Cut Scan Chain 26

1.5.4 Pre-Placement Optimization 27

1.5.5 Placement 27

1.5.6 Placement Optimization 27

1.5.7 CTS(Clock Tree Synthesis) 27

1.5.8 Connect Scan Chain 29

1.5.9 Post Placement CTS Optimization 29

1.5.10 Route 29

1.5.11 Chip Utilization 29

1.5.12 PAD Limited Core Limited 29

1.6 标准延迟(Standard Delay Format,SDF)文件 30

1.6.1 线路延迟(Interconnect Delay) 31

1.6.2 元件延迟(Cell Delay) 32

1.7 现场可编程门阵列(Field Programming Gate Array,FPGA) 33

1.8 结构化ASIC(Structural ASIC) 34

1.9 测试 36

1.9.1 良率(Yield Rate)/缺陷比例(Defect Levels) 36

1.9.2 测试的阶段 37

1.9.3 瑕疵(Fault) 37

1.9.4 测试向量(Test Vector) 38

1.9.5 自动测试向量产生(Auto Test Pattern Generation,ATPG) 38

1.9.6 内存内建自我测试自动化(Built-InSelfTest,BIST) 46

1.10 功率消耗(Power Consumption) 50

1.10.1 如何利用综合器综合出低功率消耗的电路 54

1.10.2 功耗计算 56

1.11 本章习题 57

第2章 硬件设计语言 (Hardware Description Language) 59

2.1 设计层次(Design Hierarchy) 59

2.2 模块(Module) 60

2.3 端口声明(Port Declarations) 62

2.4 参数声明(Parameter Ddeclarations) 63

2.5 `include directives 63

2.6 变量声明(Variable Declarations) 63

2.7 管脚对应规则(Port Mapping Rule) 63

2.8 输出输入管脚规则(Port Connecting Rule) 65

2.9 测试平台(Test Bench) 66

2.10 事件(Event) 68

2.11 仿真器(Simulator) 71

2.12 执行过程(Executing Procedure) 71

2.12.1 initial statement 71

2.12.2 always statement 73

2.13 波形(Waveform) 74

2.14 空白与注释(Space Comments) 75

2.15 数字单位(Number of Specification) 76

2.16 数值逻辑(Value Logic) 77

2.17 数据类型(Data Type) 78

2.17.1 接线(Net) 78

2.17.2 寄存器(Register) 78

2.17.3 整数与实数(Integer Real) 79

2.17.4 时间(Time) 80

2.17.5 参数(Parameter) 81

2.17.6 数组(Array) 81

2.17.7 存储器(Memory) 82

2.17.8 字符串(String) 82

2.18 持续指定(Continuous Assignment) 83

2.19 运算符(Operator) 83

2.19.1 位运算符(Logical Bit-wise Operator) 85

2.19.2 逻辑运算符(Logical Operator) 86

2.19.3 等式运算符(Equality Operator) 87

2.19.4 关系运算符(Relational Operator) 89

2.19.5 移位运算符(Shift Operator) 90

2.19.6 缩减运算符(Reduction Operator) 96

2.19.7 算术运算符(Arithmetic Operator) 97

2.19.8 拼接运算符(Concatenation Operator) 100

2.19.9 条件运算符(Conditional Operator) 101

2.19.10 运算符的优先级 102

2.20 三态缓冲器及双向信号(Tristate Buffer Bidirectional Signals) 103

2.21 设计实例 104

2.21.1 CASE1:3-8译码器 104

2.21.2 CASE2:BCD码/加3码转换器 106

2.21.3 CASE3:奇偶校验(Parity Check) 108

2.21.4 CASE4:算术逻辑单元(ALU,Arithmetic Logic Unit) 110

2.21.5 CASE5:NRZI编码 113

2.22 本章习题 115

3.1.1 阻隔式赋值(Blocking Assignment) 117

第3章 行为建模(Behavioral Modeling) 117

3.1 过程赋值(Procedure Assignment) 117

3.1.2 非阻隔式赋值(Non-blocking Assignment) 119

3.2 时间延迟控制(Timing Delay Control) 121

3.3 门延迟(Gate Delay) 122

3.4 详细的延迟模型 123

3.5 时间刻度(Timescale) 126

3.6 条件语句 127

3.7 case语句 130

3.8 if语句和case语句的比较 133

3.9 循环(Loops) 134

3.9.1 while循环 135

3.9.2 for循环 135

3.9.4 forever循环 137

3.9.3 repeat循环 137

3.10 wait语句 138

3.11 循序区块与并行区块 139

3.12 任务与函数(Task Function) 140

3.12.1 任务(Task) 140

3.12.2 函数(Function) 143

3.12.3 任务与函数的比较 144

3.13 赋值(Assignment) 144

3.14 编译指令(Compiler Directive) 146

3.15 信号提取(Signal Extraction) 147

3.16 随机数产生器(Random Number Generator) 148

3.17 文件输出输入(File I/O) 149

3.17.1 打开文件(Open File) 149

3.17.2 写入文件(Write to.File) 150

3.17.3 读取文件(Read from File) 151

3.17.4 关闭文件(Close File) 152

3.17.5 由文件设定存储器初值 152

3.18 仿真控制任务(Simulation Control Task) 153

3.19 读入sdf文件 154

3.20 generate语句 154

3.21 除错实例分析 156

3.22 AMBA Master设计实例 158

3.22.1 控制信号 159

3.22.2 程序代码 160

3.22.3 仿真波形 168

3.23 本章习题 169

第4章 同步设计(Synchronous Design) 171

4.1 设计风格的重要性(Importance of Coding Style) 171

4.1.1 CASE1:多重驱动(Mutiple driven) 171

4.1.2 CASE2:正负沿混合设计(Mixed rising falling edge trigger) 172

4.1.3 CASE3:多重时钟驱动 173

4.1.4 CASE4:不以if-else作为condition的区分 173

4.1.5 CASE5:case语句里遗漏default的描述 174

4.1.6 CASE6:混合同步与异步Reset的语句 174

4.1.7 CASE7:对组合逻辑Reset 175

4.1.8 CASE8:不使用完整的敏感列表(Sensitivity List) 175

4.1.9 CASE9:没有初始状态的程序状态机 176

4.1.10 CASE10:在模块与模块间使用Bi-drectional Signal 178

4.2 资源共享(Resource Sharing) 179

4.3 流水线(PipeLine) 181

4.4 设计实例 184

4.4.1 七段显示器设计实例 184

4.4.2 触发器(Flip-Flops)的设计 185

4.4.3 时钟信号分频(Clock Divider)的设计 186

4.4.4 可以对任何数目分频的分频器 187

4.4.5 并行输入/串行输出(Parallel-In/Serial-Out)的移位寄存器 191

4.4.6 串行输入/并行输出(Serial-In/Parallel-Out)的移位寄存器 192

4.4.7 串行输入/串行输出(Serial-In/Serial-Out)的移位寄存器 194

4.4.8 具有向上计数/向下计数(Up-Down Count)功能的计数器 195

4.4.9 可以同步加载(Synchronous Load)的向上计数寄存器 197

4.4.10 Johnson计数器 199

4.4.11 以D触发器(Flip-Flop)实现J-K触发器(Flip-Flop) 201

4.4.12 Mealy程序状态机(State Machine)设计 202

4.4.13 Moore程序状态机设计——红绿灯控制电路 205

4.4.14 同步缓冲器设计(Synchronous FIFO) 208

4.4.15 堆栈控制设计(Stack) 214

4.5  本章习题 224

第5章 异步设计(Asynchronous Design) 225

5.1 同步设计与异步设计 (Synchronous Non-Synchronous design) 225

5.2 了解Latch 226

5.3 Timing Borrow 227

5.4 为什么产生Latch 228

5.4.1 CASE1:综合电路产生Latch实例1(嵌套if) 228

5.4.2 CASE2:综合电路产生Latch的实例2(嵌套if) 229

5.4.3 CASE3:case语句导致Latch的实例 230

5.4.4 CASE4:因为敏感列表(Sensitivity List)不全导致Latch的实例 231

5.5 以RTL综合Latch-based的存储器 232

5.6 跨越时钟域(ClockDomain)的问题 235

5.7 亚稳态(Metastable) 239

5.8 异步接口设计实例 241

5.8.1 设计概念 241

5.8.2 程序代码 243

5.8.3 仿真波形 250

5.9 本章习题 252

6.2 Ripple-Carry加法器 253

第6章 功能性单元(Functional Unit) 253

6.1 概述 253

6.3 Carry Look-ahead加法器 254

6.4 CSA(Carry Save Adder)加法器 256

6.5 CSA累加器(CSA Accumulator) 261

6.6 Ripple减法器 264

6.7 乘法器(Multiplier) 266

6.7.1 移位相加乘法器 266

6.7.2 CSD(Canonic Signed Digit)数 269

6.7.3 Ripple乘法器 273

6.7.4 CSA乘法器 277

6.7.5 SRAM乘法器 281

6.8 LFSR(Linear Feedback Shift Register) 283

6.9 CRC(Cyclic Redundancy Check) 288

6.10 4位CRC(Cyclic Redundancy Check) 293

6.11 本章习题 297

第7章 I2C Slave模型(I2C Slave Modeling) 299

7.1 规格说明 299

7.1.1 器件连接(Device Connection) 300

7.1.2 位传输(Bit Transfer) 300

7.1.3 协定的起始与终止(Start/Stop Condition) 301

7.1.4 数据传输(Data Transfer) 301

7.1.5 时钟信号的同步(Clock Synchronization) 302

7.1.6 仲裁(Arbitration) 303

7.2 程序设计概念 304

7.3 程序代码 305

7.4 仿真波形 317

第8章 微处理器设计实例(Microprocessor Design) 319

8.1 CISC vs.RISC 320

8.2 计算机架构简介 321

8.3 测试 327

8.4 执行结果 329

8.5 程序代码 329

第9章 JPEG编码硬件加速器 (JPEG Encoder Accelerator) 349

9.1 JPEG概述 349

9.2 设计描述(Design Description) 353

9.2.1 dct_1d模块设计概念 354

9.2.2 dctctl模块设计概念 357

9.2.3 jpegctl模块设计概念 358

9.2.4 smul模块设计概念 359

9.2.5 zzscan模块设计概念 360

9.2.6 vlcctl模块的设计概念 362

9.2.7 packer模块的设计概念 363

9.3 程序代码 365