让我们尝试梳理一下one hot(解码)行和使用多个位的编码的概念。这两个概念都是一种表示信息的方式,但它们的形式和典型用法不同。
One hot 是一种技术,其中最多一行是 1/true,而所有其他行都是 0/false。这些热线不被视为数字中的数字,而是单独的信号或条件(在任何给定时间只有其中一个可能为真)。这种形式在某些电路中特别有用,因为每条热线都可以激活其他一些硬件。 (硬件查找表 (LUT)、RAM 或 ROM 可以在其内部数组索引中使用 one-hot。)
编码是一种我们使用 N 行作为 N 位数字中的数字的技术,就像在保存数字的 CPU 寄存器中可以找到的那样,或者我们可以在文本中写入普通的二进制数字。相比之下,在这种形式中,N 位中的任何一个都可以是 1(或 0)。
简单的编码器和解码器在编码形式(N 位数)和一种热形式(2N 行)之间进行转换。
...编码器...最多有 2^n 条输入线和‘n’条输出线
在您的陈述中,2^n 输入行是一种热形式,而输出行是二进制的普通数字(即编码)。
输入(2^n 行)和输出(n 行)都能够准确地表示 2^n 个不同的值!因此,解码/编码是一个 1:1 的来回映射。 (在这种解码器的输入端有多个热点是错误的,并且在允许这样做的系统中会发生坏事。)
在您所说的公式中: 2N = V,并且 N = log2 ( V ) - N 代表位数(位是一个二进制 数字),而V代表可以用N位表示的值的数量。
(虽然这些公式中的 2 代表 binary - 用 10 替换 2 来表示 十进制数字 的数量与数值数量的相同关系可以代表/存储/交流)。
在一种热形式中,我们需要 V 行,而在编码形式中,我们需要 N 行(作为位/数字)来表示相同的信息(V 个不同值之一)。
考虑您正在查找的数字是数字计数(如 N)还是数值计数(如 V)。
请记住,在一种热形式中,每个可能的值 V 需要一行(而在编码形式中,V 可能的值需要 N 位)。
MIPS 处理器会将 6 位操作码字段输入到某种查找表中,以确定要为任何给定指令激活哪组控制信号。 (操作码字段不是一个热字段,而是一个 N=6 位的位字段)。这些控制信号(也)不是一个热门的,MIPS 指令解码器不是使用简单的解码器,而是在编码的操作码值和有效编码的控制信号之间进行映射的映射器。一个热可以在内部使用在这个映射的索引中。这种映射基本上是一个数组查找,其中索引是操作码,每个数组元素都有适合其索引的控制信号值。
(R-Type 指令都共享一个共同的操作码值,因此当 R-Type 操作码值存在时,会在 func 位字段上进行额外的查找/映射以生成正确的控制信号。)