1. 程式人生 > >《計算機系統要素學習》筆記之第1章 布林邏輯

《計算機系統要素學習》筆記之第1章 布林邏輯

《計算機系統要素學習》筆記之第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);