EE3755��� HW 4���������������� Due date : Dec 3at the class room

������������������������������������������������������������� We will give the solution.

Problem 1: The following module my_loop is not working.

module my_loop(a,b);

input [15:0] b;

output a;

reg [3:0] a;

reg [3:0] i;

integer s;

initial begin

s = 0;

for(i=0; i<16; i=i+1) s = s + b[i];

a = s;

end

endmodule

//

The above module is not working.

The correct code is:

reg [3:0] a;�� =>��������������� reg[4:0]a;

reg [3:0] i;�� =>reg[4:0]i;��

a)      why the size of � a �should be more than 4?

b)      Why the size ofI ��should be more than 4?

Problem 2: Draw figure forthe module below.

//For those who got 0 deduction at the test, it does not mean your solution is the right one)

// your solution was close one

module adder(sum,a);

�� input [7:0] a;

�� output [10:0] sum;

�� reg [10:0]��� sum;

�� integer������ i;

�� always @( a ) begin

����� sum = 0;

�� ���for(i=0; i<4; i=i+1) if( i <= a ) sum = sum + i;

�� end

endmodule

 

(check your solution with Buildgates synthesizer program)

 

Problem 3:

a) Write MIPS code for the below c program.

����������������� (Test yourcode with MIPS simulator.)

 

int print_num(char *c,int n){

���� int i;

��������������� int j;

��������������� for(i=0;i <n;++i){

������������������������������� j = c[i] -'a';

������������������������������� if(c[i] != 0) printf("%d\n",j);

��������������� }

���� return 1;

}

 

����������� b) Write MIPS code for the drive program for the above code�

���������������� HINT: for c.

���������������� ���������//v =�abcd\0�;

������������������������ // print_num( v,5);

 

��������

������������������������