凡亿专栏 | ​FPGA指南:如何做好状态机的设计?
​FPGA指南:如何做好状态机的设计?

在FPGA设计里,状态机的设计是最为重要的环节之一。很多FPGA系统里的运行成功基本上和状态机设计相关,毫不夸张地说,FPGA系统的成功,其中一半归于状态机。所以我们该如何做好状态机?

一般来说,工程师在状态机的设计中基本采用两段式写法(2个always模块)或三端式写法(3个always模块)。

1、两段式写法

两段式写法的核心思想是:一个always模块采用同步时序描述状态转移,另一个always模块采用组合逻辑方式频段状态转移条件,描述状态转移规律,其结构如下图:

1.png

2、三段式写法

三段式写法的核心思想是:一个always模块采用同步时序的方式描述状态转移,一个采用组合逻辑的方式判断转移条件,描述状态转移规律,第三个always模块使用同步时序电路描述每个状态的输出,其结构如下图:

2.png

3、状态机设计的其他技巧及注意事项:

①状态机的编码最好使用one-hot(独热码);

②一个完备的状态机应具备初始化状态和默认状态;

③状态机的编码可以用parameter定义,不推荐使用define宏定义;

④时序逻辑always模块使用非阻塞幅值“<=”,组合逻辑模块使用阻塞赋值“=”;

⑤使用完备的if...else语句和case语句;

⑥case语句需具备full_case和parallel_case属性,full_case定义了所有可能的输入模式,parallel_case定义了case项是不重复的。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表凡亿课堂立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。
相关阅读
进入分区查看更多精彩内容>
精彩评论

暂无评论