首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 嵌入式系统 > FSM状态机

FSM状态机

资料介绍
关于FSM状态机的代码编写和注意点!

做想做的,做该做的——有思想就去实现!
Verilog状态机的编写学习
http://bbs.ednchina.com/BLOG_ARTICLE_53109.HTM
时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电
路的未来行为而必需考虑的所有历史信息

状态机采用VerilogHDL语言编码,建议分为三个always段完成。

三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器,
然后直接在每个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件。三
段式描述方法虽然代码结构复杂了一些,但是换来的优势是使FSM做到了同步寄存器输出
,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说在
FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。
示列如下:
//第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器
always @ (posedge clk or negedge rst_n) //异步复位
if(!rst_n)
current_state <= IDLE;
else
current_state <= next_state;//注意,使用的是非阻塞赋值
//第二个进程,组合逻辑always模块,描述状态转移条件判断
always @ (current_state) //电平触发
begin
next_state = x; //要初始化,使得系统复位后能进入正确的状态
case(current_state)
S1: if(...)
next_state = S2; //阻塞赋值
...
endcase
end
//第三个进程,同步时序always模块,格式化描述次态寄存
标签:状态机FPGA
FSM状态机
本地下载
该用户资料分享

评论