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

【HDLBits 刷题 9】Circuits(5)Finite State Manchines 1-9

目录写在前面Finite State ManchinesFsm1Fsm1sFsm2Fsm2sFsm3combFsm3onehotFsm3Fsm3sDesign a Moore FSM写在前面HDLBits 刷题来到了最为重要的一部分---有限状态机都说 Verilog 设计的精髓就是状态机的设计可见状态机设计的重要性通过三十多道的状态机的练习可以更加熟悉状态机设计的要点通常都设计为三段式这样设计的状态机层次清晰且易于设计时序上更为易懂。以下的解题方法不一定为最佳解决方案有更好的方法欢迎提出共同学习共同进步Finite State ManchinesFsm1设计一个摩尔状态机具有两种状态一种输入和一种输出。实现此状态机。请注意重置状态为 B。使用异步重置。module top_module( input clk, input areset, // Asynchronous reset to state B input in, output out ); //状态申明 parameter A 0; parameter B 1; reg state; reg next_state; //状态机第一段起始状态 always (posedge clk or posedge areset) begin if (areset) begin state B; end else begin state next_state; end end //状态机第二段状态的跳转 always (*) begin next_state state; case(state) B: case(in) 0 : next_state A; 1 : next_state B; endcase A : case(in) 0 : next_state B; 1 : next_state A; endcase default: next_state B; endcase end //状态机第三段在每个状态的输出 assign out (state B); endmoduleFsm1s一个摩尔状态机具有两种状态一种输入和一种输出。实现此状态机。请注意重置状态为 B。使用同步复位。module top_module(clk, reset, in, out); input clk; input reset; // Synchronous reset to state B input in; output out; parameter A 0; parameter B 1; reg out; reg present_state; reg next_state; //状态机第一段初始状态非阻塞逻辑 always (posedge clk) begin if (reset) begin present_state B; end else begin present_state next_state; end end //状态机第二段状态转移阻塞赋值 always (*) begin next_state present_state; case(present_state) B: case(in) 1: next_state B; 0: next_state A; endcase A: case(in) 1: next_state A; 0: next_state B; endcase endcase end //状态机第三段状态输出 assign out (present_stateB); endmoduleFsm2这是一个摩尔状态机有两个状态两个输入和一个输出。实现此状态机。使用异步重置。module top_module( input clk, input areset, // Asynchronous areset to OFF input j, input k, output out ); parameter OFF 0; parameter ON 1; reg state; reg next_state; //状态机第一段初始状态非阻塞逻辑 always (posedge clk or posedge areset) begin if (areset) begin state OFF; end else begin state next_state; end end //状态机第二段状态转移阻塞赋值 always (*) begin next_state state; case(state) OFF: case(j) 1: next_state ON; 0: next_state OFF; endcase ON: case(k) 1: next_state OFF; 0: next_state ON; endcase endcase end //状态机第三段状态输出 assign out (stateON); endmoduleFsm2s这是一个摩尔状态机有两个状态两个输入和一个输出。实现此状态机。使用同步复位。//timescale 100ps / 1ps ////////////////////////////////////////////////////////////////////////////////// // Stage: Finite_State_Manchines // Engineer: LQC // Create Date: 2022/08/06 // Design Name: // Module Name: top_module // Description: // 摩尔状态机有两个状态两个输入和一个输出。 // 实现此状态机。使用同步重置。 ////////////////////////////////////////////////////////////////////////////////// module top_module( input clk, input reset, // Asynchronous reset to OFF input j, input k, output out ); parameter OFF 0; parameter ON 1; reg state; reg next_state; //状态机第一段初始状态非阻塞逻辑 always (posedge clk) begin if (reset) begin state OFF; end else begin state next_state; end end //状态机第二段状态转移阻塞赋值 always (*) begin next_state state; case(state) OFF: case(j) 1: next_state ON; 0: next_state OFF; endcase ON: case(k) 1: next_state OFF; 0: next_state ON; endcase endcase end //状态机第三段状态输出 assign out (stateON); endmoduleFsm3comb以下是摩尔状态机的状态转换表该状态机具有一个输入、一个输出和四个状态。使用以下状态编码A2b00、B2b01、C2b10、D2b11。仅实现此状态机的状态转换逻辑和输出逻辑组合逻辑部分。给定当前状态根据状态转换表计算和输出 。module top_module( input in, input [1:0] state, output [1:0] next_state, output out ); parameter A0, B1, C2, D3; always (*) begin case(state) A: case(in) 0: next_state A; 1: next_state B; endcase B: case(in) 0: next_state C; 1: next_state B; endcase C: case(in) 0: next_state A; 1: next_state D; endcase D: case(in) 0: next_state C; 1: next_state B; endcase default: next_state A; endcase end assign out (stateD); endmoduleFsm3onehot以下是摩尔状态机的状态转换表该状态机具有一个输入、一个输出和四个状态。使用以下单热状态编码A4b0001、B4b0010、C4b0100、D4b1000。通过检查假设为单热编码派生状态转换和输出逻辑方程。仅实现此状态机的状态转换逻辑和输出逻辑组合逻辑部分。测试平台将使用非一个热输入进行测试以确保您不会尝试执行更复杂的操作。module top_module( input in, input [3:0] state, output [3:0] next_state, output out ); //状态申明 parameter A 0; parameter B 1; parameter C 2; parameter D 3; //只需要判断next_state在哪个状态变成此状态即可 assign next_state[A] (state[A] ~in) | (state[C] ~in); assign next_state[B] (state[B] in) | (state[D] in) | (state[A] in); assign next_state[C] (state[B] ~in) | (state[D] ~in); assign next_state[D] (state[C] in); //只有当状态为D时输出才为1 assign out (state[D]); endmoduleFsm3以下是摩尔状态机的状态转换表该状态机具有一个输入、一个输出和四个状态。实现此状态机。包括将 FSM 重置为状态 A 的异步重置。module top_module( input clk, input in, input areset, output out ); //状态申明 parameter A 4b0001; parameter B 4b0010; parameter C 4b0100; parameter D 4b1000; parameter ON 1; parameter OFF 0; reg [3:0] state; reg [3:0] next_state; //状态机第一段初始状态时序逻辑、非阻塞赋值 always (posedge clk or posedge areset) begin if (areset) begin state A; end else begin state next_state; end end //状态机第二段状态转移时序逻辑、阻塞赋值 always (*) begin next_state state; case(state) A: case(in) ON: next_state B; OFF: next_state A; endcase B: case(in) ON: next_state B; OFF: next_state C; endcase C: case(in) ON: next_state D; OFF: next_state A; endcase D: case(in) ON: next_state B; OFF: next_state C; endcase endcase end //状态机第三段结果输出组合逻辑 assign out (stateD); endmoduleFsm3s以下是摩尔状态机的状态转换表该状态机具有一个输入、一个输出和四个状态。实现此状态机。包括将 FSM 重置为状态 A 的同步复位这与 Fsm3 存在相同的问题但具有同步复位。module top_module( input clk, input in, input reset, output out ); //状态申明 parameter A 4b0001; parameter B 4b0010; parameter C 4b0100; parameter D 4b1000; parameter ON 1; parameter OFF 0; reg [3:0] state; reg [3:0] next_state; //状态机第一段初始状态时序逻辑、非阻塞赋值 always (posedge clk) begin if (reset) begin state A; end else begin state next_state; end end //状态机第二段状态转移时序逻辑、阻塞赋值 always (*) begin next_state state; case(state) A: case(in) ON: next_state B; OFF: next_state A; endcase B: case(in) ON: next_state B; OFF: next_state C; endcase C: case(in) ON: next_state D; OFF: next_state A; endcase D: case(in) ON: next_state B; OFF: next_state C; endcase endcase end //状态机第三段结果输出组合逻辑 assign out (stateD); endmoduleDesign a Moore FSMmodule top_module ( input clk, input reset, input [3:1] s, output fr3, output fr2, output fr1, output dfr ); parameter A 3b000; parameter B 3b001; parameter C 3b010; parameter D 3b011; parameter E 3b100; parameter F 3b101; wire [2:0] state; wire [2:0] next_state; //状态机第一段初始状态时序逻辑非阻塞赋值 always(posedge clk)begin if(reset) state A; else state next_state; end //状态机第二段状态跳转阻塞赋值 always(*)begin case(state) A: next_state s[1]? B:A; B: next_state s[2]? D:(s[1]? B:A); C: next_state s[2]? D:(s[1]? C:A); D: next_state s[3]? F:(s[2]? D:C); E: next_state s[3]? F:(s[2]? E:C); F: next_state s[3]? F:E; endcase end //状态机第三段结果输出 always(*)begin case(state) A: {fr3,fr2,fr1,dfr} 4b1111; B: {fr3,fr2,fr1,dfr} 4b0110; C: {fr3,fr2,fr1,dfr} 4b0111; D: {fr3,fr2,fr1,dfr} 4b0010; E: {fr3,fr2,fr1,dfr} 4b0011; F: {fr3,fr2,fr1,dfr} 4b0000; endcase end endmodule

相关文章:

【HDLBits 刷题 9】Circuits(5)Finite State Manchines 1-9

目录 写在前面 Finite State Manchines Fsm1 Fsm1s Fsm2 Fsm2s Fsm3comb Fsm3onehot Fsm3 Fsm3s Design a Moore FSM 写在前面 HDLBits 刷题来到了最为重要的一部分---有限状态机,都说 Verilog 设计的精髓就是状态机的设计,可见状态机设计的重…...

【接口协议】FPGA 驱动 VGA 显示实验(二)实验设计部分

目录 实验任务 实验环境 实验设计 程序设计 VGA 时序模块 模块框图 仿真波形 顶层模块 约束文件 实验任务 利用FPGA驱动VGA实现彩条显示,分辨率为800 60060Hz,分别显示三种颜色。 实验环境 开发环境:vivado 2021.2 FPGA 器件&a…...

【接口协议】FPGA 驱动 VGA 显示实验(一)原理部分

目录 VGA介绍 VGA 接口管脚 VGA 色彩原理 VGA 工作原理 VGA 时序 VGA介绍 VGA(Video Graphics Array)视频图形阵列是 IBM 于 1987 年提出的一个使用模拟信号的电脑显示标准。VGA 接口即电脑采用 VGA 标准输出数据的专用接口。VGA 接口共有 15 针&am…...

COMSOL单相变压器温度场三维模型:解析热点温度与流体流速分布

comsol单相变压器温度场三维模型,可以得到变压器热点温度,流体流速分布 搞变压器温度场仿真最头疼的就是三维流固耦合。去年做配电变压器温升项目时,硬是跟COMSOL死磕了两周才摸到门道。今天给大家分享下怎么用非等温流接口抓取热点温度和油…...

【牛客网刷题】VL3 奇偶校验

👉 写在前面 👉 本系列博客记录牛客网刷题记录 👉 日拱一卒,功不唐捐! 目录 题目描述 奇偶校验 题目分析 仿真结果 题目描述 现在需要对输入的32位数据进行奇偶校验,根据sel输出校验结果(1输出奇校验&a…...

【牛客网刷题】VL2 异步复位的串联T触发器

👉 写在前面 👉 本系列博客记录牛客网刷题记录 👉 日拱一卒,功不唐捐! 目录 题目描述 题目分析 Verilog 代码 testbench 代码 仿真结果 题目描述 用verilog实现两个串联的异步复位的T触发器的逻辑&#x…...

minio安装 后台自启动

1:下载miniowget https://dl.min.io/server/minio/release/linux-amd64/minio2:授权chmod x minio3:设置开机自启动进入该目录下cd /etc/systemd/system/ 创建minio.service文件1: cd /etc/systemd/system/ 2:touch mi…...

【BBF系列协议】Data Models Library数据模型库设计与实现

目录Data Models Library (dmlib)dmlib的设计dmlib 的代码结构:dmlib 主要数据结构操作上下文对象(dmctx)对象定义(DMOBJ)参数定义(DMLEAF)多实例遍历函数实现(browseinstobj)参数树…...

基于JS实现的鸿蒙游戏——二十四点纸牌

目录 前言 概述 正式开始 一、创建项目 二、编码 1.项目结构 2.实现思路 3.主要代码块 三、页面及功能展示 1.运算正确 2.运算错误 3.换一批及重置 本人项目仓库链接 前言 相信大家都有玩过纸牌游戏,本项目是基于JS实现的鸿蒙小游戏二十四点纸牌&…...

vue截取字符串(商城系统非常常用的小知识)

1.截取指定字符串{{row.real_name.substr(2, 3)}}2.截取字符串最后一位{{row.real_name.charAt(row.real_name.length - 1)}}3.看一下效果如何...

【BBF系列协议】TR-140 TR-069支持存储服务的设备的数据模型

目录TR-140 TR-069支持存储服务的设备的数据模型执行摘要1.目的和范围目的范围2 案例2.1 BASIC MANAGED STORAGE SERVICE(基本托管存储服务)2.2 REMOTE STORAGE BACK-UP SERVICE(远程存储备份服务)2.3 Remote access of Storage S…...

【BBF系列协议】TR-135 支持TR-069的STB的数据模型

TR-135 支持TR-069的STB的数据模型 执行摘要 TR-135,启用TR-069的STB的数据模型,定义了用于通过TR-069和TR-106中定义的CWMP远程管理机顶盒(STB)设备上的数字电视(IPTV或广播)功能的数据模型。它包括用于…...

【BBF系列协议】TR-106 CWMP端点和USP代理的数据模型模板

目录TR-106 CWMP端点和USP代理的数据模型模板执行摘要1 介绍CWMPUSP规范结构2 架构2.1 数据层次结构2.2 对象版本控制2.3 配置文件2.4 DEPRECATED 和 OBSOLETED 条目3 对象定义3.1 通用符号3.2 数据类型和表示3.3 供应商特定要素A参数:单个实例对象:单个命令:单个事…...

【亲测免费】【推荐】基于Vue3的全能H5模板:vue3-h5-template

标题:【推荐】基于Vue3的全能H5模板:vue3-h5-template 【免费下载链接】vue3-h5-template My starter template for Vue3, with vite, quark design, sass(含viewport 适配方案, axios 封装) 项目地址: https://gitcode.com/gh_mirrors/vue3/vue3-h5-t…...

Scalding执行模型揭秘:从Job到Execution的演进之路

Scalding执行模型揭秘:从Job到Execution的演进之路 【免费下载链接】scalding A Scala API for Cascading 项目地址: https://gitcode.com/gh_mirrors/sc/scalding Scalding是一个基于Scala的Cascading API,专为大规模数据处理而设计。这个强大的…...

探索DockerGS:一键启动动漫游戏服务器的利器

探索DockerGS:一键启动动漫游戏服务器的利器 【免费下载链接】DockerGS DockerGC is a container that run Grasscutter (anime game) with just a single command. 项目地址: https://gitcode.com/gh_mirrors/do/DockerGS 在数字娱乐的世界中,各…...

推荐项目:IdentityServer4.AccessTokenValidation - 混合型JWT和参考令牌验证利器

推荐项目:IdentityServer4.AccessTokenValidation - 混合型JWT和参考令牌验证利器 【免费下载链接】IdentityServer4.AccessTokenValidation IdentityServer Access Token Validation for ASP.NET Core 项目地址: https://gitcode.com/gh_mirrors/id/IdentityServ…...

推荐:用Flowershow打造你的优雅知识分享网站

推荐:用Flowershow打造你的优雅知识分享网站 【免费下载链接】flowershow 💐 Publish your obsidian digital garden or any markdown site easily and elegantly. 项目地址: https://gitcode.com/gh_mirrors/fl/flowershow 1、项目介绍 &#x…...

RITM 交互式分割项目使用教程

RITM 交互式分割项目使用教程 【免费下载链接】ritm_interactive_segmentation 项目地址: https://gitcode.com/gh_mirrors/rit/ritm_interactive_segmentation 1. 项目的目录结构及介绍 RITM 交互式分割项目的目录结构如下: ritm_interactive_segmentati…...

RITM交互式分割算法实战指南

RITM交互式分割算法实战指南 【免费下载链接】ritm_interactive_segmentation 项目地址: https://gitcode.com/gh_mirrors/rit/ritm_interactive_segmentation 项目介绍 RITM(Real-Time Interactive Image Segmentation with Memory-Augmented U-Net&#…...

从论文到代码:Performer核心公式的PyTorch逐行实现

从论文到代码:Performer核心公式的PyTorch逐行实现 【免费下载链接】performer-pytorch An implementation of Performer, a linear attention-based transformer, in Pytorch 项目地址: https://gitcode.com/gh_mirrors/pe/performer-pytorch Performer是一…...

Jupyter Notify 使用教程

Jupyter Notify 使用教程 【免费下载链接】jupyter-notify A Jupyter Notebook magic for browser notifications of cell completion 项目地址: https://gitcode.com/gh_mirrors/ju/jupyter-notify 项目介绍 Jupyter Notify 是一个为 Jupyter Notebook 设计的扩展&…...

react-shimmer自定义加载效果:打造属于你的独特加载动画

react-shimmer自定义加载效果:打造属于你的独特加载动画 【免费下载链接】react-shimmer 🌠 Async loading, performant Image component for React.js 项目地址: https://gitcode.com/gh_mirrors/re/react-shimmer react-shimmer是一个为React.j…...

diffvg底层原理揭秘:可微光栅化技术如何让矢量图形支持梯度下降优化

diffvg底层原理揭秘:可微光栅化技术如何让矢量图形支持梯度下降优化 【免费下载链接】diffvg Differentiable Vector Graphics Rasterization 项目地址: https://gitcode.com/gh_mirrors/di/diffvg diffvg是一个创新的开源项目,它实现了可微矢量图…...

系统颜色选择器:macOS 的色彩控制强化版

系统颜色选择器:macOS 的色彩控制强化版 【免费下载链接】System-Color-Picker 🎨 The macOS color picker as an app with more features 项目地址: https://gitcode.com/gh_mirrors/sy/System-Color-Picker 项目介绍 🎨 系统颜色选…...

微型Lisp开源项目指南

微型Lisp开源项目指南 【免费下载链接】micro-lisp 🎄A very small Lisp programming language 😀that used to be under 200 lines of C🎄 项目地址: https://gitcode.com/gh_mirrors/mi/micro-lisp 项目介绍 🌟 微型Lis…...

RLS历史回顾:Rust IDE工具链的演进之路

RLS历史回顾:Rust IDE工具链的演进之路 【免费下载链接】rls Repository for the Rust Language Server (aka RLS) 项目地址: https://gitcode.com/gh_mirrors/rl/rls 作为Rust语言的官方IDE工具链,RLS(Rust Language Server&#xff…...

开源项目《Aviator》安装与使用指南

开源项目《Aviator》安装与使用指南 【免费下载链接】aviator Level up your Aviator game! This app employs its prediction prowess to help you maximize your profit - and its completely free! 项目地址: https://gitcode.com/gh_mirrors/avia/aviator 本指南旨在…...

陆彦廷《势均力敌的我们2》收官,细节见人品,尽显绅士与真诚

近日,《势均力敌的我们2》正式收官,天平岛上为期十天的相处旅程,不知不觉就落下了帷幕。陆彦廷在一众嘉宾中,凭着骨子里的真诚和分寸感,成为了节目里让人印象深刻的存在。陆彦廷的聪明,教养和真诚&#xff…...

SAP GR(Group Reporting)合并报表内容及功能简介(一)-主数据结构

目录 主数据&结构 合并单元 合并组: 全局层次结构 主数据&结构 合并单元 合并单元(法定子公司): SAP S/4HANA 公司一对一地链接到合并单元。 SAP S/4HANA 公司标识与合并单元标识相同。 通用日记账的合并单元对应SAP中的公司,不在通用日记账中的合并单元代表…...