关于有限状态机FSM同步复位的问题
FSM通常情况下使用异步信号进行复位,如FSM1中的rst_n信号。当rst_n信号为低时,FSM进入空闲状态IDLE。
在某些特殊情况下有可能需要跟随某个外部信号强制切换到空闲状态,也即同步复位。下面给出了两种同步复位的写法,请各位指教。
如果有什么更好的实现方法,还望不吝赐教。
//FSM1
localparam IDLE = 0,
S1 = 1,
S2 = 2;
always@(posedge clk, negedge rst_n)
begin
if(!rst_n)
cs <= IDLE;
else if(reset)
cs <= IDLE;
else
cs <= ns;
end
always@*
begin
ns = IDLE;
case(cs)
IDLE: if(a) ns = S1 else ns = IDLE;
S1: if(b) ns = S2 else ns = S1;
S2: ns = IDLE;
default: ns = IDLE;
endcase
end //FSM2
localparam IDLE = 0,
S1 = 1,
S2 = 2;
always@(posedge clk, negedge rst_n)
begin
if(!rst_n)
cs <= IDLE;
else
cs <= ns;
end
always@*
begin
ns = IDLE;
case(cs)
IDLE: if(reset) ns = IDLE; else if(a) ns = S1 else ns = IDLE;
S1: if(reset) ns = IDLE; if(b) ns = S2 else ns = S1;
S2:if(reset) ns = IDLE; ns = IDLE;
default: ns = IDLE;
endcase
end
关于有限状态机FSM同步复位的问题的更多相关文章
- 有限状态机FSM(自动售报机Verilog实现)
有限状态机FSM(自动售报机Verilog实现) FSM 状态机就是一种能够描述具有逻辑顺序和时序顺序事件的方法. 状态机有两大类:Mealy型和Moore型. Moore型状态机的输出只与当前状态有 ...
- [原创][FPGA]有限状态机FSM学习笔记(一)
1. 概述--何为有限状态机FSM? 有限状态机-Finite State Machine,简写为FSM,是表示有限个状态及在这些状态之间的转移和动作等行为的数学模型,在计算机领域有着广泛的应用.通常 ...
- 7.FPGA中的同步复位与异步复位
1.异步复位 always @ ( posedge sclk or negedge s_rst_n ) if ( !s_rst_n ) d_out <= 1'b0; else d_out < ...
- FPGA同步复位异步复位
今天看了篇博客, 是拿altera的芯片和软件作例子的,讲同步异步复位的: http://blog.sina.com.cn/s/blog_bff0927b0101aaii.html 还有一个博客, h ...
- 用4bit的counter看同步复位与异步复位
先看看这个同步复位 //date: 2013/8/20 //designer :pengxiaoen module counter_4 ( clock,reset, out ); input rese ...
- cocos2d-x 游戏开发之有限状态机(FSM) (四)
cocos2d-x 游戏开发之有限状态机(FSM) (四) 虽然我们了解了FSM,并且可以写自己的FSM,但是有更好的工具帮我们完成这个繁琐的工作.SMC(http://smc.sourceforge ...
- cocos2d-x 游戏开发之有限状态机(FSM) (三)
cocos2d-x 游戏开发之有限状态机(FSM) (三) 有限状态机简称FSM,现在我们创建一个专门的FSM类,负责管理对象(Monkey)的状态.然后Monkey类就实现了行为与状态分离.Monk ...
- cocos2d-x 游戏开发之有限状态机(FSM) (一)
cocos2d-x 游戏开发之有限状态机(FSM) (一) 参考:http://blog.csdn.net/mgphuang/article/details/5845252<Cocos2d-x游 ...
- cocos2d-x 游戏开发之有限状态机(FSM) (二)
cocos2d-x 游戏开发之有限状态机(FSM) (二) 1 状态模式
随机推荐
- 使用putty上传文件到linux系统
使用window的cmd命令 上传文件到linux 使用putty下的 pscp.exe pscp -r -l root -pw 1234567890 e:/htk 192.168.0.204:/r ...
- html 时间单位
<style>h1{font-size:16px;} .test{position:absolute;left:8px;width:200px;height:100px;margin:0 ...
- oracle数据库字符集的修改
本文摘自:http://blog.csdn.net/nsj820/article/details/65711051.改客户端字符集:通过WINDOWS的运行菜单运行Regedit,修改注册表 Star ...
- 简单粗暴的“Debug模式”
在项目中,通常会遇到:调试程序和程序在线上运行时程序运行的参数不一样, 例如线上运行时程序是获取线上的机器的ip,而调试程序时,我们会指定一个ip进行调试. 又或者项目要与多个系统进行数据交换,调试的 ...
- ubuntu apt-get update 连接不到指定的源
问题描述: ubuntu apt-get update 连接不到指定的源,修改了几个软件源还是连接不上,同样的软件源在别的机器上都可以正常使用,后来发现每次 sudo apt-get update操作 ...
- php秒杀
我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的: sql1:查询商品库存 ? 1 2 3 4 5 if(库存数量 > 0) { //生成订单... sql2:库存-1 ...
- JPA 系列教程8-双向一对一共享主键
双向一对一共享主键的ddl语句 CREATE TABLE `t_person` ( `id` bigint(20) NOT NULL AUTO_INCREMENT, `name` varchar(25 ...
- iOS 多语言 浅析
什么是本地化处理? 本地化处理就是我们的应用程序有可能发布到世界的很多国家去,因为每个国家应用的语言是不一样的,所以我们要把我们的应用程序的语言要进行本地化处理一下. 本地化处理需要处理那些文件? ( ...
- 栅栏cyclicbarrier
栅栏类似闭锁,但是它们是有区别的. 1.闭锁用来等待事件,而栅栏用于等待其他线程.什么意思呢?就是说闭锁用来等待的事件就是countDown事件,只有该countDown事件执行后所有之前在等待的线程 ...
- equal与==区别
对于String中的“equal方法”和“==”一直有点混肴,今天重新看了一下他们两点的区别,记录下来让自己以后不在忘记! 先说“==”: “==”是用来比较两个String对象在内存中的存放地址是否 ...