假设我有一个任意的 std_logic_vector,我需要确保如果它包含一个,那么所有的都聚集在一起。所以
1111 => true
0011 => true
0110 => true
1011 => false
我有一些想法,例如计算总零数、计算前导零数和计算尾随零数,并确保total_zeros =leading_zeros + Trailing_zeros。但这感觉效率很低,感觉应该有一个简单的逻辑函数来解决这个问题。有这样的功能吗
摩尔有限状态机(FSM)是解决这个问题的好方法。以下 FSM 一位一位地获取数据并输出您的条件(被捕获的条件)是否成立。
S0:初始状态 S1:只有0秒 S2:只有 1 秒或 1 秒后面可能有 0 秒 S3:末尾有一些零 F:失败状态
一旦所有数据位都输入完毕,您就可以获取与当前状态相对应的输出。