《計算機系統要素學習》筆記之第1章 布林邏輯
阿新 • • 發佈:2018-11-30
《計算機系統要素學習》筆記之第1章 布林邏輯
- 布林表示式
xy代表x And y,x+y代表x Or y,~x代表Not x - 硬體描述語言(HDL)
Hardware Description Language 是一種結構化的硬體語言(hardware construction language) - 規範詳述
- Nand門(Nor)可作為所有門的基礎門 - [ ] Nand門(Nor)可作為所有門的基礎門
- 基本邏輯閘:Not And Or Xor Mux(Multiplexor二選一門) DMux(Demultiplexor一分二門)
- 多位基本門:Not16 And16 Or16 Mux16
- 多通道邏輯閘:Or8Way(8位轉1位) Mux4Way16(4選1) Mux8Way16(8選1) DMux4Way(1分4)
DMux8Way(1分8) - 實現
- Not
Nand(a=a, b=a, out=out);
And
Nand(a=a,b=b,out=nanda);
Not(a=nanda,out=out); - Or
Not(a=a,out=w1);
Not(a=b,out=w2);
Nand(a=w1,b=w2,out=out); - Xor
Not(a=a,out=nota);
Not(a=b,out=notb);
And(a=a,b=notb,out=w1);
And(a=b,b=nota,out=w2);
Or(a=w1,b=w2,out=out); - Mux
And(a=b,b=sel,out=w1);
Not(a=sel,out=nsel);
And(a=a,b=nsel,out=w2);
Or(a=w1,b=w2,out=out); - DMux
Not(a=sel,out=nsel);
And(a=nsel,b=in,out=w1);
And(a=sel,b=in,out=w2);
Or(a=w1,b=false,out=a);
Or(a=w2,b=false,out=b); - Not16
Not(a=a[0],out=out[0]);
Not(a=a[1],out=out[1]);
Not(a=a[2],out=out[2]);
Not(a=a[3],out=out[3]);
Not(a=a[4],out=out[4]);
Not(a=a[5],out=out[5]);
Not(a=a[6],out=out[6]);
Not(a=a[7],out=out[7]);
Not(a=a[8],out=out[8]);
Not(a=a[9],out=out[9]);
Not(a=a[10],out=out[10]);
Not(a=a[11],out=out[11]);
Not(a=a[12],out=out[12]);
Not(a=a[13],out=out[13]);
Not(a=a[14],out=out[14]);
Not(a=a[15],out=out[15]); - And16
And(a=a[0],b=b[0],out=out[0]);
And(a=a[1],b=b[1],out=out[1]);
And(a=a[2],b=b[2],out=out[2]);
And(a=a[3],b=b[3],out=out[3]);
And(a=a[4],b=b[4],out=out[4]);
And(a=a[5],b=b[5],out=out[5]);
And(a=a[6],b=b[6],out=out[6]);
And(a=a[7],b=b[7],out=out[7]);
And(a=a[8],b=b[8],out=out[8]);
And(a=a[9],b=b[9],out=out[9]);
And(a=a[10],b=b[10],out=out[10]);
And(a=a[11],b=b[11],out=out[11]);
And(a=a[12],b=b[12],out=out[12]);
And(a=a[13],b=b[13],out=out[13]);
And(a=a[14],b=b[14],out=out[14]);
And(a=a[15],b=b[15],out=out[15]); - Or16
Or(a=a[0],b=b[0],out=out[0]);
Or(a=a[1],b=b[1],out=out[1]);
Or(a=a[2],b=b[2],out=out[2]);
Or(a=a[3],b=b[3],out=out[3]);
Or(a=a[4],b=b[4],out=out[4]);
Or(a=a[5],b=b[5],out=out[5]);
Or(a=a[6],b=b[6],out=out[6]);
Or(a=a[7],b=b[7],out=out[7]);
Or(a=a[8],b=b[8],out=out[8]);
Or(a=a[9],b=b[9],out=out[9]);
Or(a=a[10],b=b[10],out=out[10]);
Or(a=a[11],b=b[11],out=out[11]);
Or(a=a[12],b=b[12],out=out[12]);
Or(a=a[13],b=b[13],out=out[13]);
Or(a=a[14],b=b[14],out=out[14]);
Or(a=a[15],b=b[15],out=out[15]); - Or8Way
Or(a=a[0],b=a[1],out=w1);
Or(a=w1,b=a[2],out=w2);
Or(a=w2,b=a[3],out=w3);
Or(a=w3,b=a[4],out=w4);
Or(a=w4,b=a[5],out=w5);
Or(a=w5,b=a[6],out=w6);
Or(a=w6,b=a[7],out=out); - Mux16
Mux(a=a[0],b=b[0],sel=sel,out=out[0]);
Mux(a=a[1],b=b[1],sel=sel,out=out[1]);
Mux(a=a[2],b=b[2],sel=sel,out=out[2]);
Mux(a=a[3],b=b[3],sel=sel,out=out[3]);
Mux(a=a[4],b=b[4],sel=sel,out=out[4]);
Mux(a=a[5],b=b[5],sel=sel,out=out[5]);
Mux(a=a[6],b=b[6],sel=sel,out=out[6]);
Mux(a=a[7],b=b[7],sel=sel,out=out[7]);
Mux(a=a[8],b=b[8],sel=sel,out=out[8]);
Mux(a=a[9],b=b[9],sel=sel,out=out[9]);
Mux(a=a[10],b=b[10],sel=sel,out=out[10]);
Mux(a=a[11],b=b[11],sel=sel,out=out[11]);
Mux(a=a[12],b=b[12],sel=sel,out=out[12]);
Mux(a=a[13],b=b[13],sel=sel,out=out[13]);
Mux(a=a[14],b=b[14],sel=sel,out=out[14]);
Mux(a=a[15],b=b[15],sel=sel,out=out[15]); - Mux4Way16
Mux16(a=a,b=c,sel=sel[1],out=out0);
Mux16(a=b,b=d,sel=sel[1],out=out1);
Mux16(a=out0,b=out1,sel=sel[0],out=out); - Mux8Way16
Mux4Way16(a=a,b=b,c=c,d=d,sel=sel[0…1],out=w1);
Mux4Way16(a=e,b=f,c=g,d=h,sel=sel[0…1],out=w2);
Mux16(a=w1,b=w2,sel=sel[2],out=out); - DMux4Way
DMux(in=in,sel=sel[0],a=w1,b=w2);
DMux(in=w2,sel=sel[1],a=b,b=d);
DMux(in=w1,sel=sel[1],a=a,b=c); - DMux8Way
DMux4Way(in=in,sel=sel[0…1],a=w1,b=w2,c=w3,d=w4);
DMux(in=w4,sel=sel[2],a=d,b=h);
DMux(in=w3,sel=sel[2],a=c,b=g);
DMux(in=w2,sel=sel[2],a=b,b=f);
DMux(in=w1,sel=sel[2],a=a,b=e);