用quartus ii 查看状态机

AI助手已提取文章相关产品:

有时拿到别人的一份代码,真是又长又臭,都不知道该从哪个地方看起,特别是有些状态机很长很长。其实想看懂状态机,个人觉得比较好的方法就是把状态机画出来,至于怎么画呢,这里有两个方法,第一:手画,一边看着代码一边画,这样做有一个好处,思路比较清晰,因为是自己画出来的。第二:用quartus ii画,这个方法的好处就是快,狠,准。第一个方法大家都会,下面就说说第二个方法吧。

 
第一,编译并综合。
第二,tools -> netlist viewers -> RTL viewer 
第三,找到状态机,双击。
第四,完成。
用quartus ii 查看状态机 - 白色 - gor
Quartus II中对状态机的设计有一些特别的规定,如果不了解这些规定在设计的时候常常使人产生困惑。
    对于Verilog HDL这些规定是:
    1.The Always Construct that describes the state machine is clocked.
    2.All assignments to the signal or variable that represents the state machine are within the Always Construct.
    3.The state machine has more than two states.
    4.The state register is not used as an output of the module.
    5.The state transition logic does not use arithmetic operators. For example, this condition is not met if the state transition logic uses the expression next_state <= state + 1;, which contains the arithmetic operator +.
    其中第5.条是一条很强的约束,从各种程序测试结果来看,状态变量(state和next_state)除了可以用于'case (state)'语句以及条件判别'(state==s1)'和状态参数赋值'next_state=s1'以外,不能用于其它的操作,这就是为什么常常不能综合成状态机的原因。我们可以这样来判断:将状态变量(state和next_state)和状态参数(s1,s2...)看成一些特殊的变量或者标识符,可以用状态参数或者状态变量对另外的状态变量赋值或者判别它们是否相等,但是它们不是'数',一旦将它们看成'数',例如state=s1+1或者state[s1]=1'b1(等数学操作)就不能综合成状态机。因此传统one-hot编码程序风格(位索引方式):
    case (1'b1) begin
        state[s1]:
        ...
        end
    不能综合成状态机。

转载于:https://www.cnblogs.com/wang668/archive/2012/07/24/quartus.html

您可能感兴趣的与本文相关内容

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值