son*_*ool 8 binary circuit computer-architecture boolean-operations
我有这个项目听下面,我不知道从哪里开始也许有人可以给我一些指示或者可能指出我正确的方向开始这个?谢谢!!
输入: A,B =八进制数字(见下面的表示); Cin =二进制数字
输出: S =八进制数字(见下面的表示); Cout =二进制数字
任务:使用二进制FAs,设计一个充当八进制FA的电路.更具体地说,该电路将输入两个八进制数字A,B,将它们转换为二进制数,仅使用二进制FAs加入它们,将二进制结果转换回八进制数,并将该和输出为八进制数字,并且二进制数字执行.
八进制数字的输入/输出二进制表示
每个八进制数字将使用以下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
您需要以结构化的方式设计电路.
Omn*_*ity 11
好的,基本上你被要求设计一个8到3编码器和一个3到8解码器.因为你被赋予了FA,所以这不是任务的重点.
首先,我们需要定义编码器和解码器的功能.所以我们构建一个真值表:
编码器:
Input | Output
01234567 | 421
-----------------
10000000 | 000
01000000 | 001
00100000 | 010
00010000 | 011
00001000 | 100
00000100 | 101
00000010 | 110
00000001 | 111
Run Code Online (Sandbox Code Playgroud)
而解码器恰恰相反.
接下来,我们如何构建编码器?好吧,我们可以一次只攻击一下.
因此对于1s数字,如果输入位1,3,5或7设置则为1,否则为0.所以我们只需要一个连接到1,3,5和7的4个输入的大型OR.
对于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
Run Code Online (Sandbox Code Playgroud)
这次我们不能只使用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
Run Code Online (Sandbox Code Playgroud)
所以,看起来我们将使用8个3输入AND门和3个NOT门!
这个有点复杂,所以我做了一个示例实现:

如果要在课堂上手动完成转换,您可以尝试以下方式.
将八进制转换为二进制:
要将八进制转换为二进制,请将每个八进制数字替换为其二进制表示.示例:将518转换为二进制:58 = 1012 18 = 0012因此,518 = 101 0012.
二进制转换为八进制:
该过程与先前算法相反.二进制数字按三位分组,从小数点(如果存在)或最后一位开始,然后向左和向右.如果需要,添加前导0(或小数点右侧的尾随零)以填充最后一组三个.然后用等效的八进制数字替换每个三重奏.
例如,将二进制1010111100转换为八进制:(添加两个前导零,数字为001010111100)001 = 1,010 = 2,111 = 7,100 = 4因此,1010111100 = 1274
| 归档时间: |
|
| 查看次数: |
2931 次 |
| 最近记录: |