【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.mzph.cn/news/140787.shtml

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

相关文章

青少年编程学习 等级考试 蓝桥杯/NOC/GESP等比赛资料合集

一、博主愚见 在当今信息技术高速发展的时代&#xff0c;编程已经成为了一种必备的技能。随着社会对于科技人才的需求不断增加&#xff0c;青少年编程学习正逐渐成为一种趋势。为了更好地帮助青少年学习编程&#xff0c;提升他们的技能和素质&#xff0c;博主结合自身多年从事青…

如何使用CORS和CSP保护前端应用程序安全

前端应用在提供无缝用户体验方面起着核心作用。在当今互联网的环境中&#xff0c;第三方集成和API的普及使得确保强大的安全性至关重要。安全漏洞可能导致数据盗窃、未经授权访问以及品牌声誉受损。本文将向您展示如何使用CORS和CSP为您的网页增加安全性。 嗨&#xff0c;大家好…

大数据可视化数据大屏可视化模板【可视化项目案例-05】

🎉🎊🎉 你的技术旅程将在这里启航! 🚀🚀 本文选自专栏:可视化技术专栏100例 可视化技术专栏100例,包括但不限于大屏可视化、图表可视化等等。订阅专栏用户在文章底部可下载对应案例源码以供大家深入的学习研究。 🎓 每一个案例都会提供完整代码和详细的讲解,不…

基于安卓android微信小程序的校园互助平台

项目介绍 随着社会的发展&#xff0c;社会的方方面面都在利用信息化时代的优势。互联网的优势和普及使得各种系统的开发成为必需。 本文以实际运用为开发背景&#xff0c;运用软件工程原理和开发方法&#xff0c;它主要是采用java语言技术和mysql数据库来完成对系统的设计。整…

Unity中Shader的间接光的产生Meta Pass

文章目录 前言Unity中Shader的间接光的产生Meta Pass&#xff0c;这也是属于全局光照 GI 的内容。主要实现像现实生活中&#xff0c;光线照到有颜色的物体后&#xff0c;该物体有反射出该颜色的光的效果。 一、我们先使用Unity自带的Shader看看间接光效果1、先按照如下设置搭建…

8年经验之谈 —— 记一次接口压力测试与性能调优!

经验总结 1. 如果总的CPU占用率偏高&#xff0c;且基本都被业务线程占用时&#xff0c;CPU占用率过高的原因跟JVM参数大小没有直接关系&#xff0c;而跟具体的业务逻辑有关。 2. 当设置JVM堆内存偏小时&#xff0c;GC频繁会导致业务线程停顿增多&#xff0c;TPS下降&#xff…

基于SSM的考研图书电子商务平台的设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

链动2+1模式系统开发之区域代理深度解析

区域代理的保护机制&#xff1a;在链动商城系统里设定的代理有唯一性&#xff0c;每个省只有一个省代&#xff0c;每个市只有一个市代&#xff0c;每个区县只有一个区县代。这样也是保护每个代理的收益权益。 区域代理包含的权益类别&#xff1a;购物奖励折扣&#xff1b;区域实…

Python实现猎人猎物优化算法(HPO)优化XGBoost回归模型(XGBRegressor算法)项目实战

说明&#xff1a;这是一个机器学习实战项目&#xff08;附带数据代码文档视频讲解&#xff09;&#xff0c;如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 猎人猎物优化搜索算法(Hunter–prey optimizer, HPO)是由Naruei& Keynia于2022年提出的一种最新的…

Marin说PCB之 PCB封装和原理图封装的藕断丝连

最近天气开始降温了&#xff0c;小编我不得不拿出珍藏多年的秋裤穿上了&#xff0c;就是走路不太方便&#xff0c;有点紧啊&#xff0c;可能是当时衣服尺码买小了吧&#xff0c;不可能是我吃胖了&#xff0c;这个绝对不可能。 话说小编我今年属实有点走霉运啊&#xff0c;下班和…

计网自顶向下(Web服务器+UDPping+邮件客户端)

目录 &#x1f416;前言 &#x1f33c;Web服务器(作业1) &#x1f333;过程 &#x1f333;解释 &#x1f525;代码 &#x1f33c;UDPping程序(作业2) &#x1f333;过程 &#x1f333;解释 Client Server 整体逻辑 &#x1f525;代码 &#x1f33c;邮件客户端(作业…

ChineseChess.2023.11.13.01

中国象棋残局模拟器ChineseChess.2023.11.13.01

正交矩阵的定义

对于n阶矩阵A&#xff0c;如果&#xff0c;其中为单位矩阵&#xff0c;为A的转置矩阵&#xff0c;那么就称A为正交矩阵。 对于正交矩阵&#xff0c; 对于正交矩阵&#xff0c;其列向量都是单位向量&#xff0c;行向量都是单位向量

【matlab】KMeans KMeans++实现手写数字聚类

目录 matlab代码kmeans matlab代码kmeans MNIST DATABASE下载网址: http://yann.lecun.com/exdb/mnist/ 聚类 将物理或抽象对象的集合分成由类似特征组成的多个类的过程称为聚类(clustering)。 对于给定N个n维向量x1&#xff0c;…&#xff0c;xN∈Rn&#xff0c;聚类的目标…

亚马逊云科技Zero ETL集成全面可用,可运行近乎实时的分析和机器学习

亚马逊云科技数据库、数据分析和机器学习全球副总裁Swami Sivasubramanian曾指出&#xff1a;“数据是应用、流程和商业决策的核心。”如今&#xff0c;客户常用的数据传输模式是建立从Amazon Aurora到Amazon Redshift的数据管道。这些解决方案能够帮助客户获得新的见解&#x…

通讯协议学习之路(实践部分):SPI开发实践

通讯协议之路主要分为两部分&#xff0c;第一部分从理论上面讲解各类协议的通讯原理以及通讯格式&#xff0c;第二部分从具体运用上讲解各类通讯协议的具体应用方法。 后续文章会同时发表在个人博客(jason1016.club)、CSDN&#xff1b;视频会发布在bilibili(UID:399951374) 本文…

Spring的Redis客户端

如何在Spring中操作redis 在创建springboot项目的时候引入redis的依赖. 在配置文件里指定redis主机的地址和端口,此处我们配置了ssh隧道,所以连接的就是本机的8888端口. 创建一个controller类,注入操作redis的对象. 前面使用jedis,是通过jedis对象里的各种方法来操作redis的,此…

Ionic组件 ion-list ion-list-header

1 ion-list 列表由多行项目组成&#xff0c;这些项目可以包含 text, buttons, toggles, icons, thumbnails等。列表通常包含具有类似数据内容的项目&#xff0c;如 images and text。 列表支持多种交互&#xff0c;包括滑动项目以显示选项、拖动以重新排列列表中的项目以及删除…

MySQL表的增删改查(进阶)

目录 数据库约束 约束的定义 约束类型 null约束 unique:唯一约束 default:默认值约束 primary key:主键约束(重要) foreign key:外键约束(描述两个表之间的关联) 表的设计 一般思路 三大范式 一对一 一对多 ​编辑 多对多 ​编辑 新增 查询 聚合查询 聚合函…

Ridgeline plot / 远山图 / 山脊图 怎么画?怎么优化?

工具 Origin 2022 当然&#xff0c;用Matlab、Python也是可以的。 颜色配置 色卡调整