FSM从一段到三段详解

一段式:将整个状态机写到1个always 模块里,在该模块中既描述状态转移,又描述状态的输入和输出。(always用时序逻辑也就非阻塞赋值)

解释:无须解释

特点:一段式描述方法不符合将时序和组合逻辑分开描述的 Coding Style(代码风格),而且代码冗长、不清晰,不利于附加约束,不利于综合器和布局布线器对设计的优化,所以不提倡用此方法。

二段式:核心思想是一个always 模块采用同步时序方式描述状态转移;另一个模块采用组合逻辑方式判断状态转移条件,描述状态转移规律和输入输出。(一个时序一个组合)

解释:时序逻辑里对CS复位及赋予NS的值,组合逻辑always里对NS赋值。

特点:虽然两段式FSM描述方法有很多好处,但是它有一个明显的弱点,就是其输出一般使用组合逻辑描述,而组合逻辑易产生毛刺等不稳定因素,并且在FPGA/CPLD等逻辑器件中过多的组合逻辑会影响实现的速率(这点与ASIC设计不同)。

三段式:第一个always模块同步时序方式描述状态转移(就是个简单的CS,NS,rst->CS),第二个always组合模块描述状态转移条件(case里边不停的if else if,用阻塞赋值方式,注意写成if(data)要比if(data==1‘b1)简单很多),第三个always模块同步时序逻辑方式描述状态输出,万万注意,这里是case(NS)。(一个时序逻辑,一个组合逻辑,一个时序逻辑)

解释:个人一开始感觉三段式最不容易理解的就是时序输出模块case()里的NS了,不认真去想肯定是CS了啊,当前状态嘛,仔细查了资料后,发现确实应该是NS。原因是:第一个always和第三个always是时序模块,若第三个case里写CS,那么意味着:一个clk到来时,输出的是上一CS指示的输出,因为第一个always用的是非阻塞赋值,不是立即生效的。写成NS后,时钟沿到来后,CS被更新为现在NS所指示的状态,且同时状态输出调整为现在NS所指示的状态,如此,输出和状态的对应才是正确的。

特点:三段式描述方法与两段式描述相比,虽然代码结构复杂了一些,但是换来的却是使FSM做到了同步寄存器输出,消除了组合逻辑输出的不稳定性,而且更利于时序路径分组,一般来说,其在FPGA/CPLD 等可编程逻辑器件上的综合与布局布线效果更佳。

时间: 2024-07-29 13:42:55

FSM从一段到三段详解的相关文章

【转】段错误调试神器 - Core Dump详解

from:http://www.embeddedlinux.org.cn/html/jishuzixun/201307/08-2594.html 段错误调试神器 - Core Dump详解 来源:互联网 作者:Alex 时间:2013-07-08 Tag:Linux   点击: 11670 一.前言: 有的程序可以通过编译, 但在运行时会出现Segment fault(段错误). 这通常都是指针错误引起的. 但这不像编译错误一样会提示到文件某一行, 而是没有任何信息, 使得我们的调试变得困难起来

功能表单字段、树形选择数据类型的配置详解——JEPLUS快速开发平台

功能表单字段之下拉框.单选框.多选框.树形选择数据类型的配置详解 JEPLUS平台的表单支持有多种不同的数据类型,这些不同的数据类型在展示不同类型的数据时能有很好的效果,今天这篇笔记就讲解一下下拉框.单选框.复选框.树形选择这四种数据类型的配置详解以及效果展示. 一.下拉框 打开表单数据录入界面,打开具体的目标字段的配置信息 第二种打开目标字段的配置信息方法是打开功能配置选项---->打开表单配置---->双击目标字段,即可打开 打开字段的表单配置信息界面,选择数据类型是"下拉框&q

计算机网络(三),TCP报文段详解

目录 1.TCP(Transmission Control Protocol传输控制协议)作用 2.TCP报文段详解 三.TCP报文段详解 1.TCP(Transmission Control Protocol传输控制协议)作用 (1)面向连接的.可靠地.基于字节流的传输层通信协议 (2)将应用层的数据流分割成报文段并发送给目标节点的TCP层 (3)数据包都有序号,对方收到则发送ACK确认,未收到则重传 (4)使用校验和来检验数据在传输过程中是否有误 2.TCP报文段详解 1.源端口(Sourc

计算机网络(六),UDP报文段详解

目录 1.UDP作用 2.UDP报文段详解 六.UDP报文段详解 1.UDP作用 (1)面向非连接 (2)不维护连接状态,支持同时向多个客户端传送相同的消息 (3)报文段报头只有8个字节,格外开销较小 (4)吞吐量只受限于数据生成速率.传输速率以及机器性能 (5)尽最大努力交付,不保证可靠交付,不需要维持复杂的链接状态表 (6)面向报文,不对应用程序提交的报文信息进行拆分或者合并 2.UDP报文段详 (1)源端口-2字节 (2)目标端口-2字节 (3)长度-2字节 (4)校验位-2字节 (5)数

详解百度蜘蛛ip段代表的不同含义

详解百度蜘蛛ip段代表的不同含义 有时候我们在分析百度蜘蛛的时候,会发现很多的ip,这些个ip地址,根据后面的参数可以发现都是百度的.刚学习SEO不久的同学肯定要问:这些ip地址到底代表什么含义,是不是不同的ip地址所代表的含义不一样呢?对权重和抓取是否有影响?哪些是无效的蜘蛛,哪些是站长工具的蜘蛛,那些又是百度自己真正的蜘蛛? 首先,怎么判断这个蜘蛛是不是百度蜘蛛? 在这里,我教大家一个方法. 电脑上,点开始——运行——cmd——nslookup [ip]看name值. 如判断ip地址123.

详解vue如何使用rules对表单字段进行校验

1.在代码中,添加属性::rule ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 <Form ref="loginForm" :model="form" :rules="rules" @keydown.enter.native="handleSubmit" class="form-con">            <FormItem prop

DNS服务相关概念详解

实验环境:RHEL 32Bit DNS服务相关概念详解 DNS是一种域名解析服务,DNS服务的核心以及DNS服务的标准都是基于一个软件来实现的,这个软件叫做BIND(Berkeley Internet Name Domain),互联网上几乎所有的DNS服务都是由BIND来构建的,虽然也有其它的DNS服务构建标准,但是它们的使用语法以及工作机制都和BIND非常接近. ·Linux服务器和Windows服务器的比较 Linux服务器在没有SELinux的时候它的安全级别和Windows服务器的安全级

Nginx之location 匹配规则详解

Nginx之location 匹配规则详解 关于一些对location认识的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是"先匹配普通,再匹配正则".我这么说,大家一定会反驳我,因为按"先匹配普通,再匹配正则"解释不了大家平时习惯的按"先匹配正则,再匹配普通"的实践经验.这里我只能暂时解释下,造成这种误解的原因是:正则匹配会覆盖普通匹配(实际的规则,比这复杂,

httpd(2.2&2.4)RPM搭建配置定义详解

一.RPM包安装配置程序环境 1.CentOS6系列(默认httpd2.2) (1)配置文件:/etc/httpd/conf/httpd.conf.  /etc/httpd/conf.d/*.conf() (2)服务脚本:/etc/rc.d/init.d/httpd 配置文件:/etc/sysconfig/httpd (3)主程序文件:/usr/sbin/httpd.  /usr/sbin/httpd.event.  /usr/sbin/httpd.worker (4)日志文件目录:/var/l