FPGA:格雷码编码&能否用某计数器计数的值作为触发状态机的跳转条件

2019-07-15 21:36发布

大家好,我正在学习FPGA关于状态机的知识点。
      看到书中写到:格雷码最大优点在于编码依次变化,相邻两个编码之间只有一位发生变化,这样就不会产生“过渡噪声”。例如:二进制编码0111转换为下一状态1000时,如果最低位的变化较其他高位慢,则就会在极短的时间出现1001这个状态,该状态将成为转换过程中出现的噪声。

      疑问:1 — 若该噪声1001这个状态是状态机中1000的下一个状态,是有效状态;则该噪声是否可认为能造成状态机误跳转?
      2 — 在实际编程中,我有时会用某多位计数器计数的值作为触发状态机的跳转条件,那么我猜想:正如上文类似,如果计数器由0111因噪声直接计数到1001,正好满足触发条件,则是否也会造成状态机误跳转?但在实际中使用时,暂时没有发现该问题,是因为时钟周期及时钟沿的建立/保持时间远大于该噪声持续时间吗?从而自动忽略。
      希望大家不吝指教,非常感谢!

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
caoheqichun11
1楼-- · 2019-07-16 17:51
dingle0406 发表于 2017-6-23 14:20
用计数器也可能自己编译程序转成格雷码 了,可能编译器里有选项

好的,谢谢你的指导,我去查查编译器里是否有该选项!
caoheqichun11
2楼-- · 2019-07-16 19:02
reallmy 发表于 2017-6-22 15:12
比方说你的状态机时钟是50M,但是你的跳变信号是80M下的,那么你要用50M的时钟去采80M的信号可能采不到或者采不准,最简单的就是沿采沿,你采出来的可能是0也可能是1,这样状态机跳转就会混乱,fpga里面这叫亚稳态,这时你就要做跨时钟域处理了,具体怎么处理你去网上搜,有讲的!跨时钟域是逻辑处理里面很重要的一个环节。 ...

@reallmy 谢谢您的详细指导,我下去好好学习研究一下!

一周热门 更多>