VHDL Stopwatch with Split

advertisement
VHDL Stopwatch with Split
A presentation
by Scott Conaton
and Colin Dolcetti
Project Objectives
• Build and implement a fully functional
stopwatch using VHDL programming
techniques developed in class.
• Demonstrate the use of the stopwatch to the
class as a whole.
Design
• We developed several new modules to
utilize in the main program
• Time_Gen: a time value generator, which
outputs the time elapsed since the input,
clkin has been set to 1.
• BTNx: toggles the value of its output
whenever it recieves a clock pulse.
Time_gen
• This module consists of four modified
counters, tenscnt, onescnt, tenthcnt, and
hunscnt.
• The output of each of these counters is its
corresponding time digit.
• The counters each receive the clock pulse
and delay it the appropriate time
clk
Time_gen
clr
clr
tenscnt
clr
onescnt
clkin
clkin
q4
clr
tenthcnt
clkin
q3
hunscnt
clkin
q2
q1
Main Program
• The main program takes the time value
output by time_gen and sends it to the data
registers T and N.
• The display register, DI, loads the value in
N into the display module, which then
outputs the time value to the 7-segment
displays
FinalMain
BTN?
clkin
Time_gen
Q
clk1
BTN(1)
debounce
tload
clr
T
clk
clk
clr
BTN(2)
T
debounce
tload
clr
N
clk2
clk
N
diload
BTN?
tload
clr
DI
clk
N2
display
A(3:0) AtoG(6:0)
clk
dig4(3:0)
dig3(3:0)
dig2(3:0)
dig1(3:0)
clk4
osc_4k
dig3
dig4
dig2
dig1
anode
"1111"
dig7seg
display
A(4:1)
AtoG(6:0)
Main Program Controls
• When either button is pressed, its value is
sent through a debounce to reduce it to a
short clock pulse.
• The pulse then travels through the BTNx
module which, if BTN(1) is pressed, toggles
the clkin signal, and if BTN(2) is pressed,
toggles the diload signal.
Effect of clkin and diload
• Clkin and diload are initially set to 0 and 1
which stops time_gen, and allows the value
in N to be loaded into DI and displayed.
• When clkin goes to 1, time_gen begins to
count and the current value is output to the
displays.
• When diload goes to 0, DI no longer loads
any new values from N.
Effects (Cont.)
• At this point N still updates from time_gen
every pulse, but only the last value in DI is
displayed, until BTN(2) is pressed again,
resetting diload to 1.
• This is how we created the split effect.
Demonstration of Stopwatch
• We will now demonstrated the final
implementation of our stopwatch program
• Please hold your questions until the demo
has finished.
Download