コード例 #1
0
 public MultiBitRegister(int iSize)
 {
     Size   = iSize;
     Input  = new WireSet(Size);
     Output = new WireSet(Size);
     Load   = new Wire();
 }
コード例 #2
0
 public BitwiseNotGate(int iSize)
 {
     Size   = iSize;
     Input  = new WireSet(Size);
     Output = new WireSet(Size);
     Input.ConnectOutput(this);
 }
コード例 #3
0
        public override bool TestGate()
        {
            Random rnd = new Random();

            WireSet[] aInputs = new WireSet[Inputs.Length];
            for (int i = 0; i < Inputs.Length; i++)
            {
                aInputs[i] = new WireSet(Size);
                ConnectInput(i, aInputs[i]);
                aInputs[i].SetValue(i + 1);
            }
            WireSet wsControl = new WireSet(ControlBits);

            ConnectControl(wsControl);
            for (int i = 0; i < Inputs.Length; i++)
            {
                wsControl.SetValue(i);

                if (Output.GetValue() != Inputs[i].GetValue())
                {
                    return(false);
                }
            }
            return(true);
        }
コード例 #4
0
        public ALU(int iSize)
        {
            Size      = iSize;
            InputX    = new WireSet(Size);
            InputY    = new WireSet(Size);
            ZeroX     = new Wire();
            ZeroY     = new Wire();
            NotX      = new Wire();
            NotY      = new Wire();
            F         = new Wire();
            NotOutput = new Wire();
            Output    = new WireSet(Size);
            Zero      = new Wire();
            Negative  = new Wire();

            ZeroX.ConnectOutput(this);
            ZeroY.ConnectOutput(this);
            NotX.ConnectOutput(this);
            NotY.ConnectOutput(this);
            F.ConnectOutput(this);
            NotOutput.ConnectOutput(this);

            InputX.ConnectOutput(this);
            InputY.ConnectOutput(this);
        }
コード例 #5
0
ファイル: Counter.cs プロジェクト: LueeAkasha/ECS
 public Counter(int iSize)
 {
     Size   = iSize;
     Input  = new WireSet(Size);
     Output = new WireSet(Size);
     Load   = new Wire();
     Reset  = new Wire();
 }
コード例 #6
0
ファイル: BitwiseDemux.cs プロジェクト: LueeAkasha/ECS
 public BitwiseDemux(int iSize)
 {
     Size    = iSize;
     Control = new Wire();
     Input   = new WireSet(Size);
     Output1 = new WireSet(Size);
     Output2 = new WireSet(Size);
     Input.ConnectOutput(this);
 }
コード例 #7
0
ファイル: BitwiseBooleanGate.cs プロジェクト: LueeAkasha/ECS
 public BitwiseBooleanGate(int iSize)
 {
     Size   = iSize;
     Input1 = new WireSet(iSize);
     Input2 = new WireSet(iSize);
     Output = new WireSet(iSize);
     Input1.ConnectOutput(this);
     Input2.ConnectOutput(this);
 }
コード例 #8
0
        public void ConnectInput(WireSet wIn)
        {
            if (InputConected)
            {
                throw new InvalidOperationException("Cannot connect a wire to more than one inputs");
            }
            if (wIn.Size != Size)
            {
                throw new InvalidOperationException("Cannot connect two wiresets of different sizes.");
            }

            wIn.ConnectOutput(this);

            InputConected = true;
        }
コード例 #9
0
        public BitwiseMultiwayDemux(int iSize, int cControlBits)
        {
            Size    = iSize;
            Input   = new WireSet(Size);
            Control = new WireSet(cControlBits);
            Outputs = new WireSet[(int)Math.Pow(2, cControlBits)];

            for (int i = 0; i < Outputs.Length; i++)
            {
                Outputs[i] = new WireSet(Size);
            }

            Input.ConnectOutput(this);
            Control.ConnectOutput(this);
        }
コード例 #10
0
ファイル: Memory.cs プロジェクト: boaz23/ECS
        public Memory(int iAddressSize, int iWordSize)
        {
            AddressSize = iAddressSize;
            WordSize    = iWordSize;

            Input   = new WireSet(WordSize);
            Output  = new WireSet(WordSize);
            Address = new WireSet(AddressSize);
            Load    = new Wire();

            Size          = (int)Math.Pow(2, Address.Size);
            m_aiRegisters = new int[Size];

            Address.ConnectOutput(this);
        }
コード例 #11
0
        public BitwiseMultiwayMux(int iSize, int cControlBits)
        {
            ControlBits = cControlBits;//bug fix

            Size    = iSize;
            Output  = new WireSet(Size);
            Control = new WireSet(cControlBits);
            Inputs  = new WireSet[(int)Math.Pow(2, cControlBits)];

            for (int i = 0; i < Inputs.Length; i++)
            {
                Inputs[i] = new WireSet(Size);
                Inputs[i].ConnectOutput(this);
            }
            Control.ConnectOutput(this);
        }
コード例 #12
0
 public void ConnectInput(WireSet wsInput)
 {
     Input.ConnectInput(wsInput);
 }
コード例 #13
0
ファイル: BitwiseBooleanGate.cs プロジェクト: LueeAkasha/ECS
 public void ConnectInput2(WireSet wInput)
 {
     Input2.ConnectInput(wInput);
 }
コード例 #14
0
ファイル: BitwiseBooleanGate.cs プロジェクト: LueeAkasha/ECS
 public void ConnectInput1(WireSet wInput)
 {
     Input1.ConnectInput(wInput);
 }
コード例 #15
0
ファイル: Wire.cs プロジェクト: LueeAkasha/ECS
 public Wire(WireSet wsContainer) : this()
 {
     m_wsContainer = wsContainer;
 }
コード例 #16
0
 public void ConnectControl(WireSet wsControl)
 {
     Control.ConnectInput(wsControl);
 }
コード例 #17
0
 public void ConnectInput(int i, WireSet wsInput)
 {
     Inputs[i].ConnectInput(wsInput);
 }