当前位置: 首页 > news >正文

Verilog刷题笔记62

题目:
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.mrgr.cn/news/12862.html

相关文章:

  • uniapp使用宫格实现多张图片预览
  • 网络,服务器
  • 在 Spring Boot 中为 MyBatis 添加拦截器
  • 【大数据】深入解析向量数据库Faiss:搭建与使用指南
  • 异步编程下await的理解
  • C++ 解决要编译的工程和依赖工程重名文件夹的问题
  • WHAT - Jamstack(JavaScript, APIs, and Markup 与 Serverless 无服务器架构)
  • 详解ACL限制SSH、Telnet远程登录及抓包实验
  • Java 入门指南:Java IO流 —— 转换流、扫描流、打印流
  • vTable实现多维表格
  • erlang学习:gen_server书上案例22.6练习题5
  • Obsidian dataview 高级使用技巧 【文件筛选/排序/分组/限制】
  • CSS3中display显示属性
  • 前后端交互的过程
  • 【生活英语】3、支持和鼓励
  • 弗洛伊德(Floyd)算法(C/C++)
  • CMake构建学习笔记9-Eigen库的构建
  • Oracle Linux 7.9 安装minikube体验
  • C++中 inline 的含义是什么?
  • iptables笔记汇总