EE 4301 - Digital Design with Programmable Logic
Summer Session, 2008

Homework Assignment 2
Due: Monday, August 4

  1. (a) Modify the Verilog code in the file booth16f.v to create the alternate design in which the repeated MSB terms in the a, b, c and d partial products have been separately summed. (In other words, use the array of terms shown on page 7 of the lecture notes for July 18.)

    (b) Use the testbench tb16.v (replacing the original booth multiplier with the new design of part (a)) to perform an exhaustive set of signed multiplications to prove that your code of part (a) is correct.


  2. Consider the following two IEEE single-precision floating-point operands (specified in hex): C0200000 and 418A0000.

    (a) Determine (without using a calculator or computer) the decimal value of each of the operands. (Show your work!)

    (b) Determine (without using a calculator or computer) the IEEE single-precision floating-point representation (specified in hex) for the sum of these two operands. (Show your work!)

    (c) Determine (without using a calculator or computer) the IEEE single-precision floating-point representation (specified in hex) for the product of these two operands. (Show your work!)


  3. (a) Create a Verilog module for the 8-bit Kogge-Stone adder shown on page 9 of the Adder Designs lecture notes. The inputs to the module are two 8-bit operands and the carry in to the LSB. The outputs of the module are the 8-bit sum and the carry out of the MSB. To do this, first create a module for the operator "o" and then use multiple instances of this operator as specified in the diagram of the Kogge-Stone architecture. You will also need to include additional logic to form the the bit-level propagate, generate, carry and sum functions.

    (b) Create a Verilog testbench for the Kogge-Stone adder of part (a) to perform 50 random unsigned additions and display the results (in decimal), including check values. Be sure to randomly select both 8-bit operands as well as the value of the carry in to the LSB. Note that you will have to concatenate the carry out of the MSB with the 8-bit sum value to form the complete 9-bit unsigned result of the addition operation.

    (c) Create a Verilog testbench for the Kogge-Stone adder of part (a) to perform an exhausive set of unsigned additions, including all possible combinations of 8-bit operands and carry in values. Use this testbench to prove that your design of part (a) is correct.