【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 / 1ps

module DC_2(
    input reset,
    input clk,
    input x,
    output z,
    output [3:0]out
);

reg [3:0]out;
reg z;

always @(posedge !clk) begin
    if(reset) begin
        out[3] = 1'b0;
        out[2] = 1'b0;
        out[1] = 1'b0;
        out[0] = 1'b0;
        z = 1'b0;
    end
    else begin
        if((x == 1'b1)) begin
            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[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;
        end
    end
end

endmodule

💬 Testbench:

`timescale 1ns / 1ps

module 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) begin
    reset = #50 ~reset;
end

always@(x) begin
    x = #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;
end

initial begin
    #860
    $finish;
end

endmodule

🚩 运行结果如下:

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/.

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

吃透 Spring 系列—IOC部分

目录 ◆ 传统Javaweb开发的困惑 -传统Javaweb开发代码分析-用户模块 -传统Javaweb开发困惑及解决方案 ◆ IoC、DI和AOP思想提出 - IoC 控制反转思想的提出 - DI 依赖注入思想的提出 - AOP 面向切面思想的提出 - 框架概念的出现 - 思想、框架和编码关系 ◆ Spring框架…

11-13 周一 同济子豪兄CNN卷积神经网络学习记录

11-13 周一 同济子豪兄CNN卷积神经网络学习记录 时间版本修改人描述2023年11月13日14:02:14V0.1宋全恒新建文档2023年11月13日19:05:29V0.2宋全恒完成 大白话讲解卷积神经网络的学习 简介 为了深入理解CNN&#xff0c;进行B站 同济子豪兄深度学习之卷积神经网络的学习. 主要内…

如何在电脑和手机设备上编辑只读 PDF

我们大多数人更喜欢以 PDF 格式共享和查看文件&#xff0c;因为它更专业、更便携。但是&#xff0c;通常情况下您被拒绝访问除查看之外的内容编辑、复制或评论。如果您希望更好地控制您的 PDF 或更灵活地编辑它&#xff0c;请弄清楚为什么您的 PDF 是只读的&#xff0c;然后使用…

NLP在网安领域中的应用(初级)

NLP在网安领域的应用 写在最前面1. 威胁情报分析1.1 社交媒体情报分析&#xff08;后面有详细叙述&#xff09;1.2 暗网监测与威胁漏洞挖掘 2. 恶意软件检测2.1 威胁预测与趋势分析 3. 漏洞管理和响应4. 社交工程攻击识别4.1 情感分析与实时监测4.2 实体识别与攻击者画像构建4.…

网络编程 初探windows编程

目录 一、什么是Winodws编程 二、开发环境搭建以及如何学习 三、VA助手安装 四、第一个Win32程序 五、窗口类句柄/窗口类对象 六、Winodws消息循环机制 七、Windows数据类型 一、什么是Winodws编程 Windows 编程指的是在 Microsoft Windows 操作系统上进行软件开发的过…

Spring IOC - BeanDefinition解析

1. BeanDefinition的属性 BeanDefinition作为接口定义了属性的get、set方法。这些属性基本定义在其直接实现类AbstractBeanDefinition中&#xff0c;各属性的含义如下表所示&#xff1a; 类型 名称 含义 常量 SCOPE_DEFAULT 默认作用域&#xff1a;单例模式 AUT…

《Semantics Disentangling for Generalized Zero-Shot Learning》论文解读

其实除了VAE自监督外&#xff0c;引入语义属性来约束生成特征的质量。感觉解纠缠这个说法有点扯淡。 语义相关模块的作用 其实就是把语义属性也作为标签。除了VAE外&#xff0c;加了语义属性作为标签&#xff0c;这样生成的特征就可以即跟原始视觉特征对齐&#xff0c;又跟语…

大数据治理运营整体解决方案:PPT全文39页,附下载

关键词&#xff1a;大数据&#xff0c;数据治理&#xff0c;数据治理解决方案&#xff0c;数据治理的目的和意义 一、数据治理的定义 数据治理专注于将数据作为企事业单位数据资产进行应用和管理的一套管理机制&#xff0c;能够消除数据的不一致性&#xff0c;建立规范的数据应…

5年测试经验之谈:2年功能测试、3年自动化测试,从入门到25k...

毕业3年了&#xff0c;学的是环境工程专业&#xff0c;毕业后零基础转行做软件测试。 已近从事测试行业8年了&#xff0c;自己也从事过2年的手工测试&#xff0c;从事期间越来越觉得如果一直在手工测试的道路上前进&#xff0c;并不会有很大的发展&#xff0c;所以通过自己的努…

Ansible角色定制实例

目录 角色定制&#xff1a;roles 角色定制实例&#xff1a;利用角色部署wordpress 1.在roles目录下生成对应的目录结构 2.定义配置文件 ①nginx ②php ③mysql ④定义剧本文件 ⑤启动服务 角色定制&#xff1a;roles 对于普通的剧本&#xff08;playbook&#xff09;有…

web前端开发第3次Dreamweave课堂练习/html练习代码《网页设计语言基础练习案例》

目标图片&#xff1a; 文字素材&#xff1a; 网页设计语言基础练习案例 ——几个从语义上和文字相关的标签 * h标签&#xff08;h1~h6&#xff09;&#xff1a;用来定义网页的标题&#xff0c;成对出现。 * p标签&#xff1a;用来设置网页的段落&#xff0c;成对出现。 * b…

Linux下的文件系统

文章目录 一、初始文件系统 二、理解磁盘文件 三、了解磁盘 四、深入理解磁盘文件 4、1 磁盘分区 4、2 分区存储细节 4、3 磁盘文件的操作 4、3、1 查找某个磁盘文件 4、3、2 创建文件 4、3、3 对文件进行写入 4、3、4 删除文件 4、4 再次理解文件权限 &#x1f64b;‍♂️ 作…

Spring 重点知识总结(三)——AOP

前言 基于黑马《SSM框架教程》的学习笔记&#xff0c;附链接&#xff1a;SSM框架教程 1 AOP 核心概念 AOP :&#xff08;Aspect Oriented Programming&#xff09;面向切面编程&#xff0c;是一种编程范式&#xff0c;负责指导开发者组织程序结构 同 OOP &#xff08;Object …

AI图像生成模型LCMs: 四个步骤就能快速生成高质量图像的新方法

在最新的AI模型和研究领域&#xff0c;一种名为Latent Consistency Models&#xff08;LCMs&#xff09;的新技术正迅速推动文本到图像人工智能的发展。与传统的Latent Diffusion Models(LDMs)相比&#xff0c;LCMs在生成详细且富有创意的图像方面同样出色&#xff0c;但仅需1-…

python打包部署脚本

linux可使用expect来实现自动交互&#xff0c;windows想要写出同样的功能脚本&#xff0c;只能使用python或者安装ActiveTcl 1、安装python Microsoft Store搜索python直接安装&#xff0c;默认会直接添加到环境变量https://www.python.org/官网下载&#xff0c;点击安装时会提…

初识MySQL(一)(创建数据库,查看删除数据库,备份和恢复,创建表,数据类型)

目录 客户端 ------> MySQL服务(3306) 数据库三层结构-破除MySQL神秘 创建数据库 查看删除数据库 备份恢复数据库 创建表 MySQL常用的数据类型(列类型) ​编辑 ​编辑整型 bit类型 小数类型 字符串类型 日期类型的使用 客户端 ------> MySQL服务(3306) 连接…

【斗破年番】毒宗决战万蝎门,小医仙惨遭背叛,斗宗巅峰蝎毕岩

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫资讯。 深度爆料斗破年番第七十话剧情解析&#xff0c;万蝎门宗主蝎毕岩&#xff0c;也算是这片大陆上的一小小块势力。一年前&#xff0c;他曾与小医仙正面交锋&#xff0c;即使当时的蝎毕岩已经站在了四星斗宗&…

2023年【广东省安全员B证第四批(项目负责人)】考试及广东省安全员B证第四批(项目负责人)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 广东省安全员B证第四批&#xff08;项目负责人&#xff09;考试考前必练&#xff01;安全生产模拟考试一点通每个月更新广东省安全员B证第四批&#xff08;项目负责人&#xff09;试题及解析题目及答案&#xff01;多…

若依系统富文本框上传图片报错!

报错如下&#xff1a; 原因&#xff1a;如图&#xff0c;富文本路径中存在 / 字符&#xff0c;导致上传出错。 解决方案&#xff1a;将富文本框内容在前端进行加密&#xff0c;后端再解密。 前端&#xff1a; 安装 crypto-js 插件 npm install crypto-js 创建工具类 :在 sr…

阿里云国际站:应用实时监控服务

文章目录 一、阿里云应用实时监控服务的概念 二、阿里云应用实时监控服务的优势 三、阿里云应用实时监控服务的功能 四、写在最后 一、阿里云应用实时监控服务的概念 应用实时监控服务 (Application Real-Time Monitoring Service) 作为一款云原生可观测产品平台&#xff…