Digital Logic Operations

Digital Logic Operations

1. The instruction set architecture for a simple computer must support access to 64 KB of byte-addressable memory space and eight 16-bit general-purpose CPU registers.
a. If the computer has three-operand machine language instructions that operate on the contents of two different CPU registers to produce a result that is stored in a third register, how many bits are required in the instruction format for addressing registers?


b. If all instructions are to be 16 bits long, how many op codes are available for the three-operand, register operation instructions described above (neglecting, for the moment, any other types of instructions that might be required)?


c. Now assume (given the same 16-bit instruction size limitation) that, besides the instructions described in (a), there are a number of additional two-operand instructions to be implemented, for which one operand must be in a CPU register while the second operand may reside in a main memory location or a register. If possible, detail a scheme that allows for at least 50 register-only instructions of the type described in (a) plus at least 10 of these two-operand instructions. (Show how you would lay out the bit fields for each of the machine language instruction formats.) If this is not possible, explain in detail why not and describe what would have to be done to make it possible to implement the required number and types of machine language instructions.


2. Multiplication of two 4-bit numbers (as shown in Figure 1) can be implemented as a Wallace tree multiplier (as shown in Figure 2) by using carry saver adders.

Figure 1. Multiplication of two 4-bit numbers

Figure. 2 The Wallace tree multiplier for 4-bit numbers
Show Figures 1 and 2 for the following multiplication of a 5-bit number and 4-bit number:


3. Conversion from decimal fraction to binary fraction is accomplished by multiplying the number by 2, using the integer part of the product as the next digit (and then discarding the integer). For example
.625 × 2 = 1.25 .1 (the integer part of this product is 1)
.25 × 2 = 0.50 .10 (the integer part of this product is 0)
.50 × 2 = 1.00 .101 (the integer part of this product is 1)

So, 0.625 can be represented by .101 in binary (.101 = 1/2 + 0/4 + 1/8 = .625)

Show how the decimal value -27.5625 would be represented in IEEE 754 single (32 bits) and double (64 bits) precision formats.