笔者详细的谈论许多在整合里会出现的微妙思路,如:如何把计数器/定时器整合在某个步骤里,从何提升模块解读性和扩展性。此外,在整合篇还有一个重要的讨论,那就是for,while 和do 。.. while 等循环。这些都是一些顺序语言的佼佼者,可是在Verilog HDL 语言里它们就黯然失色。
要在Verilog 要实现for 和while 等循环是一个矛盾的作业,这话何说呢?首先我们可以用Verilog 来模仿for 和while 等循环,这也是第一章的重点。可是随着我们深入了解Verilog 各种不同的运行模式,模仿就会失去意义。.. 因为只要有一个指向步骤的i 再加上一些整合的技巧,怎么样的循环我们都可以实现,这也是第五章的重点。当然整合篇所讨论的内容不单是循环而已,整合篇的第二个重点是理想时序和物理时序的整合。说实话,笔者自身也认为要结合“两个时序”是一件苦差事,理想时序是Verilog的行为,物理时序则是硬件的行为。不过在它们两者之间又有微妙的“黏糊点”,只要稍微利用一下这个“黏糊点”我们就可以非常轻松的写出符合“两个时序”的模块,但是前提条件是充足了解“理想时序”。
整合篇里还有一个重点,那就是“精密控时”。实现“精密控时”最笨的方法是被动式的设计方法,亦即一边仿真,一边估算时钟的控制精度。这显然是非常“传统”而且“古老”的方法,虽然有效但往往就是最费精神和时间的。相反的,主动式是一种讲求在代码上和想象上实现“精密控时”的设计方法。主动式的设计方法是基于“理想时序”“建模技巧”和“仿顺序操作”作为后盾的整合技巧。不说笔者吹牛,如果采用主动式的设计方法驱动IIC 和SDRAM 硬件,任何一段代码都是如此合情合理。
VerilogHDL那些事儿-整合篇(AVIC-PC--Administrator--2014-01-04-10,05,27).pdf
(42.23 MB)
|