Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module project (clk, rst, hex3, hex2, hex1, hex0, keys,sw, ledg, ledr);
- input clk, rst;
- input [9:0] sw;
- input [4:0] keys;
- output [9:0] ledr;
- output [7:0] ledg;
- output [6:0] hex3, hex2, hex1, hex0;
- reg [9:0] stater;
- reg [7:0] stateg;
- reg [6:0] state3, state2, state1, state0, kat, val, gee, ralph, atemp, s1, s2,s3,s4, m1, m2,m3,m4, h1, h2;
- reg [27:0] tempt, tempp, tempy, tempm, tempz, tempa, temps, tempc,tempw, temp, counter; // for initialization and display
- reg tempc2, tempw2, tempst;
- reg sw_not3, trig3, sw_not2, trig2, sw_not1, trig1, sw_not0, trig0;
- reg temp7, military;
- //default for each initialization
- initial stater = 0;
- initial stateg = 0;
- initial tempt = 0;
- initial tempp = 268435339;
- initial tempy = 0;
- initial tempm = 0;
- initial tempz = 0;
- initial tempa = 99;
- initial temps = 9999;
- initial h1 = 2;
- initial h2 = 1;
- //assignment
- assign hex3 = state3;
- assign hex2 = state2;
- assign hex1 = state1;
- assign hex0 = state0;
- assign ledr = stater;
- assign ledg = stateg;
- //for 1 second
- parameter hs = 25_000_000;
- parameter s = 50_000_000;
- parameter m = 3_000_000_000;
- parameter h = 180_000_000_000;
- always @ (posedge clk)
- begin
- sw_not3 <= ~keys[3]; trig3 <= sw_not3 & keys[3];
- sw_not2 <= ~keys[2]; trig2 <= sw_not2 & keys[2];
- sw_not1 <= ~keys[1]; trig1 <= sw_not1 & keys[1];
- sw_not0 <= ~keys[0]; trig0 <= sw_not0 & keys[0];
- end
- always @(posedge clk)
- begin
- if (sw[9] == 1)
- counter <= 0;
- else if (counter >= hs && sw[9] == 0)
- counter <= 0;
- else if (counter == s && sw[9] == 0)
- counter <= 0;
- else
- counter <= counter + 1;
- end
- always @(posedge clk)
- begin
- if (sw == 10'b1000000000)
- begin
- kat <= 127; val <= 127; gee <= 127; ralph <= 127;
- stateg <= 0; stater <= 0;
- tempt <= 0; tempp <= 268435339; tempy <= 0;
- tempm <= 0; tempz <= 0; tempa <= 99; temps <= 9999;
- h1 <= 2; h2 <= 1;
- end
- //777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777777
- else if (sw == 10'b0111000000) //for initial time
- begin
- kat <= tempt[27:21]; val <= tempt[20:14]; gee <= tempt[13:7]; ralph <= tempt[6:0];
- h2 <= temp[27:21]; h1 <= temp[20:14]; m2 <= tempt[13:7]; m1 <= tempt[6:0];
- if (tempt == 0)
- begin
- tempt[27:21] <= 1;
- tempt[20:14] <= 2;
- tempt[13:7] <= 0;
- tempt[6:0] <= 0;
- kat <= tempt[27:21]; val <= tempt[20:14]; gee <= tempt[13:7]; ralph <= tempt[6:0];
- end
- else if(trig2) //for hour 1-12
- begin
- tempt[20:14] <= tempt[20:14]+1;
- if(tempt[20:14] == 2 && tempt[27:21] == 1) //parang kat == 1 and val == 2 so bale 12
- begin
- tempt[27:21] <= 0;
- tempt[20:14] <= 1;
- end
- else if (tempt[20:14] == 9) //pag nakarating na si val ng 9, dapat mag add kay kat para maging tens ganun
- begin
- tempt[27:21] <= tempt[27:21]+1;
- tempt[20:14] <= 0;
- end
- end
- else if (tempp[6:0] == 10 && (tempt[27:21] != 1 && tempt[27:21] != 2)) //kapag PM plus 12
- begin
- temp[27:21] <= tempt[27:21] + 1;
- temp[20:14] <= tempt[27:21] + 2;
- end
- else if (trig1) // up minutes
- begin
- tempt[6:0] <= tempt[6:0]+1;
- if(tempt[13:7] == 5 && tempt[6:0] == 9) //gee == 5 and ralph == 9
- begin
- tempt[6:0] <= 0;
- tempt[13:7] <= 0;
- end
- else if(tempt[13:7] < 5 && tempt[6:0] == 9) // add lang kay gee pag di pa nakakaabot ng 59
- begin
- tempt[6:0] <= 0;
- tempt[13:7] <= tempt[13:7] + 1;
- end
- end
- else if (trig0 ) // down minutes
- begin
- tempt[6:0] <= tempt[6:0]-1;
- if(tempt[13:7] == 0 && tempt[6:0] == 0)
- begin
- tempt[6:0] <= 9;
- tempt[13:7] <= 5;
- end
- else if(tempt[13:7] > 0 && tempt[6:0] == 0)
- begin
- tempt[6:0] <= 9;
- tempt[13:7] <= tempt[13:7] - 1;
- end
- end
- end
- //6666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666666
- else if (sw == 10'b0110000000) //set time period
- begin
- kat <= tempp[27:21]; val <= tempp[20:14]; gee <= tempp[13:7]; ralph <= tempp[6:0];
- if(trig3)
- begin
- if(tempp[6:0] == 10) //P to A
- begin
- tempp[6:0] <= 11;
- stater[9] <= 0;
- end
- else if (tempp[6:0] == 11) //A to P
- begin
- tempp[6:0] <= 10;
- stater[9] <= 1;
- end
- end
- else if (tempp == 268435339)
- begin
- tempp[27:21] <= 127;
- tempp[20:14] <= 127;
- tempp[13:7] <= 127;
- tempp[6:0] <= 11;
- kat <= tempp[27:21]; val <= tempp[20:14]; gee <= tempp[13:7]; ralph <= tempp[6:0];
- end
- end
- //5555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555555
- else if (sw == 10'b0101000000) //set year
- begin
- kat <= tempy[27:21]; val <= tempy[20:14]; gee <= tempy[13:7]; ralph <= tempy[6:0];
- if (tempy == 0)
- begin
- tempy[27:21] <= 2;
- tempy[20:14] <= 0;
- tempy[13:7] <= 0;
- tempy[6:0] <= 0;
- kat <= tempy[27:21]; val <= tempy[20:14]; gee <= tempy[13:7]; ralph <= tempy[6:0];
- end
- else if(trig2)
- begin
- tempy[20:14] <= tempy[20:14] + 1;
- if (tempy[20:14] == 9)
- tempy[20:14] <= 0;
- end
- else if(trig1)
- begin
- tempy[13:7] <= tempy[13:7] + 1;
- if (tempy[13:7] == 9)
- tempy[13:7] <= 0;
- end
- else if (trig0)
- begin
- tempy[6:0] <= tempy[6:0] + 1;
- if (tempy[6:0] == 9)
- tempy[6:0] <= 0;
- end
- end
- //4444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444444
- else if (sw == 10'b0100000000) //set month and day
- begin
- kat <= tempm[27:21]; val <= tempm[20:14]; gee <= tempm[13:7]; ralph <= tempm[6:0];
- if (tempm == 0)
- begin
- tempm[27:21] <= 0;
- tempm[20:14] <= 1;
- tempm[13:7] <= 0;
- tempm[6:0] <= 1;
- kat <= tempm[27:21]; val <= tempm[20:14]; gee <= tempm[13:7]; ralph <= tempm[6:0];
- end
- else if(trig3) //up button for month
- begin
- tempm[20:14] <= tempm[20:14] + 1;
- if (tempm[20:14] == 9)
- begin
- tempm[27:21] <= 1;
- tempm[20:14] <= 0;
- end
- else if (tempm[20:14] == 2 && tempm[27:21] == 1)
- begin
- tempm[27:21] <= 0;
- tempm[20:14] <= 1;
- end
- end
- else if(trig2) //down button for month
- begin
- tempm[20:14] <= tempm[20:14] - 1;
- if (tempm[20:14] == 0 && tempm[27:21] > 0)
- begin
- tempm[20:14] <= 9;
- tempm[27:21] <= 0;
- end
- else if(tempm[20:14] == 1 && tempm[27:21] == 0)
- begin
- tempm[20:14] <= 2;
- tempm[27:21] <= 1;
- end
- end
- else if(trig1) //up day
- begin
- tempm[6:0] <= tempm[6:0] + 1;
- if (tempm[27:21] == 0 && tempm[20:14] == 2) //for february
- begin
- if(tempm[13:7] == 2 && tempm[6:0] == 9)
- begin
- tempm[13:7] <= 0;
- tempm[6:0] <= 1;
- end
- else if (tempm[6:0] == 9)
- begin
- tempm[13:7] <= tempm[13:7] + 1;
- tempm[6:0] <= 0;
- end
- end
- else if (tempm[13:7] == 3 && tempm[6:0] == 1) //for any month
- begin
- tempm[13:7] <= 0;
- tempm[6:0] <= 1;
- end
- else if (tempm[6:0] == 9)
- begin
- tempm[13:7] <= tempm[13:7] + 1;
- tempm[6:0] <= 0;
- end
- end
- else if (trig0) //down day
- begin
- tempm[6:0] <= tempm[6:0] - 1;
- if (tempm[27:21] == 0 && tempm[20:14] == 2) //for february
- begin
- if(tempm[13:7] == 0 && tempm[6:0] == 1)
- begin
- tempm[13:7] <= 2;
- tempm[6:0] <= 9;
- end
- else if (tempm[6:0] == 0 && tempm[13:7] > 0)
- begin
- tempm[13:7] <= tempm[13:7] - 1;
- tempm[6:0] <= 9;
- end
- end
- else if (tempm[13:7] == 0 && tempm[6:0] == 1) //for any month
- begin
- tempm[13:7] <= 3;
- tempm[6:0] <= 1;
- end
- else if (tempm[6:0] == 0 && tempm[13:7] > 0)
- begin
- tempm[13:7] <= tempm[13:7] - 1;
- tempm[6:0] <= 9;
- end
- end
- end
- //3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
- else if (sw == 10'b0011000000) //set time zone
- begin
- kat <= tempz[27:21]; val <= tempz[20:14]; gee <= tempz[13:7]; ralph <= tempz[6:0];
- if (tempz == 0)
- begin
- tempz[27:21] <= 127;
- tempz[20:14] <= 12;
- tempz[13:7] <= 12;
- tempz[6:0] <= 14;
- kat <= tempz[27:21]; val <= tempz[20:14]; gee <= tempz[13:7]; ralph <= tempz[6:0];
- end
- else if (trig3)
- begin
- tempz[20:14] <= tempz[20:14] +1;
- tempz[13:7] <= tempz[13:7] +1;
- tempz[6:0] <= tempz[6:0] +1;
- if (tempz[20:14] == 14 && tempz[13:7] == 14 && tempz[6:0] == 16 )
- begin
- tempz[20:14] <= 10;
- tempz[13:7] <= 10;
- tempz[6:0] <= 12;
- end
- end
- end
- //22222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
- else if (sw == 10'b0010000000) //set alarm time
- begin
- kat <= tempa[27:21]; val <= tempa[20:14]; gee <= tempa[13:7]; ralph <= tempa[6:0];
- if (tempa == 99)
- begin
- tempa[27:21] <= 0;
- tempa[20:14] <= 0;
- tempa[13:7] <= 0;
- tempa[6:0] <= 0;
- kat <= tempa[27:21]; val <= tempa[20:14]; gee <= tempa[13:7]; ralph <= tempa[6:0];
- end
- else if (trig2) //for hour 00 to 23. So dapat may conversion pa ng 12hr to military time para gumana yung alarm
- begin
- tempa[20:14] <= tempa[20:14]+1;
- if(tempa[20:14] == 3 && tempa[27:21] == 2) //parang kat == 2 and val == 3 so bale 23
- begin
- tempa[27:21] <= 0;
- tempa[20:14] <= 0;
- end
- else if (tempa[20:14] == 9) //pag nakarating na si val ng 9, dapat mag add kay kat para maging tens ganun
- begin
- tempa[27:21] <= tempa[27:21]+1;
- tempa[20:14] <= 0;
- end
- end
- else if (trig1) // up minutes
- begin
- tempa[6:0] <= tempa[6:0]+1;
- if(tempa[13:7] == 5 && tempa[6:0] == 9) //gee == 5 and ralph == 9
- begin
- tempa[6:0] <= 0;
- tempa[13:7] <= 0;
- end
- else if(tempa[13:7] < 5 && tempa[6:0] == 9) // add lang kay gee pag di pa nakakaabot ng 59
- begin
- tempa[6:0] <= 0;
- tempa[13:7] <= tempa[13:7] + 1;
- end
- end
- else if (trig0) // down minutes
- begin
- tempa[6:0] <= tempa[6:0]-1;
- if(tempa[13:7] == 0 && tempa[6:0] == 0)
- begin
- tempa[6:0] <= 9;
- tempa[13:7] <= 5;
- end
- else if(tempa[13:7] > 0 && tempa[6:0] == 0)
- begin
- tempa[6:0] <= 9;
- tempa[13:7] <= tempa[13:7]-1;
- end
- end
- end
- //11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
- else if (sw == ) //set snooze time
- begin
- kat <= temps[27:21]; val <= temps[20:14]; gee <= temps[13:7]; ralph <= temps[6:0];
- s3 <= temps[6:0]; s4 <= temps[13:7]; m3 <= temps[20:14]; m4 <= temps[27:21];
- if (temps == 9999)
- begin
- temps[27:21] <= 0;
- temps[20:14] <= 5;
- temps[13:7] <= 0;
- temps[6:0] <= 0;
- kat <= temps[27:21]; val <= temps[20:14]; gee <= temps[13:7]; ralph <= temps[6:0];
- end
- else if (trig3) //up button for minute
- begin
- temps[20:14] <= temps[20:14]+1;
- if (temps[20:14] == 9 && temps[27:21] == 9)
- begin
- temps[27:21] <= 0;
- temps[20:14] <= 0;
- end
- else if (temps[20:14] == 9 && temps[27:21] < 9)
- begin
- temps[27:21] <= temps[27:21] + 1;
- temps[20:14] <= 0;
- end
- end
- else if (trig2) //down button for minute
- begin
- temps[20:14] <= temps[20:14]-1;
- if(temps[27:21] == 0 && temps[20:14] == 0)
- begin
- temps[20:14] <= 9;
- temps[27:21] <= 9;
- end
- else if(temps[27:21] > 0 && temps[20:14] == 0)
- begin
- temps[20:14] <= 9;
- temps[27:21] <= temps[27:21] - 1;
- end
- end
- else if (trig1) //up seconds
- begin
- temps[6:0] <= temps[6:0] + 1;
- if (temps[13:7] == 5 && temps[6:0] == 9)
- begin
- temps[13:7] <= 0;
- temps[6:0] <= 0;
- end
- else if (temps[6:0] == 9 && temps[13:7] < 5)
- begin
- temps[13:7] <= temps[13:7] + 1;
- temps[6:0] <= 0;
- end
- end
- else if (trig0) //down seconds
- begin
- temps[6:0] <= temps[6:0]-1;
- if(temps[13:7] == 0 && temps[6:0] == 0)
- begin
- temps[6:0] <= 9;
- temps[13:7] <= 5;
- end
- else if(temps[13:7] > 0 && temps[6:0] == 0)
- begin
- temps[6:0] <= 9;
- temps[13:7] <= temps[13:7] - 1;
- end
- end
- end
- //ssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssssss
- else if (sw == 0 && counter == s) //display
- begin
- //00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
- //time display
- case()
- begin
- kat <= h2;
- val <= h1;
- gee <= m2;
- ralph <= m1;
- if (!keys[3])
- begin
- if (tempp == 10 && (h2 != 1 && h1 != 2)) //PM tapos >12
- begin
- val <= h1 - 2;
- kat <= h2 - 1;
- end
- else if (tempp == 11 && (h2 == 0 && h1 == 0)) //AM tapos 00 sa military time
- begin
- kat <= 1;
- val <= 2;
- end
- else
- begin
- kat <= h2;
- val <= h1;
- end
- gee <= m2;
- ralph <= m1;
- end
- else if (!keys[2])
- begin
- kat <= m2;
- val <= m1;
- gee <= s2;
- ralph <= s1;
- end
- else if (!keys[1])
- begin
- kat <= tempp[27:21];
- val <= tempp[20:14];
- gee <= tempp[13:7];
- ralph <= tempp[6:0];
- end
- end
- end
- //(sw 1 and 0) are 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
- else if (sw[1:0] == 1 && sw[9:2] == 0) // date display
- begin
- if (s1 < 9 && counter == s)
- s1 <= s1 + 1;
- else if (s1 == 9 && s2 < 5 && counter == s )
- begin
- s1 <= 0;
- s2 <= s2 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 < 9 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= m1 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 < 5 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= m2 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h1 == 9 && h2 < 2 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= 0;
- h2 <= h2 + 1;
- if(tempp[6:0] == 11 && h1 == 2 && h2 == 1 && counter == s) //A to P
- begin
- tempp[6:0] <= 10;
- stater[9] <= 1;
- end
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h2 == 2 && h1 < 3 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= h1 + 1;
- h2 <= 2;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h2 == 2 && h1 == 3 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= 0;
- h2 <= 0;
- if(tempp[6:0] == 10) //P to A
- begin
- tempp[6:0] <= 11;
- stater[9] <= 0;
- end
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h1 < 9 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= h1 + 1;
- end
- begin
- kat <= tempm[27:21];
- val <= tempm[20:14];
- gee <= tempm[13:7];
- ralph <= tempm[13:7];
- if (trig3)
- begin
- kat <= tempy[27:21];
- val <= tempy[20:14];
- gee <= tempy[13:7];
- ralph <= tempy[6:0];
- end
- end
- end
- //(sw 1 and 0) are 222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
- else if (sw[1:0] == 2 && sw[9:2] == 0) //world time display
- begin
- if (s1 < 9 && counter == s)
- s1 <= s1 + 1;
- else if (s1 == 9 && s2 < 5 && counter == s )
- begin
- s1 <= 0;
- s2 <= s2 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 < 9 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= m1 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 < 5 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= m2 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h1 == 9 && h2 < 2 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= 0;
- h2 <= h2 + 1;
- if(tempp[6:0] == 11 && h1 == 2 && h2 == 1 && counter == s) //A to P
- begin
- tempp[6:0] <= 10;
- stater[9] <= 1;
- end
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h2 == 2 && h1 < 3 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= h1 + 1;
- h2 <= 2;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h2 == 2 && h1 == 3 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= 0;
- h2 <= 0;
- if(tempp[6:0] == 10) //P to A
- begin
- tempp[6:0] <= 11;
- stater[9] <= 0;
- end
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h1 < 9 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= h1 + 1;
- end
- gee <= m2; ralph <= m1; //for display
- begin
- if (tempz[20:14] == 10 && tempz[13:7] == 10 && tempz[6:0] == 12 ) //timezone nyc
- begin
- if ((h1+5) > 9)
- begin
- temp[20:14] <= (h1+5) % 10;
- temp[27:21] <= h2 + 1;
- end
- else if (((h1+5)%10) == 4 && (h2+1) == 2)
- begin
- temp[27:21] <= 0;
- temp[20:14] <= 0;
- end
- else if (h2 == 2 && h1 < 4)
- begin
- temp[27:21] <= 0;
- temp[20:14] <= h1+1;
- end
- else
- begin
- temp[20:14] <= h1 + 5;
- temp[27:21] <= h2;
- end
- end
- else if (tempz[20:14] == 11 && tempz[13:7] == 11 && tempz[6:0] == 13 ) //timezone rio
- begin
- if ((h1+3) > 9)
- begin
- temp[20:14] <= (h1+3) % 10;
- temp[27:21] <= h2 + 1;
- end
- else if (((h1+3)%10) == 4 && (h2+1) == 2)
- begin
- temp[27:21] <= 0;
- temp[20:14] <= 0;
- end
- else if (h2 == 2 && h1 < 4)
- begin
- temp[27:21] <= 0;
- temp[20:14] <= h1+1;
- end
- else
- begin
- temp[20:14] <= h1 + 3;
- temp[27:21] <= h2;
- end
- end
- else if (tempz[20:14] == 12 && tempz[13:7] == 12 && tempz[6:0] == 13 ) //timezone lisbon
- begin
- temp[20:14] <= h1;
- temp[27:21] <= h2;
- end
- else if (tempz[20:14] == 14 && tempz[13:7] == 14 && tempz[6:0] == 15 ) //timezone sydney
- begin
- if (h2 != 0)
- begin
- temp[20:14] <= h1;
- temp[27:21] <= h2 - 1;
- end
- else if (h2 == 0 && (h1+3) > 9)
- begin
- temp[20:14] <= (h1 + 3)%10;
- temp[27:21] <= h2;
- end
- else if (h2 == 0 && (h1+3) < 9)
- begin
- temp[20:14] <= h1 +3;
- temp[27:21] <= h2;
- end
- end
- else if (tempz[20:14] == 13 && tempz[13:7] == 13 && tempz[6:0] == 15 ) //PH
- begin
- kat <= h2;
- val <= h1;
- end
- else if (trig3) //ny time
- begin
- if (temp[20:14] >= 5)
- begin
- if (temp[20:14] == 9 && temp[27:21] == 1)
- begin
- kat <= 0; val <= 0;
- end
- else
- begin
- kat <= temp[27:21]; val <= temp[20:14] -5;
- end
- end
- else if (temp[20:14] < 5)
- begin
- if (temp[20:14] != 0 && temp[27:21] == 0 )
- begin
- kat <= 2;
- val <= temp[20:14] - 1;
- end
- else
- begin
- kat <= temp[27:21] - 1;
- val <= temp[20:14] + 5;
- end
- end
- end
- else if (trig2) // rio
- begin
- if (temp[20:14] >= 3)
- begin
- kat <= temp[27:21];
- val <= temp[20:14]-3;
- end
- else if (temp[20:14] < 3 && temp[27:21] != 0)
- begin
- kat <= temp[27:21] - 1;
- val <= (temp[20:14]+3)%10;
- end
- else if (temp[20:14] < 3 && temp[27:21] == 0)
- begin
- kat <= temp[27:21] - 1;
- val <= 2;
- end
- end
- else if (trig1) //lisbo
- begin
- kat <= temp[27:21];
- val <= temp[20:14];
- end
- else if (trig0) // sydney
- begin
- if (temp[27:21] == 1 && temp[20:14] >3)
- begin
- kat <= 0;
- val <= temp[20:14] -4;
- end
- else if (temp[27:21] == 2 && temp [20:13] <= 3)
- begin
- kat <= 0;
- val <= temp[20:14] + 6;
- end
- else
- begin
- kat <= temp[27:21] + 1;
- val <= temp[20:14];
- end
- end
- else if (!trig3 && !trig2 && !trig1 && !trig0)
- begin
- if (temp[20:14] > 1)
- begin
- if (temp[20:14] > 5 && temp[27:21] == 1)
- begin
- kat <= 0;
- val <= temp[20:14] -6;
- end
- else
- begin
- kat <= temp[27:21] +1;
- val <= (temp[20:14] + 8)%10;
- end
- end
- else if (temp[20:14] <= 1 && temp[27:21] != 2)
- begin
- kat <= temp[27:21];
- val <= temp[20:14]+8;
- end
- else if (temp[27:21] == 2)
- begin
- kat <= 0;
- val <= temp[20:14]+4;
- end
- end
- end
- end
- //(sw 3 and 2) are 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111
- else if (sw[3:2] == 1 && sw[1:0] >= 0 && sw[9:4] == 0) //alarm
- begin
- if (s1 < 9 && counter == s)
- s1 <= s1 + 1;
- else if (s1 == 9 && s2 < 5 && counter == s )
- begin
- s1 <= 0;
- s2 <= s2 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 < 9 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= m1 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 < 5 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= m2 + 1;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h1 == 9 && h2 < 2 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= 0;
- h2 <= h2 + 1;
- if(tempp[6:0] == 11 && h1 == 2 && h2 == 1 && counter == s) //A to P
- begin
- tempp[6:0] <= 10;
- stater[9] <= 1;
- end
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h2 == 2 && h1 < 3 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= h1 + 1;
- h2 <= 2;
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h2 == 2 && h1 == 3 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= 0;
- h2 <= 0;
- if(tempp[6:0] == 10) //P to A
- begin
- tempp[6:0] <= 11;
- stater[9] <= 0;
- end
- end
- else if (s1 == 9 && s2 == 5 && m1 == 9 && m2 == 5 && h1 < 9 && counter == s)
- begin
- s1 <= 0;
- s2 <= 0;
- m1 <= 0;
- m2 <= 0;
- h1 <= h1 + 1;
- end
- if(h2 == tempa[27:21] && h1 == tempa[20:14] && m2 == tempa[13:7] && m1 == tempa[6:0]) // alarm
- if (counter >= hs)
- stateg <= ~stateg;
- else if (trig2) // stop alarm
- stateg <= 0;
- else if (trig1) //snooze time
- begin
- tempst <= 1;
- s3 <= temps[6:0]; s4 <= temps[13:7]; m3 <= temps[20:14]; m4 <= temps[27:21];
- end
- else if (tempst == 1)
- begin
- if (s3 > 0 && counter == s)
- s3 <= s3 - 1;
- else if (s3 == 0 && s4 > 0 && counter == s)
- begin
- s3 <= 0;
- s4 <= s4 - 1;
- end
- else if (s3 == 0 && s4 == 0 && m3 > 0 && counter == s)
- begin
- s3 <= 0;
- s4 <= 0;
- m3 <= m3 - 1;
- end
- else if (s3 == 0 && s4 == 0 && m3 == 0 && m4 > 0 && counter == s)
- begin
- s3 <= 0;
- s4 <= 0;
- m3 <= 0;
- m4 <= m4 - 1;
- end
- else if (s3 == 0 && s4 == 0 && m3 == 0 && m4 == 0 && counter == s)
- begin
- stateg <= ~stateg;
- end
- else
- stateg <= 0;
- end
- end
- //sw[1:0] == 2222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222222
- else if (sw[3:2] == 2 && sw[1:0] == 2 && sw[9:6] == 0) //countdown
- begin
- if (sw[4] == 1 && sw[5] == 0)
- begin
- kat <= tempc[27:21]; val <= tempc[20:14]; gee <= tempc[13:7]; ralph <= tempc[6:0];
- if(trig3) //up minute
- begin
- tempc[20:14] <= tempc[20:14]+1;
- if(tempc[20:14] == 9 && tempc[27:21] == 9)
- begin
- tempc[20:14] <= 0;
- tempc[27:21] <= 0;
- end
- else if(tempc[27:21] < 9 && tempc[20:14] == 9)
- begin
- tempc[20:14] <= 0;
- tempc[27:21] <= tempc[27:21] + 1;
- end
- end
- else if(trig2) //down minute
- begin
- tempc[20:14] <= tempc[20:14]-1;
- if(tempc[20:14] == 0 && tempc[27:21] == 0)
- begin
- tempc[20:14] <= 9;
- tempc[27:21] <= 9;
- end
- else if(tempc[27:21] > 0 && tempc[20:14] == 0)
- begin
- tempc[20:14] <= 9;
- tempc[27:21] <= gee - 1;
- end
- end
- else if (trig1) // up seconds
- begin
- tempc[6:0] <= tempc[6:0]+1;
- if(tempc[6:0] == 9 && tempc[13:7] == 5)
- begin
- tempc[6:0] <= 0;
- tempc[13:7] <= 0;
- end
- else if(tempc[13:7] < 5 && tempc[6:0] == 9)
- begin
- tempc[6:0] <= 0;
- tempc[13:7] <= tempc[13:7] + 1;
- end
- end
- else if (trig0) // down seconds
- begin
- tempc[6:0] <= tempc[6:0]-1;
- if(tempc[13:7] == 0 && tempc[6:0] == 0)
- begin
- tempc[6:0] <= 9;
- tempc[13:7] <= 5;
- end
- else if(tempc[13:7] > 0 && tempc[6:0] == 0)
- begin
- tempc[6:0] <= 9;
- tempc[13:7] <= tempc[13:7] - 1;
- end
- end
- end
- else if (sw[4] == 0 && sw[5] == 1)
- begin
- if (tempc2 == 0 )
- begin
- if (ralph > 0 && counter == s)
- ralph <= ralph - 1;
- else if (ralph == 0 && gee > 0 && counter == s)
- begin
- ralph <= 9;
- gee <= gee - 1;
- end
- else if (ralph == 0 && gee == 0 && val > 0 && counter == s)
- begin
- ralph <= 9;
- gee <= 5;
- val <= val - 1;
- end
- else if (ralph == 0 && gee == 0 && val == 0 && kat > 0 && counter == s)
- begin
- ralph <= 0;
- gee <= 0;
- val <= 0;
- kat <= kat - 1;
- end
- else if (ralph == 0 && gee == 0 && val == 0 && kat == 0 && counter == s)
- begin
- ralph <= 0;
- gee <= 0;
- val <= 0;
- kat <= 0;
- end
- end
- else if (trig3 && tempc2 == 0)
- tempc2 <= 1;
- else if (trig3 && tempc2 == 1)
- tempc2 <= 0;
- else if (trig0)
- begin
- ralph <= tempc[6:0];
- gee <= tempc[13:7];
- val <= tempc[20:14];
- kat <= tempc[27:21];
- end
- else if (tempc2 == 1)
- begin
- ralph <= ralph;
- gee <= gee;
- val <= val;
- kat <= kat;
- end
- end
- end
- //sw[3:2] - 33333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
- else if (sw[3:2] == 3 && sw[1:0] == 2 && sw[9:6] == 0 && sw[4] == 0) //stopwatch
- begin
- if (sw[5] == 0)
- begin
- kat <= 0; val <= 0; gee <= 0; ralph <= 0;
- end
- if (sw[5] == 1)
- begin
- if (tempw == 0)
- begin
- if (ralph < 9 && counter == s)
- ralph <= ralph + 1;
- else if (ralph == 9 && gee < 5 && counter == s)
- begin
- ralph <= 0;
- gee <= gee + 1;
- end
- else if (ralph == 9 && gee == 5 && val < 9 && counter == s)
- begin
- ralph <= 0;
- gee <= 0;
- val <= val + 1;
- end
- else if (ralph == 9 && gee == 5 && val == 9 && kat < 9 && counter == s)
- begin
- ralph <= 0;
- gee <= 0;
- val <= 0;
- kat <= kat + 1;
- end
- else if (ralph == 9 && gee == 5 && val == 9 && kat == 9 && counter == s)
- begin
- ralph <= 9;
- gee <= 5;
- val <= 9;
- kat <= 9;
- end
- end
- else if (trig3 && tempw == 0)
- tempw <= 1;
- else if (trig3 && tempw == 1)
- tempw <= 0;
- else if (trig0)
- begin
- ralph <= 0;
- gee <= 0;
- val <= 0;
- kat <= 0;
- end
- else if (tempw == 1)
- begin
- ralph <= ralph;
- gee <= gee;
- val <= val;
- kat <= kat;
- end
- end
- end
- case (kat)
- 0:state3 <= 1;
- 1:state3 <= 79;
- 2:state3 <= 18;
- 3:state3 <= 6;
- 4:state3 <= 76;
- 5:state3 <= 36;
- 6:state3 <= 32;
- 7:state3 <= 13;
- 8:state3 <= 0;
- 9:state3 <= 4;
- 127:state3 <= 127;
- endcase
- case (val)
- 0:state2 <= 1;
- 1:state2 <= 79;
- 2:state2 <= 18;
- 3:state2 <= 6;
- 4:state2 <= 76;
- 5:state2 <= 36;
- 6:state2 <= 32;
- 7:state2 <= 13;
- 8:state2 <= 0;
- 9:state2 <= 4;
- 10:state2 <= 7'b0001001; //n
- 11:state2 <= 7'b0111001; //r
- 12:state2 <= 7'b1110001; //L
- 13:state2 <= 7'b0011000; //P
- 14:state2 <= 7'b0100100; //S
- 127:state2 <= 127;
- endcase
- case (gee)
- 0:state1 <= 1;
- 1:state1 <= 79;
- 2:state1 <= 18;
- 3:state1 <= 6;
- 4:state1 <= 76;
- 5:state1 <= 36;
- 6:state1 <= 32;
- 7:state1 <= 13;
- 8:state1 <= 0;
- 9:state1 <= 4;
- 10:state1 <= 7'b1000100; //Y
- 11:state1 <= 79; //I
- 12:state1 <= 79; //I
- 13:state1 <= 7'b1001000; //H
- 14:state1 <= 7'b1000100; //Y
- 127:state1 <= 127;
- endcase
- case (ralph)
- 0:state0 <= 1;
- 1:state0 <= 79;
- 2:state0 <= 18;
- 3:state0 <= 6;
- 4:state0 <= 76;
- 5:state0 <= 36;
- 6:state0 <= 32;
- 7:state0 <= 13;
- 8:state0 <= 0;
- 9:state0 <= 4;
- 10:state0 <= 7'b0011000; //P
- 11:state0 <= 7'b0001000; //A
- 12:state0 <= 7'b0110001; //C
- 13:state0 <= 1; //O
- 14:state0 <= 7'b0100100; //S
- 15:state0 <= 7'b1110001; //L
- 16:state0 <= 7'b1000010; //d
- 127:state0 <= 127;
- endcase
- end
- end
- always @(posedge clk)
- begin
- if (sw[9] == 1)
- counter <= 0;
- else if (counter >= hs && sw[9] == 0)
- counter <= 0;
- else if (counter == s && sw[9] == 0)
- counter <= 0;
- else
- counter <= counter + 1;
- end
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement