一,基本构件的说明
1,半加器
芯片名:HalfAdder
输入:a,b
输出:sum,carry
功能:sum=LSB of a+b
carry=MSB of a+b
————————————————————————————————————————————
2,全加器
芯片名:FullAdder
输入:a,b,c
输出:sum,carry
功能:sum = LSB of a+b+c
carry= MSB of a+b+c
————————————————————————————————————————————
3,加法器
芯片名:Add16
输入:a[16],b[16]
输出:out[16]
功能:out=a+b
说明:2补码的整数加法,不处理溢出的情况
————————————————————————————————————————————
4,增量器
芯片名:Inc16
输入:in[16]
输出:out[16]
功能:out=in+1
说明:2补码的整数加法,不处理溢出的情况
————————————————————————————————————————————
5,ALU
芯片名:ALU
输入:x[16], y[16]
zx, //x输入置0
nx, //x输入取反
zy, //y输入置0
ny, //y输入取反
f, //功能码:1 Add 0 and
no // out输出取反
输出:out[16], //16位输出
zr, //若out=0,为True,否则为False
ng //若out<0,为True,否则为False
功能:if zx then x=0
if nx then x=!x
if zy then y=0
if ny then y=!y
if f then out=x+y else out=x&y
if no then out=!out
if out=0 then zr=1 else zr=0
if out<0 then ng=1 else ng=0
说明:不处理溢出的情况
————————————————————————————————————————————
二,ALU 的功能列表:
注意:以上的理解基于下面的基础:
(1)zx=1,nx=1 =====> x = -1
(2)!x+1=-x
举例子:
(a)f(x,y) = !(!x-1)
= !(!x+1-2)
= !(-x-2)
= !(-x-2)+1-1
= -(-x-2)-1
=x+1
(b)f(x,y) = !(!x+y)
= !(!x+1+y-1)
= !(-x+y-1)+1-1
= -(-x+y-1)-1
= x-y
三,代码实现://TODO
1,半加器
————————————————————————————————————————————
2,全加器
————————————————————————————————————————————
3,加法器
————————————————————————————————————————————
4,增量器
————————————————————————————————————————————
5,ALU
————————————————————————————————————————————