EE3755��� HW 4���������������� Due date : Dec 3�
at 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 of� �I �� �should be more than 4?
�
Problem 2: Draw figure
for� the 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 your� code 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);
��������
������������������������