当前位置:首页 > 工业技术
Verilog高级数字系统设计技术与实例分析
Verilog高级数字系统设计技术与实例分析

Verilog高级数字系统设计技术与实例分析PDF电子书下载

工业技术

  • 电子书积分:13 积分如何计算积分?
  • 作 者:(美)KishoreMishra著;乔庐峰等译
  • 出 版 社:北京:电子工业出版社
  • 出版年份:2018
  • ISBN:9787121334832
  • 页数:395 页
图书介绍:本书通过大量实例由浅入深地介绍了数字电路和数字系统设计中的重要概念和知识要点。本书分两大部分。第一部分重点关注数字电路设计层面,偏重基础。第2章到第6章为Verilog语法与数字电路设计相关知识,包括常用语法、基本数字电路单元等。第7章到第9章重点介绍高级数字设计知识,包括数字系统架构设计、复杂数字系统中常用的电路单元、算法,并给出了大量工程实例。第10章给出了一些重要的工程设计经验,包括文档管理、代码设计、系统验证、高可靠性设计等。第二部分重点关注数字系统设计层面。第11章到第13章介绍了常用数字系统关键电路,包括与处理器系统相关的存储结构与存储访问技术、存储介质(硬盘、闪存、DDR等)与驱动电路、处理器总线结构与协议等。第14章和第15章介绍了电路可测性设计、静态定时分析、芯片工程修改的相关知识。第16章和第17章从电路设计层面到系统设计层面介绍了降低电路功耗的方法。第18章到第20章介绍常用串行总线和串行通信协议,包括PCI Express、SATA、USB及以太网技术。
《Verilog高级数字系统设计技术与实例分析》目录

第1章 绪论 1

第2章 寄存器传输语言(RTL) 2

第3章 可综合的Verilog——用于电路设计 3

3.1什么是Verilog 3

3.2 Verilog的发展历史 3

3.3 Verilog的结构 4

3.4硬件RTL代码的执行 7

3.5 Verilog模块分析 7

3.6 Verilog中的触发器 11

3.6.1带RST复位引脚的触发器 12

3.6.2没有复位引脚的触发器 12

3.7组合逻辑 12

3.7.1 always块语句 12

3.7.2 case和if-else语句 13

3.7 3赋值语句 14

3.8 Verilog操作符 14

3.8.1操作符描述 14

3.8.2操作符的执行顺序 20

3.8.3 Verilog中的注释 20

3.9可重用和模块化设计 21

3.9.1参数化设计 21

3.9.2 Verilog函数 23

3.9.3 Venlog中的generate结构 26

3.9.4 Verilog中的ifdef 27

3.9.5数组、多维数组 29

第4章 用于验证的Verilog语法 30

4.1 Verilog的测试平台 30

4.2 initial语句 30

4.3 Verilog系统任务 31

4.3.1 $finish/$stop 31

4.3.2 $display/$monitor 31

4.3.3 $time,$realtime 32

4.3.4 $random/$random(seed) 33

4.3.5 $save 35

4.3.6 $readmemh/$writememh 35

4.3.7 $fopen/$fclose 36

4.4任务 37

4.5存储器建模 37

4.6其他Verilog语法结构 39

4.6.1 while循环 39

4.6.2 for循环、repeat 39

4.6.3 force/release 40

4.6.4 fork/join 40

4.7一个简单的testbench 41

第5章 数字电路设计——初级篇 46

5.1组合逻辑门 46

5.1.1逻辑1和逻辑0 46

5.1.2真值表 46

5.1.3晶体管 47

5.1.4反相器 47

5.1.5与门 48

5.1.6或门 49

5.1.7与非门 49

5.1.8或非门 49

5.1.9 XOR(异或)、XNOR(异或非) 49

5.1.10缓冲门 50

5.1.11复用器 50

5.1.12通用逻辑门——NAND、 NOR 52

5.1.13复杂门电路 52

5.1.14噪声容限 53

5.1.15扇入和扇出 54

5.2德摩根定理 55

5.3通用D触发器 56

5.3.1 D触发器时序图 56

5.4建立和保持时间 57

5.4.1建立时间 57

5.4.2保持时间 57

5.4.3亚稳态 58

5.5单比特信号同步 58

5.5.1两个触发器构成的同步器 58

5.5.2信号同步规则 59

5.6关于时序 60

5.7事件/边沿检测 62

5.7.1同步上升沿检测 62

5.7.2同步下降沿检测 63

5.7.3同步上升/下降沿检测 63

5.7.4异步输入上升沿检测 64

5.8数值系统 64

5.8.1十进制数值系统 64

5.8.2二进制数 66

5.8.3十进制数到二进制数的转换 66

5.8.4十六进制数值系统 67

5.8.5十六进制数和二进制数的转换 67

5.9加法和减法 68

5.9.1行波进位加法器 68

5.9.2超前进位加法 69

5.9.3累加器 69

5.10乘和除 70

5.10.1乘以一个常数 70

5.10.2除以常数(2的整数次幂) 71

5.11计数器 71

5.11.1加法/减法计数器 71

5.11.2 LFSR(线性反馈移位寄存器)计数器 73

第6章 数字设计———基础模块 75

6.1 LFSR 75

6.1.1引言 75

6.1.2斐波那契 LFSR与伽罗瓦LFSR 75

6.1.3 LFSR反馈多项式 76

6.1.4 LFSR的用法 77

6.2扰码与解扰 77

6.2.1什么是扰码与解扰 77

6.2.2扰码的作用 78

6.2.3串行扰码器 78

6.2.4并行扰码器 78

6.2.5扰码电路设计要点 79

6.2.6 PCIe扰码电路 79

6.2.7 Verilog RTL-PCIe扰码器 80

6.3检错与纠错 82

6.3.1检错 82

6.3.2错误纠正 82

6.3.3纠错编码 83

6.3.4汉明码 84

6.3.5汉明码应用举例——DDR ECC 86

6.3.6 BCH编码 87

6.3.7里德-所罗门编码 87

6.3.8 LDPC编码 88

6.3.9卷积码 88

6.3.10卷积译码 89

6.3.11软判决与硬判决 90

6.4奇偶校验 90

6.4.1偶校验和奇校验 90

6.4.2奇偶校验位的生成 90

6.4.3奇偶校验的应用 91

6.5 CRC(循环冗余校验) 91

6.5.1 CRC介绍 91

6.5.2串行CRC计算 92

6.5.3并行CRC计算 93

6.5.4部分数据CRC计算 94

6.5.5常用CRC类型 100

6.6格雷编码/解码 102

6.6.1二进制码转换为格雷编码的通用电路 104

6.6.2格雷码转换为二进制码的通用电路 105

6.7译码器(7段数码显示实例) 105

6.8优先级编码 107

6.8.1常规编码器的Verilog代码 107

6.8.2优先级编码器的Verilog代码 108

6.9 8b/ 1 0b编码/解码 108

6.9.1 8b/ 1 0b编码方式 108

6.9.2多字节8b/ 1 0b编码 109

6.9.3 disparity选择8b/10b编码方案 109

6.10 64b/66b编码/解码 110

6.10.1 64b/66b编码机制 110

6.10.2 128b/ 130b编码机制 111

6.11 NRZ、NRZI编码 111

6.12移位寄存器与桶形移位器 112

6.12.1左移位与右移位 112

6.12.2左循环移位与右循环移位 112

6.12.3桶形移位器 113

6.13数据转换器 115

6.13.1由宽到窄数据转换 115

6.13.2由窄到宽数据转换 116

6.14同步技术 118

6.14.1使用FIFO进行的数据同步 118

6.14.2握手同步方式 118

6.14.3脉冲同步器 122

6.14.4相位、频率关系固定时的跨时钟域数据传输 124

6.14.5准同步时钟域 125

6.15计时(微秒、毫秒和秒)脉冲的产生 125

6.16波形整形电路 127

第7章 数字设计先进概念(第1部分) 128

7.1时钟 128

7.1.1频率和时钟周期 128

7.1.2不同的时钟机制 128

7.1.3同步时钟 129

7.1.4源同步时钟 129

7.1.5嵌入式时钟 130

7.1.6准同步时钟 131

7.1.7异步系统 132

7.1.8扩频时钟 132

7.1.9时钟抖动 132

7.2复位方法 133

7.2.1非同步复位(异步复位) 133

7.2.2复位同步电路 133

7.2.3同步复位 134

7.2.4异步复位和同步复位的选择 134

7.3吞吐率 135

7.3.1增加吞吐率的方法 135

7.3.2更高的频率 135

7.3.3更宽的数据通道 135

7.3.4流水线 136

7.3.5并行处理 136

7.3.6无序执行(乱序执行) 136

7.3.7高速缓存(cache) 137

7.3.8预读取 138

7.3.9多核 138

7.4时延 138

7.4.1降低时延的方法 138

7.5流控 139

7.5.1介绍 139

7.5.2数据转发:data valid和data ack 140

7.5.3基于信用的流控:PCIe 141

7.5.4 SATA流控机制 142

7.5.5吉比特以太网流控 143

7.5.6 TCP滑动窗流控机制 144

7.6流水线操作 144

7.6.1流水线介绍 144

7.6.2流水线的简单实例 145

7.6.3 RISC——流水线处理器 146

7.6.4流水线结构和并行操作 146

7.6.5流水线加法器 147

7.6.6并行加法器 150

7.6.7系统设计中的流水线 152

7.7 out-of-order执行(乱序执行) 153

7.7.1现代处理器:out-of-order执行 153

7.7.2 SATA NCQ : out-of-order执行 154

第8章 数字设计先进概念(第2部分) 155

8.1状态机 155

8.1.1引言 155

8.1.2状态机泡泡图 156

8.1.3状态机:推荐方式 157

8.1.4二进制编码的状态机 157

8.1.5独热码编码的状态机 160

8.1.6二进制编码和独热码比较 163

8.1.7米里型和摩尔型状态机 164

8.1.8子状态机 165

8.2 FIFO 165

8.2.1引言 165

8.2.2 FIFO操作 166

8.2.3同步FIFO 167

8.2.4同步FIFO 167

8.2.5异步FIFO的工作机制 170

8.2.6异步FIFO的实现 172

8.3 FIFO高级原理 178

8.3.1 FIFO的大小 178

8.3.2 FIFO的深度 178

8.3.3辅助数据或标签 179

8.3.4快照/回退操作 179

8.3.5直通交换和存储转发模式 180

8.3.6 FIFO指针复位 180

8.3.7不同的写入、读取数据宽度 181

8.3.8使用FIFO的缺点 181

8.3.9基于触发器或者SRAM的FIFO 181

8.4仲裁 182

8.4.1关于仲裁 182

8.4.2常规仲裁方案 182

8.4.3严格优先级轮询 182

8.4.4公平轮询 185

8.4.5公平轮询(仲裁w/o死周期) 189

8.4.6带权重的轮询(WRR) 190

8.4.7权重轮询(WRR):第二种方法 193

8.4.8两组轮询 199

8.5总线接口 204

8.5.1总线仲裁 205

8.5.2 split-transaction(分割处理)总线 207

8.5.3流水线式总线 207

8.6链表 207

8.7近期最少使用(LRU)算法 208

8.7.1 LRU的矩阵实现 209

8.7.2采用矩阵法实现LRU的Verilog代码 210

第9章 设计ASIC/SoC 212

9.1设计芯片——如何开展 212

9.2结构和微结构 212

9.2.1尽可能保持简单 213

9.2.2善于平衡 213

9.2.3处理好错误和异常 213

9.3数据路径 213

9.3.1数据流 213

9.3.2时钟 214

9.4控制单元 214

9.4.1关注边界条件 214

9.4.2注意细节 215

9.4.3多输入点 215

9.4.4正确理解规范 215

9.5其他考虑 215

9.5.1门数 215

9.5.2焊盘受限与内核受限 216

9.5.3时钟树和复位树 216

9.5.4 EEPROM、配置引脚 216

第10章设计经验 218

10.1文档 218

10.1.1可读性 218

10.1.2注释 218

10.1.3命名规则 218

10.2在编写第一行代码之前 219

10.2.1直到你脑海里有了蓝图才开始 219

10.2.2脑海中的模拟 219

10.3一些建议 219

10.3.1哪种风格——数据流或算法 219

10.3.2寄存器型输出 220

10.3.3使用状态机而不是松散的控制逻辑 221

10.3.4综合和仿真不匹配 221

10.3.5设计的模块化和参数化 222

10.3.6加法器、减法器的有效使用 222

10.4需要避免的情况 223

10.4.1不要形成组合逻辑环路 223

10.4.2避免意外生成锁存器 223

10.4.3不要采用基于延迟的设计 224

10.4.4不要对一个变量多次赋值 224

10.5初步完成RTL代码之后 225

10.5.1初步完成代码之后的回顾 225

10.5.2目测RTL代码 226

10.5.3对发现bug感到惊喜 226

10.6设计要面向未来使用需求 226

10.6.1易于实现的寄存器结构 226

10.6.2考虑将来需求 226

10.7高速设计 226

10.7.1使用独热码进行状态编码 227

10.7.2使用互斥的数据选择器而不是优先级编码器 227

10.7.3避免大量散乱的组合逻辑电路 227

10.7.4复制或克隆 227

10.7.5使用同步复位时要小心 227

10.7.6将后到的信号放在逻辑的前面 227

10.8 SoC设计经验 228

10.8.1使用双触发器同步电路 228

10.8.2将所有复位电路放在一起 228

第11章系统概念(第1部分) 229

11.1 PC系统结构 229

11.2存储器 230

11.2.1存储器层次结构 230

11.2.2 CPU使用高速缓存的方法 231

11.2.3 cache的架构 231

11.2.4 cache的组织方式 232

11.2.5虚拟存储器(Virtual Memory) 234

11.2.6动态随机访问存储器(DRAM) 235

11.2.7静态随机访问存储器(SRAM) 236

11.2.8内容可寻址存储器(CAM) 237

11.2.9 CAM的Verilog模型 238

11.2.10 ROM、PROM、EPROM和EEPROM 245

11.2.11闪存 246

11.3中断 247

11.3.1中断不同部分 247

11.3.2中断向量表 248

11.3.3 I/O设备产生的中断 249

11.3.4高级可编程中断控制器 249

11.3.5 INTx中断共享 250

11.3.6 MSI中断 250

11.3.7 MSI-X中断 252

11.3.8中断聚合 252

11.3.9中断产生的RTL示例 252

11.4 PIO(Programmed IO)模式的数据传送 254

11.5直接存储器访问 255

11.5.1什么是DMA 255

11.5.2第三方、第一方 DMA和RDMA 256

11.5.3分/集式DMA 256

11.5.4 DMA描述符 257

11.5.5环形描述符结构 257

11.5.6链表描述符结构 258

11.5.7 DMA控制器的设计 259

11.5.8 DMA控制器的Verilog RTL模型 260

第12章系统概念(第2部分) 270

12.1永久存储器——硬盘 270

12.1.1磁盘结构 270

12.1.2磁盘寻址 271

12.1.3硬盘控制器 271

12.1.4硬盘的类型:SATA硬盘和基于SAS的硬盘 272

12.1.5 RAID(独立磁盘冗余阵列) 272

12.2永久存储设备——固态盘 274

12.2.1闪存的组织 275

12.2.2闪存写入、擦除 275

12.2.3逻辑地址到物理地址的转换 276

12.2.4无用存储空间回收 276

12.2.5耗损均衡 276

12.2.6写放大及其缓解方法 277

12.2.7超量供给 277

12.2.8 SSD中的高速缓存 278

12.2.9 ECC和RAID 278

12.2.10闪存的一些重要指标 279

12.2.11 NVM总线 279

12.3 DDR存储器 280

12.3.1 DDR存储器命令 281

12.3.2 DDR的初始化和校准 283

12.3.3 DDR存储器术语 285

12.4软硬件协同 287

12.4.1设备驱动 287

12.4.2软件层 288

12.4.3 BIOS 288

12.4.4内核模式和用户模式 289

12.4.5控制/状态寄存器、RO、粘着位 289

第13章嵌入式系统 290

13.1 AMBA总线架构 290

13.1.1 AMBA模块图 291

13.1.2 AHB总线 291

13.1.3 AXI总线 292

13.2其他总线(OCP、Avalon、Wishbone和IBM Core Connect) 293

13.3非透明桥接 294

第14章ASIC/SoC的可测试性 296

14.1简介 296

14.1.1为什么测试很重要 296

14.1.2故障类型 296

14.2 ATPG 297

14.3扫描 298

14.3.1内部扫描 298

14.3.2边界扫描 299

14.3.3 IDDQ测试 300

14.4 SoC测试策略 300

14.4.1 SoC的内部结构 300

14.4.2可测性设计(DFT) 302

14.4.3 DFT设计准则 302

14.4.4测试层面和测试向量 303

第15章芯片开发流程与工具 304

15.1简介 304

15.1.1芯片设计的不同阶段 304

15.2前端设计过程所使用的工具 306

15.2.1代码分析工具 306

15.2.2仿真工具 307

15.3后端设计过程使用的工具 307

15.3.1综合工具 307

15.3.2静态定时分析及常用工具 308

15.3.3 SDC约束文件 310

15.3.4 Max Cap/Maxtrans检查 312

15.3.5门级仿真 312

15.4 tape-out和相关工具 313

15.4.1不同类型的tape-out 313

15.4.2等效性检查 313

15.4.3网表ECO 314

15.4.4 FIB操作 318

15.5在硅片调试 319

第16章功率节约技术 321

16.1简介 321

16.2功耗分析基础 321

16.3通过控制工作频率降低功耗 322

16.3.1降低频率、增大数据路径宽度 322

16.3.2动态频率调整 322

16.3.3零频率/门控时钟 323

16.4减少电容负载 324

16.5降低工作电压 325

16.5.1动态改变工作电压 325

16.5.2零操作电压 325

16.5.3电源阱与隔离 325

第17章功率管理 327

17.1功率管理的基础知识 327

17.2系统级功率管理与ACPI 327

17.3 CPU功率状态——C状态 328

17.4设备级功率管理与D状态 328

17.5系统、设备和链路间的关系 328

第18章串行总线技术 330

18.1串行总线结构 330

18.1.1串行总线的出现 330

18.1.2串行总线的优缺点 331

18.1.3串行总线结构 331

18.1.4串行总线时钟 333

18.1.5发送路径的微结构 333

18.1.6接收路径的微结构 334

18.2串行总线中的先进设计理念 336

18.2.1字节分割/链路聚合 336

18.2.2通道绑定与去偏移 337

18.2.3极性翻转 337

18.2.4线路翻转 338

18.2.5锁相环(PLL) 339

18.3串行总线的PMA层功能 340

18.3.1发送均衡 340

18.3.2接收均衡 341

18.3.3端接电阻 341

第19章串行协议(第1部分) 342

19.1 PCIe 342

19.1.1 PCIe功能特性 342

19.1.2 PCIe带宽 343

19.1.3 PCIe交换结构 343

19.1.4 PCIe配置空间寄存器 344

19.1.5 PCIe的交换机制 347

19.2 SATA 351

19.2.1引言 351

19.2.2 SATA架构 351

19.2.3 SATA的其他变种 352

19.3通用串行总线 353

19.3.1引言 353

19.3.2全速、高速和超高速USB 353

19.3.3 USB的显著功能特性 353

19.3.4 USB 3.0(超高速USB) 354

19.4雷电接口 354

19.4.1雷电接口介绍 354

19.4.2雷电接口架构 354

第20章串行协议(第2部分) 356

20.1以太网简介 356

20.2 OSI和以太网协议层次 356

20.3以太网帧格式 357

20.4 10 Mbps以太网 357

20.5快速以太网(100 Mbps) 358

20.6千兆位以太网( 1 Gbps) 360

20.7万兆位以太网( 10 Gbps) 361

20.8 40 G和100 G以太网 363

20.9以太网桥接器、交换机与路由器 363

附录A资源 364

附录B FPGA 101 367

附录C用于验证的测试平台(testbench) 373

附录D System Verilog断言(SVA) 381

缩略词 386

返回顶部