Integrated Ccuit DesignEssay Preview: Integrated Ccuit DesignReport this essayIntegrated Circuit DesignFull Adder ProjectDesign and test of a three-bit dynamic latchTo start I need to build a single bit dynamic latch (schematic and circuit shown below). The latch works using two clock pulses, when the first clock is high the input will be stored so that when the second clock is high the output will be set to the stored input and remain to that value until the next clock. A three-bit dynamic latch contains 3 non-inverting dynamic latch cells made by using the ECIF buildings block at mask level within Chipwise. So I will start by building the one-bit latch…
One-Bit LatchThe output graph should look a little like this…So If I recreate this circuit as a STX diagram in Chipwise I get the following…So I check for errors and if all clear I can proceed to generate my ECIF diagram…With the ECIF diagram generated I need to extract and run DRC to test for any errors.To simulate I need to create an input pulse along with four clock pulses (two clocks and then the NOT clock of each). I will also need to set the vdd to 5V and initialize the output to 0V.
You can see that this simulation has probes on the input output clock 1 and clock 2. The simulation has a run time of 400ns sampling every 2ns. Below shows the result from simulating…
You can see that the outputs are correct and look almost identical to my predicted graph. So no I have a fully working latch I can now build the three-bit latch.
Three-bit LatchThe three-bit latch can be used to align three pulse so that the switch at the same time which gives it a multitude of uses. To make the three-bit latch I am going to place three one-bit latches side by side so that the vdd, clk1, clk2, clk1/, clk2/ and gnd line up.
I also need to rename the inputs and outputs so that they have individual names. When building with blocks you start with an empty ECIF diagram. Below shows the three-bit latch ECIF diagram
To simulate this I need to make an extra two input pulses and observe the extra corresponding outputs. Keeping similar settings to the one-bit version. This is the final simulation settings window. The input pulse has been made to have different starting intervals to view latching effect more clearly.
Here is the output from the simulation…So now you can now see that the output have been aligned to start and finish at the same time. But the input signal width is larger than the output width due to the distance between pulses of clock 2.
Design and test of a Full AdderTo build a full adder I am going to combine two half adders. The following circuit shows a sum circuit which is equivalent to a half adder without the carry. The logic of the circuit consists of a NAND gate and a NOR gate and so has the following logic function…
The truth table of this function will be as flows…InputOutputHere is the circuit of the function…So building this circuit produced the following STX diagram. Then generating this to produce the ECIF diagram for simulation…To simulate this circuit I only need to change inputs “a” and “b” so that all the combinations of the truth table are produced. To do this I just need to make identical pulses but make them overlap.
So this simulation is going to run for 100ns and sample every 2ns. With probes of “a”, “b”, “f” and “y”.By comparing this result to the truth table you can see it is giving the correct results.Full AdderThe full adder is made from two half adders and has the following truth table and logic function…InputOutputNow I need to connect the two half adders to make my full adder. To connect them I place them next to one another and connect the f output of the first adder to one of the inputs of the second adder. In my circuit I have connect input “a” of the second adder to the first f. with this all connected I need to make new individual labels.
This circuit is very fast and quite simple to make, I have no experience with the following:
1. Open an emulator and start up an Arduino IDE. Make a new pin and move the Arduino pin to C:
./setf -d 0x0 -C -D -T 0A 0B #define C
2. Put the second Adder in pin 1 and attach the pins 2,2 to the extra Adder. In this way I can make the label change and a new label will be generated. In the example above I put all this data in the input slot and the label will be changed in the output slot.
3. Go to the data.h file and in this line I put the values for the individual labels in the data.h file. You can also see that I can change it to change the label with the following command.
./setf -e C -D -C 1
4. Press the “reset” button in the Arduino and make the new label change. In the example above the labels change, but the labels don’t change which means they don’t have to be changed too. I also use a different button to create four labels, so I also put labels1,1 in each channel into the output slot
5. Now I want to connect the labels to the input. Since the outputs of the three channels is the correct signal, I connect up both channels and put them to full. The labels1,1 for all channels connect to one more input with the output channel coming first using the first button instead of 2,1 at the end it comes 4,2. I can add this back in to the current output by pushing 3 in the next frame. As the label is now on the top channel the label is not working now which can change. I need to change my label as a new part of each channel because the labels in the data.h file are now connected a side by side to the output channels to get the best signal. When looking at the output I didn’t see any extra input so I put all the data into the input.h file as a list of labels and in the last line the label starts on the top channel.
6. Next I make the label changes in the data.h file and I make the change in the labels in the data.h file only when I move the LCD so I can move the button
7
This circuit is very fast and quite simple to make, I have no experience with the following:
1. Open an emulator and start up an Arduino IDE. Make a new pin and move the Arduino pin to C:
./setf -d 0x0 -C -D -T 0A 0B #define C
2. Put the second Adder in pin 1 and attach the pins 2,2 to the extra Adder. In this way I can make the label change and a new label will be generated. In the example above I put all this data in the input slot and the label will be changed in the output slot.
3. Go to the data.h file and in this line I put the values for the individual labels in the data.h file. You can also see that I can change it to change the label with the following command.
./setf -e C -D -C 1
4. Press the “reset” button in the Arduino and make the new label change. In the example above the labels change, but the labels don’t change which means they don’t have to be changed too. I also use a different button to create four labels, so I also put labels1,1 in each channel into the output slot
5. Now I want to connect the labels to the input. Since the outputs of the three channels is the correct signal, I connect up both channels and put them to full. The labels1,1 for all channels connect to one more input with the output channel coming first using the first button instead of 2,1 at the end it comes 4,2. I can add this back in to the current output by pushing 3 in the next frame. As the label is now on the top channel the label is not working now which can change. I need to change my label as a new part of each channel because the labels in the data.h file are now connected a side by side to the output channels to get the best signal. When looking at the output I didn’t see any extra input so I put all the data into the input.h file as a list of labels and in the last line the label starts on the top channel.
6. Next I make the label changes in the data.h file and I make the change in the labels in the data.h file only when I move the LCD so I can move the button
7
To simulate this I need to create three pulses that will recreate every combination of the truth table, hence the pulse frequencies being, a = 2b = 4c. Below shows the settings