欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 家装 > FPGA前瞻篇-计数器设计与实现实例

FPGA前瞻篇-计数器设计与实现实例

2025/5/24 1:18:03 来源:https://blog.csdn.net/weixin_64593595/article/details/147902640  浏览:    关键词:FPGA前瞻篇-计数器设计与实现实例

这是本篇文章的设计目标如下所示:
这个 Counter 模块是一个LED 闪烁计数器,设计目标是:
当输入时钟 clk 为 50 MHz 时,每 0.5 秒翻转一次 LED 灯状态。

随后我们开始补充理论知识。

        计数是一种最简单基本的运算,计数器就是实现这种运算的逻辑电路。下面我们以一个 3 位计数器来学习下计数器的基本组成和相关知识,首先我们画出 3 位计数器的电路结构图。

我们以 F1 F2 F3 代表 3 D 触发器,两个异或门 G1 G2 1 个与门 G3 来进行说明计数器是如何工作的。一般触发器是有复位信号(图中没有画出),在上电复位之后,电路上电的 Q0 Q1 Q2 初始状态是 000,下面我们来看下这三个D 触发器此时的输入信号是什么。
我们先看 F1 F1 的输入信号 D ,是由 Q0 反馈回来的,我们已知此时的 Q 0 ,那么 ` Q 就是 1 ,这个 1 反馈给 F1 输入信号 D ,此时 F1 的输入信号就是 1
下面我们再来看 F2 F2 的输入信号是 Q0 Q1 的值经过一个异或门之后得到的,我们已知此时的 Q0 是 0 Q1 也是 0 ,那么这两个 0 经过异或门逻辑处理(异或门两个输入信号值相同输出 0 ,不同输出 1 )后就是 0 了,因此 F2 的输入信号也是 0
再看 F3,F3 的输入信号是由 Q0 和 Q1 经过一个与门之后的输出值,与 Q2 的值相异或得到的,我们来看,Q0 和 Q1 都是 0,两个 0 相与,输出肯定还是 0,这个输出的 0,再与 Q2 的值相异或,根据异或门的规律,两个输入现在都是 0,那么异或门的输出也是 0,F3 的输入此时就是 0。
到这里,我们已经分析出了 F1 F2 F3 这三个触发器此时的输入值了,下面我们就可以根据 D 触发器的逻辑规律知道下一刻电路的输出值了,现在我们给 CLK 端口一个上升沿,也就是 CLK 0 变为 1 了,那么 3 个边沿 D 触发器将会同时触发,当 CLK 这个时钟信号的上升沿到来时, D 触发器的输入值将会被锁存,根据逻辑规律,下一刻 3 D 触发器的输出值就分别为 1 0 0 。这里如果我们把 Q2 的值当
做二进制数的最高位,把 Q0 的值当做二进制数的最低位,那么现在计数器所输出的值,就是二进制数 001,也就是十进制的 1 。计数器接收到第一个时钟信号的上升沿后,计数器就输出二进制数 001 ,依次类推,如果第二个时钟信号的上升沿到来时,这个时候计数器将会输出二进制数 010 ,也就是十进制数 2 , 每当电路多到来一个时钟上升沿,计数器就会作加 1 运算。当电路计到第 8 个脉冲时,电路状态将由 111 又变为 000 ,完成一个循环周期,所以该电路也称为模 8 同步加法计数器。所谓同步就是指该电路中的四个边沿型 D 触发器共用一个时钟脉冲 CLK ,当时钟上升沿到来时,它们能够同时触发。
时钟沿数Q2Q1Q0二进制值F3_D输入F2_D输入F1_D输入
初始000000001
↑1001001010
↑2010010011
↑3011011100
↑4100100011
↑5101101110
↑6110110101
↑7111111000
↑8000000001
...

Q0, Q1, Q2 分别是 F1, F2, F3 的输出;

F1_D输入 = ~Q0,即直接来自 Q0 的反向;

F2_D输入 = Q0 ^ Q1

F3_D输入 = (Q0 & Q1) ^ Q2

接下来就是程序设计了,如下所示:

信号名类型说明
clkinput时钟信号(假设为50 MHz)
rst_ninput异步低电平复位信号
ledoutput reg控制LED状态,高亮或熄灭

这个 Testbench 的目标是:

Counter 模块提供时钟和复位信号;

观察 LED 信号是否按照设计(每经过一定计数周期翻转)工作;

进行一次完整的仿真,并在仿真 1ms 后结束。

接着我们回到Vivado,如下所示仿真效果可见。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词