为什么FPGA中推荐使用独热码?

独热码只有一个比特位不同,所以在进行比较的时候:

假如我们要判断状态机是否处于某状态S1,代码如下
格雷码:assign S1 = (STATUS == 2'b01)
二进制码:assign S1 = (STATUS == 2'b01)
而独热码:assign S1 = STATUS[1]

只需要进行一位的比较就好了,在FPGA代码综合的时候,会将代码综合成比较器,1位的比较器肯定是比多位的比较器节省逻辑资源,而FPGA中寄存器资源丰富,所以虽然独热码占位多,但是无所谓,高速系统中就可能因为比较导致输出不稳定,因此独热码很适合在FPGA尤其是告诉系统中使用。

如果状态数非常多就是用格雷码,可以节省寄存器资源,并且各个状态之间转移只需要一位的翻转,就是独热码和二进制码的折衷。

野火的课程中说:在低速系统中,状态个数低于4个使用二进制码,4~24个使用独热码,大于24使用格雷码,高速系统中尽量使用独热码就好了。

posted @ 2023-08-09 11:14  Xxaj5  阅读(177)  评论(0编辑  收藏  举报