题目:
Given the following state machine with 1 input and 2 outputs:
解题:
module top_module(input in,input [9:0] state,output [9:0] next_state,output out1,output out2);assign next_state[0]=~in&(state[0]|state[1]|state[2]|state[3]|state[4]|state[7]|state[8]|state[9]);assign next_state[1]=in&(state[0]|state[8]|state[9]);assign next_state[2]=in&state[1];assign next_state[3]=in&state[2];assign next_state[4]=in&state[3];assign next_state[5]=in&state[4];assign next_state[6]=in&state[5];assign next_state[7]=in&(state[6]|state[7]);assign next_state[8]=~in&state[5];assign next_state[9]=~in&state[6];assign out1=state[8]|state[9];assign out2=state[7]|state[9];endmodule
结果正确:
知识点:
通过查看状态转换图的转移的路径来导出独热码状态转换逻辑的逻辑方程式。
独热码的方法
独热编码即 One-Hot 编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都由他独立的寄存器位,并且在任意时候,其中只有一位有效。
有限状态机(Finite-State Machine,FSM),简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。状态机不仅是一种电路的描述工具,而且也是一种思想方法,在电路设计的系统级和 RTL 级有着广泛的应用。Verilog 中状态机主要用于同步时序逻辑的设计,能够在有限个状态之间按一定要求和规律切换时序电路的状态。状态的切换方向不但取决于各个输入值,还取决于当前所在状态。状态机可分为 2 类:Moore 状态机和 Mealy 状态机。