《基于Verilog HDL的数字系统应用设计 第2版》PDF下载

  • 购买积分:11 如何计算积分?
  • 作  者:王钿,卓兴旺编著
  • 出 版 社:北京:国防工业出版社
  • 出版年份:2007
  • ISBN:7118052779
  • 页数:297 页
图书介绍:本书系统介绍了基于VerilogHDL以及数字逻辑设计相关的内容,包括工具使用,RTL设计等。

第1章 逻辑设计发展现状及开发流程 1

1.1 硬件描述语言HDL(Hardware Description Language) 1

1.1.1 硬件描述语言简介 1

1.1.2 Verilog语言简介 2

1.2 可编程逻辑器件 3

1.2.1 专用ASIC芯片VS.可编程逻辑器件 3

1.2.2 FPGA VS.CPLD 4

1.2.3 主流FPGA厂商介绍 4

1.2.4 在选择FPGA器件时需要考虑的问题 5

1.3 基于Verilog的FPGA设计方法及流程 6

1.3.1 设计方法 6

1.3.2 典型的FPGA设计流程 6

1.4 SOC与IP复用 8

1.4.1 SOC简介 8

1.4.2 IP CORE简介 9

1.4.3 设计方法学的进展 9

第2章 常用FPGA开发工具的使用 11

2.1 仿真工具Modelsim 11

2.1.1 Modelsim简介 11

2.1.2 用Modelsim6.0做功能仿真 12

2.1.3 用Modelsim做时序仿真 16

2.1.4 Modelsim其他一些应用技巧 18

2.2 综合工具Synplify Pro 21

2.2.1 Synplify Pro简介 22

2.2.2 用Synplify Pro进行设计综合流程 23

2.3 集成开发环境Quartus Ⅱ 27

2.3.1 Quartus Ⅱ简介 27

2.3.2 设计输入 29

2.3.3 约束输入 34

2.3.4 综合 36

2.3.5 布局布线 41

2.3.6 仿真 45

2.3.7 时序分析 49

2.3.8 编程和配置 53

第3章 RTL级建模 55

3.1 硬件意识 55

3.2 RTL级语法 57

3.2.1 Verilog模块基本结构 57

3.2.2 端口定义 58

3.2.3 对带三态输出端口的建模 58

3.2.4 对双向端口的建模 60

3.2.5 数据类型 60

3.2.6 连续赋值语句 62

3.2.7 敏感信号列表 62

3.2.8 always块 62

3.2.9 条件语句 63

3.2.10 多路分支语句 65

3.2.11 关于casez和casex的补充说明 70

3.2.12 if...else语句与case语句综合结果的比较 71

3.2.13 再谈锁存器 72

3.2.14 循环语句 73

3.2.15 阻塞与非阻塞赋值 74

3.2.16 模块例化 74

3.3 常用电路的设计 76

3.3.1 D触发器 76

3.3.2 多路复用器 76

3.3.3 多路解复用器 77

3.3.4 计数器与分频器 78

3.3.5 移位寄存器 84

3.3.6 时钟使能电路 85

3.3.7 边沿检测电路 87

3.4 有限状态机的设计 89

3.4.1 概述 89

3.4.2 moore型状态机 90

3.4.3 mealy型状态机 91

3.4.4 moore型状态机与mealy型状态机的选用 93

3.4.5 状态机的代码风格 94

3.4.6 状态编码 97

3.5 FPGA结构 105

3.5.1 FPGA的整体结构 106

3.5.2 IO管脚 107

3.5.3 LE 107

3.5.4 LAB 109

3.5.5 片内存储单元 110

3.5.6 锁相环与全局时钟网络 111

3.5.7 DSP模块 112

3.5.8 使用FPGA的一些建议 112

3.6 时序分析的基本概念 113

3.6.1 tSU与tH 113

3.6.2 亚稳态 113

3.6.3 tCO 114

3.6.4 Clock skew 114

3.6.5 FMAX的计算 115

3.6.6 Multicycle path 116

3.7 同步设计 117

3.7.1 什么是同步设计 117

3.7.2 同步设计的优点 117

3.7.3 同步设计准则 118

3.8 约束 120

3.8.1 约束对综合工具/布局布线工具的影响 120

3.8.2 在synplify中添加约束 120

3.8.3 在Quartus中添加约束 127

3.8.4 静态时序分析报告 133

3.9 如何提高电路的工作频率 135

3.9.1 影响电路工作频率的因素 135

3.9.2 减少走线时延 135

3.9.3 减少组合逻辑的时延 137

3.10 多时钟域处理 138

3.10.1 单个信号跨时钟域 139

3.10.2 一组信号跨时钟域 140

3.11 设计时序 142

3.12 代码优化 143

3.13 RTL级设计的其他注意事项 145

3.13.1 命名规范 145

3.13.2 保持良好的代码风格 145

3.13.3 参数化设计 146

3.13.4 输出应尽可能采用寄存器输出 146

3.13.5 将相关逻辑放在同一模块 146

3.13.6 尽量在“叶子”中做逻辑,顶层只做例化 146

3.13.7 “简单” 147

第4章 Testbench 148

4.1 功能验证 148

4.1.1 收敛模型 148

4.1.2 验证方法 149

4.1.3 覆盖率检查 150

4.2 Testbench概述 150

4.2.1 什么是Testbench 150

4.2.2 为什么要写Testbench 151

4.2.3 Testbench模型 151

4.2.4 一个简单的Testbench 152

4.3 行为级的Verilog语言 155

4.3.1 RTL建模VS.行为级建模 155

4.3.2 行为级的Verilog语法 157

4.3.3 再谈阻塞与非阻塞赋值 166

4.3.4 信号竞争问题 169

4.4 激励和响应 170

4.4.1 激励 170

4.4.2 响应 175

4.4.3 自动比较响应 176

4.5 总线功能模型 178

4.5.1 总线功能模型的地位 178

4.5.2 总线功能模型的要求 178

4.5.3 总线功能模型的设计 182

4.6 Testbench的结构 185

4.6.1 Testbench的层次 185

4.6.2 Testbench的重用性 185

第5章 RS232通信程序的设计 192

5.1 RS232基础 192

5.2 设计需求 193

5.3 模块划分 194

5.3.1 RTL级划分 194

5.3.2 Testbench的结构划分 194

5.4 RTL级代码 195

5.4.1 top_module模块 195

5.4.2 config_registers模块 197

5.4.3 frame_deal模块 201

5.4.4 tx_frame模块 203

5.4.5 rx_frame模块 207

5.4.6 rs232模块 212

5.4.7 txmit模块 214

5.4.8 rxvr模块 216

5.4.9 clken_gen模块 219

5.5 Testbench 221

5.5.1 Testcase模块 221

5.5.2 bm_frame_deal模块 224

5.5.3 harness模块 225

5.5.4 bfm_uart模块 227

5.5.5 osc_rst模块 229

5.6 仿真结果 230

第6章 数字信号处理的Verilog设计 231

6.1 数字信号处理FPGA实现简介 231

6.2 数字信号处理基本模块的实现 233

6.2.1 加法器 233

6.2.2 乘法器 242

6.2.3 积分器 248

6.2.4 微分器 249

6.2.5 抽取和内插 249

6.2.6 用CORDIC算法实现信号处理的常用模块 252

6.3 FIR滤波器的实现 264

6.3.1 FIR滤波器简介 264

6.3.2 FIR滤波器的串行实现 265

6.3.3 FIR滤波器的并行实现 269

6.3.4 FIR滤波器的分布式实现 275

6.3.5 三种滤波方案的比较和选用 287

6.4 数字信号处理程序的仿真验证 288

第7章 逻辑设计的工程因素 291

7.1 芯片的可测试性设计 291

7.2 芯片的可靠性设计 294

7.3 逻辑设计需要考虑的其他工程因素 295

7.3.1 电源归一化 295

7.3.2 管脚排布 295

7.3.3 上电功耗 295

附录 相关资源介绍 296

参考文献 297