检查 std_logic_vector 是否连续

问题描述 投票:0回答:1

假设我有一个任意的 std_logic_vector,我需要确保如果它包含一个,那么所有的都聚集在一起。所以

1111 => true

0011 => true

0110 => true

1011 => false

我有一些想法,例如计算总零数、计算前导零数和计算尾随零数,并确保total_zeros =leading_zeros + Trailing_zeros。但这感觉效率很低,感觉应该有一个简单的逻辑函数来解决这个问题。有这样的功能吗

logic vhdl
1个回答
0
投票

摩尔有限状态机(FSM)是解决这个问题的好方法。以下 FSM 一位一位地获取数据并输出您的条件(被捕获的条件)是否成立。

S0:初始状态
S1:只有0秒
S2:只有 1 秒或 1 秒后面可能有 0 秒
S3:末尾有一些零
F:失败状态

一旦所有数据位都输入完毕,您就可以获取与当前状态相对应的输出。

© www.soinside.com 2019 - 2024. All rights reserved.