格雷码(Gray Code)
出自另外一篇文章:异步FIFO原理及其实现
格雷码:因1953年公开的弗兰克·格雷专利 “Pulse Code Communication”而得名。
格雷码是一种安全码,因为相邻的格雷码只有一位不同,和二进制不同,二进制一般相邻的都有多位不同。格雷码在传输中,因为相邻只有一位不同,所以其误码率比二进制低得多。
出现亚稳态的概率也比二进制低。
二进制转换为格雷码
Verilog代码描述:gray = binary ^ (binary >> 1)
如上图,3和4, 5和6, 7和8之间有什么关系呢
可以看出,3的高两位与4的高两位相反,低两位相同;5和6,7和8也有这种关系。
其实格雷码还是一种对称码,比如说3位的格雷码,可以先写出一位的格雷码,0 和 1;然后将这两位对称一下,写出 0 1 1 0,然后在前两个前面填上0,后两个前面添上1,得到两位格雷码 00 01 11 10,然后再对称得到 00 01 11 10 10 11 01 00,再在前四个前添上0,后四个 前面添上1,得到三位的格雷码,000 001 011 010 110 111 101 100.
格雷码主要应用于FIFO等需要判断空满的设计以及一些对误码率和出现亚稳态率较低的设计中
注:以上图片均不是原创,不知道出处,若有侵权,请联系删除