【问题标题】:Generate a truth table based on 3 bit gray code基于 3 位格雷码生成真值表
【发布时间】:2016-12-11 03:53:59
【问题描述】:

我很难理解格雷码以及它如何影响输出。基本上,我要做的最终目标是根据真值表设计电路。我了解其中的大部分内容,除了格雷码部分。

假设我得到了这个真值表,其中输出根据 3 位格雷码在每个上升时钟沿发生变化(最后一个值循环回第一个值)。如何填写输出?我应该取左边的值,然后用格雷码计算出它的下一个值并填写吗?

Inputs   |  Outputs
-------------------
S2 S1 S0 | N2 N1 N0
--------------------
0  0  0  | ?  ?  ?
0  0  1  |
0  1  0  |
0  1  1  |
1  0  0  |
1  0  1  |
1  1  0  |
1  1  1  |

我的第一反应是我看到左列不是格雷码。我可以按照基本的格雷码顺序填写吗?格雷码的 3 位序列是 000, 001, 011, 010, 110, 111, 101, 100。我可以像 001, 011, 110, 010 等一样填写图表的右侧吗?

【问题讨论】:

  • 我认为在倒数第二个输入行中,您的意思是 1 1 1,我认为您的意思是在那之后停止,而不是输入第 9 个条目。
  • 请参阅en.wikipedia.org/wiki/Gray_code 中的第二张表,了解我认为您想要的结果。我可以将其粘贴为答案,但这似乎是别人的功劳。
  • @JeremyKahan 你是对的,我已经修改了

标签: logic


【解决方案1】:

我已经解决了。对于以后偶然发现这个线程的人来说,这里是如何将二进制转换为格雷码。

首先,降低最高有效位。这是格雷码的第一位。 如果我们有一个二进制值 100,那么第一位是 1,所以格雷码是 1--。

要找到格雷码的第二位,请将二进制的第一位添加到第二位。在 100 中,这将是 1+0 = 1。这是格雷码的第二位,11-。

接下来,将二进制的第二位添加到第三位。这是格雷码的最后一点。 100,所以 0+0 = 0,我们的格雷码变成 110。

对于四位转换,只需继续该模式,但将二进制位 3 和 4 相加即可得到格雷码数的位 4。

我的答案完成的表格是

Inputs   |  Outputs
-------------------
S2 S1 S0 | N2 N1 N0
--------------------
0  0  0  | 0  0  0
0  0  1  | 0  0  1
0  1  0  | 0  1  1
0  1  1  | 0  1  0
1  0  0  | 1  1  0
1  0  1  | 1  1  1
1  1  0  | 1  0  1
1  1  1  | 1  0  0

【讨论】:

  • 对于未来的读者,通过添加位,OP 意味着使用 XOR 操作来做到这一点。就像我们有一个二进制数一样,我们可以通过 gray = num ^ (num >> 1) 将其转换为格雷码,其中 ^ 是 XOR 操作。
猜你喜欢
  • 2018-09-16
  • 2015-08-11
  • 2011-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-22
  • 1970-01-01
相关资源
最近更新 更多