Mid-Term Marking
Question 1
2 marks per correct term in the expressions for the guaranteed
times (total of 14 marks)
1 mark maximum for the numerical results (correct guaranteed
value and excess) (total of 5 marks). 0.5 marks were subtracted
for each missing/wrong value and/or for not explicitly stating
that a requirement was met.
Some common mistakes were: confusing the CPU and chip WR* signals
and adding two timing specifications that don't end/start at the
same point.
Question 2
Since there were so many different types of answers I subtracted
marks for each mistake up to the limit for each part of the
question.
A maximum of 13 marks were deducted for mistakes in the truth
table (TT) portion with marks subtracted as follows:
-
1.5 marks subtracted for each missing or incorrect
condition (row) in the truth table. This includes
mistakes such as changing state or turning on an enable
when CS* is not enabled, turning on an enable when WR* is
asserted, not changing or resetting the state on WR*,
etc. For rows with don't-care conditions (X's) marks
were subtracted for each applicable row (e.g. an
incorrect row with 2 X's lost 4*1.5=6 marks). In some
cases the number of applicable rows depended on the
number of states used. See note 1 below for more details
on missing rows.
-
2 marks subtracted for each missing column in the truth
table
A maximum of 8 marks were deducted for the CUPL statements with
marks subtracted as follows:
-
1 mark subtracted for each missing term in an expression
with a maximum of 2 marks deducted for errors in each
enable (E1 and E2) expression and a maximum of 3 marks
deducted for errors in the next-state (*.D) expressions
-
0.5 or 1 mark subtracted for obvious syntax errors
depending on how severe I considered the error (e.g. -1
for using over-bars on variable names or -0.5 for leaving
out ".D" qualifiers when assigning to latch inputs or not
having a clock input.)
-
0.5 mark subtracted for missing/extra negation (!) in an
expression.
-
marks were not subtracted if the CUPL expressions matched
the TT (even if the TT was wrong) unless the TT was
missing or trivially short.
Notes:
(1) A truth table must include an entry for each possible input
condition for every state used -- there is no universal
``default'' for output or next-state values. You can check your
answer by counting the number of lines in the TT and make sure it
matches the number required (states*2^(number of inputs)).
(2) Avoid using a don't care (X) unless you are sure it
applies. Many people used X's as a shortcut and instead wound up
losing a lot of marks. Similarly, avoid using X as an output
value and don't simplify expressions unless you are sure of the
answer.
(3) A design where the outputs (E1*, E2*) are also the state
variables is a Moore state machine and cannot meet the
requirements for the device described in this question. The
design method taught in this course applies to both Moore and
Mealy state machines. People who used Moore state machines
generally received very low marks for the first part of this
question.
Note: To avoid the above problems in the final exam you will
have to use truth values (1=asserted) in your truth tables, you
will not be allowed to use don't-cares and you will have to
explicitly state the output for each input/state combination.
Question 3
(a) 2 marks for each question. But note the following:
-
For part 2 I gave 0 (zero) marks if you gave your answer in terms
of 0 and 1 instead of H and L. Not only did the question
explicitly ask for the signal level as H/L but by this point in
the course you should know that 0 doesn't always mean L.
-
For part 3 I subtracted 1 mark if you simply called it a spurious
read cycle or explained what was happening but didn't explicitly
say that it was an interrupt acknowledge cycle.
(b) 2 marks were given for each of the following actions that
your code performed correctly:
- had an ORG statement (I usually forgot to check the address)
- saved and restored the registers that were used (2 marks for
saving, 2 marks for restoring)
- incremented the pointer at $1000
- copied a byte from the I/O port to memory
- returned with an RTE instruction
Marks were only deducted for syntax errors if they changed the
meaning of the code or made it ambiguous
No marks were assigned/deducted for comments.
The most common error in this question was probably using too
many or two few levels of indirection on the ``pointer''
variable.
If you think your exam was not marked according to the criteria
above please hand it back to me with a note explaining where you
think the discrepancy is. I'll check the marking of your exam
(possibly including other answers if I have time). Do not write
on your exam paper if you want me to re-mark it.
Please do not tell me I marked someone else
differently and that therefore you should get marked the same
way. The above marking criteria applies to everyone. If I
didn't mark someone else's exam this way then I made a mistake
marking their paper, not yours.
Ed Casas / edc@cce.com