Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- module project(mrst,sw,key,clk,hex3,hex2,hex1,hex0,led);
- input [8:0] sw;
- input [3:0] key;
- input mrst,clk;
- reg [199:0] ctr;
- //hex display
- output [6:0] hex3, hex2, hex1, hex0;
- reg [6:0] hex3, hex2, hex1, hex0;
- //red and green led
- output [17:0] led;
- reg [17:0] led;
- //this is for switch deboun ce
- reg p_not1, p_not2, p_not0, p_not3;
- reg [3:0] trig;
- //temp reg for seconds and minutes, hours. 6 bits because 60 decimal kasya sa 6 bits
- reg [3:0] tr_ss_ones, tr_mm_ones, tr_hr_ones, tr_hr_tens;
- reg [2:0] tr_ss_tens, tr_mm_tens;
- //set scoreboard
- reg [2:0] set1_p1, set1_p2; //set1
- reg [2:0] set2_p1, set2_p2; //set2
- reg [2:0] set3_p1, set3_p2; //set3
- reg [2:0] set4_p1, set4_p2; //set4
- reg [2:0] set;
- //game scoreboard
- reg [5:0] gm_p1, gm_p2;
- //tiebreaker scoreboard
- reg [5:0] gm_p1_tb, gm_p2_tb;
- reg [3:0] tbones_p1, tbtens_p1, tbones_p2, tbtens_p2;
- reg [3:0] tbones_s1_p1, tbtens_s1_p1, tbones_s1_p2, tbtens_s1_p2; // for 1st set
- reg [3:0] tbones_s2_p1, tbtens_s2_p1, tbones_s2_p2, tbtens_s2_p2; // for 2nd set
- reg [3:0] tbones_s3_p1, tbtens_s3_p1, tbones_s3_p2, tbtens_s3_p2; // for 3rd set
- reg [3:0] tbones_s4_p1, tbtens_s4_p1, tbones_s4_p2, tbtens_s4_p2; // for 4th set
- parameter n0 = 1;
- parameter n1 = 79;
- parameter n2 = 18;
- parameter n3 = 6;
- parameter n4 = 76;
- parameter n5 = 36;
- parameter n6 = 32;
- parameter n7 = 15;
- parameter n8 = 0;
- parameter n9 = 4;
- parameter sA = 8; //letter A
- parameter sd = 66; //letter d
- parameter dash = 126; // - dash
- parameter S = 36;
- parameter E = 48;
- parameter t = 112;
- parameter I = 121;
- initial hex0 = n0;
- initial hex1 = n0;
- initial hex2 = n0;
- initial hex3 = n0;
- //key debounce method
- always @ (posedge clk)
- begin
- p_not0 <= ~key[0];
- trig[0] <= key[0] & p_not0;
- p_not1 <= ~key[1];
- trig[1] <= key[1] & p_not1;
- p_not2 <= ~key[2];
- trig[2] <= key[2] & p_not2;
- p_not3 <= ~key[3];
- trig[3] <= key[3] & p_not3;
- end
- // ctr for ss
- always @ (posedge clk)
- if (mrst == 1)
- ctr <= 0;
- else if (ctr == 500000)
- ctr <= 0;
- else if (trig[1] == 1)
- ctr <= ctr;
- else
- ctr <= ctr + 1;
- //tennis match clock
- always @ (posedge clk)
- begin
- if (mrst == 1 || (trig[0] == 1 && sw[8] == 1) )
- begin
- tr_ss_ones <= 0;
- tr_ss_tens <= 0;
- tr_mm_ones <= 0;
- tr_mm_tens <= 0;
- tr_hr_ones <= 0;
- tr_hr_tens <= 0;
- end
- //seconds
- else if (ctr == 500000)
- begin
- tr_ss_ones <= tr_ss_ones + 1;
- if (tr_ss_ones == 9)
- begin
- tr_ss_ones <=0;
- tr_ss_tens <= tr_ss_tens + 1;
- //if within if kasi satisfy niya muna then go
- if (tr_ss_tens == 5)
- begin
- tr_ss_tens <= 0;
- tr_mm_ones <= tr_mm_ones + 1;
- //
- if (tr_mm_ones == 9)
- begin
- tr_mm_ones <= 0;
- tr_mm_tens <= tr_mm_tens + 1;
- //
- if (tr_mm_tens == 5)
- begin
- tr_mm_tens <= 0;
- tr_hr_ones <= tr_hr_ones + 1;
- //
- if (tr_hr_ones == 9)
- begin
- tr_hr_ones <= 0;
- tr_hr_tens <= tr_hr_tens + 1;
- //
- if(tr_hr_tens == 9)
- begin
- tr_hr_tens <= 0;
- end
- end
- end
- end
- end
- end
- end
- end
- // case for different displays
- always @ (posedge clk)
- begin
- case (sw)
- 9'b100000000:
- //display for tennis match clock
- begin
- if (key[3] == 0)
- begin
- // this is for ones place in seconds
- case (tr_ss_ones)
- 0: hex0 <= n0;
- 1: hex0 <= n1;
- 2: hex0 <= n2;
- 3: hex0 <= n3;
- 4: hex0 <= n4;
- 5: hex0 <= n5;
- 6: hex0 <= n6;
- 7: hex0 <= n7;
- 8: hex0 <= n8;
- 9: hex0 <= n9;
- default: hex0 <= n0;
- endcase
- // tenths place ng seconds pwede yata mag case dito?
- if (tr_ss_tens < 1)
- hex1 <= n0;
- else if (tr_ss_tens >= 1 && tr_ss_tens < 2)
- hex1 <= n1;
- else if (tr_ss_tens >= 2 && tr_ss_tens < 3)
- hex1 <= n2;
- else if (tr_ss_tens >= 3 && tr_ss_tens < 4)
- hex1 <= n3;
- else if (tr_ss_tens >= 4 && tr_ss_tens < 5)
- hex1 <= n4;
- else if (tr_ss_tens >= 5 && tr_ss_tens < 6)
- hex1 <= n5;
- case (tr_mm_ones)
- 0: hex2 <= n0;
- 1: hex2 <= n1;
- 2: hex2 <= n2;
- 3: hex2 <= n3;
- 4: hex2 <= n4;
- 5: hex2 <= n5;
- 6: hex2 <= n6;
- 7: hex2 <= n7;
- 8: hex2 <= n8;
- 9: hex2 <= n9;
- default: hex2 <= n0;
- endcase
- if (tr_mm_tens < 1)
- hex3 <= n0;
- else if (tr_mm_tens >= 1 && tr_mm_tens < 2)
- hex3 <= n1;
- else if (tr_mm_tens >= 2 && tr_mm_tens < 3)
- hex3 <= n2;
- else if (tr_mm_tens >= 3 && tr_mm_tens < 4)
- hex3 <= n3;
- else if (tr_mm_tens >= 4 && tr_mm_tens < 5)
- hex3 <= n4;
- else if (tr_mm_tens >= 5 && tr_mm_tens < 6)
- hex3 <= n5;
- end
- //
- //
- else //hh:mm
- begin
- // this is for ones place in mm
- case (tr_mm_ones)
- 0: hex0 <= n0;
- 1: hex0 <= n1;
- 2: hex0 <= n2;
- 3: hex0 <= n3;
- 4: hex0 <= n4;
- 5: hex0 <= n5;
- 6: hex0 <= n6;
- 7: hex0 <= n7;
- 8: hex0 <= n8;
- 9: hex0 <= n9;
- default: hex0 <= n0;
- endcase
- // tenths place ng minutes pwede yata mag case dito?
- if (tr_mm_tens < 1)
- hex1 <= n0;
- else if (tr_mm_tens >= 1 && tr_mm_tens < 2)
- hex1 <= n1;
- else if (tr_mm_tens >= 2 && tr_mm_tens < 3)
- hex1 <= n2;
- else if (tr_mm_tens >= 3 && tr_mm_tens < 4)
- hex1 <= n3;
- else if (tr_mm_tens >= 4 && tr_mm_tens < 5)
- hex1 <= n4;
- else if (tr_mm_tens >= 5 && tr_mm_tens < 6)
- hex1 <= n5;
- //hours ones
- case (tr_hr_ones)
- 0: hex2 <= n0;
- 1: hex2 <= n1;
- 2: hex2 <= n2;
- 3: hex2 <= n3;
- 4: hex2 <= n4;
- 5: hex2 <= n5;
- 6: hex2 <= n6;
- 7: hex2 <= n7;
- 8: hex2 <= n8;
- 9: hex2 <= n9;
- default: hex2 <= n0;
- endcase
- //hours tenths
- if (tr_hr_tens < 1)
- hex3 <= n0;
- else if (tr_hr_tens >= 1 && tr_hr_tens < 2)
- hex3 <= n1;
- else if (tr_hr_tens >= 2 && tr_hr_tens < 3)
- hex3 <= n2;
- else if (tr_hr_tens >= 3 && tr_hr_tens < 4)
- hex3 <= n3;
- else if (tr_hr_tens >= 4 && tr_hr_tens < 5)
- hex3 <= n4;
- else if (tr_hr_tens >= 5 && tr_hr_tens < 6)
- hex3 <= n5;
- end
- end
- 9'b010000000:
- //display for game scoreboard
- begin
- case (gm_p1)
- 0: begin hex3 <= n0; led[7:4]= 4'b0000; end
- 15: begin hex3 <= n1; led[7:4]= 4'b1000; end
- 30: begin hex3 <= n3; led[7:4] <= 4'b1100; end
- 45: begin hex3 <= n4; led[7:4] <= 4'b1110; end
- 50: begin hex3 <= dash; led[7:4] <= 4'b1110; end
- 55: begin hex3 <= sA; led[7:4] <= 4'b1110; end
- default: hex3 <= n0;
- endcase
- case (gm_p1)
- 0: hex2 <= n0;
- 15: hex2 <= n5;
- 30: hex2 <= n0;
- 45: hex2 <= n0;
- 50: hex2 <= dash;
- 55: hex2 <= sd;
- default: hex2 <= n0;
- endcase
- case (gm_p2)
- 0: begin hex1 <= n0; led[3:0] <= 4'b0000; end
- 15: begin hex1 <= n1; led[3:0] <= 4'b1000; end
- 30: begin hex1 <= n3; led[3:0] <= 4'b1100; end
- 45: begin hex1 <= n4; led[3:0] <= 4'b1110; end
- 50: begin hex1 <= dash; led[3:0] <= 4'b1110; end
- 55: begin hex1 <= sA; led[3:0] <= 4'b1110; end
- default: hex1 <= n0;
- endcase
- case (gm_p2)
- 0: hex0 <= n0;
- 15: hex0 <= n5;
- 30: hex0 <= n0;
- 45: hex0 <= n0;
- 50: hex0 <= dash;
- 55: hex0 <= sd;
- default: hex0 <= n0;
- endcase
- end
- 9'b001000000:
- //display for set scoreboard
- begin
- hex3 <= S; //s
- hex2 <= E; //e
- hex1 <= t; //t
- hex0 <= 7'h7f;
- if (key[3] == 0)
- begin
- case (set1_p1)
- 0: hex3 <= n0;
- 1: hex3 <= n1;
- 2: hex3 <= n2;
- 3: hex3 <= n3;
- 4: hex3 <= n4;
- 5: hex3 <= n5;
- 6: hex3 <= n6;
- 7: hex3 <= n7;
- default: hex3 <= n0;
- endcase
- case (set2_p1)
- 0: hex2 <= n0;
- 1: hex2 <= n1;
- 2: hex2 <= n2;
- 3: hex2 <= n3;
- 4: hex2 <= n4;
- 5: hex2 <= n5;
- 6: hex2 <= n6;
- 7: hex2 <= n7;
- default: hex2 <= n0;
- endcase
- case (set3_p1)
- 0: hex1 <= n0;
- 1: hex1 <= n1;
- 2: hex1 <= n2;
- 3: hex1 <= n3;
- 4: hex1 <= n4;
- 5: hex1 <= n5;
- 6: hex1 <= n6;
- 7: hex1 <= n7;
- default: hex1 <= n0;
- endcase
- case (set4_p1)
- 0: hex0 <= n0;
- 1: hex0 <= n1;
- 2: hex0 <= n2;
- 3: hex0 <= n3;
- 4: hex0 <= n4;
- 5: hex0 <= n5;
- 6: hex0 <= n6;
- 7: hex0 <= n7;
- default: hex0 <= n0;
- endcase
- end
- else if (key[2] == 0)
- begin
- case (set1_p2)
- 0: hex3 <= n0;
- 1: hex3 <= n1;
- 2: hex3 <= n2;
- 3: hex3 <= n3;
- 4: hex3 <= n4;
- 5: hex3 <= n5;
- 6: hex3 <= n6;
- 7: hex3 <= n7;
- default: hex3 <= n0;
- endcase
- case (set2_p2)
- 0: hex2 <= n0;
- 1: hex2 <= n1;
- 2: hex2 <= n2;
- 3: hex2 <= n3;
- 4: hex2 <= n4;
- 5: hex2 <= n5;
- 6: hex2 <= n6;
- 7: hex2 <= n7;
- default: hex2 <= n0;
- endcase
- case (set3_p2)
- 0: hex1 <= n0;
- 1: hex1 <= n1;
- 2: hex1 <= n2;
- 3: hex1 <= n3;
- 4: hex1 <= n4;
- 5: hex1 <= n5;
- 6: hex1 <= n6;
- 7: hex1 <= n7;
- default: hex1 <= n0;
- endcase
- case (set4_p2)
- 0: hex0 <= n0;
- 1: hex0 <= n1;
- 2: hex0 <= n2;
- 3: hex0 <= n3;
- 4: hex0 <= n4;
- 5: hex0 <= n5;
- 6: hex0 <= n6;
- 7: hex0 <= n7; // if nanalo si p2 sa tiebreaker set 4
- default: hex0 <= n0;
- endcase
- end
- end
- // 9'b000100000:
- // //display for tiebreaker game set scoreboard
- // begin
- // hex3 <= t;
- // hex2 <= I;
- // hex1 <= E;
- // hex0 <= 7'h7f;
- // case (trig) //if any key is pressed switch to score during tiebreaker
- // default:
- // begin
- // hex3 <= tbtens_p1;
- // hex2 <= tbones_p1;
- // hex1 <= tbtens_p2;
- // hex0 <= tbones_p2;
- // end
- // endcase
- // end
- //
- // 9'b000010000:
- // //display for tiebreaker game score for first four sets
- // begin
- // hex3 <= n0;
- // hex2 <= n0;
- // hex1 <= n0;
- // hex0 <= n0;
- //
- // if ( (set1_p1 != set1_p2) || (set2_p1 != set2_p2) || (set3_p1 != set3_p2) || (set4_p1 != set4_p2) ) //if no tiebreaker happened
- // hex3 <= dash;
- // hex2 <= dash;
- // hex1 <= dash;
- // hex0 <= dash;
- //
- // case (set)
- // 1:
- // begin
- // if (trig[3] == 1)
- // hex3 <= tbtens_s1_p1;
- // hex2 <= tbones_s1_p1;
- // hex1 <= tbtens_s1_p2;
- // hex0 <= tbones_s1_p2;
- // end
- // 2:
- // begin
- // if (trig[2] == 1)
- // hex3 <= tbtens_s2_p1;
- // hex2 <= tbones_s2_p1;
- // hex1 <= tbtens_s2_p2;
- // hex0 <= tbones_s2_p2;
- // end
- // 3:
- // begin
- // if (trig[1] == 1)
- // hex3 <= tbtens_s3_p1;
- // hex2 <= tbones_s3_p1;
- // hex1 <= tbtens_s3_p2;
- // hex0 <= tbones_s3_p2;
- // end
- // 4:
- // begin
- // if (trig[0] == 1)
- // hex3 <= tbtens_s4_p1;
- // hex2 <= tbones_s4_p1;
- // hex1 <= tbtens_s4_p2;
- // hex0 <= tbones_s4_p2;
- // end
- // endcase
- //
- // end
- endcase
- end
- always @ (posedge clk)
- case (sw)
- 9'b010000000:
- //game scoreboard
- begin
- if (gm_p1 < 45 || gm_p2 < 45)
- begin
- if (trig[3] == 1)
- gm_p1 <= gm_p1 + 15;
- else if(trig[2] == 1)
- gm_p1 <= gm_p1 - 15;
- else if(trig[1] == 1)
- gm_p2 <= gm_p2 + 15;
- else if(trig[0] == 1)
- gm_p2 <= gm_p2 - 15;
- end
- else if (gm_p1 == 60 || gm_p2 == 60)
- begin
- gm_p1 <= 0;
- gm_p2 <= 0;
- if (gm_p1 == 60)
- begin
- set1_p1 <= set1_p1 + 1;
- if (set1_p1 == 6 && set2_p1 < 6)
- begin
- set1_p1 <= 6;
- set2_p1 <= set2_p1 + 1;
- end
- else if (set2_p1 == 6 && set3_p1 < 6)
- begin
- set2_p1 <= 6;
- set3_p1 <= set3_p1 + 1;
- end
- else if (set3_p1 == 6 && set4_p1 < 6)
- begin
- set3_p1 <= 6;
- set4_p1 <= set4_p1 + 1;
- end
- end
- end
- else if (gm_p1 == 45 && gm_p2 == 45)
- begin
- if (trig[3] ==1)
- begin
- gm_p1 <= gm_p1 +10;
- gm_p2 <= gm_p2 +5;
- end
- else if (trig[1] ==1)
- begin
- gm_p1 <= gm_p1 +5;
- gm_p2 <= gm_p2 +10;
- end
- else if(trig[2] == 1)
- gm_p1 <= gm_p1 - 15;
- else if(trig[0] == 1)
- gm_p2 <= gm_p2 - 15;
- end
- else if ((gm_p1 == 55 && gm_p2 == 50) || (gm_p1 == 50 && gm_p2 == 55))
- begin
- if (trig[2] ==1)
- begin
- gm_p1 <= gm_p1 -10;
- gm_p2 <= gm_p2 -5;
- end
- else if (trig[0] ==1)
- begin
- gm_p1 <= gm_p1 -5;
- gm_p2 <= gm_p2 -10;
- end
- else if (trig[3] ==1)
- begin
- if (gm_p1 == 55 && gm_p2 == 50)
- begin
- gm_p1 <= gm_p1 + 5;
- gm_p2 <= 0;
- gm_p1 <= 0;
- // set1_p1 <= set1_p1 +1;
- end
- else if (gm_p1 == 50 && gm_p2 == 55)
- begin
- gm_p1 <= 45;
- gm_p2 <= 45;
- end
- end
- else if (trig[1] ==1)
- begin
- if (gm_p1 == 50 && gm_p2 == 55)
- begin
- gm_p2 <= gm_p2 + 5;
- gm_p1 <= 0;
- gm_p2 <= 0;
- // set1_p2 <= set1_p2 +1;
- end
- else if (gm_p1 == 55 && gm_p2 == 50)
- begin
- gm_p1 <= 45;
- gm_p2 <= 45;
- end
- end
- end
- end
- //9'b001000000:
- ////set scoreboard
- //
- //begin
- // set <= 1;
- // if (set1_p1 >= 6)
- // begin
- // led[17] <= 1;
- // set2_p1 <= set1_p1 - 6;
- // set <= 2;
- // if (set2_p1 == 6)
- // begin
- // led[16] <= 1;
- // set3_p1 <= set3_p1 + 1;
- // set <= 3;
- // if (set3_p1 == 6)
- // begin
- // led[16] <= 1;
- // set4_p1 <= set4_p1 + 1;
- // set <= 4;
- // if (set4_p1 == 6)
- // begin
- // led[15] <= 1;
- // //place for set5?
- // end
- // end
- // end
- // end
- //
- //
- // if (gm_p2 == 60 && ( (gm_p2 - gm_p1) <= 2 ) && gm_p1 != 60 ) //yung score ni p2 - score ni p1 dahil sa kailangan dalawa lamang para manalo
- // begin
- // set1_p2 <= set1_p2 + 1;
- // set <= 1;
- // if (set1_p2 == 6)
- // begin
- // led[12] <= 1;
- // set2_p2 <= set2_p2 + 1;
- // set <= 2;
- // end
- // if (set2_p2 == 6)
- // begin
- // led[11] <= 1;
- // set3_p2 <= set3_p2 + 1;
- // set <= 3;
- // end
- // if (set3_p2 == 6)
- // begin
- // led[10] <= 1;
- // set4_p2 <= set4_p2 + 1;
- // set <= 4;
- // end
- // if (set4_p2 == 6)
- // begin
- // led[9] <= 1;
- // //place for 5th set
- // end
- // end
- //end //end ng case ng set scoreboard
- //9'b000100000:
- ////tiebreaker live scoreboard
- //begin
- // if ( ( (set1_p1 == set1_p2) || (set2_p1 == set2_p2) || (set3_p1 == set3_p2) || (set4_p1 == set4_p2) ) && ( set1_p1 < 5 || set1_p2 < 5 || set2_p1 < 5 || set2_p2 < 5 || set3_p1 < 5 || set3_p2 < 5 || set4_p1 < 5 || set4_p2 < 5) )
- // //if score is 6-6 and first four sets, TIEBREAKER
- // begin
- // case(trig)
- // 4'b1000: //if nakascore si p1
- // begin
- // gm_p1_tb <= gm_p1_tb + 1;
- // tbones_p1 <= tbones_p1 + 1;
- // end
- // 4'b0100: //if nakascore si p2
- // begin
- // gm_p2_tb <= gm_p2_tb + 1;
- // tbones_p2 <= tbones_p2 + 1;
- // end
- // 4'b0001: //reset in tiebreaker
- // begin
- // gm_p1_tb <= 0;
- // gm_p2_tb <= 0;
- // tbones_p1 <= 0;
- // tbtens_p1 <= 0;
- // tbones_p2 <= 0;
- // tbtens_p2 <= 0;
- // end
- // endcase
- //
- // if (tbones_p1 == 9)
- // begin
- // tbones_p1 <= 0;
- // tbtens_p1 <= tbtens_p1 + 1;
- // end
- // else if (tbones_p2 == 9)
- // begin
- // tbones_p2 <= 0;
- // tbtens_p2 <= tbtens_p2 + 1;
- // end
- //
- // else if (gm_p1_tb >= 7 && ( (gm_p1_tb - gm_p2_tb) <= 2) ) //if nanalo si p1 sa tiebreaker set
- // begin
- // if (set1_p1 == set1_p2)
- // set1_p1 <= set1_p1 + 1;
- // else if (set2_p1 == set2_p2)
- // set2_p1 <= set2_p1 + 1;
- // else if (set3_p1 == set3_p2)
- // set3_p1 <= set3_p1 + 1;
- // else if (set4_p1 == set4_p2)
- // set4_p1 <= set4_p1 + 1;
- // end
- //
- // else if (gm_p2_tb >= 7 && ( (gm_p2_tb - gm_p1_tb) <= 2) ) //if nanalo si p2 sa tiebreaker set
- // begin
- // if (set1_p2 == set1_p2)
- // set1_p2 <= set1_p2 + 1;
- // else if (set2_p1 == set2_p2)
- // set2_p2 <= set2_p2 + 1;
- // else if (set3_p1 == set3_p2)
- // set3_p2 <= set3_p2 + 1;
- // else if (set4_p1 == set4_p2)
- // set4_p2 <= set4_p2 + 1;
- // end
- //
- // end //end para sa begin nung sa if ng tiebreaker
- //end
- //
- //9'b000010000:
- ////tiebreaker game score for first four sets
- //begin
- // if (set == 1) // para ma display yung score nila per tiebreaker set
- // begin
- // tbones_s1_p1 <= tbones_p1;
- // tbtens_s1_p1 <= tbones_p1;
- // tbones_s1_p2 <= tbones_p1;
- // tbtens_s1_p2 <= tbones_p1;
- // end
- // else if (set == 2)
- // begin
- // tbones_s2_p1 <= tbones_p1;
- // tbtens_s2_p1 <= tbones_p1;
- // tbones_s2_p2 <= tbones_p1;
- // tbtens_s2_p2 <= tbones_p1;
- // end
- // else if (set == 3)
- // begin
- // tbones_s3_p1 <= tbones_p1;
- // tbtens_s3_p1 <= tbones_p1;
- // tbones_s3_p2 <= tbones_p1;
- // tbtens_s3_p2 <= tbones_p1;
- // end
- // else if (set == 4)
- // begin
- // tbones_s4_p1 <= tbones_p1;
- // tbtens_s4_p1 <= tbones_p1;
- // tbones_s4_p2 <= tbones_p1;
- // tbtens_s4_p2 <= tbones_p1;
- // end
- //end
- endcase
- endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement