fallingrain_83
Junior Member level 1
7Segment display
Hi all
I am trying to display 4 different numbers on Spartan3 starter kit however I do not know why it is displaying just one number on all 4 7segments
I'm wondering if anyone can help me to find where I am wrong!!
Thanks
My all code is:
module segments4(clk,seg,select);
input clk;
output seg;
output select;
reg [0:7] seg;
reg [0:3] select;
reg [0:25] counter0;
reg [0:22] counter1;
reg [0:3] a;
reg [0:3] b;
reg [0:3] c;
integer i;
integer j;
integer k;
integer m;
always @ (posedge clk)
begin
counter0<=counter0 + 1;
counter1<=counter1 + 1;
if (counter0[0])
begin
counter0<=0;
if(i<15)
i=i+1;
if (counter1[0])
select <= 4'b1110;
display(i);
if(j>0)
j=j-1;
if (counter1[1])
select <= 4'b1101;
display (j);
if(k<15)
k=k+1;
if (counter1[2])
select <= 4'b1011;
display(k);
if(m<15)
m=m+1;
if (counter1[3])
select <= 4'b0111;
display (m);
end
end//always
task display;
input [0:3] num;
begin
case (num)
0: seg[0:7]<=8'b00000011;
1: seg[0:7]<=8'b10011111;
2: seg[0:7]<=8'b00100101;
3: seg[0:7]<=8'b00001101;
4: seg[0:7]<=8'b10011001;
5: seg[0:7]<=8'b01001001;
6: seg[0:7]<=8'b01000001;
7: seg[0:7]<=8'b00011111;
8: seg[0:7]<=8'b00000001;
9: seg[0:7]<=8'b00001001;
10: seg[0:7]<=8'b00010001;
11: seg[0:7]<=8'b11000001;
12: seg[0:7]<=8'b01100011;
13: seg[0:7]<=8'b10000101;
14: seg[0:7]<=8'b01100001;
15: seg[0:7]<=8'b01110001;
default seg[0:7]<= 8'b11111110;
endcase
end
endtask
initial
begin
counter0 = 0;
counter1 = 1;
j=15;
i=0;
k=1;
m=0;
end
endmodule
Hi all
I am trying to display 4 different numbers on Spartan3 starter kit however I do not know why it is displaying just one number on all 4 7segments
I'm wondering if anyone can help me to find where I am wrong!!
Thanks
My all code is:
module segments4(clk,seg,select);
input clk;
output seg;
output select;
reg [0:7] seg;
reg [0:3] select;
reg [0:25] counter0;
reg [0:22] counter1;
reg [0:3] a;
reg [0:3] b;
reg [0:3] c;
integer i;
integer j;
integer k;
integer m;
always @ (posedge clk)
begin
counter0<=counter0 + 1;
counter1<=counter1 + 1;
if (counter0[0])
begin
counter0<=0;
if(i<15)
i=i+1;
if (counter1[0])
select <= 4'b1110;
display(i);
if(j>0)
j=j-1;
if (counter1[1])
select <= 4'b1101;
display (j);
if(k<15)
k=k+1;
if (counter1[2])
select <= 4'b1011;
display(k);
if(m<15)
m=m+1;
if (counter1[3])
select <= 4'b0111;
display (m);
end
end//always
task display;
input [0:3] num;
begin
case (num)
0: seg[0:7]<=8'b00000011;
1: seg[0:7]<=8'b10011111;
2: seg[0:7]<=8'b00100101;
3: seg[0:7]<=8'b00001101;
4: seg[0:7]<=8'b10011001;
5: seg[0:7]<=8'b01001001;
6: seg[0:7]<=8'b01000001;
7: seg[0:7]<=8'b00011111;
8: seg[0:7]<=8'b00000001;
9: seg[0:7]<=8'b00001001;
10: seg[0:7]<=8'b00010001;
11: seg[0:7]<=8'b11000001;
12: seg[0:7]<=8'b01100011;
13: seg[0:7]<=8'b10000101;
14: seg[0:7]<=8'b01100001;
15: seg[0:7]<=8'b01110001;
default seg[0:7]<= 8'b11111110;
endcase
end
endtask
initial
begin
counter0 = 0;
counter1 = 1;
j=15;
i=0;
k=1;
m=0;
end
endmodule