我需要设计一个具有两个8位输入A和B以及控制输入x,y和z的ALU,它们支持以下操作:
x y z | operation
0 0 0 | S = A-B
0 0 1 | S = A+B
0 1 0 | S = A*8
0 1 1 | S = A/8
1 0 0 | S = A NAND B (bitwise)
1 0 1 | S = A XOR B (bitwise)
1 1 0 | s = reverse the bits of A
1 1 1 | S = NOT A (bitwise)
应该使用8位加法器和算术逻辑扩展器来完成。通读我的教科书,我发现AL扩展器的目的是改变输入位,以便可以使用加法器(而不是很多额外的组件)来完成所有事情(或者至少我从中了解到) )。例如,AL扩展器可以将这些位放在二进制补码中,以便加法器进行减法运算。同样,对于按位逻辑运算,可以适当地更改位,并且加法器输入之一只能为零,以便正确通过结果。
但是我到底要怎么做呢?我的书含糊不清,所以我不确定AL扩展程序是否需要我做一些聪明的事情来使加法器完成工作(在我的情况下只需加8次?...哈哈),或者我是否可以在那里放一个乘数 我必须阅读除法知识,但我敢打赌,这与乘法相似。
好吧,无论如何,最重要的是,AL扩展程序“允许”包含/可以包含什么?其唯一目的是更改输入以便可以将其馈入加法器吗?
*编辑:好吧,它是8的乘法/除法,因此可以通过向左或向右移动3来轻松执行。如果在其中添加了一些移位器,我是否还会有一个真正的/适当的AL扩展器?(也许我是一个完整的初学者,对它的想法过高……)