【FPGA】十进制计数器 | 实现 4-bit 2421 十进制计数器 | 有限状态机(FSM)

目录

Ⅰ. 实践说明

0x00 十进制计数器

0x01 有限状态机(FSM)

Ⅱ. 实践部分

0x00 4-bit 2421 十进制计数器


Ⅰ. 实践说明

0x00 十进制计数器

十进制计数器是一种以十进制运算的计数器,从 0 数到 9,然后返回 0 状态。由于它需要显示 0 到 9 的数字,因此它使用一个可处理 4 位以上的 flip-flop,并使用 \color{}BCD 码输出计数值。

Up/Down Counter

0x01 有限状态机(FSM)

有限状态机 (FSM) 是一种用于设计计算机程序和电路的数学模型。

FSM 由三个集合 \color{}I,O,S 以及两个函数 \color{}f,g 组成:

I

输入集合,有限状态机接受的输入符号的集合

O

输出集合,有限状态机产生的输出符号的集合。

S

状态集合,有限状态机可能处于的状态的集合。

f

下一个状态函数 F(I,S)

G

输出函数: Moore model -> G(S) / Mealy model -> G(I,S)

Ⅱ. 实践部分

0x00 4-bit 2421 十进制计数器

当前状态 Q

后续状态 Q*

input x=0

input x=1

0000

0000

0001

0001

0001

0010

0010

0010

0011

0011

0011

0100

0100

0100

1011

1011

1011

1100

1100

1100

1101

1101

1101

1110

1110

1110

1111

1111

1111

0000

💬 Design source:

`timescale 1ns / 1psmodule DC_2(input reset,input clk,input x,output z,output [3:0]out
);reg [3:0]out;
reg z;always @(posedge !clk) beginif(reset) beginout[3] = 1'b0;out[2] = 1'b0;out[1] = 1'b0;out[0] = 1'b0;z = 1'b0;endelse beginif((x == 1'b1)) beginout[3] <= (out[2]&(~out[1])&(~out[0])) | (out[3]&out[2]&(~out[1])&out[0]) | (out[3]&(~out[2])&out[1]&out[0]) | (out[3]&out[2]&out[1]&(~out[0]));out[2] <= (out[3]&out[2]&(~out[1])) | ((~out[2])&out[1]&out[0]) | (out[3]&out[2]&out[1]&(~out[0]));out[1] <= ((~out[3])&out[2]&(~out[1])&(~out[0])) | ((~out[3])&(~out[2])&(~out[1])&out[0]) | ((~out[3])&(~out[2])&out[1]&(~out[0])) | (out[3]&out[2]&(~out[1])&out[0]) | (out[3]&out[2]&out[1]&(~out[0]));out[0] <= ((~out[3])&(~out[1])&(~out[0])) | (out[3]&out[2]&(~out[1])&(~out[0])) | (out[3]&out[2]&out[1]&(~out[0])) | ((~out[3])&(~out[2])&out[1]&(~out[0]));if (out[3] && out[2] && out[1] && out[0]) z <= 1'b1;endend
endendmodule

💬 Testbench:

`timescale 1ns / 1psmodule DC_2_tb;reg clk,reset,x;
wire [3:0]out,z;DC_2 u_DC_2(.clk(clk ),.reset(reset ),.x(x ),.out(out ),.z(z )
);initial clk = 1'b0;
initial reset = 1'b1;
initial x = 1'b0;always clk = #20 ~clk;always@(reset) beginreset = #50 ~reset;
endalways@(x) beginx = #110 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;x = #60 ~x;x = #20 ~x;
endinitial begin#860$finish;
endendmodule

🚩 运行结果如下:

4 位 2421 十进制计数器是一个重复 0 至 9 的计数器,可以用 4 位来表示,但不同的是,0 至 4 与一般的十进制计数器相同,而 5 至 9 则用一般十进制计数器中的 11 至 15 表示。

当输入值 x 为 0 时保持当前状态,当输入值 x 为 1 时进入下一个数字。

在数到 9(1111)后,我们需要处理返回 0(0000)的问题。我们将其编写为下降沿触发器,模拟结果表明,每当时钟值从 1 下降到 0 时,x 的输入值就会反映在输出中。

📌 [ 笔者 ]   floyd
📃 [ 更新 ]   2023.11.13
❌ [ 勘误 ]   /* 暂无 */
📜 [ 声明 ]   由于作者水平有限,本文有错误和不准确之处在所难免,本人也很想知道这些错误,恳望读者批评指正!

📜 参考资料 

Introduction to Logic and Computer Design, Alan Marcovitz, McGrawHill, 2008

Microsoft. MSDN(Microsoft Developer Network)[EB/OL]. []. .

百度百科[EB/OL]. []. https://baike.baidu.com/.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/177507.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从3大维度9个细节聊一聊,边缘计算盒子如何选型

人工智能的蓬勃发展&#xff0c;物联网设备的部署和5G无线技术的到来&#xff0c;越来越多的新兴场景对智能化应用提出了低时延、低带宽、本地化、高安全、低成本的处理需求&#xff0c;包括智慧城市、智慧金融、智慧校园等领域&#xff0c;以及智慧交通、智慧工厂、智慧医疗等…

centos下安装mysql8版本

1、如果服务器没有wget&#xff0c;先下载wget工具 sudo yum install wget 2、下载指定mysql版本的tar包 sudo wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar 3、解压tar包 sudo tar -xvf mysql-8.0.21-1.el7.x86_64.rpm…

大模型的全面回顾,看透大模型 | A Comprehensive Overview of Large Language Models

大模型的全面回顾&#xff1a;A Comprehensive Overview of Large Language Models 返回论文和资料目录 论文地址 1.导读 相比今年4月的中国人民大学发表的大模型综述&#xff0c;这篇综述角度更侧重于大模型的实现&#xff0c;更加硬核&#xff0c;更适合深入了解大模型的一…

修改/etc/fstab文件导致Linux无法正常启动解决方法

如果把 /etc/fstab 文件修改错了&#xff0c;也重启了&#xff0c;系统崩溃启动不了了&#xff0c;那该怎么办&#xff1f;比如&#xff1a; [rootlocalhost ~]# vi /etc/fstab UUIDc2ca6f57-b15c-43ea-bca0-f239083d8bd2 ext4 defaults 1 1 UUID0b23d315-33a7-48a4-bd37-9248…

分发饼干(贪心算法+图解)

455. 分发饼干 - 力扣&#xff08;LeetCode&#xff09; 题目描述 假设你是一位很棒的家长&#xff0c;想要给你的孩子们一些小饼干。但是&#xff0c;每个孩子最多只能给一块饼干。 对每个孩子 i&#xff0c;都有一个胃口值 g[i]&#xff0c;这是能让孩子们满足胃口的饼干的最…

使用SSH和SCP传输文件———详细入门教学实践

确保你已经在本地机器上安装了SSH客户端和SCP工具。 获取远程虚拟机的IP地址或主机名以及登录凭据&#xff08;用户名和密码或私钥&#xff09;。 打开终端&#xff08;命令提示符&#xff09;并输入以下命令来传输文件&#xff1a; scp /本地路径/文件 用户名远程虚拟机IP地…

【C++初阶】三、类和对象(面向过程、class类、类的访问限定符和封装、类的实例化、类对象模型、this指针)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【C初阶】二、入门知识讲解 &#xff08;引用、内联函数、auto关键字、基于范围的for循环、指针空值nullptr&#xff09;-CSDN博客 一 . 面向过程和面向对象初步认识 C语言 -- 面向…

【算法与数据结构】46、47、LeetCode全排列I, II

文章目录 一、46.全排列I二、47.全排列II三、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、46.全排列I 思路分析&#xff1a;本题要求是全排列&#xff0c;意味着每次递归的时候startIndex都要从0开始&#xff0c;否则…

电源电压范 围宽、功耗小、抗干扰能力强的国产芯片GS069适用于电动工具等产品中,采用SOP8的封装形式封装

GS069电动工具直流调速电路是CMOS专用集成电路&#xff0c;具有电源电压范 围宽、功耗小、抗干扰能力强等特点。通过外接电阻网络&#xff0c;改变与之相接 的VMOS 管的输出&#xff0c;达到控制电动工具转速的作用。该电路输出幅值宽&#xff0c; 频率变化小&#xff0c;占空比…

环保气膜建筑的运维成本在哪几个方面

作为一种环保建筑&#xff0c;气膜结构在工业和文体领域得到了广泛认可。尽管气膜建筑在经济上具有明显的优势&#xff0c;但对于不了解它的人来说&#xff0c;他们可能会下意识地认为在运营和维护过程中会产生大量费用。今天&#xff0c;让我们一起了解一下气膜建筑在运营维护…

远程创建分支本地VScode看不到分支

在代码存放处右击&#xff0c;点击Git Bash Here 输入git fetch–从远程仓库中获取最新的分支代码和提交历史 就OK啦&#xff0c;现在分支可以正常查看了

硬件开发笔记(十一):Altium Designer软件介绍、安装过程和打开pcb工程测试

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/134405411 红胖子网络科技博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬…