Mon, 2 Mar 2009, 00:25

Sorry I am just getting this to you now.  I received the following a few
hours ago from a student working on Lab 3.  I understand that some of the
rest of you had questions on this, and that my TAs answered your questions.
I am sending this anyway just to be sure you all are on top this.

A student writes:

	Dear Professor Patt,

	In the first paragraph of section C.5.2 in Appendix C that was given to
	us, the process for loading the MDR is described. Unless I'm
	misunderstanding it, the first paragraph states that if MAR[0] = 0, 
	MDR is
	loaded with SR[15:0], and if it's 1, then MDR is loaded with SR[7:0] in
	both the high and low bytes. However, in the very next paragraph, it
	refers back to this process, stating, "Recall that if DATA.SIZE is BYTE,
	MDR was previously loaded with SR[7:0]'SR[7:0]." This seems like a
	contradiction to me. Could you clarify how the MDR is loaded?

	<<name withheld to protect the student troubled by the contradiction>>

Yes, you are quite right, they contradict each other.  However, they do so
only in that there are "don't care" conditions that get set one way if we
use MAR[0} and a different way if we use DATA_SIZE.  Since they are "don't
cares," even though MDR gets loaded differently in the two cases, it does 
not affect anything meaningful.

That is, what I need in MDR after loading is (x1, x2, x are all don't care):

MAR[0]  DATA_SIZE |  MDR[15:8]  MDR[7:0]
  0        B      |     x1      BUS[7:0]
  0        W      |  BUS[15:8]  BUS[7:0]
  1        B      |  BUS[7:0]      x2  
  1        W      |     x          x

I can get this desired result in two ways, as described in the contradictory
paragraphs of the student's message.  If I load based on MAR[0], then x1 gets
loaded with BUS[15:8], and x2 gets loaded with BUS[7:0].  If I load based on
DATASIZE, x1 and x2 are both BUS[7:0].

Actually, we do not need both control lines, and should remove one of them.

For those who were in class last Wednesday, you note that one of the four
input combinations due to MAR[0], DATA_SIZE is problematic, and we will have
to deal with that situation before much longer.  But on Lab 3.

Hope Lab 3 is now just a pleasant memory.

Yale Patt