Problem #1 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
1. (25 pts) List the ROM contents in hexadecimal to
implement the Moore type FSM shown below. The inputs A.H and B.H
are synchronized. The states are assigned in numerical order, e.g.
for state S4, Q2Q1Q0=100. (Follow normal state diagram assumptions:
an output is not asserted if it is not listed, holding in the same state
is implicit, etc.) Fill in ROM contents in hexadecimal. (Binary answers will receive no credit):
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Problem #2 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
2. (15 pts) You are given the state table for an FSM and a
partial schematic for the state machine. Complete the design of
state machine by adding wires and gates as necessary to the
multiplexer inputs. Do not make any other changes to the circuit.
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Problem #3 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
3. (25 pts) This problem refers to the computer data path and
control unit shown below. Assume that all registers in the data path
section are run from the same CLOCK used in the control unit. You
may assume that all control signals are asserted high, and that all
registers in the data path have synchronous loads. The table below
shows a portion of the micro-program (in symbolic form) stored in the
4Kx16 ROM in the control unit. (An x represents a don't care combination
of bits, and a NOP is an abbreviation for no operation).
![]()
ALU function table:
3c. Complete the timing diagram for the micro-instructions 0x24 through 0x27 (defined in table above). For the Data_Bus, show when the bus is tri-stated, and table what is on the bus, e.g. "r2".
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Problem #4 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4. (25 pts) You are given the following data path consisting of
a random access memory, two registers, and a 4 bit counter. A Moore
type FSM controller (shown below) driven from CLOCK.H generates control
signals, which are asserted tFSM after the rising edge of the clock.
Timing parameters are given in the table below. Given: tcountmax >
tFSM > tDQmax.
![]() Answer each part independently. The operation of the RAM is similar to the 2114 studied in lab 5. The control signal MEMCS.L is always asserted. a. Explain, using register transfer notation, the data transfers taking place in each clock cycle.
b. What is the minimum tclock for R2 to be correctly written with
the contents of R1?
c. What is the minimum tclock for R2 to be correctly written with
the contents of RAM?
d. What conditions must be satisfied to ensure that thold for
R2 is not violated?
e. What conditions must be satisfied to ensure that the hold
time for the RAM is not violated during the write cycle? f. There is a potential bus conflict at the beginning of a memory write cycle if the RAM output becomes tri-stated too late. What condition must be satisfied to avoid a bus conflict at this time?
![]() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Problem #5 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
5. (10 pts) Design the state diagram for a Mealey FSM with
synchronized input W.H and output Y.H. The output Y should be asserted
for one clock cycle whenever the sequence 1011 has been input on W. Note
that the patterns may be overlapping, e.g. W = ...1011011000... should
generate Y = ...0001001000... The machine should start assuming that
a "0" has already been input.
![]() |