EE 3755    Homework 3      Due: March 28,2005

Estimated time to solve:

Prob.1        5 mins.

Prob.2         2 mins.

Prob.3         4hours.

Prob.4         2 hours.(check one of the previous homework then it will be 30mins)

Prob.5         3 mins..

Total:          From 4hour 40mins to 6hour 10mins.

How to submit? // Hard copy at the class room.

For Problem 2,3,and 4 ,you also have to leave your program on your account.

Please write down actual time you spend to do the each problem.

Use “script “ command to take a snap shot of your program.

After run “script “

Use “cat” command to display  contents of  your program.

Use “ncverilog” to run your program.

then stop the script.

For Prob.2 to Prob. 4,  take a snapshot and submit the snapshot.

Problem 1: Convert the following numbers. (5mins)

Hint (7/8) = 0.875

a) Decimal  12  to 8-bit Binary:

b) Decimal  -12     to 8-bit Binary:

c) Decimal 12.875  to Binary (as many bits as needed):

d) Decimal    12.875  to IEEE 754 Single Precision (Show in hexadecimal):

Problem 2 : Show the output of the module.

module behavioral_1(x);

output x;

reg [7:0]  x;

initial

// Procedural Code Starts Here

begin

x = 1;

\$display("Hello, x=%d, t=%t",x,\$time);

x = 2;

\$display("Hello, x=%d, t=%t",x,\$time);

x = 3;

\$display("Hello, x=%d, t=%t",x,\$time);

end

endmodule

//Ans.

// Simulator Output

//

module behavioral_2(x);

output x;

reg [7:0]  x;

initial

begin

x = 1;

\$display("Hello, x=%d, t=%t",x,\$time);

#1;

x = 2;

\$display("Hello, x=%d, t=%t",x,\$time);

#1;

x = 3;

\$display("Hello, x=%d, t=%t",x,\$time);

#1;

end

endmodule

// Ans.

// Simulator Output

//

Problem 3 : Write a simple Verilog program which will convert

a decimal number to IEEE 754 single format number

and  test the solution of problem 1.d.(12.875)//

your program should print 32bit binary number.

Output format should be this:

## start of output

Decimal -10.625  convert to IEEE 754 Single Precision

1100 0001 0010 1010 0000 0000 0000

##end of output

hint:

module test;

real float,float2; // Like a float in C

//1)you also have to declare a data type for the output //here

initial

begin

float = 12.875;

float2 = 12;

\$display ("%f\n",float);

\$display ("%f\n",float-float2);

i = float;

\$display ("%f\n",i);

//

//2)you have to write conversion code here and print

//the result,  run the program and get  a  snapshot of it.

Problem 4 : Write a population count program and a test bench which will generate this following output.

//you have to write a program and take snapshot of it.

//out put solution is following

time  input                         output

`100 input a = 00000000000000000000000000000000 output p =  0`
`                200 input a = 00000000000000000000000000000001 output p =  1`
`                300 input a = 00000000000000000000000000000010 output p =  1`
`                400 input a = 00000000000000000000000000000011 output p =  2`
`                500 input a = 00000000000000000000000000000100 output p =  1`
`                600 input a = 00000000000000000000000000000101 output p =  2`
`                700 input a = 00000000000000000000000000000110 output p =  2`
`                800 input a = 00000000000000000000000000000111 output p =  3`
`                900 input a = 00000000000000000000000000001000 output p =  1`
`               1000 input a = 00000000000000000000000000001001 output p =  2`
`               1100 input a = 00000000000000000000000000001010 output p =  2`
`               1200 input a = 00000000000000000000000000001011 output p =  3`
`               1300 input a = 00000000000000000000000000001100 output p =  2`
`               1400 input a = 00000000000000000000000000001101 output p =  3`
`               1500 input a = 00000000000000000000000000001110 output p =  3`
`               1600 input a = 00000000000000000000000000001111 output p =  4`

Problem 5 : Answer the sub problems.

5-1)Which code will be longer ? Structural or Implicit ?(Hint : Gates)

(Estimated Time to Finish:  30s.)  .

5-2)Fill  the blanks.( Estimated Time to Finish:  30s.)

 a, b a & b a && b 000      000 010      111

(Hint:: Arithmetic, logical)

5-3)Fill the blanks; x1 = a == b;

( Estimated Time to Finish:  30s.)

 a,        b x1 = a== b 000   000 x01   001

5-4)Fill the blanks x = {a, b};

( Estimated Time to Finish:  30s.)

 A,         b x = {a,b}; 000     000 001     111

5-5)Fill the blanks x = a >> 2;

( Estimated Time to Finish:  30s.)

 A x = a >> 2 1100 0100

5-6) Write down the value.

//a = 10;

x =   a < 12 ?  10 :  20;

What is the x value?(10 or 20).