在FSM模型中使用两态数据类型

在FSM模型中使用两态数据类型

1、使用两态类型和枚举类型对FSM复位
在仿真刚开始时,四态数据类型的值是逻辑X。类似有限状态机这样的模型中,四态变量的X逻辑值可以用来表示模型还没有复位,或复位逻辑的建模不正确。
仿真刚开始时,两态数据类型的缺省值是0而不是X。因为复位操作通常是将大部分变量清0,所以这样一来即使复位逻辑有缺陷,模型好像仍然是被复位了。
仿真开始时,枚举类型使用枚举类型的基类值作为缺省值。如果状态变量用默认基类和标签值定义并且复位操作也是将枚举值置为表中的第一个值,那么就会出现和两态变量类似的情况。默认基类是int,它是仿真时具有非初始值0。枚举列表中第一个标签的默认值是0,这与两态基类的非初始值相同。这样即使没有插入复位,或复位逻辑有错误,设计好像仍然是复位了。

enum{WAITE,LOAD,STORE}State,Next;
always@(posedge clock,negedge resetN)if(!resetN) State <= WAITE;else State <= Next;always@(State)case(State)WAITE:Next = LOAD;LOAD:Next = STORE;STORE:Next = WAITE;endcase

使用复位逻辑也不能解决这个状态锁定问题。因为复位会将State置为WAITE值,这仍然与开始仿真时的值一样。因此变量State还是没有变化,次态译码逻辑还是不能触发,Next仍然会保持起始值WAITE.
这种在仿真开始时出现的状态锁定问题可以通过两种方法解决。
第一种方法是用四态基类如logic显示声明枚举变量。然后仿真开始时State和Next会具有非初始值X。这清楚地表明了这些变量已经被复位了。它也准确反映了硬件特性,即触发器加电后处于一种中间状态。在RTL仿真中,当应用复位时,State变量将从X转变为它的复位值WAITE。这一转变将触发对Next译码以及将Next置为合适值LOAD的逻辑。
第二种解决使用默认基类和标签值的枚举类型时产生的FSM锁定问题的方法是用SystemVerilog是always_comb过程块代替always@(State)。即使其相关敏感表的变量没有变化,在仿真零时刻,always_comb过程块也会自动执行一次。通过在零时刻执行一次。通过在零时刻执行译码逻辑,初始State值将被译码,然后变量Next随之相应改变。

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

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

相关文章

没有建立对验证码签名的目录的发布者信任

在Windows 7下安装 FX3 USB驱动&#xff0c;一直提示 “没有建立对验证码签名的目录的发布者信任” 导致无法安装驱动&#xff0c;后来测试很多的方法&#xff0c;包括复制 inf 和sys文件到相应的 C:\windows\inf 与 C:\windows\system32\driver 目录下&#xff0c;设置 IE浏览…

QCon北京2016启动筹备 众多热点专题诚征演讲嘉宾

QCon是由InfoQ主办的全球顶级技术盛会&#xff0c;每年在伦敦、北京、东京、纽约、圣保罗、上海、旧金山召开。\u0026#xD;\n\u0026#xD;\n在即将过去的2015年&#xff0c;我们在中国成功举办了QCon北京和QCon上海。我们紧扣热点&#xff0c;坚持实践驱动&#xff0c;很多精彩演讲…

洪莆日美

韩国女艺术家洪莆日美&#xff0c;曾在台湾研习美学&#xff0c;现为韩国釜山高神大学美术系教授。她的作品与其是在黑与白之间&#xff0c;毋宁说是在暗与光之间&#xff0c;它是东方阴阳哲学与简约主义艺术实践的圆满和结晶。她在自述中写道&#xff1a; “我以纸墨布局&…

关闭Eclipse光标悬浮自动提示

最近几个版本的Eclipse默认鼠标移动到方法、属性等上面会出现悬浮窗提示&#xff0c;但鼠标下移后不会消失&#xff0c;编写代码的时候很烦人。 设置preferences-->General-->Editors-->Text Editors--> when mouse moved into hover:选择Close hover

层次化设计

层次化设计 1、模块原型 外部的模块声明 SystemVerilog允许用户为被实例化的模块指定一个原型&#xff0c;这就简化了编译过程。原型的定义使用关键字extern&#xff0c;extern之后是模块及其端口是声明。 //使用Verilog-1995代码风格的原型 entern module counter(cnt,d,clo…

ASP.NET WebHooks RC 1发布

正如消息队列能够让同一个组织内的多个应用相互通信一样&#xff0c; WebHooks也为来自不同组织的网站提供了一种以异步的形式进行通信的方法。\u0026#xD;\n\u0026#xD;\n从本质上说&#xff0c;WebHook就是一种回调机制。用户可以在WebHook提供者中注册一个自定义的URL&#xf…

远程管理 KVM 虚机 - 每天5分钟玩转 OpenStack(5)

上一节我们通过 virt-manager 在本地主机上创建并管理 KVM 虚机。其实 virt-manager 也可以管理其他宿主机上的虚机。只需要简单的将宿主机添加进来 填入宿主机的相关信息&#xff0c;确定即可。 接下来&#xff0c;我们就可以像管理本地虚机一样去管理远程宿主机上的虚机了。 …

WM的Image格式分析

定制 WM 时 &#xff0c;生成的image的扩展名很多&#xff0c;dio ,nb0 ,bin等等&#xff0c;他们都是什么关系。看一个例子。 Memory.cfg.xml的内容如下 我们可以看见image由4个分区组成&#xff0c;分别为ULDR,NK,OS,Storage&#xff08;最多只能有4个分区&#xff09;。这4…

随机取不重复的数字

for( int i 0; i < 25; i) a[i] i;srand( time(NULL) ); for( i 0; i < 25; i) swap( a[0], a[rand()%25] );

DSP笔记

DSP笔记 duty:占空比&#xff1b;DFT:可测性设计头文件的主要作用是&#xff1a;包含一些宏定义和函数。头文件作为一种包含功能函数、数据接口声明的载体文件&#xff0c;主要用于保存程序的声明&#xff0c;而定义文件用于保存程序的实现。入门&#xff0c;GPIO输入输出&…

KVM 存储虚拟化 - 每天5分钟玩转 OpenStack(7)

KVM 的存储虚拟化是通过存储池&#xff08;Storage Pool&#xff09;和卷&#xff08;Volume&#xff09;来管理的。 Storage Pool 是宿主机上可以看到的一片存储空间&#xff0c;可以是多种类型&#xff0c;后面会详细讨论。Volume 是在 Storage Pool 中划分出的一块空间&…

LVM 类型的 Storage Pool - 每天5分钟玩转 OpenStack(8)

LVM 类型的 Storage Pool 不仅一个文件可以分配给客户机作为虚拟磁盘&#xff0c;宿主机上 VG 中的 LV 也可以作为虚拟磁盘分配给虚拟机使用。 不过&#xff0c;LV 由于没有磁盘的 MBR 引导记录&#xff0c;不能作为虚拟机的启动盘&#xff0c;只能作为数据盘使用。 这种配置下…

UltraEdit中高亮显示verilog HDL关键词

UltraEdit是一款功能强大的文本编辑器&#xff0c;可以编辑文字、Hex、ASCII码&#xff0c;可以取代记事本&#xff0c;内建英文单字检查、C 及 VB 指令突显&#xff0c;可同时编辑多个文件&#xff0c;而且即使开启很大的文件速度也不会慢。是一个使用广泛的编辑器&#xff0c…

你是否做好了代码的备份?

http://blog.csdn.net/norains/archive/2010/03/16/5385773.aspx

CCS的基本操作

CCS的基本操作 1、 创建新工程 方法一&#xff1a; 方法二&#xff1a; 进入工程界面后&#xff0c;第一步选择芯片型号&#xff0c;第二步选择仿真器&#xff0c;第三步编写工程名称&#xff0c;选择工程模板。最后点击finish 2、 编译 方法一&#xff1a; 方法二&…

KVM 网络虚拟化基础 - 每天5分钟玩转 OpenStack(9)

网络虚拟化是虚拟化技术中最复杂的部分&#xff0c;学习难度最大。 但因为网络是虚拟化中非常重要的资源&#xff0c;所以再硬的骨头也必须要把它啃下来。 为了让大家对虚拟化网络的复杂程度有一个直观的认识&#xff0c;请看下图 这是 OpenStack 官网上给出的计算节点&#…

命名的结束语句

命名的结束语句 1、命名的模块结尾 SystemVerilog允许关键字endmoule后指定模块的名字 endmoule:<module_name> endmodule后指定的名称必须与匹配的模块名称一致2、命名的代码块结尾 SystemVerilog还允许对其他命名的代码块指定结尾名称。这包括以下关键字&#xff1a;…

Hive注册表那点事(5.0 VS 6.0)

Hive 注册表那点事&#xff08; 5.0 VS 6.0 &#xff09; 现象 5.0 移置到 6.0 上的时候&#xff0c;发现 Hive-Registry 无效&#xff0c;具体的现象是在控制面板中屏幕校准后 Cold Boot 机器校准数据丢失。 环境变量 PRJ_ENABLE_REGFLUSH_THREAD 和 PRJ_ENABLE_FSREGHIVE …

云计算与 OpenStack - 每天5分钟玩转 OpenStack(14)

“云计算” 算是近年来最热的词了。现在 IT 行业见面不说这三个字您都不好意思跟人家打招呼。 对于云计算&#xff0c;学术界有各种定义&#xff0c;大家有兴趣可以百度一下。 CloudMan 这里主要想从技术的角度谈谈对云计算的理解。 基本概念 所有的新事物都不是突然冒出来的&a…

OpenStack 架构 - 每天5分钟玩转 OpenStack(15)

终于正式进入 OpenStack 部分了。 今天开始&#xff0c;CloudMan 将带着大家一步一步揭开 OpenStack 的神秘面纱。 OpenStack 已经走过了 6 个年头。 每半年会发布一个版本&#xff0c;版本以字母顺序命名。现在已经到第 12 个版本 Liberty&#xff08;字母 L&#xff09;。 Op…