Introduction to Digital Logic and Computer Design

Main page | Homework | Syllabus

JEE 160/EE 260 Summer 2001 Final Exam


Problem 1

Design a mixed SRAM and ROM 2Kx8 memory using 1Kx4 SRAMS and 1Kx4 ROMs and the minimum amount of additional combinational logic necessary. The least significant 1K words of memory must be read only while the most significant 1K words must be read and write.

Problem 2

Implement the following equations using a PLA. Show the fuse map and programming table. (The fuse map diagram was given as well as an empty table).

F1 = A'B'C' + AB'C + A'BC + ABC'
F2 = AC' + A'B'C + AC + BC'

Problem 3

Implement the following equations using a PAL. Show the fuse map and programming table. (The fuse map diagram was given as well as an empty table).

X = A'C + A'B + BCD' + AB'C'D
Y = A'C' + A'B' + B'C'D
Z = B'C + AC + A'BC'D' + AB'D

Problem 4

A Barrel shift register is a special register where the data in the register can rotate a specified number of bits. As bits are rotated, the most significant bits are rotated back into the least significant bits of the register. Design a 3-bit barrel shift register that implements the following operations:
 S1 S0 | Synchronous Operation
===========+=========================
0 0 | No Change
0 1 | Rotate left one
1 0 | Rotate left two
1 1 | Load external data

Problem 5

Given the following RTL register transfers, give a block diagram connecting registers, ROMs, Adders, Multipliers, and multiplexers to implement the transfers with the minimum number of buses in, at most, two clock cycles (don't show clock, select, load or enable signals)
R4 <- R1 * R2
R4 <- R2 + R1
R6 <- R1 * R2
R3 <- R2
R5 <- R0 + R1
R5 <- ROM[R0]
R6 <- R0 + R2
R3 <- R1 * R2

Problem 6

Using the special math processor we have been studying in class, finish writing the program that implements the following pseudo-code where X can vary and is less than 17. (The processor diagram and instruction set were included and the problem restated for our version of the processor).
For index from 0 to X
A[index] = (B[index]+C[index])*D[index]
End For

-------------Finish writing the program below-------------

org: 0x0030
X:
0x0001 !X Add variables used in program after X

org: 0x0040
A:
0x0001 !A array starts here
org: 0x0050
B:
0x0002 !B array starts here
org: 0x0060
C:
0x0002 !C array starts here
org: 0x0070
D:
0x0002 !D array starts here


org: 0x0000 !begin program here