Verilog与ASM实现
在下面的问题中 ASM图表显示,将q_next的值与0进行比较,以进入下一个状态,但在比较q_next之前,q的值已经用q_next更新,因此如果我们将q的值与0进行比较,结果是否在计时和其他参数方面相同 另外,q_next和q的类型应该是什么?它们应该是注册的还是有线的 我附上了ASM图表的截图和Verilog代码。我也不理解一般情况下条件框的计时含义,难道我们不能将条件框的输出置于不依赖于条件框的输出的单独状态吗 就像在wait1状态下一样,我们检查sw的值,如果为true,我们减少计数器,然后检查计数器是否已达到零,然后asser db_tick。我想了解当我们从wait1、increment counter和assert db_tick移动时的时间流。这些阶段之间是否有任何时钟周期,即从一个状态移动到一个条件框 同样在verilog代码中,我们使用q_load和q_tick来控制计数器。当我们可以简单地控制状态中的计数器时,为什么要使用这些信号 是否确保FSM控制路径控制计数器数据路径?请解释一下。提前谢谢 在下面的问题中,ASM图表显示q_next的值为 与0进行比较以进入下一个状态,但在比较q_next之前, q的值已经用q_next更新了,所以如果我们比较 q值为0时,结果在时间和时间方面是否相同 其他参数 否。当q_next的值为0时,q仍然包含值1,直到它在下一个正时钟边缘更新。如果您检查q==0,则在每个等待状态下将花费额外的时钟周期 另外,q_next和q的类型应该是什么?他们应该注册还是注册 电线 要么。像q_reg这样的reg类型意味着它们在always块中赋值,而像q_next这样的导线类型则使用assign语句或作为子模块的输出进行赋值 我也不明白条件框在时间上的含义 常规,我们不能将条件框的输出放在单独的 不依赖于条件框的输出的状态?, 与处于wait1状态时一样,我们检查sw的值,如果为true,则 减小计数器,然后检查计数器是否已达到零 然后是asser db_tick。我想了解当我们 从wait1和递增计数器移动,并断言db_tick 以下是处于wait1状态时单个时钟周期的操作流程: SW==1吗?如果没有,则不执行其他操作,并进入状态0。这些操作将在下一个周期完成。 如果SW==1,则下一步计算q_,并将该值分配给下一个循环的q。 q_next==0吗?如果没有,则在下一个循环中保持等待1并重复。 否则,为该时钟周期断言db_tick=1,并进入状态1。 如果将这两个条件分解为两个单独的状态,则倒计时到0将花费两倍的时间 在这些阶段之间是否有任何时钟周期,即 从状态移动到条件框 根据该图,在给定状态(即虚线框之一)内比较sw、从q中减去等的所有操作均在单个时钟周期内执行 同样在verilog代码中,我们使用q_load和q_tick来控制 柜台当我们可以简单地控制信号时,为什么要使用这些信号 美国的柜台?是否确保FSM控制 路径控制计数器数据路径 你也可以那样做。只需确保在默认情况下为q_next指定一个值,以防止锁定。IMO说,将数据路径和控制路径拆分为单独的always blocks/assign语句确实提高了可读性Verilog与ASM实现,verilog,fsm,Verilog,Fsm,在下面的问题中 ASM图表显示,将q_next的值与0进行比较,以进入下一个状态,但在比较q_next之前,q的值已经用q_next更新,因此如果我们将q的值与0进行比较,结果是否在计时和其他参数方面相同 另外,q_next和q的类型应该是什么?它们应该是注册的还是有线的 我附上了ASM图表的截图和Verilog代码。我也不理解一般情况下条件框的计时含义,难道我们不能将条件框的输出置于不依赖于条件框的输出的单独状态吗 就像在wait1状态下一样,我们检查sw的值,如果为true,我们减少计数器,