在下这几年关于数字电路、Verilog、FPGA和IC方面的书前前后后都读了不少,发现了不少好书,也在一些废话书上浪费过时间。接下来会写一系列文章,把一部分读过的书做个测评,根据个人标准按十分制满分来打分并分享给大家。

定位
书名:Verilog 传奇--从电路出发的HDL代码设计
内容:Verilog语法、设计方法学
评价:7.5分。这个7.5分我其实给得挺纠结,因为这本书真的很难评价--它内容上是很有干货的,但是缺点也真的很明显--太啰嗦了!随便截一段你感受一下:

像这种21世纪初互联网论坛帖子风格的废话充斥全书。反正我读这本书都是跳着看的,只看干货,不看废话。
第1章:基础知识

主要介绍了Verilog发展历史、ASIC和FPGA的开发流程,对于时序约束也有一个简单的介绍,尤其是对FPGA的内部结构介绍得还挺清晰。

这一章的干货其实蛮多的,很多基础性的概念介绍对初学FPGA其实是有非常大的帮助的。
第2章:语言层次

从层级设计为引子,从整体到细节对Verilog语法做了一个详细的介绍。
第3章:组合操作

这一章主要介绍组合逻辑电路的设计方法,尤其是wire变量和assign语句的应用。一些移位预算、比较、拼接和加减乘除电路的分析还蛮透出的。
第4章:还是组合

这一章主要介绍reg和always构建的组合逻辑电路的设计方法。这部分讲的内容,把数字电路和Verilog很好的对应上了,能帮你建立起一个很好的从语法到电路的直观认知。
第5章:时序逻辑

这一章主要讲时序逻辑。对于触发器和锁存器的分析写得挺好,也讲了一些设计方法,比如流水线设计和并行化设计。
第6章:工程话题

这一章是从实际工程应用入手的,介绍了复位设计、亚稳态、跨时钟域设计、FIFO、乒乓操作、移位操作和状态机设计等内容。这一章节的干货很多,可以看出来作者是位工程经验很丰富的工程师。
第7章:灵活模块

这一章主要介绍如何用函数Function、任务Task、参数parameter、locaparam和`define来实现参数化的可复用设计。这些设计技巧可以大大帮助你提高工作效率。
第8章:电路之外

这一样主要讲仿真设计,包括各种各样的系统任务和编译指令。这部分的内容可以帮助你提高编写测试脚本的能力。
第9章:综合例子

这一章是比较复杂的实战内容,介绍了CORDIC算法,以及DDS实现的三种方法,可以帮以后的设计打好基础。从模块划分、功能设计到具体的代码实现作者都写得很棒。
不过老实讲,这部分的内容个人认为对于初学者还是难了一点,不如先搁置,过几个月有需要了再来读这部分。


总结
如果只看书名《Verilog 传奇--从电路出发的HDL代码设计》,你肯定会觉得这本书的定位是一本Verilog入门语法书,但实际上它关于Verilog语法的篇幅占比可能就20%,剩余的内容都是Verilog对应的各种数字电路的设计方法。
个人认为本书不适合Verilog语法初学者,而是适合有一定语法和数字电路基础的同学阅读。这部书能帮你建立起Verilog和数字电路的对应关系,并从中学习到许多实际应用中的设计方法和工程经验。