Project
LED "Looper"
No: 2
Date: 09-Mar-2001
Design a circuit that repeatedly illuminates six (6) LEDs in sequence. Use the CLOCK_10HZ circuit from Project 1 as a component in your new design. To test this project you will need a seven segment LED display (there is one on-board the XESS board, the BED-SPARTAN2+ board will need to use a plug-on board.) This circuit should define the following pins.
Pin Direction Description CLK_IN IN
This pin should be connected to the 24Mhz on board oscillator at location P77. LEDS[5..0] OUT
Connect these pins to the outer segments (labeled a-f) of a seven segment LED display. For a BED-7SEGMENT-DISPLAYS board, connect it to J4 and use locations P179, P180, P175, P174, P173 and P178. RESET* IN
This active low pin should reset the LED display to the point where segment A is the only LED illuminated. Connect it to the test jumper at location P61. This project builds on the first one by using the clock generator from project 1 as a "component" in this one. There are several styles of doing hardware design with VHDL and one of them is to define a bunch of small chips (like our clock generator) and then "wire them up" as we've done here to some LEDs in a 7 segment display.
Purpose
The purpose of this project is to practice using the 'component' keyword in VHDL to instantiate a previously solved problem into the current model. A very useful technique since you can build a bunch of simple parts, and then wire them together in a "super part" and build any circuit you want really. You could for example define components for AND, OR, NAND, and XOR functions then wire them up as you might chips on a circuit board. This is a very easy to understand process for hardware types (less easy for software types.)
Discussion
The LED looper is a circuit that illuminates 6 of the seven segments of an LED display in sequence. This creates the illusion that an LED is looping around the center of the display.
The big feature of this project will be that you instantiate a CLOCK_10HZ component and then hook it up internally to drive your segment driver circuit. It is helpful to remember when doing this project that, unlike software, you can assign a signal in one statement and still use its previous value. This will help when you are implementing a re-circulating shift register that moves one active bit around and around.
Going Further
This is a fun circuit and it makes a great little display. If you're into "active" jewelry you could make people dizzy. Once you've got the basic LED going in a loop, try extending it to multiple displays. There are lots of ways to take this project forward.
- Try to make two displays run at once, then make them run in opposite directions.
- Change the pattern in the display.
- Create an input for reversing the direction of the display.
- Allow the speed of the display rotation to be changed by various inputs.
Copyright © 2001, Chuck McManis, All Rights Reserved