首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >要求模拟CMOS、N_Type和P_Type晶体管。不知道

要求模拟CMOS、N_Type和P_Type晶体管。不知道
EN

Stack Overflow用户
提问于 2015-02-22 04:27:30
回答 1查看 119关注 0票数 0

首先,我要道歉,因为这是一个非常具体的问题,可能对其他人没有帮助。

不管怎样,有人问我:

概述CMOS、N_Type和P_Type晶体管的模拟。使用模拟晶体管来实现通用逻辑门。“

我在网上读过关于晶体管的文章,甚至试图找到这些特定的晶体管,但我找不到任何具体的答案。如果我知道这个家伙想让我做什么,我会非常感激的。

我得到了一个BinaryDigit类和一个抽象晶体管类。我将扩展晶体管,用isOpen()和isClosed()方法创建非抽象的N型和isClosed晶体管。

最后,我必须使用这两个晶体管创建一个LogicGate(实现和/或/etc)类。

有人知道我该怎么做吗?提前谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-22 05:06:25

我在黑暗中开了一枪,但这就是我所想到的。PMOS类将是相同的,只是您将检查是否为b.digit == 0

代码语言:javascript
运行
复制
class NMOS extends Transistor
{
    boolean open;

    public NMOS(BinaryDigit b)
    {
        open = b.digit == 1;
    }

    public void setInput(BinaryDigit b)
    {
        open = b.digit == 1;
    }

    public boolean isOpen()
    {
        return open;
    }

    public boolean isClosed()
    {
        return !open;
    }
}

我建议你阅读逻辑门的CMOS实现。这里有一个和门,举个例子。

代码语言:javascript
运行
复制
class AndGate
{
    NMOS t1, t2;
    public AndGate()
    {
        t1 = new NMOS(new BinaryDigit(0));
        t2 = new NMOS(new BinaryDigit(0));
    }

    public BinaryDigit map(BinaryDigit input1, BinaryDigit input2)
    {
        t1.setInput(input1);
        t2.setInput(input2);

        return new BinaryDigit(((t1.isOpen() && t2.isOpen()) ? (1) : (0));
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28654564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档