CSE467: Advanced Logic Design
Carl Ebeling, Winter 1999
Final Project Description
Due Dates
Distributed Feb 22
Initial Design Specification: March 1
Initial Schematics/Verilog: March 5
Completed Circuit Due: March 12
Overall Project Description
The device you will be implementing is a simple electronic Rolodex which
stores information from cards' magnetic stripes. Each time you swipe a
card, the information from the magnetic stripe will be stored in memory
and also displayed on the LCD display. The memory will have space for
many card records; each new card swiped will be stored in the next memory
location. It will be convenient to think of the card records being
numbered starting at 1. Record 0 is always empty, and this is what is
displayed at reset. The first card will be read into record 1 and also
displayed. The second card read will go into record 2 and displayed.
Two push buttons will allow the user to "scroll" through this memory.
The "back" button goes to the previous record in memory and displays the
card stored there. The "forward" button goes to the next record in memory
and displays that card; the "back" button can be used to go back all the
way to record 0. In addition, there will be a reset button that will go
back "home" to record 0. The next card read is always stored at the next
location after the card shown on the display. That is, if we have
scrolled back to record 3, then the next card will be stored as record 4.
Project Specification
The first thing you must do is decide on a complete specification of your
project. For example, what happens if a button is pushed in the middle of
a card swipe? What kind of cards will you handle? What if the card swipe
did not work properly? How many and which characters will you display?
How about characters on the second line of the magnetic stripe? Will you
keep track of the number of cards read?
This specification will evolve over time as you think of more things.
Your "spec" will be an online document that you add to. By the time you
have completed the design, your specification should be complete.
Partitioning the project
The project can be partitioned into four main pieces: the magnetic stripe
reader, the memory controller, the LCD display and the central controller.
This partitioning is shown below:
After you have finished an initial specification of the overall
project, your next design task will be to define the interfaces of each
module. We have already defined the interface to the LCD module and
designed its implementation, so you have an idea of what an interface
should be. You have also designed an interface for the magnetic card
stripe reader and connected it to the LCD interface. You will now need to
design a similar interface for the memory. You will want to make this
interface as simple and as abstract as possible, hiding all the ugly
details inside the module. Think of each module as a procedure call.
With good interfaces, you will be able to divide your design up and have
different group members work on different parts.
The central controller is the "main program" and will co-ordinate the
other three modules. Data should be allowed to pass directly between the
other modules, but the control module will control the operation of these
modules via control signals. Your module interface design may evolve as
you do your design and you think of more issues. But any changes will
have to be reflected in the implementation of the modules. So thinking
hard about the interfaces and how the central controller will control the
show before you start will save you time later on.
The interface specification will consist of two parts. First, there is
the description of the signals that pass between two components. Second,
there is the operation of the interface, i.e. the interface protocol.
You can describe the signals by redrawing the above system block diagram
in more detail, showing exactly what signals pass between the different
modules. The second part will have to be text, supplemented with timing
diagrams which show how the interface signals interact.
You should hand in an initial design and interface specification on
Monday, March 1.
Card Memory
The XESS board has a 32Kx8 SRAM chip which we will use to store the card
data. I will give you a data sheet describing this SRAM and we will spend
time in class talking about how to use a simple SRAM like this. The
Central Controller should not read and write this memory directly.
Instead, the memory module should be designed with a higher-level protocol
which allows the Central Controller to read and write entire records in
the memory. By isolating complexity in the memory controller, the central
controller can be made simpler.
Central Controller
The brains of the whole project will be in the central controller. It
keeps track of data coming from the mag stripe reader and directs it to
the memory and the LCD display. It also keeps track of the scroll
buttons, executing the "forward" and "back" commands. If you design the
interfaces correctly, the design of this module will be a relatively
straightforward state machine.
Design Process
You should proceed as follows:
- Write as much of the specification as you can to start with, updating
it as you go along.
- Define the interfaces for the mag stripe reader and the memory module.
Think through how the modules will interact and how data will get moved
around. Remember that the main controller has little control over the mag
stripe reader and will have to keep up with whatever it does.
- At this point, turn in an initial design specification so that we can
conduct a design review of your project. This will be due March 1.
- Design and test the memory module and the main controller.
- Simulate the entire project. We will tell you how to simulate this
memory.
- Implement, test and debug the project.
Extensions to the Project (Extra Credit)
If you are worried that the project is too easy, here are some ways the
project can be extended. You could figure out how to display more data on
the card using a more complicated scrolling interface. For example, an
extra module could be added that implements an RS-232 serial interface
through which the data in the card memory could be sent to a PC or a
Pilot. Or you may have ideas of your own; if so, feel free to discuss
them with us.
Hand In:
- March 1: A complete design specification, including details on exactly
what your device will do (as well as you know), a detailed interface
specification for all modules, and a written specification of how each
module operates. For example, this should indicate how data is stored in
memory and how addressing is done. We will do a design review and give
you feedback.
- March 5: Initial design (schematics and Verilog). These should be
complete, if not completely working.
- March 12: Demonstrate completed circuit. Hand in complete design:
specification and documentation, schematics, Verilog.