22.状态机设计--可乐机设计(投币三元出一瓶可乐)

news2024/9/22 17:33:40

理论知识:

(1)状态机简写为FSM(Finite State Machine),也称为同步有限状态机。同步是指状态的变化都是在时钟的边沿发送变化,有限值得是状态的个数是可数的。

(2)分类:Moore型状态机(摩尔型)、Mealy型状态机(米利型)

(3)在FPGA低速系统中,如果状态机的状态个数小于四个,可以用二进制码;如果个数大于4个小于24个,推荐使用独热码,如果个数大于24个,推荐使用格雷码。在FPGA高速系统中,一律推荐独热码。

(4)

设计一个基于状态机的可乐机,要求投币三元出一瓶可乐:

(1)Visio视图:

(2)Verilog代码:

module fsm_cola(clk,reset_n,pi_money,po_cola);

    input clk;
    input reset_n;
    input pi_money;
    
    output reg po_cola;
    
    reg[2:0] state;
    
    parameter IDLE  = 3'b001;
    parameter ONE   = 3'b010;
    parameter TWO   = 3'b100;
    
//状态跳转设计:
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            state <= IDLE;
        else begin
            case(state)
                IDLE:   begin
                        if(pi_money)
                            state <= ONE;
                        else 
                            state <= state;
                end
                
                ONE:    begin
                        if(pi_money)
                            state <= TWO;
                        else 
                            state <= state;
                end
                TWO:    begin
                        if(pi_money)
                            state <= IDLE;
                        else    
                            state <= state;
                end
                
                default:begin
                        state <= IDLE;
                end
            endcase
        end

//输出信号设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            po_cola <= 1'd0;
        else if((state == TWO) && (pi_money))
            po_cola <= 1'd1;
        else 
            po_cola <= 1'd0;

endmodule

(3)仿真文件代码:

`timescale 1ns / 1ps

module fsm_cola_tb;
    
    reg clk;
    reg reset_n;
    reg pi_money;
    
    wire po_cola;
    
    fsm_cola fsm_cola_inst(
        .clk(clk),
        .reset_n(reset_n),
        .pi_money(pi_money),
        .po_cola(po_cola)
    );
    
    initial clk = 1'd1;
    always #10 clk = ~clk;
    
    initial begin
        reset_n <= 1'd0;
        pi_money <= 1'd0;
        #15;
        reset_n <= 1'd1;
        #1500;
        $stop;
    end

    always #200 pi_money <= ~ pi_money;

endmodule

(4)仿真波形:

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

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

相关文章

springboot封装请求参数json的源码解析

源码位置&#xff1a; org.springframework.web.servlet.mvc.method.annotation.AbstractMessageConverterMethodArgumentResolver#readWithMessageConverters(org.springframework.http.HttpInputMessage, org.springframework.core.MethodParameter, java.lang.reflect.Type…

计算机视觉研究方向初学习,计算机视觉都有什么方向??!到底是干什么的?!

计算机视觉研究方向初学习&#xff0c;计算机视觉都有什么方向&#xff1f;&#xff1f;&#xff01;到底是干什么的&#xff1f;&#xff01; 语义分割图像分类目标检测和定位实例分割、全景分割物体跟踪姿态估计人脸识别人体识别图像增强风格迁移图像生成视觉问答视频分析光学…

初探ethercat IGH协议栈(交叉编译)

说明&#xff0c; 1&#xff09;不要着急编译&#xff0c;建议读完全文&#xff0c;再参照编译&#xff1b; 2&#xff09;IGH编译是需要Linux内核源码的&#xff0c;还有打rt补丁&#xff1b; 3&#xff09;依赖的内核版本最好是目标设备的一样&#xff1b; 4&#xff09;…

“爆炸性更新!JDK 17携全新语法特性强势来袭,开发者必看的升级亮点“(1)

找往期文章包括但不限于本期文章中不懂的知识点&#xff1a; 个人主页&#xff1a;我要学编程(ಥ_ಥ)-CSDN博客 所属专栏&#xff1a;Java进化论 目录 背景 yield关键字 var关键字 空指针异常 密封类 接口中的私有方法 instanceof关键字 背景 Java 8 虽然曾经是使用…

基于Java技术的网吧管理系统

你好呀&#xff0c;我是计算机学姐码农小野&#xff01;如果有相关需求&#xff0c;可以私信联系我。 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;Java技术&#xff0c;B/S结构 工具&#xff1a;MyEclipse&#xff0c;MySQL 系统展示 首页 个人中…

中西部公关新篇章:赛氪网赋能新质生产力赛事,引领行业潮流

2024年7月7日&#xff0c;武汉光谷盛况空前&#xff0c;中西部公共关系协会共同体多边合作平台&#xff08;以下简称“共同体”&#xff09;举办了2024年度中西部公关协会会长、秘书长专题交流会&#xff0c;本次会议主题为“加快新质生产力&#xff0c;推进公关行业新格局&…

Google账号输入用户名和密码后提醒要到手机通知点是,还要点击数字,但是我手机收不到

有一些朋友换了一个新的电脑后手机登录谷歌账号时&#xff0c;用户名和密码都正确输入以后&#xff0c;第三步弹出一个提示&#xff0c;要在手机上的通知栏点击是&#xff0c;并且点击手机上相应的数字才能继续登录。 但是自己的手机上下拉通知栏却没有来自谷歌的通知&#xf…

用例子和代码了解词嵌入和位置编码

1.嵌入&#xff08;Input Embedding&#xff09; 让我用一个更具体的例子来解释输入嵌入&#xff08;Input Embedding&#xff09;。 背景 假设我们有一个非常小的词汇表&#xff0c;其中包含以下 5 个词&#xff1a; "I""love""machine"&qu…

Greenplum(三)【分布式事务和两阶段提交协议】

1、事务实现原理和 WAL&#xff08;单机&#xff09; 属性含义数据库系统实现Atomic&#xff08;原子性&#xff09;事务中的操作要么全部正确执行&#xff0c;要么完全不执行&#xff08;要么成功、要么失败&#xff09;Write Ahead Logging 预写日志&#xff0c;分布式事务&…

牛客周赛 Round 50 解题报告 | 珂学家

前言 题解 数学场&#xff0c;对数学头痛, T_T. A. 小红的最小最大 题型: 签到 a, b, x list(map(int, input().split()))if min(a, b) x > max(a, b):print ("YES") else:print ("NO")B. 小红的四则运算&#xff08;easy&#xff09; 思路: 贪心…

职场中的3个误区,你踩坑了吗?

1、个人发展比工资待遇更重要 这句话也不能说是完全错的&#xff0c;但是你要明白能给你提供发展空间的公司&#xff0c;待遇也不会差到哪里去&#xff0c;而且随着你个人能力的提升&#xff0c;发展也会越来越好&#xff0c;你的待遇也自然水涨船高&#xff0c;这个道理其实大…

乐鑫ESP-NOW与Wi-Fi SoC方案家居设备无缝连接,启明云端乐鑫代理商

随着科技的不断进步&#xff0c;智能家居逐渐成为现代生活的一部分。ESP-NOW技术以其独特的无线通信能力&#xff0c;为智能家居领域带来了一场革命。 ESP-NOW是一种由乐鑫定义的无线通信协议&#xff0c;它能够在无需路由器的情况下&#xff0c;实现设备间的直接、快速、低功…

如何高效学习(一)

什么是学习&#xff1f;学习的本质是什么&#xff1f;如何学习&#xff1f;如何更加高效的学习 以下内容均为观看B站UP主(硬核学长2077)所做总结和自我分析 一、自我介绍 ​ 我&#xff0c;一个二三线城市小小程序员&#xff0c;在高中学习就很一般&#xff0c;但当时并没有特…

解锁敦煌网成功秘籍:批量注册买家号测评的高效策略

敦煌网&#xff08;DHgate&#xff09;作为一个跨境电商平台&#xff0c;搭建境外本土网络环境并实现批量注册买家号下单&#xff0c;需要遵循一系列严谨的步骤和考虑多个关键因素。以下是一个概括性的指南&#xff1a; 一、环境要求 国外服务器&#xff1a;首先&#xff0c;…

WPF 初识依赖属性

依赖属性的意义和作用 核心模块内存共享&#xff0c;节省空间数据绑定、样式、模板、动画。。。。如果没有依赖属性&#xff0c;这个框架就是一个控件框架 相当于Winform 依赖属性的基本定义 基本过程&#xff1a;声明、注册、包装 在需要写依赖属性的类中&#xff0c;继承…

Axure第12享:Google加载Axure扩展程序

1、需求描述 在双击打开RP文件进行预览时&#xff0c;提示要为Google浏览器加载Extension&#xff08;扩展程序&#xff09;&#xff0c;如下图所示。 2、解决思路 按照系统指导的操作步骤&#xff0c;但要注意1点&#xff0c;加载“扩展程序”时是选择整个文件夹&#xff0c…

3款ui设计师必备的高效软件,一定要收藏!

UI设计小伙伴们&#xff0c;你们是否在寻找那些能够让设计工作事半功倍的插件呢&#xff1f;今天&#xff0c;我要为大家带来3款UI设计软件中的高效软件&#xff0c;它们不仅能够极大提升我们的工作效率&#xff0c;还能让我们的设计更加专业和精致。让我们一起来看看这些不容错…

动手学深度学习54 循环神经网络

动手学深度学习54 循环神经网络 1. 循环神经网络RNN2. QA 1. 循环神经网络RNN h t h_t ht​ 与 h t − 1 h_{t-1} ht−1​ x t − 1 x_{t-1} xt−1​有关 x t x_t xt​ 与 h t h_t ht​ x t − 1 x_{t-1} xt−1​ 有关 怎么把潜变量变成RNN–假设更简单 潜变量和隐变量的区…

透明加密软件核心技术分享|十款好用的透明加密软件分享

透明加密软件的核心技术在于其能够自动、实时地对文件进行加密和解密&#xff0c;而这个过程对最终用户来说是无感的。这种技术在不改变用户操作习惯的前提下&#xff0c;增强了数据的安全性。下面是透明加密软件的一些核心技术要点。 实时加密与解密&#xff1a;软件在文件被打…

虚拟内存【Linux】

虚拟内存 为什么需要虚拟内存Linux虚拟内存的结构32位系统下的虚拟地址空间64位系统下的虚拟地址空间页表多级页表TLB 流程虚拟内存的作用 为什么需要虚拟内存 为了在进行多进程编码进行内存访问的时候保持内存的隔离性&#xff0c;数据安全性&#xff0c;所以出现了虚拟内存。…