PC/CP220 Digital Electronics Lab
Introduction to CPLDs
Objective:
- Understand how to program logic on a CPLD.
- Understand the functionality of bargraph LED displays
Background:
In this circuit, you'll wire up a CPLD and a bargraph LED.
Programmable Logic
Device,
or PLD,
is a
general name
for a
digital integrated circuit capable of being programmed to provide a variety of
different functions.(The "C" in CPLD stands for "complex".)
Why use a PLD?
A PLD is good for prototyping
designs. Only a single chip is required to implement a complete logic
design. It allows
us to
simplify designs and reduce development times. Changes in the design can
be easily implemented by reprogramming the device. Simple PLDs (such as the
one we
use in our lab) can realize from 2 to 10 functions of 4 to 16 variables on a
single integrated circuit
One style of CPLD board looks like this:
[click image to get a larger image]
The other style of CPLD board looks like this:
[click image to get a larger image]
Functionally the two types of boards are the same.
Bargraph LED displays
A
bargraph LED
is a collection of LEDs arranged
side-by-side in a single device. It's a compact way to display several
bits at once.
As with any LEDs, each one needs to be used with a resistor to limit
current. This can be done by putting an individual resistor in series
with each one. However, since they're all in a row, it's much easier to
use a resistor array instead.
If the common pin of the resistor array is grounded, then a high on the
other side of any LED should light it up, provided the LED is the
right way around. If you're not sure which way the display should
go, just turn it around if it doesn't work one way.
If you want a LOW (0) signal to light up the LED,
simply reverse the common connection and turn the bargraph display around.
(You need to turn the bargraph around since current will need to flow
in the opposite direction.)
The actual resistor value isn't critical;
anything between about 100 Ω and 1 k Ω should work. With
smaller values, the LED will be brighter; with larger values, it will be
dimmer.
Ideally you want to choose a large value that makes the LED bright
enough to see clearly.
The image below shows how the connections are the same as for an
individual LED. (The signals come in on the yellow wires.)
As wtih individual LEDs, they can be connected either active high or
active low. In the image below, the LED and bargraph on the right
are connected for active high signals, on the yellow
wires,
while the LED and bargraph on the left
are connected for active low signals, on the orange
wires.
Task:
Parts list
- CPLD board
- USB blaster and cable
- Bargraph LED
- Resistor Arrays (470 Ω) for the display
Using Altera Quartus II with the CPLD board
Creating a New project
(If you need a reminder of how to do this, go to the Quartus II introduction)
-
Always start by creating a new
folder. Do not put new files in the same folder as your previous
projects!
-
Then create a new
project called Myxor.
Then create a BDF file. Do not
start by creating a BDF file. Make sure all of your files are in the
project folder.
You'll be creating an exclusive or from AND, OR, and NOT gates.
For two inputs, A and B, the XOR function is given by:
f = AB
+ AB
-
Draw the circuit and compile it.
For the device, choose the EPM7064SLC44-10 from the
MAX7000S Family as before,
which is the device we are using in our lab.
If you get a message like this, don't worry; it's fine.
Assigning Pins
- Select Assignments | Pin Planner from the pull-down
menu.
You'll see a schematic of your device which shows the status of various
pins, with a list of your inputs and outputs below.
-
You will notice that the pins around the edges of the chip have
different symbols. The plain round circles with nothing written inside of
them are used for input and output.
Note: Even though pin 1 and pin 44 show as
round circles, they have special functions so don't try to use them.
Don't assign any of the extra signals that
Quartus creates; only assign the inputs and outputs that you created.
Assign all of your pins to fit in one "bank" of CPLD
connections, so
pins are close together.
Banks are:
- 1-10 (This has 5 i/o pins available.)
- 13-22 (This has 7 i/o pins available.)
- 23-32 (This has 7 i/o pins available.)
- 35-44 (This has 5 i/o pins available.)
The following diagram shows the useable I/O pins in white.
One style of CPLD board looks like this:
[click image to get a larger image]
The other style of CPLD board looks like this:
[click image to get a larger image]
Here is bank two.
One style of CPLD board looks like this:
[click image to get a larger image]
The other style of CPLD board looks like this:
[click image to get a larger image]
-
Select each input and output from the bottom of the screen and
drag it on top of the pin you would like to use - make sure you click on
the name. (ie. if you want A to be pin 4, click A on the bottom of the
screen and drag it on top of the circle under the label 4).
Remember, use ONLY the plain round circles!!
You only need to assign your inputs and
outputs;
you will probably see some other signals listed that you didn't specify.
Leave them as they are.
When you are finished you can close the window.
Recompile
You will need to compile
your design again to fit your design on the PLD board.
- Click on Processing | Start Compilation to start
compilation.
Set up Programming Hardware
Setting up
Programming Hardware in Quartus II Software:
- Connect your USB-Blaster cable to one of the USB ports on your
computer.
- Choose Tools | Programmer.
The Programmer window will open.
The selected programming hardware
is identified as. If it says
"USB-Blaster [USB-0] mode
JTAG" you have the correct hardware (skip to connecting programming hardware to the device).
- Click the Hardware Setup
button to open the Hardware Setup window.
Programming hardware that is
already set up appears in the Available hardware
items window.
- If the USB-Blaster is not listed as the
Currently selected hardware, select it and click
the Add
Hardware.
- Click Close.
At the main window, ensure it displays
USB-Blaster[USB-0] mode JTAG (see figure below)
Downloading Your Design to the CPLD
Connecting
Programming Hardware to the Device:
- Connect CPLD board to USB-Blaster cable (connected to a USB port on
your PC).
One style of CPLD board looks like this:
The cable should be attached so that the red edge of the USB-Blaster
cable is next to the number (usually a "1" or a "2") that has been
written on the board with a marker. IF YOU'RE NOT SURE, ASK!!!
[click image to get a larger image]
The other style of CPLD board looks like this:
The cable should be attached so that the red edge of the USB-Blaster
cable is away from the edge of the board as shown below.
IF YOU'RE NOT SURE, ASK!!!
[click image to get a larger image]
- Connect the ground and power (5v) to the CPLD board
and turn the power on.
- Click Auto Detect, and Quartus II
should detect the CPLD.
If it doesn't, there are three possibilities:
- You haven't chosen the correct device.
- Your cables aren't connected correctly.
- Your CPLD is faulty.
Problem |
Solution |
Unable to scan device chain. |
This is generally a problem with power. Check:
- Are the power and ground connected properly and turned
on?
- Is the red strip on the USB-Blaster cable connected to the
proper side of the board?
|
JTAG error |
This is generally a problem with the connection. Try:
- Make sure you have the correct device selected
- ensure 7064 (not 7032)
- ensure SLC (not STC)
- Unplug the USB-Blaster cable and reconnect.
- Try a new USB-Blaster cable.
- Try a new CPLD board.
|
License error |
This is generally a problem if you haven't done anything with
the software recently.
The server times out and loses the connection to the
licensing file.
- Close Quartus and reopen.
|
Once it autodetects correctly, you can proceed.
-
Delete the file that shows up.
- Click Add File
choose 'pof' file
- Check Program/Configure
- Select Start, you should see the progress indicator
increasing. (If it instantly jumps to 100% it indicates a
problem.)
Wire Input and Output
- You can unplug the USB-Blaster cable and turn off the power while
you are wiring your circuit. You will not lose your program.
- Use the debugger board to wire the input (use
control mode) and
a bargraph LED display
for the output.
If you want, you can display the inputs on the bargraph display as
well.
-
Be sure to
daisy-chain
the breadboard(s) and the debugger board,
rather than using several clip leads or having clip leads holding more
than one wire.
You may want to use the debugger board for output to see that the CPLD
is working, and then
wire up the bargraph display once you know it should be getting the
correct signals.
This is another example of modular design.
Troubleshooting
If you smell smoke turn off the power immediately and DO NOT touch
the Altera chip. It gets extremely hot if it is short circuited.
Check all your power and grounds, have someone else check your
power and grounds - something IS wrong!! Hopefully, your chip
will still work. :)
- First, double check your simulation to ensure that your
Quartus design is correct.
If it is not correct then you will not get the correct
output no matter how well
everything else is connected.
- Next, check your device, even if you think it's right... double check.
If you need to change it
make sure you recompile.
- At the top of your pin out file make sure it
reads ASSIGNED TO AN: EPM7064SLC44-10
- ensure 7064 (not 7032)
- ensure SLC (not STC)
- Check your pin assignments and make sure you have not assigned any of
your inputs or outputs
to reserved pins or specialized pins. Plain circles only
(with no writing inside).
- Make sure you have power and ground to your boards (CPLD,
debugger, breadboard).
- Make sure you have the debugger board set up for input and
output correctly.
- If some signals seem to be right and some seem to be wrong,
check your pins to make sure you
are in the correct place and use the multimeter to ensure
you have good connections.
- If you're still getting an output that doesn't change, go back to
the pin planner and move the output to a different pin.
Recompile, download,
and change your wiring.
(Sometimes individual pins can get damaged so that they
don't work correctly.)
Demonstrate the circuit to the lab demonstrator before you
leave.
After Quartus II is closed, if you worked on the
C: drive
copy your directory to the E: (flash) drive or to the
I:
drive, since C: drive files will be erased when the computer is shut
down.