This is your second design assignment. This assignment requires you to design a complex state machine.
You are designing a digital alarm clock. There are various designs you can attempt. More complex designs are worth more marks than simpler designs.
The basic clock displays the time in 12 hour mode. From 01:00:00 to 12:59:59. A more advanced clock allows the user to select whether the time is displayed in 12 or 24 hour mode. This is selected by use of a switch, which is high for 12 hour mode, and low for 24 hour mode. Changing between 12 and 24 hour mode does not require the time subsequently displayed to be valid, however, on the next hour change the time must become a valid time. If the hour is adjusted whilst invalid it must become valid on the next change. Valid 24 hour times are 00:00:00 to 23:59:59.
The full clock takes the advanced clock and allows you to set the time, and easily adjust for daylight savings.
The alarm clock extends the full clock with an alarm. The alarm can be set for any valid time. When the alarm is triggered the alarm signals for one minute and then resets. There is a silence button for the alarm which will silence the alarm, and an on-off button for the alarm which will prohibit the alarm from triggering.
The supreme clock includes a calendar unit. It will allow the date to be set, and will count the days through the year. At 02:00 on the 1st of October the hour will also increment, leading to 01:59:59->02:00:00->03:00:01, and at 03:00 on the 1st of April the hour will be decremented, leading to the sequence on the display of 02:59:59->03:00:00->02:00:01. The supreme clock may, or may not include leap years of some variant. Finally, the supreme clock does not need to handle changes between calendars, but can assume the Gregorian calendar in perpetuity.
Requirements:
You are to design a complex state machine. This state machine will encompass multiple simpler state machines. At a minimum you will need six simple state machines, one each for: seconds units, seconds tens, minutes units, minutes tens, hours units, hours tens. You are provided with a one second clock pulse that will be triggering a state transition for your system.
For each simple state machine you need to provide the state transition table, as well as the equations for that state machine. Provide the interconnections between the simple state machines that cause this to be a complex state machine.
The minimum inputs your system is provided with are:
hsi
|
Hour Set
|
When true increments the hour count
|
msi
|
Minute Set
|
When true increments the minute count
|
sci
|
Second Clear
|
When true forces the seconds count to zero
|
aoi
|
Alarm On
|
When true the alarm is enables, when false the alarm does not trigger
|
asi
|
Alarm Silence
|
When true silences the alarm if it has been triggered
|
ahi
|
Alarm Hour Set
|
When true increments the alarm hour count
|
ami
|
Alarm Minute Set
|
When true increments the alarm minute count
|
dso
|
Daylight Savings
Off
|
When true decrements the hour count
|
The general outputs your system should provide are:
suo0-3
|
Second Units
|
Seconds display, counts from 0-9
|
sto0-2
|
Second Tens
|
Seconds display, counts from 0-5
|
muo0-3
|
Minute Units
|
Minutes display, counts from 0-9
|
mto0-2
|
Minute Tens
|
Minutes display, counts from 0-5
|
huo0-3
|
Hour Units
|
Hours display, counts from 0-9
|
hto0-1
|
Hour Tens
|
Hours display, counts from 0-1 or 0-2
|
h24
|
Hours 24 Mode
|
When true indicates that 24 hour mode is active
|
pm
|
AM/PM Display
|
When true indicates that the time is PM
|
amuo0-3
|
Alarm Minute
Units
|
Alarm Minutes display, counts from 0-9
|
amto0-2
|
Alarm Minute
Tens
|
Alarm Minutes display, counts from 0-5
|
ahuo0-3
|
Alarm Hour
Units
|
Alarm Hours display, counts from 0-9
|
ahto0-1
|
Alarm Hour
Tens
|
Alarm Hours display, counts from 0-1 or 0-2
|
alarm
|
Alarm triggered
|
When true indicates that alarm is triggered.
|
day0-4
|
Day count
|
Binary value of the day
|
mon0-3
|
Month Count
|
Binary value of the month
|
yearXX
|
Year counter
|
Binary value of the current year
|
For each output provide its definition in a state transition table as well as its equation.