public MultiBitRegister(int iSize) { Size = iSize; Input = new WireSet(Size); Output = new WireSet(Size); Load = new Wire(); SingleBitRegister[] reg = new SingleBitRegister[iSize]; for (int i = 0; i < iSize; i++) { reg[i] = new SingleBitRegister(); reg[i].ConnectInput(Input[i]); reg[i].ConnectLoad(Load); Output[i].ConnectInput(reg[i].Output); } }
public MultiBitRegister(int iSize) { Size = iSize; Input = new WireSet(Size); Output = new WireSet(Size); Load = new Wire(); //your code here m_rSingle = new SingleBitRegister[Size]; for (int i = 0; i < Size; i++) { m_rSingle[i] = new SingleBitRegister(); m_rSingle[i].ConnectLoad(Load); m_rSingle[i].ConnectInput(Input[i]); Output[i].ConnectInput(m_rSingle[i].Output); } }
// creating multi bit register by using array of single bit register and a mux public MultiBitRegister(int iSize) { Size = iSize; Input = new WireSet(Size); Output = new WireSet(Size); Load = new Wire(); registers = new SingleBitRegister[Size]; for (int i = 0; i < Size; i++) { registers[i] = new SingleBitRegister(); } for (int bit = 0; bit < Size; bit++) { registers[bit].ConnectLoad(Load); registers[bit].ConnectInput(Input[bit]); Output[bit].ConnectInput(registers[bit].Output); } }
static void Main(string[] args) { OrGate or = new OrGate(); XorGate xor = new XorGate(); AndGate and = new AndGate(); MuxGate mux = new MuxGate(); Demux demux = new Demux(); HalfAdder halfAdder = new HalfAdder(); FullAdder fullAdder = new FullAdder(); WireSet wireSet = new WireSet(9); BitwiseAndGate bwag = new BitwiseAndGate(2); BitwiseNotGate bwng = new BitwiseNotGate(3); BitwiseOrGate bwog = new BitwiseOrGate(2); BitwiseMux bwm = new BitwiseMux(2); BitwiseDemux bwd = new BitwiseDemux(2); MultiBitAndGate mbag = new MultiBitAndGate(4); MultiBitAdder mba = new MultiBitAdder(3); BitwiseMultiwayMux bwmwm = new BitwiseMultiwayMux(5, 4); BitwiseMultiwayDemux bwmwd = new BitwiseMultiwayDemux(4, 4); SingleBitRegister sbr = new SingleBitRegister(); MultiBitRegister mbr = new MultiBitRegister(4); if (!sbr.TestGate()) { Console.WriteLine("SingleBitRegisterbugbug"); } if (!mbr.TestGate()) { Console.WriteLine("MultiBitRegisterbugbug"); } ALU alu = new ALU(4); if (!alu.TestGate()) { Console.WriteLine("ALUbugbug"); } if (!bwmwd.TestGate()) { Console.WriteLine("BitwiseMultiwayDemuxbugbug"); } if (!bwmwm.TestGate()) { Console.WriteLine("BitwiseMultiwayMuxbugbug"); } if (!mba.TestGate()) { Console.WriteLine("MultiBitAdderbugbug"); } if (!mbag.TestGate()) { Console.WriteLine("MultiBitAndGatebugbug"); } if (!bwd.TestGate()) { Console.WriteLine("BitWiseDemuxbugbug"); } if (!bwm.TestGate()) { Console.WriteLine("BitWiseMuxbugbug"); } if (!bwog.TestGate()) { Console.WriteLine("BitWiseOrGatebugbug"); } if (!bwng.TestGate()) { Console.WriteLine("BitWiseNotGatebugbug"); } if (!bwag.TestGate()) { Console.WriteLine("BitWiseAndGatebugbug"); } wireSet.SetValue(137); wireSet.Set2sComplement(-32); if (!and.TestGate()) { Console.WriteLine("andbugbug"); } if (!or.TestGate()) { Console.WriteLine("orbugbug"); } if (!xor.TestGate()) { Console.WriteLine("xorbugbug"); } if (!mux.TestGate()) { Console.WriteLine("muxbugbug"); } if (!demux.TestGate()) { Console.WriteLine("demuxbugbug"); } if (!halfAdder.TestGate()) { Console.WriteLine("HAbugbug"); } if (!fullAdder.TestGate()) { Console.WriteLine("FAbugbug"); } Memory memory = new Memory(2, 6); if (!memory.TestGate()) { Console.WriteLine("Membugbug"); } Console.WriteLine("done"); Console.ReadLine(); }
static void Main(string[] args) { AndGate and = new AndGate(); OrGate or = new OrGate(); XorGate xor = new XorGate(); MuxGate mux = new MuxGate(); Demux demux = new Demux(); HalfAdder ha = new HalfAdder(); FullAdder fa = new FullAdder(); if (!and.TestGate()) { Console.WriteLine("bugbug"); } Console.WriteLine("done And"); if (!or.TestGate()) { Console.WriteLine("bugbug"); } Console.WriteLine("done Or"); if (!xor.TestGate()) { Console.WriteLine("bugbug"); } Console.WriteLine("done Xor"); if (!mux.TestGate()) { Console.WriteLine("bugbug"); } Console.WriteLine("done Mux"); if (!demux.TestGate()) { Console.WriteLine("bugbug"); } Console.WriteLine("done Demux"); if (!ha.TestGate()) { Console.WriteLine("bugbug"); } Console.WriteLine("done HalfAdder"); if (!fa.TestGate()) { Console.WriteLine("bugbug"); } Console.WriteLine("done FullAdder"); WireSet num = new WireSet(4); num.SetValue(6); Console.WriteLine(num.ToString()); Console.WriteLine(num.GetValue()); Console.WriteLine("trying 2's complement"); WireSet num2 = new WireSet(4); num2.Set2sComplement(6); Console.WriteLine(num2.Get2sComplement()); WireSet num3 = new WireSet(4); num3.Set2sComplement(-2); Console.WriteLine(num3.Get2sComplement()); BitwiseAndGate BWAnd = new BitwiseAndGate(3); BWAnd.TestGate(); BitwiseNotGate BWNot = new BitwiseNotGate(3); BWNot.TestGate(); BitwiseOrGate BWOr = new BitwiseOrGate(3); BWOr.TestGate(); BitwiseMux BWMux = new BitwiseMux(3); BWMux.TestGate(); BitwiseDemux BWDemux = new BitwiseDemux(3); BWDemux.TestGate(); MultiBitAndGate multiAnd = new MultiBitAndGate(3); multiAnd.TestGate(); MultiBitAdder multiAdd = new MultiBitAdder(5); multiAdd.TestGate(); BitwiseMultiwayMux multimux = new BitwiseMultiwayMux(8, 2); WireSet[] inp = new WireSet[4]; inp[0] = new WireSet(8); inp[0].Set2sComplement(1); multimux.ConnectInput(0, inp[0]); inp[1] = new WireSet(8); inp[1].Set2sComplement(2); multimux.ConnectInput(1, inp[1]); inp[2] = new WireSet(8); inp[2].Set2sComplement(3); multimux.ConnectInput(2, inp[2]); inp[3] = new WireSet(8); inp[3].Set2sComplement(4); multimux.ConnectInput(3, inp[3]); WireSet control = new WireSet(2); control.Set2sComplement(3); multimux.ConnectControl(control); multimux.TestGate(); BitwiseMultiwayDemux multidemux = new BitwiseMultiwayDemux(8, 1); ALU alu = new ALU(16); alu.TestGate(); SingleBitRegister sbr = new SingleBitRegister(); if (sbr.TestGate()) { Console.WriteLine("sbr IS OK"); } MultiBitRegister mbr = new MultiBitRegister(8); if (mbr.TestGate()) { Console.WriteLine("mbr IS OK"); } Memory mem = new Memory(3, 6); if (mem.TestGate()) { Console.WriteLine("mem IS OK"); } Console.ReadLine(); }
static void Main(string[] args) { //Console.WriteLine("============================================================================"); //Console.WriteLine("Wireset tests:"); //Console.WriteLine(); //Console.WriteLine("Wireset.SetValue(int x) test:"); //Console.Write("Enter the num of bits: "); //int numOfBits = Convert.ToInt32(Console.ReadLine()); //WireSet wire1 = new WireSet(numOfBits); //Console.Write("Enter a num between 0 and " + (int)Math.Pow(2, numOfBits) + " to convert into binary: "); //int userNum = Convert.ToInt32(Console.ReadLine()); //wire1.SetValue(userNum); //Console.WriteLine("Your number binary representation: " + wire1.ToString()); //Console.WriteLine(); //Console.WriteLine("Wireset.GetValue() test:"); //Console.WriteLine("Your number decimal representation (expected value: " + userNum + "): " + wire1.GetValue()); //Console.WriteLine(); //Console.WriteLine("Wireset.Set2sComplement() test:"); //Console.Write("Enter the num of bits: "); //int numOfBits2 = Convert.ToInt32(Console.ReadLine()); //WireSet wire2 = new WireSet(numOfBits2); //Console.Write("Enter a num between -" + (int)Math.Pow(2, numOfBits2 - 1) + " and " + ((int)Math.Pow(2, numOfBits2 - 1) - 1) + " to convert into binary: "); //string input = Console.ReadLine(); //int userNum2 = 1; //if (input[0] == '-') //{ // input = input.TrimStart('-'); // userNum2 = -1; //} //userNum2 = userNum2 * (Convert.ToInt32(input)); //wire2.Set2sComplement(userNum2); //Console.WriteLine("Your number binary representation: " + wire2.ToString()); //Console.WriteLine(); //Console.WriteLine("Wireset.Get2sComplement() test:"); //Console.WriteLine("Your number decimal representation (expected value: " + userNum2 + "): " + wire2.Get2sComplement()); //Console.WriteLine("============================================================================"); //Console.WriteLine(); //Console.WriteLine("============================================================================"); //Console.WriteLine(); //Console.WriteLine("HalfAdder tests:"); //HalfAdder ha = new HalfAdder(); //Wire in1 = new Wire(); //Wire in2 = new Wire(); //in1.Value = 0; //in2.Value = 0; //ha.Input1.ConnectInput(in1); //ha.Input2.ConnectInput(in2); //Console.WriteLine(ha.ToString()); //ha = new HalfAdder(); //in1.Value = 1; //ha.Input1.ConnectInput(in1); //ha.Input2.ConnectInput(in2); //Console.WriteLine(ha.ToString()); //ha = new HalfAdder(); //in2.Value = 1; //ha.Input1.ConnectInput(in1); //ha.Input2.ConnectInput(in2); //Console.WriteLine(ha.ToString()); //ha = new HalfAdder(); //in1.Value = 0; //ha.Input1.ConnectInput(in1); //ha.Input2.ConnectInput(in2); //Console.WriteLine(ha.ToString()); //Console.WriteLine(); //Console.WriteLine("Inner test result: " + ha.TestGate()); //Console.WriteLine("============================================================================"); //Console.WriteLine(); //Console.WriteLine("============================================================================"); //Console.WriteLine(); //Console.WriteLine("FullAdder tests:"); //FullAdder fa = new FullAdder(); //Console.WriteLine("Inner test result: " + fa.TestGate()); //Console.WriteLine("============================================================================"); //Console.WriteLine(); //Console.WriteLine("MultiBitAdder tests:"); //bool loop = true; //while (loop) //{ // Console.Write("Enter the num of bits (hit 'e' to exit): "); // string strIn = Console.ReadLine(); // if (strIn == "e") // loop = false; // else // { // int numOfBits4 = Convert.ToInt32(strIn); // Console.Write("Enter first num between -" + (int)Math.Pow(2, numOfBits4 - 1) + " and " + ((int)Math.Pow(2, numOfBits4 - 1) - 1) + " to compute: "); // int userNum41 = Convert.ToInt32(Console.ReadLine()); // Console.Write("Enter second num between -" + (int)Math.Pow(2, numOfBits4 - 1) + " and " + ((int)Math.Pow(2, numOfBits4 - 1) - 1) + " to compute: "); // int userNum42 = Convert.ToInt32(Console.ReadLine()); // MultiBitAdder mba = new MultiBitAdder(numOfBits4); // WireSet in1 = new WireSet(numOfBits4); // WireSet in2 = new WireSet(numOfBits4); // in1.Set2sComplement(userNum41); // in2.Set2sComplement(userNum42); // mba.ConnectInput1(in1); // mba.ConnectInput2(in2); // Console.WriteLine("Computation: (" + mba.Input1.Get2sComplement() + ") + (" + mba.Input2.Get2sComplement() + ") = (" + mba.Output.Get2sComplement() + ")"); // Console.WriteLine(mba); // } //} //Console.WriteLine("============================================================================"); //Console.WriteLine(); //Console.WriteLine("ALU tests:"); //bool loop = true; //while (loop) //{ // Console.Write("Enter the num of bits ('e' + 'enter' to exit the test loop): "); // string strIn = Console.ReadLine(); // if (strIn == "e") // loop = false; // else // { // int numOfBits5 = Convert.ToInt32(strIn); // Console.Write("Enter X input between -" + (int)Math.Pow(2, numOfBits5 - 1) + " and " + ((int)Math.Pow(2, numOfBits5 - 1) - 1) + " to compute: "); // int userNum51 = Convert.ToInt32(Console.ReadLine()); // Console.Write("Enter Y input between -" + (int)Math.Pow(2, numOfBits5 - 1) + " and " + ((int)Math.Pow(2, numOfBits5 - 1) - 1) + " to compute: "); // int userNum52 = Convert.ToInt32(Console.ReadLine()); // WireSet in1 = new WireSet(numOfBits5); // WireSet in2 = new WireSet(numOfBits5); // in1.Set2sComplement(userNum51); // in2.Set2sComplement(userNum52); // Console.WriteLine(); // Console.WriteLine("your binary num1: " + in1); // Console.WriteLine("your binary num2: " + in2); // Console.WriteLine(); // ALU alu = new ALU(numOfBits5); // //setting ALU properties: // alu.InputX.ConnectInput(in1); // alu.InputY.ConnectInput(in2); // Wire userWire1 = new Wire(); // Wire userWire2 = new Wire(); // Wire userWire3 = new Wire(); // Wire userWire4 = new Wire(); // Wire userWire5 = new Wire(); // Wire userWire6 = new Wire(); // Wire userWire7 = new Wire(); // Console.Write("Enter ZX value: "); // userWire1.Value = Convert.ToInt32(Console.ReadLine()); // alu.ZeroX.ConnectInput(userWire1); // Console.Write("Enter NX value: "); // userWire2.Value = Convert.ToInt32(Console.ReadLine()); // alu.NotX.ConnectInput(userWire2); // Console.Write("Enter ZY value: "); // userWire3.Value = Convert.ToInt32(Console.ReadLine()); // alu.ZeroY.ConnectInput(userWire3); // Console.Write("Enter NY value: "); // userWire4.Value = Convert.ToInt32(Console.ReadLine()); // alu.NotY.ConnectInput(userWire4); // Console.Write("Enter F value: "); // userWire5.Value = Convert.ToInt32(Console.ReadLine()); // alu.F.ConnectInput(userWire5); // Console.Write("Enter N value: "); // userWire6.Value = Convert.ToInt32(Console.ReadLine()); // alu.NotOutput.ConnectInput(userWire6); // Console.WriteLine(); // Console.Write("Data: "); // Console.WriteLine(" ZX = " + alu.ZeroX + "; NX = " + alu.NotX + "; ZY = " + alu.ZeroY + "; NY = " + alu.NotY + "; F = " + alu.F + "; N = " + alu.NotOutput + "."); // Console.WriteLine(); // Console.WriteLine("output is Zero (no = 0/yes = 1): " + alu.Zero); // Console.WriteLine("output is Negative (no = 0/yes = 1): " + alu.Negative); // Console.WriteLine("output binary: " + alu.Output); // Console.WriteLine("output decimal: " + alu.Output.Get2sComplement()); // Console.WriteLine("============================================================================"); // } //} SingleBitRegister sbr = new SingleBitRegister(); Console.WriteLine("single bit register testGate: " + sbr.TestGate()); Console.WriteLine("============================================================================"); Console.Write("Enter num of multibitRegister bits: "); int multiLength = Convert.ToInt32(Console.ReadLine()); MultiBitRegister mbr = new MultiBitRegister(multiLength); Console.WriteLine("multi bit register testGate: " + mbr.TestGate()); Console.WriteLine("============================================================================"); Console.Write("Enter WordSize bits: "); int wordsize = Convert.ToInt32(Console.ReadLine()); Console.Write("Enter AddressSize bits: "); int addresssize = Convert.ToInt32(Console.ReadLine()); Memory mmry = new Memory(addresssize, wordsize); Console.WriteLine("memory testGate: " + mmry.TestGate()); //exit point if needed: //Console.WriteLine("press any key to exit..."); Console.ReadKey(); }
static void Main(string[] args) { //This is an example of a testing code that you should run for all the gates that you create // // //Create a gate // AndGate and = new AndGate(); // //Test that the unit testing works properly // if (!and.TestGate()) // Console.WriteLine("bugbug"); // // //test or gate // OrGate or = new OrGate(); // if (or.TestGate()) // Console.WriteLine("done or"); // //test xor gate // XorGate xor = new XorGate(); // if (xor.TestGate()) // Console.WriteLine("done xor"); // // MultiBitAndGate mbaGate = new MultiBitAndGate(4); // if (mbaGate.TestGate()) // Console.WriteLine("done mba"); // // MultiBitOrGate mboGate = new MultiBitOrGate(4); // if (mboGate.TestGate()) // Console.WriteLine("done mbo"); // // MuxGate mux = new MuxGate(); // if (mux.TestGate()) // Console.WriteLine("done mux"); // // Demux demux = new Demux(); // if (demux.TestGate()) // Console.WriteLine("done demux"); // // BitwiseAndGate bwAg = new BitwiseAndGate(4); // if (bwAg.TestGate()) // Console.WriteLine("done bwAg"); // // BitwiseNotGate bwNg = new BitwiseNotGate(4); // if (bwNg.TestGate()) // Console.WriteLine("done bwNg"); //// // BitwiseOrGate bwOg = new BitwiseOrGate(4); // if (bwOg.TestGate()) // Console.WriteLine("done bwOg"); // // // WireSet ws = new WireSet(4); // ws.SetValue(8); // Console.WriteLine(ws.ToString()); //// // BitwiseMux bwMux = new BitwiseMux(4); // if (bwMux.TestGate()) // Console.WriteLine("done bwMux"); // // BitwiseDemux bwDemux = new BitwiseDemux(4); // if (bwDemux.TestGate()) // Console.WriteLine("done bwDemux"); // // BitwiseMultiwayMux bwMwMux = new BitwiseMultiwayMux(3,3); // if (bwMwMux.TestGate()) // Console.WriteLine("done bwMwMux"); OrGate or = new OrGate(); XorGate xor = new XorGate(); AndGate and = new AndGate(); MuxGate mux = new MuxGate(); Demux demux = new Demux(); HalfAdder halfAdder = new HalfAdder(); FullAdder fullAdder = new FullAdder(); WireSet wireSet = new WireSet(9); BitwiseAndGate bwag = new BitwiseAndGate(2); BitwiseNotGate bwng = new BitwiseNotGate(3); BitwiseOrGate bwog = new BitwiseOrGate(2); BitwiseMux bwm = new BitwiseMux(2); BitwiseDemux bwd = new BitwiseDemux(2); MultiBitAndGate mbag = new MultiBitAndGate(4); MultiBitAdder mba = new MultiBitAdder(3); BitwiseMultiwayMux bwmwm = new BitwiseMultiwayMux(5, 4); BitwiseMultiwayDemux bwmwd = new BitwiseMultiwayDemux(4, 4); SingleBitRegister sbr = new SingleBitRegister(); MultiBitRegister mbr = new MultiBitRegister(4); wireSet.SetValue(137); wireSet.Set2sComplement(-32); if (halfAdder.TestGate()) { Console.WriteLine("HAbugbug"); } if (fullAdder.TestGate()) { Console.WriteLine("FAbugbug"); } if (mba.TestGate()) { Console.WriteLine("MultiBitAdderbugbug"); } ALU alu = new ALU(16); if (alu.TestGate()) { Console.WriteLine("ALU bugbug"); } Console.WriteLine("FINISH HIM"); }