在时序逻辑电路中,最基本的单元是寄存器,本篇将会介绍如何利用寄存器,实现一个具有计数器功能的电路。在FPGA开发中,一切与时间有关的设计都会用到计数器,所以学会设计计数器至关重要。
一、计数器介绍
计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路,计数器在数字系统中主要是对脉冲的个数进行计数,以实现测量、计数和控制的功能,同时兼有分频功能。
计数器在数字系统中应用广泛,如电子计算机的控制器中对指令地址进行计数,以便顺序取出下一条指令,在运算器中作乘法、除法运算时记下加法、减法次数,又如在数字仪器中对脉冲的计数等等。
二、绘制计数器时序图
在代码编写之前,我们先利用visio把时序图绘制出来,编写代码时思路会更清晰
初次使用visio绘制时序图,需要事先下载三个形状,分别是FPGA_DESIGN、状态机形状和逻辑图形状。
下载好形状开始波形图绘制,如下图所示:
实际上,我们只需要计数器技术范围是0到M/2-1即可,因为我们可以控制LED灯在计数器一个计数周期结束时电平进行翻转。这样做也能够节省1bit的硬件资源,改进后的时序图如下: