8

我有这个项目在下面听,我不确定从哪里开始也许有人可以给我一些指示,或者指出我开始这个的正确方向?谢谢!!

输入: A, B = 八进制数字(见下图);Cin = 二进制数

输出: S = 八进制数字(见下图);Cout = 二进制数

任务:使用二进制 FA,设计一个充当八进制 FA 的电路。更具体地说,该电路将输入两个八进制数字 A、B,将它们转换为二进制数,仅使用二进制 FA 将它们相加,将二进制结果转换回八进制,并将和作为八进制数字输出,二进制执行.

八进制数字的输入/输出二进制表示

每个八进制数字都将使用以下 8 位二进制表示形式表示:

八进制 8 位输入线:

数字: 0 1 2 3 4 5 6 7
0 1 0 0 0 0 0 0 0
1 0 1 0 0 0 0 0 0
2 0 0 1 0 0 0 0 0
3 0 0 0 1 0 0 0 0
4 0 0 0 0 1 0 0 0
5 0 0 0 0 0 1 0 0
6 0 0 0 0 0 0 1 0
7 0 0 0 0 0 0 0 1

您需要以结构化的方式设计电路。

4

3 回答 3

11

好的,所以基本上你被要求设计一个 8-to-3 编码器和一个 3-to-8 解码器。因为你有 FA 来工作,所以这不是任务的重点。

首先,我们需要定义编码器和解码器的功能。所以我们构造了一个真值表:

编码器:

Input    | Output
01234567 | 421
-----------------
10000000 | 000
01000000 | 001
00100000 | 010
00010000 | 011
00001000 | 100
00000100 | 101
00000010 | 110
00000001 | 111

解码器正好相反。

接下来,我们如何构建我们的编码器?好吧,我们可以一次简单地攻击它。

因此对于 1 位数字,如果设置了输入位 1、3、5 或 7,则为 1,否则为 0。所以我们只需要一个巨大的 OR,其中 4 个输入连接到 1、3、5 和 7。

对于 2s 数字,我们需要将 OR 门连接到 2、3、6、7。最后,对于 4s 门,将它们连接到 4、5、6、7。这不会进行任何错误检查以确保额外的位没有设置。虽然,这种情况下的行为似乎没有被规范定义,所以它可能没问题。

然后你拿你的三行并将它们提供给你的加法器。这很容易,所以我不会进入它。

最后你需要一个解码器,这比编码器要复杂一些。

让我们看一下解码器真值表:

Input | Output
421   | 01234567 
----------------
000   | 10000000
001   | 01000000
010   | 00100000
011   | 00010000
100   | 00001000
101   | 00000100
110   | 00000010
111   | 00000001

这次我们不能只使用 3 或门就可以收工了。

让我们用类似 C 的代码写下来:

if (!input[0] && !input[1] && !input[2])
  output[0] = 1
if (input[0]  && !input[1] && !input[2])
  output[1] = 1
if (!input[0] && input[1]  && !input[2])
  output[2] = 1
if (input[0]  && input[1]  && !input[2])
  output[3] = 1
if (!input[0] && !input[1] && input[2])
  output[4] = 1
if (input[0]  && !input[1] && input[2])
  output[5] = 1
if (!input[0] && input[1]  && input[2])
  output[6] = 1
if (input[0]  && input[1]  && input[2])
  output[7] = 1

所以,看起来我们将使用 8 个 3 输入与门和三个非门!

这个有点复杂,所以我做了一个示例实现:

3对8解码器

于 2012-05-19T08:43:52.600 回答
5

如果要在课堂上手工转换,可以试试下面的方法。

八进制到二进制的转换:

要将八进制转换为二进制,请将每个八进制数字替换为其二进制表示。示例:将 518 转换为二进制:58 = 1012 18 = 0012 因此,518 = 101 0012。

二进制到八进制的转换:

该过程与之前的算法相反。二进制数字按三位分组,从小数点(如果存在)或最后一位数字开始,向左和向右。如有必要,添加前导 0(或小数点右侧的尾随零)以填写最后一组三个。然后用等效的八进制数字替换每个三重奏。

例如,将二进制 1010111100 转换为八进制:(添加两个前导零,数字为 001010111100)001 = 1, 010 = 2, 111 = 7, 100 = 4 因此,1010111100 = 1274

于 2012-05-18T06:40:49.040 回答
4

要在八进制之间进行转换,您可以使用编码器和解码器对 ( http://www.asic-world.com/digital/combo3.html )。3 位加法器可以通过链接 3 个 FA 来实现。

于 2012-05-16T20:47:14.387 回答