|
Lab Three: Multiplexers, Arithmetic, and IP Cores
Objectives:
By the time the student has completed this lab and it's associated tutorial, the student should be familiar with the following:
1) Using multiplexers in circuit design.
2) Using the Xilinx
ISE software and ModelSim to create and verify the operation of a simple digital arithmetic design.
3) Building on parts one and two to better understand one of the most fundamental blocks of a digital
computer: the full-adder.
4) Designing complex circuits using limited resources.
5) Using the Xilinx CORE Generator System to create designs in the Xilinx ISE design suite, and
simulate them using ModelSim.
Part I: Multiplexers
Here, you will be using multiplexers to implement a basic subtractor circuit. The multiplexer you will be using is the 8-to-1
multiplexer. You will need to decide how to best set up the control lines and inputs to derive the correct results. It is suggested you use the following design process: A) Design the circuit on paper. - Fill out the Karnaugh maps for subtractor. Remember that it has three inputs: X, Y, and B_IN, and the two outputs: D, and
B_out. This means you will need two Karnaugh maps.
- Design this circuit using the 8-to-1 multiplexers. Look at your Karnaugh maps and decide how to best setup the control lines, and the
eight input lines to generate the two correct outputs.
- Draw the logic diagram for the subtractor. This will give you some idea of how much board space you will save when you implement the design using
multiplexers, rather than basic logic gates.
B) Implement your design on the prototyping boards in the laboratory. Debug your design and then demonstrate it to your TA.
Part II: Using Xilinx.
Here, you will take the circuit you designed in Part I, and implement it using the Xilinx ISE design suite. Recall that we've shown you how to do this in the lab
tutorial. Multiplexers are represented in VHDL by case-statements. In the 4-to-1 multiplexer example in the tutorial, that meant that we had a case statement with four possible valid results, looking
like this:
case XY_IN is when "00" => DIV_OUT <= BROW_IN;
Successfully completing the first half of the tutorial will be sufficient
introduction in this case. However, you will have the chance to develop your own VHDL and simulation testbench in the last part of the lab.
Part III: Introduction to the Full-Adder, and Logic
Design With Limited Resources.
Recall that in the lab lecture, we covered how to design an adder just using multiplexers. Recall how many components we saved implementing a subtractor using
multiplexers in Part I of this lab. However, for this part of the lab, we will require that you use either NAND gates, or Exclusive-OR gates to implement a full-adder.
In the digital design world, the
engineer will not always be capable of obtaining the components he or she would like to use. Customers may have a close relationship with a given semiconductor company, and thus, will require you to use that
company's devices. Or, a customer may want you to design a device to meet certain cost constraints,or environmental tolerances. For this lab, you must develop and implement your full-adder utilizing only
NAND gates, or Exclusive-OR gates. Therefore, in this lab, paying close attention to your Karnaugh maps can offer handsome payoffs, in terms of the number of devices you end up using in your design.
Use the following design process to guide you in this part of the lab:
A) Design the circuit on paper. - Fill out the Karnaugh maps for the adder. Remember
that it must have three inputs: A, B, and a Carry_in. It will also have two outputs: Sum, and Carry_Out. Again, this means you will need two seperate Karnaugh maps, one for each output term.
- Draw the resulting logic diagram. Recall that each of those symbols would be 1/4 of a 7400 IC. And with that in mind . . .
- Map out how you plan to arrange the chips on the
prototyping board. Do this on a piece of paper. When mapping the chips, try mapping along the following guidelines:.
- Logical organization. That is, devices should not be scattered
randomly around the board.
- Wiring concerns. The less your final design resembles a rat's nest, the easier it will be to test and debug your circuit.
B) Implement the circuit in lab.
- Assemble the circuit on the prototyping boards in the laboratory. - Debug the resulting circuit, and verify it's function. - Demonstrate the successfully completed circuit to your TA.
Part IV: Using The CORE Generator System.
For this part of the laboratory, you will be working exclusively in the ISE design suite. Using the second part of the tutorial as your guide,
create an ISE project and start the CORE Generator System. You will need to set it up as shown below:
|