两种状态机的写法比较

    在FPGA里想写顺序执行的语句没有C语言来的简便花哨,比如for循环,或者再厉害点的来个嵌套循环。FPGA里要实现顺序执行某个操作功能需要借助状态机实现。下面比较了下两种状态机的写法。

test_fsm和test_fsm2是两个工程。

    test_fsm是仿顺序写法,即数节拍的写法,行数多,看着绕人,但是写的时候不饶人,另外写的时候仔细点,仿真的时序就是你写好的时序,属于磨刀不误砍柴工的类型,当然有人觉得后序维护升级时麻烦,比如加状态或加一个操作时,更改会很麻烦,这个确实是,因此这种写法在一开始写的时候如果能考虑到后序升级就会更好,本人偏好这种写法,因为代码写好即仿真好。

    test_fsm2是三段式状态机的写法,行数少,代码简洁,后序升级便利,只需要在状态机中增减状态。但是写代码的时候需要划分状态,状态切换时需要考虑时序节拍,因此写好后需要仿真,当然老鸟可以一眼望穿。

    下面比较两种写法的综合报告,具体报告可以打开工程仔细看。概括几点如下:

    两种写法的综合报告显示两种写法的资源利用量差不多,但是FF的利用率相差较大,且fanout不一样。

    Number of fully used LUT-FF pairs这项,仿顺序的写法达到62%,而三段式状态机的写法只有42%。这项越高越好,表示资源的利用率。

    在fanout上三段式状态机的写法fanout较低,这样就对信号的扇出要求较低,如时钟信号,有利于时序收敛。

    两种写法各有千秋,仁者见仁智者见智吧,正所谓左贵人右贵人都不错,各人根据需求选择自己喜欢的姿势而已。

    本人在FPGA方面还是一只小鸟,周末闲着无聊瞎搞搞的,欢迎大侠批评指正,一起深入学习FPGA!谢谢!

                                                                                                                            By 我有风衣 

// test_fsm && test_fsm2工程链接:http://pan.baidu.com/s/1i5GDe8P

                                                                

转载于:https://www.cnblogs.com/jaymyfriend/p/6918365.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值