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

2019-07-15 21:36发布

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

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
8条回答
reallmy
1楼-- · 2019-07-16 02:44
 精彩回答 2  元偷偷看……
caoheqichun11
2楼-- · 2019-07-16 06:22
reallmy 发表于 2017-6-20 10:03
他说的这个噪声是指在跨时钟域的时候引起的,正常我们自己写状态机会保证所有信号都是在同一个时钟域,这样就不会出现这个问题了!!

@reallmy  您好,您说的“这个噪声是指在跨时钟域的时候引起的”,我仔细思考后还是不太理解,您如果方便,能否举个例子或者进一步阐述,谢谢啦!
reallmy
3楼-- · 2019-07-16 07:00
比方说你的状态机时钟是50M,但是你的跳变信号是80M下的,那么你要用50M的时钟去采80M的信号可能采不到或者采不准,最简单的就是沿采沿,你采出来的可能是0也可能是1,这样状态机跳转就会混乱,fpga里面这叫亚稳态,这时你就要做跨时钟域处理了,具体怎么处理你去网上搜,有讲的!跨时钟域是逻辑处理里面很重要的一个环节。。。好好学习。加油!
dingle0406
4楼-- · 2019-07-16 12:44
用计数器也可能自己编译程序转成格雷码 了,可能编译器里有选项
dingle0406
5楼-- · 2019-07-16 16:36
用计数器也可能自己编译程序转成格雷码 了,可能编译器里有选项
caoheqichun11
6楼-- · 2019-07-16 17:18
 精彩回答 2  元偷偷看……

一周热门 更多>