Verilog刷题笔记62

news/2024/12/5 9:38:25/

题目:
Exams/review2015 fancytimer
This is the fifth component in a series of five exercises that builds a complex counter out of several smaller circuits. You may wish to do the four previous exercises first (counter, sequence recognizer FSM, FSM delay, and combined FSM).
在这里插入图片描述
解题:

module top_module (input clk,input reset,      // Synchronous resetinput data,output [3:0] count,output counting,output done,input ack );parameter s0=0,s1=1,s11=2,s110=3,s1101=4,b1=5,b2=6,b3=7,cnt=8,waitter=9;reg [3:0]state,next_state;reg [15:0]counter;reg [3:0]delay,delay0;always@(posedge clk)beginif(reset)state=s0;elsestate=next_state;endalways@(*)begincase(state)s0:next_state=data?s1:s0;s1:next_state=data?s11:s0;s11:next_state=data?s11:s110;s110:next_state=data?s1101:s0;s1101:next_state=b1;b1:next_state=b2;b2:next_state=b3;b3:next_state=cnt;cnt:next_state=(counter==(delay0+1)*1000-1)?waitter:cnt;waitter:next_state=ack?s0:waitter;endcaseendalways@(posedge clk)begincase(state)s1101:delay[3:0]={delay[2:0],data};b1:delay[3:0]={delay[2:0],data};b2:delay[3:0]={delay[2:0],data};b3:begin delay[3:0]={delay[2:0],data};delay0=delay;endcnt:begin counter=counter+1;if(counter==1000)delay=delay-1;else if(counter==2000)delay=delay-1;else if(counter==3000)delay=delay-1;else if(counter==4000)delay=delay-1;else if(counter==5000)delay=delay-1;else if(counter==6000)delay=delay-1;else if(counter==7000)delay=delay-1;else if(counter==8000)delay=delay-1;else if(counter==9000)delay=delay-1;else if(counter==10000)delay=delay-1;else if(counter==11000)delay=delay-1;else if(counter==12000)delay=delay-1;else if(counter==13000)delay=delay-1;else if(counter==14000)delay=delay-1;else if(counter==15000)delay=delay-1;else if(counter==16000)delay=delay-1;enddefault:begin counter=0;delay=0;endendcaseendassign count=delay;assign counting=state==cnt;assign done=state==waitter;endmodule

结果正确:
在这里插入图片描述

本题结合前面的FSM,为一个较为完整的计数器。


http://www.ppmy.cn/news/1520440.html

相关文章

黑马大事件

项目介绍 演示网站: https://fe-bigevent-web.itheima.net/login 实现 1)创建项目 npm init vuelatest2)安装项目需要的依赖 npm install element-plus --save npm install axios npm install sass -D3)在main.js中加入Elem…

低代码用户中心的构建与应用

引言 在现代软件开发中,低代码平台因其高效、灵活、用户友好的特性而逐渐受到青睐。特别是在用户中心的构建方面,低代码平台能够显著提升开发效率,降低开发成本。本文将探讨如何利用低代码平台构建一个高效的用户中心,并分享一些…

记录工作时的一些错误

1、mobaxterm问题: 解决方案:找不到mottynew.exe 2、虚拟机安装centos7进入不了引导页面 解决方案:检查镜像 虚拟机 192.168.40.128 root/Root yxr/y123x123r123 解决方案: 问题:docker run不起来容器,显…

计算机视觉软件教学平台

1、基本介绍 计算机视觉软件教学平台是中智讯公司开发的一款面向人工智能相关专业机器视觉方向的综合型实验平台,主要满足:图像处理、图像识别、机器视觉应用、边缘计算应用、智能算法等课程的实验和实训,是基于新工科和工程教育思维和专业改…

MATLAB 中的对数计算

在 MATLAB 中,计算对数是进行数学分析和科学计算的常见需求。对数运算在数据分析、信号处理和控制系统中都有广泛应用。本篇博客将详细介绍如何在 MATLAB 中进行对数计算,包括自然对数、常用对数以及任意底数的对数。 1. 自然对数(以 e 为底…

Spark-Yarn模式如何配置历史服务器

在Spark程序结束之后我们也想看到运行过程怎么办? Yarn模式下,通过以下步骤配置历史服务器即可: mv spark-defaults.conf.template spark-defaults.conf修改spark-default.conf 文件,配置日志存储路径 spark.eventLog.enabled true spark.…

xxxSendMessageBSM函数分析

BSM的意思:Broadcast Special Message 第一部分A: //Broadcast Special Message Recipient list #define BSM_ALLCOMPONENTS 0x00000000 #define BSM_VXDS 0x00000001 #define BSM_NETDRIVER 0x00000002 #define BSM_INS…

鸿蒙模拟器篇

1、首先需要在华为官网申请模拟器资格,附链接:鸿蒙模拟器(HarmonyOS Emulator)Beta活动申请 填写相关信息提交申请,申请结果状态在个人中心 — 我的活动页面查看 2、申请通过之后开始下载模拟器 注意&#xff1a…