微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > FPGA:格雷码编码&能否用某计数器计数的值作为触发状态机的跳转条件

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

时间:10-02 整理:3721RD 点击:
大家好,我正在学习FPGA关于状态机的知识点。
      看到书中写到:格雷码最大优点在于编码依次变化,相邻两个编码之间只有一位发生变化,这样就不会产生“过渡噪声”。例如:二进制编码0111转换为下一状态1000时,如果最低位的变化较其他高位慢,则就会在极短的时间出现1001这个状态,该状态将成为转换过程中出现的噪声。
      疑问:1 — 若该噪声1001这个状态是状态机中1000的下一个状态,是有效状态;则该噪声是否可认为能造成状态机误跳转?
      2 — 在实际编程中,我有时会用某多位计数器计数的值作为触发状态机的跳转条件,那么我猜想:正如上文类似,如果计数器由0111因噪声直接计数到1001,正好满足触发条件,则是否也会造成状态机误跳转?但在实际中使用时,暂时没有发现该问题,是因为时钟周期及时钟沿的建立/保持时间远大于该噪声持续时间吗?从而自动忽略。
      希望大家不吝指教,非常感谢!

他说的这个噪声是指在跨时钟域的时候引起的,正常我们自己写状态机会保证所有信号都是在同一个时钟域,这样就不会出现这个问题了!

@reallmy  您好,您说的“这个噪声是指在跨时钟域的时候引起的”,我仔细思考后还是不太理解,您如果方便,能否举个例子或者进一步阐述,谢谢啦!

比方说你的状态机时钟是50M,但是你的跳变信号是80M下的,那么你要用50M的时钟去采80M的信号可能采不到或者采不准,最简单的就是沿采沿,你采出来的可能是0也可能是1,这样状态机跳转就会混乱,fpga里面这叫亚稳态,这时你就要做跨时钟域处理了,具体怎么处理你去网上搜,有讲的!跨时钟域是逻辑处理里面很重要的一个环节。好好学习。加油!

用计数器也可能自己编译程序转成格雷码 了,可能编译器里有选项

用计数器也可能自己编译程序转成格雷码 了,可能编译器里有选项

好的,谢谢你的指导,我去查查编译器里是否有该选项!

好的,谢谢你的指导,我去查查编译器里是否有该选项!

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top