首页 > 其他分享 >Week1-homework

Week1-homework

时间:2022-10-04 21:34:05浏览次数:37  
标签:16 Nand Mux Week1 sel true homework out

与门 \(And\)

用两个 \(Nand\) 门拼出来
\(ab=\overline{\overline{ab}1}\)

CHIP And {
    IN a, b;
    OUT out;

    PARTS:
    Nand(a=a, b=b, out=out1);
    Nand(a=out1, b=true, out=out);
}

16位与门 \(And16\)

CHIP And16 {
    IN a[16], b[16];
    OUT out[16];

    PARTS:
        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]);
}

非门 \(Not\)

\(\overline{a1}\)

CHIP Not {
    IN in;
    OUT out;

    PARTS:
    Nand(a=in, b=true, out=out);
}

16位非门 \(Not16\)

CHIP Not16 {
    IN in[16];
    OUT out[16];

    PARTS:
    Nand(a=in[0], b=true, out=out[0]);
    Nand(a=in[1], b=true, out=out[1]);
    Nand(a=in[2], b=true, out=out[2]);
    Nand(a=in[3], b=true, out=out[3]);
    Nand(a=in[4], b=true, out=out[4]);
    Nand(a=in[5], b=true, out=out[5]);
    Nand(a=in[6], b=true, out=out[6]);
    Nand(a=in[7], b=true, out=out[7]);
    Nand(a=in[8], b=true, out=out[8]);
    Nand(a=in[9], b=true, out=out[9]);
    Nand(a=in[10], b=true, out=out[10]);
    Nand(a=in[11], b=true, out=out[11]);
    Nand(a=in[12], b=true, out=out[12]);
    Nand(a=in[13], b=true, out=out[13]);
    Nand(a=in[14], b=true, out=out[14]);
    Nand(a=in[15], b=true, out=out[15]);
}

或门 \(Or\)

\(\overline{\overline{a}\overline{b}}\)

CHIP Or {
    IN a, b;
    OUT out;

    PARTS:
    Not(in=a,out=nota);
    Not(in=b,out=notb);
    And(a=nota,b=notb,out=out1);
    Not(in=out1,out=out);
}

\(Or8Way\)

CHIP Or8Way {
    IN in[8];
    OUT out;

    PARTS:
    Or(a=in[0],b=in[1],out=out1);
    Or(a=in[2],b=in[3],out=out2);
    Or(a=in[4],b=in[5],out=out3);
    Or(a=in[6],b=in[8],out=out4);
    Or(a=out1,b=out2,out=out5);
    Or(a=out3,b=out4,out=out6);
    Or(a=out5,b=out6,out=out);
}

16位或门 \(Or16\)

CHIP Or16 {
    IN a[16], b[16];
    OUT out[16];

    PARTS:
        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]);
}

异或门 \(Xor\)

\(\overline{a}b+a\overline{b}\)

CHIP Xor {
    IN a, b;
    OUT out;

    PARTS:
    Not(in=a,out=nota);
    Not(in=b,out=notb);
    And(a=a,b=notb,out=w1);
    And(a=nota,b=b,out=w2);
    Or(a=w1,b=w2,out=out);
}

多路转换器/多路复用器 \(Mux\)

\(sel\) 为 \(1\) 时输出信号 \(a\) , 为\(0\)时输出信号 \(b\) , 用真值表推出表达式
\(a\overline{sel}+bsel\)

CHIP Mux {
    IN a, b, sel;
    OUT out;

    PARTS:
    Not(in=sel,out=nsel);
    And(a=a,b=nsel,out=out1);
    And(a=b,b=sel,out=out2);
    Or(a=out1,b=out2,out=out);
}

16位多路复用器 \(Mux16\)

CHIP Mux16 {
    IN a[16], b[16], sel;
    OUT out[16];

    PARTS:
    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\)

CHIP Mux4Way16 {
    IN a[16], b[16], c[16], d[16], sel[2];
    OUT out[16];

    PARTS:
    Mux16(a = a, b = b, sel = sel[0], out = ab);
    Mux16(a = c, b = d, sel = sel[0], out = cd);
    Mux16(a = ab, b = cd, sel = sel[1], out = out);
}

\(Mux8Way16\)

CHIP Mux8Way16 {
    IN a[16], b[16], c[16], d[16],
       e[16], f[16], g[16], h[16],
       sel[3];
    OUT out[16];

    PARTS:
    Mux4Way16(a = a, b = b, c = c, d = d, sel = sel[0..1], out = c1);
    Mux4Way16(a = e, b = f, c = g, d = h, sel = sel[0..1], out = c2);
    Mux16(a = c1, b = c2, sel = sel[2], out = out);
}

多路输出选择器/多路解复用器 \(DMux\)

{a, b} = {in, 0} if sel == 0
         {0, in} if sel == 1    
CHIP DMux {
    IN in, sel;
    OUT a, b;

    PARTS:
    Not(in=sel,out=nsel);
    And(a=in,b=nsel,out=a);
    And(a=in,b=sel,out=b);
}

\(DMux4Way\)

{a, b, c, d} = {in, 0, 0, 0} if sel == 00
               {0, in, 0, 0} if sel == 01
               {0, 0, in, 0} if sel == 10
               {0, 0, 0, in} if sel == 11

用真值表推出表达式

CHIP DMux4Way {
    IN in, sel[2];
    OUT a, b, c, d;

    PARTS:
    Not(in=sel[0],out=nsel0);
    Not(in=sel[1],out=nsel1);
    And(a=nsel1,b=nsel0,out=out1);
    And(a=nsel1,b=sel[0],out=out2);
    And(a=sel[1],b=nsel0,out=out3);
    And(a=sel[1],b=sel[0],out=out4);
    And(a=out1,b=in,out=a);
    And(a=out2,b=in,out=b);
    And(a=out3,b=in,out=c);
    And(a=out4,b=in,out=d);
}

\(DMux8Way\)

同上

CHIP DMux8Way {
    IN in, sel[3];
    OUT a, b, c, d, e, f, g, h;

    PARTS:
    Not(in=sel[0],out=nsel0);
    Not(in=sel[1],out=nsel1);
    Not(in=sel[2],out=nsel2);
    And(a=nsel0,b=nsel1,out=n00);
    And(a=n00,b=nsel2,out=n000);
    And(a=n00,b=sel[2],out=n100);
    And(a=sel[0],b=nsel1,out=n01);
    And(a=n01,b=nsel2,out=n001);
    And(a=n01,b=sel[2],out=n101);
    And(a=nsel0,b=sel[1],out=n10);
    And(a=n10,b=nsel2,out=n010);
    And(a=n10,b=sel[2],out=n110);
    And(a=sel[0],b=sel[1],out=n11);
    And(a=n11,b=nsel2,out=n011);
    And(a=n11,b=sel[2],out=n111);
    And(a=n000,b=in,out=a);
    And(a=n001,b=in,out=b);
    And(a=n010,b=in,out=c);
    And(a=n011,b=in,out=d);
    And(a=n100,b=in,out=e);
    And(a=n101,b=in,out=f);
    And(a=n110,b=in,out=g);
    And(a=n111,b=in,out=h);
}

标签:16,Nand,Mux,Week1,sel,true,homework,out
From: https://www.cnblogs.com/misasteria/p/16754542.html

相关文章

  • "你帮我助“软件开发-homework
    PSP数据统计PSP2.1PersonalSoftwareProcessStages预估耗时Planning计划 \·Estimate·估计这个任务需要多少时间 10hDeve......
  • NewStartCTF week1 pwn
    ret2text很简单的一道栈溢出题目首先通过checksec查看题目开启了什么保护,只开启了NX,是64位的amd文件拖到ida中查看首先shift+f12查看字串发现,/bin/sh双击跟进发现调......
  • Coursera Programming Languages, Part B 华盛顿大学 Homework 5
    这次Week2的作业比较难,任务目标是使用\(racket\)给一个虚拟语言\(MUPL\)(made-upprogramminglanguage)写一个解释器所以单独开个贴来好好分析一下首先是MUPL......
  • 考研记录Week12【8.8~8.14】
    一、本周总结:使用时间:总计42h10min,高数:16h2min,线代:6h22min,英语单词:5h15min,英语真题3h,操作系统:9h3min,政治:2h31min.完成任务:数学:1.高数:辅导讲义结束√2.线代:880线代部分第7,......
  • [CS61A] Lecture 5&6&7. Environments & Design & Functions Examples & Homework 2:
    [CS61A]Lecture5&6&7.Environments&Design&FunctionsExamples&Homework2:HigherOrderFunctionsLectureLecture5.Environments环境是编程语言中的一大命......