Verilog学习笔记(三):计数器的设计

计数器

●同步计数器:所有寄存器共享一个时钟

●异步计数器(行波计数器):不断地分频

         下图就是一个行波计数器的实例:

Verilog学习笔记(三):计数器的设计

example:5-bit up-by-one down-by-two counter

Verilog学习笔记(三):计数器的设计

小结:上述代码实现的就是最简单的同步计数器。

Example: 用LFSR(线性反馈移位寄存器)实现的13倍分频计数器

●XNOR 4bit LFSR设计:

Verilog学习笔记(三):计数器的设计

●XNOR 4bit LFSR状态转移图示(16进制):

0->2->6->e->d->b->7->c->9->3->4->a->5->8->1->0

         e开始,到0结束,即可实现13个时钟周期的计数

●代码:

Verilog学习笔记(三):计数器的设计

●仿真结果:

Verilog学习笔记(三):计数器的设计

Example:用行波计数器设计16倍分频器

●代码:

Verilog学习笔记(三):计数器的设计

小结:在代码的最后有一个和时钟重新同步的过程,左边的代码写到了Div16,而右边的图只画到了Div4

Example: 用行波计数器设计13倍分频器

Verilog学习笔记(三):计数器的设计

小结:使用行波计数器的好处是在电路比较简单的情况下,计数器的值还会按顺序增加(用移位寄存器的话计数器的值不是按顺序增加的),不好的地方是D触发器之间数据传输会有延迟,以至于最后还需要与时钟重新同步,如果累计延迟超过一个时钟周期就会出问题。