首页 > 代码库 > 01-布尔逻辑的习题
01-布尔逻辑的习题
一,基础芯片的实现:使用Nand门,构建基本芯片
1,使用Nand门实现Not门
(1)原理: Not(a) = Nand(a,a)
(2) 描述:
芯片名:Not
输入:a
输出:out
功能:if a=0 out=1 else out=0
(3)实现:
CHIP Not{
IN in;
OUT out;
PARTS:
Nand(a=in,b=in,out=out);
}
2,使用Not门,Nand门实现And门
(1)原理: And(a,b) =Not (Nand(a,b))
(2) 描述:
芯片名:And
输入:a,b
输出:out
功能:if a=b=1 out=1 else out=0
(3)实现:
CHIP And{
IN a,b;
OUT out;
PARTS:
Nand(a=a,b=b,out=nandOut);
Not(in=nandOut,out=out);
}
3,使用Not门,And门,构建Or门
(1)原理:
(i) x y Or
0 0 0
0 1 1
1 0 1
1 1 1
(ii) 只看0 描述为 x‘y‘ 再取反 (x‘y‘)‘ 所以 x Or y = (x‘y‘)‘ 或者只看1,为 x Or y = x‘y+xy‘+xy
这里选用了第一种,所以 Or(x,y) = Not(And(Not(x),Not(y)))
(2) 描述:
芯片名:Or
输入:a,b
输出:out
功能:if a=b=0 out=0 else out=1
(3)实现:
CHIP Or{
IN a,b;
OUT out;
PARTS:
Not(a=a,out=nota);
Not(b=b,out=notb);
And(a=nota,b=notb,out=w1);
Not(a=w1,out=out);
}
4,使用Not门,And门,Or门构建Xor门
(1)原理:
a b || Xor
0 0 0
0 1 1
1 0 1
1 1 0
只看Xor为1的那一项,a Xor b = a’b+ab’ 所以:Xor(a,b) = Or(And(Not(a),b),And(a,Not(b)))
(2)描述:
芯片名:Xor
输入:a,b
输出:out
功能:if a=b out=0 else out=1
(3)实现:
CHIP Xor{
IN a,b;
OUT out;
PARTS:
Not(a=a,out=nota);
Not(b=b,out=notb);
And(a=nota,b=b,out=w1);
And(a=a,b=notb,out=w2);
Or(a=w1,b=w2,out=out);
}
01-布尔逻辑的习题