Facebook
From Gray Moth, 2 Years ago, written in Plain Text.
This paste is a reply to Untitled from Queen Rhinoceros - go back
Embed
Viewing differences between Untitled and Re: Untitled
module file1( input clock ,
output reg divided_clock = 0 ,
output divided_clock_2 ,
// input reset,
output reg [5:0] d1 =6'b000000,//changed 6'b000000
output reg minutes_clock = 0 ,
output reg [3:0] d0 =4'b0000 ,//chaged 4'b0000
output reg minutes_counter = 0,
output reg hours_clock = 0 ,
output reg [5:0]hours_counter = 6'b000000,//6'b000000
//output reg more_hours_counter = 0
output reg [3:0] d2 =4'b0000,// changed 4'b0000
output reg [3:0] d3 =4'b0000, //changed 4'b0000
output reg [3:0] d4 =4'b0000,
output [3:0] x,
output [7:0] y
);
integer counter = 0;
sevenseg uut ( .clock(clock),
.divided_clock(divided_clock),
.divided_clock_2(divided_clock_2),
.d0(d0),
.d2(d2),
.d3(d3),
.d4(d4),
.x(x),
.y(y)
);
always @(posedge clock)
begin

if(counter == 62000)
counter<=0;
else
counter <= counter+1;

if(counter == 0)
divided_clock <= ~divided_clock;
else
divided_clock <= divided_clock;
end

reg h = 0 ;
always@(posedge divided_clock)
begin
if(d1 == 6'b111011)
d1<=6'b0;
else
d1<=d1+4'b0001;
minutes_clock <= (d1 == 6'b111011)?1'b1:1'b0;
end
always@(posedge minutes_clock)
begin
if(d0 == 4'b1001)
d0 <= 4'b0000 ;
else
d0 <= d0+4'b0001;
minutes_counter <= (d0 == 4'b1001)?1'b1:1'b0;
end
always@(posedge minutes_counter)
begin
if(d2 == 4'b0101 && d0 == 4'b1001)
d2<= 4'b0000 ;
else
d2<= d2+4'b0001;
end
always@(posedge minutes_clock)
begin
if(hours_counter == 6'b111011)
hours_counter <=6'b0;
else
hours_counter<=hours_counter+6'b000001;
hours_clock <= (hours_counter>= 6'b111011)?1'b1:1'b0;
end
always@(posedge hours_clock)
begin
if(d4 == 4'b0010)
begin
if(d3 == 4'b0100)
begin
d3 <= 4'b0000;
d4 <= 4'b0000;
end
else
d3 <= d3+4'b0001;
end
else
begin
if(d3 == 4'b1001)
begin
d3 <=0 ;
d4<=d4+4'b0001;
end
else
d3 <=d3+4'b0001;
end
end
always@(posedge divided_clock )
begin
h = ~h;
end

endmodule


module sevenseg(
input clock,
input divided_clock,
output reg divided_clock_2 = 0,
input [3:0]d0,
input [3:0]d2,
input [3:0]d3,
input [3:0]d4,
output reg[3:0]x = 4'b1110,
output reg[7:0]y = 8'b11111111
);
integer counter = 0 ;
reg [3:0] digit;
reg [1:0]refresh_rate_counter = 2'b00 ;
reg [3:0] dig =4'b0000;
always @(posedge clock)
begin
if(counter == 2048)
counter<=0;
else
counter <= counter+1;
// 12499999;
if(counter == 0)
divided_clock_2 <= ~divided_clock_2;
else
divided_clock_2 <= divided_clock_2;
end
always@(posedge divided_clock_2)
begin
refresh_rate_counter <= refresh_rate_counter+2'b01;
end
always@(refresh_rate_counter)
begin
case(refresh_rate_counter)
2'b00: x = 4'b1110;
2'b01: x = 4'b1101;
2'b10: x = 4'b1011;
2'b11: x = 4'b0111;
endcase
end
always@(refresh_rate_counter , d0 , d2, d3 , d4)
begin
case(refresh_rate_counter)
2'b00: digit = d0;
2'b01: digit = d2;
2'b10: digit = d3;
2'b11: digit = d4;
endcase
end
always@(digit,x,y,divided_clock)
begin
if(x == 4'b1011)
begin
case(digit)
4'b0000: y = {7'b0000001, divided_clock};
4'b0001: y = {7'b1001111, divided_clock};
4'b0010: y = {7'b0010010, divided_clock};
4'b0011: y = {7'b0000110, divided_clock};
4'b0100: y = {7'b1001100, divided_clock};
4'b0101: y = {7'b0100100, divided_clock};
4'b0110: y = {7'b0100000, divided_clock};
4'b0111: y = {7'b0001111, divided_clock};
4'b1000: y = {7'b0000000, divided_clock};
4'b1001: y = {7'b0000100, divided_clock};
default y = {7'b1111111, divided_clock};
endcase
end
else
begin
case(digit)
4'b0000: y = 8'b00000011;
4'b0001: y = 8'b10011111;
4'b0010: y = 8'b00100101;
4'b0011: y = 8'b00001101;
4'b0100: y = 8'b10011001;
4'b0101: y = 8'b01001001;
4'b0110: y = 8'b01000001;
4'b0111: y = 8'b00011111;
4'b1000: y = 8'b00000001;
4'b1001: y = 8'b00001001;
default y = 8'b11111111;
endcase
end
end
endmodule