vivado FSM Components

Vivado合成功能

•同步有限状态机(FSM)组件的特定推理能力。

•内置FSM编码策略,以适应您的优化目标。

•FSM提取默认启用。

•使用-fsm_extraction off可禁用fsm提取。

FSM描述

Vivado综合支持Moore和Mealy中的有限状态机(FSM)规范形式。FSM由以下部分组成:

•状态寄存器

•下一个状态功能

•输出功能

FSM图

下图显示了包含Mealy和Moore的FSM表示机器。

下图显示了一个包含三个进程的FSM图。

FSM寄存器

•指定Vivado合成的重置或通电状态,以识别有限状态机(FSM)或将FSM_ENCODING的值设置为“none”。

•状态寄存器可以异步或同步重置为特定状态。

注意:FSM使用同步重置逻辑而非异步重置逻辑。

自动状态编码

当FSM_ENCODING设置为“自动”时,Vivado合成会尝试选择最适合的给定FSM的编码方法。

一个热状态编码

一个热状态编码具有以下属性:

•是状态机的默认编码方案,最多32个状态。

•通常是优化速度或减少功耗的好选择。

•为每个FSM状态分配一个不同的代码位。

•实现状态寄存器,每个状态有一个触发器。

•在操作期间的给定时钟周期中,仅断言状态寄存器的一位。

•在两种状态之间的转换过程中,只有两位切换。

灰度编码

灰度编码具有以下属性:

•保证只有一位在两个连续状态之间切换。

•适用于无分支的长路径控制器。

•最大限度地减少危险和故障。

•可用于最大限度地减少功耗。

Johnson状态编码

当使用包含长路径且没有的状态机时,Johnson State编码是有益的分支(如在灰度编码中)。

顺序状态编码

顺序状态编码具有以下属性:

•识别长路径

•将连续的基数2代码应用于这些路径上的状态。

•最小化下一个状态方程。

Filename: fsm_1.v
// State Machine with single sequential block
//fsm_1.v
module fsm_1(clk,reset,flag,sm_out);
input clk,reset,flag;
output reg sm_out;
parameter s1 = 3'b000;
parameter s2 = 3'b001;
parameter s3 = 3'b010;
parameter s4 = 3'b011;
parameter s5 = 3'b111;
reg [2:0] state;
always@(posedge clk)
begin
if(reset)
begin
state <= s1;
sm_out <= 1'b1;
end
else
begin
case(state)
s1: if(flag)
begin
state <= s2;
sm_out <= 1'b1;
end
else
begin
state <= s3;
sm_out <= 1'b0;
end
s2: begin state <= s4; sm_out <= 1'b0; end
s3: begin state <= s4; sm_out <= 1'b0; end
s4: begin state <= s5; sm_out <= 1'b1; end
s5: begin state <= s1; sm_out <= 1'b1; end
endcase
end
end
endmodule
FSM Example with Single Sequential Block (VHDL)
Filename: fsm_1.vhd
-- State Machine with single sequential block
-- File: fsm_1.vhd
library IEEE;
use IEEE.std_logic_1164.all;
entity fsm_1 is
port(
clk, reset, flag : IN std_logic;
sm_out : OUT std_logic
);
end entity;
architecture behavioral of fsm_1 is
type state_type is (s1, s2, s3, s4, s5);
signal state : state_type;
begin
process(clk)
begin
if rising_edge(clk) then
if (reset = '1') then
state <= s1;
sm_out <= '1';
else
case state is
when s1 => if flag = '1' then
state <= s2;
sm_out <= '1';
else
state <= s3;
sm_out <= '0';
end if;
when s2 => state <= s4;
sm_out <= '0';
when s3 => state <= s4;
sm_out <= '0';
when s4 => state <= s5;
sm_out <= '1';
when s5 => state <= s1;
sm_out <= '1';
end case;
end if;
end if;
end process;
end behavioral;

FSM报告

Vivado合成在日志文件中标记INFO消息,提供有关有限状态的信息机器(FSM)组件及其编码。以下是消息示例:

INFO: [Synth 8-802] inferred FSM for state register 'state_reg' in module
'fsm_test'
INFO: [Synth 8-3354] encoded FSM with state register 'state_reg' using
encoding 'sequential' in module 'fsm_test'

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

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

相关文章

week04day04(爬虫)

一. 嵌套构造URL 下载所有英雄的皮肤图片&#xff1a;因为每个英雄图片的网址不同&#xff0c;但是有共同点&#xff0c;通过构建这个网址&#xff0c;再经过循环建立 所有链接 import requests import os# 1. 获取所有英雄的ID def get_all_hero_id():url https://game.gti…

C语言特殊函数

静态函数 背景知识&#xff1a;普通函数都是跨文件可见的&#xff0c;即在文件 a.c 中定义的函数可以在 b.c 中使用。 静态函数&#xff1a;只能在定义的文件内可见的函数&#xff0c;称为静态函数。 语法 staitc void f(void) // 在函数头前面增加关键字 static &#xff…

读取7400MB/s!华为发布eKitStor Xtreme M.2闪存条

今日&#xff0c;华为举行数据存储新春新品发布会&#xff0c;不仅发布全新数据湖解决方案&#xff0c;华为还针对商业市场与分销市场发布了全闪存存储新品。 据介绍&#xff0c;面向游戏加速、影视编辑、户外作业等场景&#xff0c;华为发布eKitStor Xtreme系列高性能M.2闪存条…

Leetcode454四数相加II

参考链接&#xff1a;代码随想录&#xff1a;Leetcode454四数相加II 解法1&#xff1a;听了代码随想录之后自己YY出来的解法&#xff08;200ms&#xff09;&#xff0c;有点慢 class Solution { public:int fourSumCount(vector<int>& nums1, vector<int>&am…

常用的函数式接口(Supplier、Consumer、Predicate、Function)

目录 一.函数式接口作为方法的参数 二.函数式接口作为方法的返回值 三.常用的函数式接口 3.1生产型Supplier接口 3.2消费型Consumer接口 抽象方法&#xff1a;accept 默认方法&#xff1a;andThen 3.3判断型Predicate接口 抽象方法&#xff1a;test 默认方法&#xf…

力扣基础刷题---二分查找

704. 二分查找 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 中心思想&#xff1a;找到中间值&#xff0c;跟中间值比…

vue3封装接口(自测可用)

注&#xff1a;别忘记安装axios 在实际的项目实战中如果我们不对接口加以管理&#xff0c;整篇看着就很乱&#xff0c;这个时候我们就要用到接口封装了。 废话不多说直接上代码&#xff01;&#xff01;&#xff01; 首先是request.js import axios from "axios";/…

Windows共享文件夹无法访问,返回错误:有多个连接...多个用户名...

文章目录 问题解决参考 问题 访问共享文件夹时&#xff0c;返回了类似有多个连接…多个用户名…之类的错误&#xff0c;进行了解决。具体是弹出错误窗口&#xff1a; Multiple connections to a server or shared resource by the same user, using more than one user name,…

设计模式--工厂模式

普通创建对象的方式&#xff0c;如&#xff1a; interface ICourse{public void record(); }class JavaCourse implements ICourse{Overridepublic void record() {System.out.println("Java 课程");} } public class Test {public static void main(String[] args)…

2024.2.23

1、消息队列代码 msgsnd.c #include<myhead.h> //定义一个消息类型 struct msgbuf {long mtype; //消息类型char mtext[1024]; //消息正文 };//定义一个宏&#xff0c;表示消息正文大小 #define MSGSIZE sizeof(struct msgbuf)-sizeof(long)int main(int …

Devc++ Easyx 实现 瓦片地图编辑数据导入游戏

导出的DLC 直接放入 exe 同文件夹下即可自动读取。 // 程序&#xff1a;DLC 自动读取加载框架示例 // 作者&#xff1a;民用级脑的研发记录 // 邮箱&#xff1a;1309602336qq.com // 编译环境&#xff1a;Devc/VC 2010/Visual Studio 2022&#xff0c;EasyX_20220901/Easyx_202…

Docker容器故障排查与解决方案

Docker是一种相对使用较简单的容器&#xff0c;我们可以通过以下几种方式获取信息&#xff1a; 1、通过docker run执行命令&#xff0c;或许返回信息 2、通过docker logs 去获取日志&#xff0c;做有针对性的筛选 3、通过systemctl status docker查看docker服务状态 4、通过…

转载:Linux全自动批量配置SSH免密

转载自 https://www.mr-mao.cn/archives/auto-configure-ssh-nopass-login.html 1、在主机的操作系统上安装expect 2、新建host_ip文件&#xff0c;内容格式如下 host_ip文件格式 172.16.1.100 password 172.16.1.101 password 172.16.1.102 password 172.16.1.103 pass…

[深度学习]图片相似度计算

理论铺垫&#xff1a;VGG16及其在图片对比中的应用 VGG16是一种深度学习模型&#xff0c;它属于卷积神经网络&#xff08;Convolutional Neural Networks, CNNs&#xff09;的一种&#xff0c;由牛津大学的视觉几何组&#xff08;Visual Geometry Group&#xff09;开发。这个…

数据安全治理实践路线(上)

基于以上数据安全治理实践理念&#xff0c;可以按照自顶向下和自底向上相结合的思路推进实践过程。一方面&#xff0c;组织自顶向下,以数据安全战略规划为指导,以规划、建设、运营、优化为主线&#xff0c;围绕构建数据安全治理体系这一核心&#xff0c;从组织架构、制度流程、…

React setState同步还是异步

React18 setState是同步还是异步&#xff1f;_react18 同步-CSDN博客 React18之前或者React18使用了ReactDOM.render&#xff0c;setState在React调度流程中是异步更新&#xff0c;在原生事件和setTimeout中是同步更新。React18使用ReactDOM.createRoot&#xff0c;那么默认都是…

“从根到叶:深入理解排序数据结构“

一.排序的概念及引用 1.1排序的概念 排序是指将一组数据按照一定的规则重新排列的过程。排序的目的是为了使数据具有有序性&#xff0c;便于查找、插入、删除等操作&#xff0c;提高数据的组织和管理效率。 稳定性是指如果序列中存在相等元素&#xff0c;在排序完成后&#…

LINUX中用C获得当前执行应用的全路径

之前有博文&#xff1a; LINUX中用C获得当前执行应用的所在路径_linux c语言 直接使用.\获取的路径是程序所在路径 还是命令执行路径-CSDN博客 这个代码也没问题。现实中有时取的路径并不对。比如说&#xff0c;我是../work/test&#xff0c;这个路径就不对了。简单的说&#…

nginx中的location

在 nginx 中&#xff0c;location 是用来匹配请求 URI 的指令&#xff0c;它告诉 NGINX 如何处理特定的请求。location 指令通常用于配置不同 URI 的访问规则&#xff0c;例如重定向、反向代理、设置缓存等。 以下是 location 指令的一般格式&#xff1a; location [ | ~ | …

网卡本质,网络发展(局域网,广域网概念)

目录 引入 网卡的本质 网络的发展 引入 早期 局域网LAN&#xff08;Local Area Network&#xff09; 广域网WAN&#xff08;Wide Area Network&#xff09; 注意 引入 前面我们已经学习了很多关于linux系统的知识,其中文件系统和线程尤为繁杂 而网络其实也算系统的一部…