资料
  • 资料
  • 专题
Veilog三段式状态机
推荐星级:
类别: 消费电子
时间:2020-01-14
大小:43KB
阅读数:185
上传用户:rdg1993
查看他发布的资源
下载次数
0
所需E币
3
ebi
新用户注册即送 300 E币
更多E币赚取方法,请查看
close
资料介绍
Veilog三段式状态机 时序电路的状态是一个状态变量集合,这些状态变量在任意时刻的值都包含了为确定电 路的未来行为而必需考虑的所有历史信息。 状态机采用VerilogHDL语言编码,建议分为三个always段完成。这是为什么呢? 设计FSM的方法和技巧多种多样,但是总结起来有两大类:第一种,将状态转移和状态的 操作和判断等写到一个模块(process、block)中。另一种是将状态转移单独写成一个 模块,将状态的操作和判断等写到另一个模块中(在Verilog代码中,相当于使用两个“ always” block)。其中较好的方式是后者。其原因如下。 首先FSM和其他设计一样,最好使用同步时序方式设计,好处不再累述。而状态机实现后 ,状态转移是用寄存器实现的,是同步时序部分。状态的转移条件的判断是通过组合逻 辑判断实现的,之所以第二种比第一种编码方式合理,就在于第二种编码将同步时序和 组合逻辑分别放到不同的程序块(process,block)中实现。这样做的好处不仅仅是便 于阅读、理解、维护,更重要的是利于综合器优化代码,利于用户添加合适的时序约束 条件,利于布局布线器实现设计。 三段式建模描述FSM的状态机输出时,只需指定case敏感表为次态寄存器,然后直接在每 个次态的case分支中描述该状态的输出即可,不用考虑状态转移条件。 三段式描述方法虽然代码结构复杂了一些,但是换来的优势是使FSM做到了同步寄存器输 出,消除了组合逻辑输出的不稳定与毛刺的隐患,而且更利于时序路径分组,一般来说 在FPGA/CPLD等可编程逻辑器件上的综合与布局布线效果更佳。 示例如下: //第一个进程,同步时序always模块,格式化描述次态寄存器迁移到现态寄存器 always @ (posedge clk or negedge rst_n) //异步复位 if(!rst_n) curr……
版权说明:本资料由用户提供并上传,仅用于学习交流;若内容存在侵权,请进行举报,或 联系我们 删除。
PARTNER CONTENT
相关评论 (下载后评价送E币 我要评论)
没有更多评论了
  • 可能感兴趣
  • 关注本资料的网友还下载了
  • 技术白皮书