예제 #1
0
        public override bool TestGate()
        {
            Load.Value  = 1;
            Input.Value = 1;
            Clock.ClockDown();
            Clock.ClockUp();
            Input.Value = 0;
            if (Output.Value != 1)
            {
                return(false);
            }
            Clock.ClockDown();
            Clock.ClockUp();
            Load.Value  = 0;
            Input.Value = 1;
            if (Output.Value != 0)
            {
                return(false);
            }
            Clock.ClockDown();
            Clock.ClockUp();
            Input.Value = 0;
            if (Output.Value != 0)
            {
                return(false);
            }
            Load.Value  = 1;
            Input.Value = 1;
            if (Output.Value != 0)
            {
                return(false);
            }

            return(true);
        }
예제 #2
0
        public override bool TestGate()
        {
            int maxInput = (int)Math.Pow(2, Size);

            for (int i = 0; i < maxInput; i++)
            {
                Load.Value = 1;
                Input.SetValue(i);
                Clock.ClockDown();
                Clock.ClockUp();
                Input.SetValue(i + 1);
                if (Output.GetValue() != i)
                {
                    return(false);
                }

                Load.Value = 0;
                Clock.ClockDown();
                Clock.ClockUp();
                if (Output.GetValue() != i)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #3
0
 public override bool TestGate()
 {
     Load.Value = 0;
     Clock.ClockDown();
     Clock.ClockUp();
     if (Output.GetValue() != 0)
     {
         return(false);
     }
     Input.SetValue(1);
     Clock.ClockDown();
     Clock.ClockUp();
     if (Output.GetValue() != 0)
     {
         return(false);
     }
     Load.Value = 1;
     Address.SetValue(0);
     Clock.ClockDown();
     Clock.ClockUp();
     if (Output.GetValue() != 1)
     {
         return(false);
     }
     Input.SetValue(0);
     Load.Value = 0;
     Address.SetValue(2);
     Clock.ClockDown();
     Clock.ClockUp();
     if (Output.GetValue() != 0)
     {
         return(false);
     }
     return(true);
 }
예제 #4
0
 public override bool TestGate()
 {
     Input.SetValue(8);
     Load.Value = 1;
     Clock.ClockDown();
     Clock.ClockUp();
     Input.SetValue(7);
     Load.Value = 1;
     if (Output.GetValue() != 8)
     {
         return(false);
     }
     Clock.ClockDown();
     Clock.ClockUp();
     Input.SetValue(6);
     Load.Value = 0;
     if (Output.GetValue() != 7)
     {
         return(false);
     }
     Clock.ClockDown();
     Clock.ClockUp();
     Input.SetValue(5);
     Load.Value = 0;
     if (Output.GetValue() != 7)
     {
         return(false);
     }
     return(true);
 }
예제 #5
0
파일: Memory.cs 프로젝트: boaz23/ECS
 private void ZeroOutRegister()
 {
     Load.Value = 1;
     Input.SetValue(0);
     Clock.ClockDown();
     Clock.ClockUp();
 }
예제 #6
0
파일: Memory.cs 프로젝트: boaz23/ECS
        private bool TestRegister(int maxInputValue)
        {
            for (int i = 0; i < maxInputValue; i++)
            {
                Load.Value = 1;
                Input.SetValue(i);
                Clock.ClockDown();
                Clock.ClockUp();
                Input.SetValue(i + 1);
                if (Output.GetValue() != i)
                {
                    return(false);
                }

                Load.Value = 0;
                Clock.ClockDown();
                Clock.ClockUp();
                if (Output.GetValue() != i)
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #7
0
        // checking 16 inputs and outputs.
        public override bool TestGate()
        {
            Random ran = new Random();
            int    value_to_insert, chosen_address;

            value_to_insert = ran.Next(0, ((int)Math.Pow(2, WordSize) - 1));
            chosen_address  = ran.Next(0, ((int)Math.Pow(2, AddressSize) - 1));
            for (int i = 0; i < 16; i++)
            {
                Input.SetValue(value_to_insert);
                Address.SetValue(chosen_address);
                if (i % 2 == 0)
                {
                    Load.Value = 1;
                }
                else
                {
                    Load.Value = 0;
                }
                Clock.ClockDown();
                Clock.ClockUp();
                if (i % 2 == 0 && Output.GetValue() != value_to_insert)
                {
                    return(false);
                }
                else if (i % 2 != 0 && Output.GetValue() == value_to_insert)
                {
                    return(false);
                }
                value_to_insert = ran.Next(0, ((int)Math.Pow(2, WordSize) - 1));
            }


            return(true);
        }
예제 #8
0
 public override bool TestGate()
 {
     Input.Set2sComplement(5);
     Load.Value = 1;
     Clock.ClockDown();
     Clock.ClockUp();
     if (Output.Get2sComplement() != 5)
     {
         return(false);
     }
     return(true);
 }
예제 #9
0
        public override bool TestGate()
        {
            Input.Set2sComplement(22);
            Address.Set2sComplement(4);
            Load.Value = 1;
            Clock.ClockDown();
            Clock.ClockUp();
            Load.Value = 0;
            if (Output.Get2sComplement() != 22)
            {
                return(false);
            }
            Input.Set2sComplement(11);
            Clock.ClockDown();
            Clock.ClockUp();
            if (Output.Get2sComplement() != 22)
            {
                return(false);
            }
            Load.Value = 1;
            Clock.ClockDown();
            Clock.ClockUp();
            if (Output.Get2sComplement() != 11)
            {
                return(false);
            }

            Load.Value = 0;
            Address.SetValue(7);
            Clock.ClockDown();
            Clock.ClockUp();
            if (Output.Get2sComplement() != 0)
            {
                return(false);
            }
            Load.Value = 1;
            if (Output.Get2sComplement() != 0)
            {
                return(false);
            }
            Clock.ClockDown();
            Clock.ClockUp();
            if (Output.Get2sComplement() != 11)
            {
                return(false);
            }

            return(true);
        }
예제 #10
0
        public override bool TestGate()
        {
            Random  rand     = new Random();
            WireSet randWire = new WireSet(Size);
            WireSet maxWire  = new WireSet(Size);

            maxWire.Set2sComplement((int)Math.Pow(2, Size - 1) - 1);

            for (int i = 0; i < 1000; i++)
            {
                int num = (int)rand.Next(-(int)Math.Pow(2, Size - 1), ((int)Math.Pow(2, Size - 1) - 1));
                randWire.Set2sComplement(num);

                Input.Set2sComplement(randWire.Get2sComplement());
                Load.Value = 1;

                Clock.ClockDown();
                Clock.ClockUp();

                Load.Value = 0;
                Input.Set2sComplement(maxWire.Get2sComplement());
                if (randWire.Get2sComplement() != Output.Get2sComplement())
                {
                    return(false);
                }

                Clock.ClockDown();
                Clock.ClockUp();

                if (randWire.Get2sComplement() != Output.Get2sComplement())
                {
                    return(false);
                }

                Load.Value = 1;

                Clock.ClockDown();
                Clock.ClockUp();

                if (Input.Get2sComplement() != Output.Get2sComplement())
                {
                    return(false);
                }
            }

            return(true);
        }
예제 #11
0
        //checking 2 possible outcomes
        public override bool TestGate()
        {
            Random ran = new Random();
            int    value1, value2;

            value1 = ran.Next(0, ((int)Math.Pow(2, Size) - 1));
            Input.SetValue(value1);
            Load.Value = 0;
            Clock.ClockDown();
            Clock.ClockUp();
            Load.Value = 1;
            value2     = ran.Next(0, ((int)Math.Pow(2, Size) - 1));
            Clock.ClockDown();
            Clock.ClockUp();
            Input.SetValue(value2);
            if (Output.GetValue() != value1)
            {
                return(false);
            }
            return(true);
        }
예제 #12
0
파일: Counter.cs 프로젝트: roinissan/C-
 // checking increment 3 times and then changing the input
 public override bool TestGate()
 {
     Load.Value = 1;
     Input.SetValue(0);
     Clock.ClockDown();
     Clock.ClockUp();
     Load.Value = 0;
     Clock.ClockDown();
     Clock.ClockUp();
     Input.SetValue(0);
     Clock.ClockDown();
     Clock.ClockUp();
     Clock.ClockDown();
     Clock.ClockUp();
     if (Output.GetValue() != 3)
         return false;
     Load.Value = 1;
     Clock.ClockDown();
     Clock.ClockUp();
     if (Output.GetValue() != 0)
         return false;
     return true;
 }
예제 #13
0
        public override bool TestGate()
        {
            Random  rand       = new Random();
            WireSet randInWire = new WireSet(WordSize);

            for (int i = 0; i < m_rMultiBit.Length; i++)
            {
                randInWire.Set2sComplement((int)rand.Next(-(int)Math.Pow(2, WordSize - 1), ((int)Math.Pow(2, WordSize - 1) - 1))); //generate random valid input
                Input.Set2sComplement(randInWire.Get2sComplement());                                                               // connect input to randomized wire
                Address.Set2sComplement((int)rand.Next(0, (int)Math.Pow(2, AddressSize) + 1));                                     //generate random valid address
                Load.Value = 1;

                Clock.ClockDown();
                Clock.ClockUp();

                Load.Value = 0;
                int tempChange = randInWire.Get2sComplement();
                if (tempChange < 0)
                {
                    tempChange++;
                }
                else
                {
                    tempChange--;
                }
                Input.Set2sComplement(tempChange);
                if (Output.Get2sComplement() != randInWire.Get2sComplement())
                {
                    return(false);
                }

                Clock.ClockDown();
                Clock.ClockUp();
                if (Output.Get2sComplement() != randInWire.Get2sComplement())
                {
                    return(false);
                }

                Load.Value = 1;
                Clock.ClockDown();
                Clock.ClockUp();
                if (Output.Get2sComplement() != Input.Get2sComplement())
                {
                    return(false);
                }

                tempChange = Address.Get2sComplement();
                if (tempChange != 0)
                {
                    tempChange--;
                }
                else
                {
                    tempChange++;
                }
                Address.Set2sComplement(tempChange);
                Clock.ClockDown();
                Clock.ClockUp();
                if (Output.Get2sComplement() != Input.Get2sComplement())
                {
                    return(false);
                }
            }

            return(true);
        }