Re: RAM8 Script test pattern

Posted by gs99 on
URL: http://nand2tetris-questions-and-answers-forum.52.s1.nabble.com/RAM8-Script-test-pattern-tp4026159p4026161.html

cadet1620 wrote
The input side of RAM is synchronous-- the input only changes the RAM's data when a clock occurs. The output side is asynchronous-- whenever the address changes, the output data changes.
I'm confused.
I couldn't find these terms in chapter 3:
"input side", "synchronous", "output side", "asynchronous"

I thought all of this was controlled by the clock - synchronous.

How do those terms relate to these lines in the script?
Example A.
set in 11111,
set load 1,
set address 3,
tick,
output;
tock,
output;

And how do they relate to these lines in the script?
Example B.
set address 1,
eval,                      
output;

What's the difference between "set address 3" in Example A and "set address 1" in Example B?
The main reason for setting the address is to change the contents of that memory, correct?
In a real computer, are things not being set within a clock cycle, as portrayed in Example A format?
The format of Example B seems to be "out of place".

cadet1620 wrote
The tick/tocks are testing the input side, the evals are testing the output addressing.
The RAM8.cmp file shows what the address should be after Example A.
Isn't that testing the "output addressing"?
Why are evals needed?

Another question. Figure 3.5 shows actions that occur in times (22-34).
The load bit is asserted in time 29, and the input of 527 is outed in the next time, 30.
But in these scripts, if "set load 1" in tick, the input is outed in tock.
But aren't tick and tock parts of the same time cycle?