Verilog刷题HDLBits——Exams/review2015 fsm

news2024/11/19 21:22:55

Verilog刷题HDLBits——Exams/review2015 fsm

  • 题目描述
  • 状态转换图
  • 代码
  • 结果

题目描述

This is the fourth component in a series of five exercises that builds a complex counter out of several smaller circuits. See the final exercise for the overall design.

You may wish to do FSM: Enable shift register and FSM: Sequence recognizer first.

We want to create a timer that:

  1. is started when a particular pattern (1101) is detected,
  2. shifts in 4 more bits to determine the duration to delay,
  3. waits for the counters to finish counting, and
  4. notifies the user and waits for the user to acknowledge the timer.

In this problem, implement just the finite-state machine that controls the timer. The data path (counters and some comparators) are not included here.

The serial data is available on the data input pin. When the pattern 1101 is received, the state machine must then assert output shift_ena for exactly 4 clock cycles.

After that, the state machine asserts its counting output to indicate it is waiting for the counters, and waits until input done_counting is high.

At that point, the state machine must assert done to notify the user the timer has timed out, and waits until input ack is 1 before being reset to look for the next occurrence of the start sequence (1101).

The state machine should reset into a state where it begins searching for the input sequence 1101.

Here is an example of the expected inputs and outputs. The ‘x’ states may be slightly confusing to read. They indicate that the FSM should not care about that particular input signal in that cycle. For example, once a 1101 pattern is detected, the FSM no longer looks at the data input until it resumes searching after everything else is done.
在这里插入图片描述

状态转换图

在这里插入图片描述

代码

module top_module (
    input clk,
    input reset,      // Synchronous reset
    input data,
    output shift_ena,
    output counting,
    input done_counting,
    output done,
    input ack );
    
    parameter S=0,S1=1,S11=2,S110=3,B0=4,B1=5,B2=6,B3=7,COUNT=8,WAIT=9;
    reg[3:0] state,next_state;
    
    always@(*)
        case(state)
            S:		next_state=data?S1:S;
            S1:		next_state=data?S11:S;
            S11:	next_state=data?S11:S110;
            S110:	next_state=data?B0:S;
            B0:		next_state=B1;
            B1:		next_state=B2;
            B2:		next_state=B3;
            B3:		next_state=COUNT;
            COUNT:	next_state=done_counting?WAIT:COUNT;
            WAIT:	next_state=ack?S:WAIT;
        endcase
    
    always@(posedge clk)
        if(reset)
            state<=S;
    	else
            state<=next_state;
    
    assign shift_ena = (state==B0)||(state==B1)||(state==B2)||(state==B3);
    assign counting = (state==COUNT);
    assign done = (state==WAIT);

endmodule

结果

在这里插入图片描述

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

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

相关文章

人工智能期末复习:聚类(详细笔记)

文章目录聚类的概述常见的聚类算法原型聚类K均值聚类算法K均值聚类算法顺序前导聚类&#xff08;Sequential leader clustering&#xff09;高斯混合聚类&#xff08;KMM&#xff09;密度聚类DBSCAN聚类算法层次聚类AGNES聚类算法谱聚类聚类的评价&#xff08;轮廓系数&#xf…

深度学习—00入门 神经网络

1、深度学习简介 深度学习是机器学习的一个分支&#xff0c;简单来说就是通过人工神经网络&#xff0c;强行在业务的 输入 和 输出 之间&#xff0c;暴力耦合一个出一个数学模型。 1.1 深度学习特点 1、由于是暴力耦合出来的模型&#xff0c;自然模型可解释性很差&#xff0c…

kkfile在线文件预览部署(Linux服务器版本)

一&#xff1a;kkfile部署指南 KKfile文件预览是一款开源的文档在线预览项目。项目使用流行的spring boot搭建&#xff0c;易上手和部署&#xff0c;基本支持主流办公文档的在线预览&#xff0c;如doc,docx,Excel,pdf,txt,zip,rar,图片等等。 如果你是在windows系统中可以不用…

第二证券|锂离子聚合物电池的分类和使用注意事项

根据锂离子电池所用电解质资料的不同&#xff0c;锂离子电池分为液态锂离子电池和聚合物锂离子电池。聚合物锂离子电池所用的正负极资料与液态锂离子都是相同的&#xff0c;正极资料分为钴酸锂、锰酸锂、三元资料和磷酸铁锂资料&#xff0c;负极为石墨&#xff0c;电池工作原理…

RabbitMQ 第一天 基础 6 SpringBoot 整合RabbitMQ

RabbitMQ 【黑马程序员RabbitMQ全套教程&#xff0c;rabbitmq消息中间件到实战】 文章目录RabbitMQ第一天 基础6 SpringBoot 整合RabbitMQ6.1 SpringBoot 整合 RabbitMQ【生产者】6.1.1 生产者6.2 SpringBoot 整合 RabbitMQ【消费者】6.2.1 消费者6.3 小结第一天 基础 6 Spri…

ESP32-CAM 使用 MicroPython 进行开发

ESP32-CAM 开发工具 ESP32-CAM是安信可发布小尺寸的摄像头模组。该模块可以作为最小系统独立工作&#xff0c;尺寸仅为2740.54.5mm。 ESP32-CAM可广泛应用于各种物联网场合&#xff0c;适用于家庭智能设备、工业无线控制、无线监控、人脸识别以及其它物联网应用&#xff0c;是…

stm32f407VET6 系统学习 day02 GPIO 引脚的按键 中断,中断设置 (配置)

1.中断基本知识 1.知识点&#xff1a; STM32的所有中断&#xff08;内部或外部)都是由NVIC&#xff08;嵌套向量中断控制器&#xff09;控制 注意:在KEIL5工程中的fwlib分组中&#xff0c;misc.c文件提供了NVIC相关的固件库函数。 2.中断源 &#xff1a;引起CPU中断的根源&am…

DirectX12_API流程入门篇

本部分主要记录下使用D3D12入门所涉及到的API&#xff0c;记录简单使用方式供后期快速查找使用(数据参照龙书实现)。 首先看一下DX12中拥有的管线能力&#xff1a; Raster Graphics PipelineCompute Graphics PipelineRay Tracing PipelineMesh Geometry Pipeline 具体管线示…

【数据结构】链式二叉树的实现

作者&#xff1a;一个喜欢猫咪的的程序员 专栏&#xff1a;《数据结构》 喜欢的话&#xff1a;世间因为少年的挺身而出&#xff0c;而更加瑰丽。 ——《人民日报》 目录 1.二叉树的概念及结构 1.1二叉树的概念 1.2二叉树的类型分类&#xff…

腾讯焦虑了,一向温文尔雅的马化腾也发脾气了

大家好&#xff0c;我是校长。昨天小马哥内部讲话在互联网上疯传&#xff0c;这应该是&#xff0c;腾讯这家公司创办以来&#xff0c;马化腾最焦虑也最外露的一次讲话了&#xff0c;重点大概涉及 3 大方面&#xff0c;8 大项内容&#xff1a;1、所有业务线 ROI 化&#xff0c;再…

【关于时间序列的ML】项目 9 :机器学习中的 ARIMA 模型

&#x1f50e;大家好&#xff0c;我是Sonhhxg_柒&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流&#x1f50e; &#x1f4dd;个人主页&#xff0d;Sonhhxg_柒的博客_CSDN博客 &#x1f4c3; &#x1f381;欢迎各位→点赞…

<Linux线程概念及线程控制>——《Linux》

目录 1. Linux线程概念 什么是线程 线程的优点 线程的缺点 线程异常 线程用途 2. Linux进程VS线程 进程和线程 进程的多个线程共享 关于进程线程的问题 3. Linux线程控制 POSIX线程库 创建线程 线程ID及进程地址空间布局 线程终止 线程等待 4. 分离线程 后记&#xff1a;●由于…

ArcGIS 制作这种“清新设计风”的地图海报封面

这种图怎么做?下面是星球研究所制作的一张地图海报,那么究竟是如何制作的呢? 星球研究所 制作 一通鼓捣之下,使用 ArcGIS Pro 制作出了风格相近的成都市区位及地形示意图地图(其实 QGIS 也能做)。 下面教程一并分享给大家。 完全使用 ArcGIS Pro 制作的成果图 1.全国区位…

Python——几个常用的数学函数

1. min()函数&#xff1a;取出给定参数的最小值 说明&#xff1a;获取指定数值或者指定序列中最小值。 print(min(1, 5)) print(min(1, 2, 3, 4, 5, 6)) print(min([2, 3, 4, 5])) 2.max()函数&#xff1a;取出给定参数的最大值 说明&#xff1a;获取指定数值或者指定序列中…

CSS初级教程【第一天】

CSS初级教程【第一天】【1】CSS初识【2】CSS简介【3】CSS语法【4】CSS 选择器【5】CSS使用【6】CSS 注释【7】CSS 颜色【8】CSS RGB 颜色【9】CSS HEX 颜色【10】CSS HSL 颜色&#xff08;色相| 饱和度 | 明度&#xff09;【0】末尾声名【1】CSS初识 CSS 是一种描述 HTML 文档样…

【青岛大学·王卓】第3章_栈和队列

【青岛大学王卓】第3章_栈和队列 20221107-20221119 3.1 栈和队列的定义和特点 普通线性表插入和删除可以是线性表中的任意为位置&#xff1b; 3.1.1 栈 栈的概念 栈和队列是两种常用的、重要的数据结构。栈和队列是限定插入和删除只能在表的端点进行的线性表。 栈特点 后…

Anki学习之路

【常规操作】&#xff1a; 【自定义卡片进度】&#xff1a; [右键单击] -> [重设学习进度] //选择放到哪一个队列中&#xff08; 新卡片队列 / 复习队列 &#xff09;。 【重新学一遍】&#xff1a; //然后再进行上面的操作步骤。 【牌组齿轮按钮】&#xff1a; 【每日新…

Web前端105天-day62-HTML5_CORE

HTML5CORE02 目录 前言 一、复习 二、拖拽 三、上传服务器 四、Canvas 五、地图 总结 前言 HTML5CORE02学习开始 一、复习 跨域 浏览器的同源策略导致在网页中, 通过 AJAX 发送网络请求时, 默认只能向同源的服务器请求同源: 协议 端口号 域名 三者都相同产生跨域的原因…

杰华特科创板上市:市值227亿 华为英特尔联想是股东

雷递网 雷建平 12月23日杰华特微电子股份有限公司&#xff08;简称&#xff1a;“杰华特”&#xff0c;股票代码为&#xff1a;“688141” &#xff09;今日在科创板上市&#xff0c;发行价为38.26元。杰华特此次发行5808万股&#xff0c;发行价为38.26元&#xff0c;募资总额为…

32天高效突击:开源框架+性能优化+微服务架构+分布式,面阿里获P7(脑图、笔记、面试考点全都有)

今年的大环境不佳&#xff0c;所以大部分的人在今年的招聘旺季都没有收获到好的结果。 但不要着急&#xff0c;今天分享的内容则是由 一位阿里P7的面试心得&#xff0c;通过32天的高效突击训练&#xff0c;成功拿下offer的学习方法。 篇章分为三大章节&#xff0c;可以根据自…