Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //ellesmeyin verilog var burda!
- //challenge accepted: bonus 2
- //state 0: start state
- //state 1: display score, get player if round > 0
- //state 2: display player (timed)
- //state 3: codemaker's input
- //state 4: display player & life (timed)
- //state 5: codebreaker's input
- //state 6: LED's
- //state 7: real code (timed)
- module term_project(clk, rst, player, letter, display, leds);
- input clk, rst;
- input [1:0] player;
- input [2:0] letter;
- output reg [27:0] display;
- output reg [7:0] leds;
- reg [6:0] zero = 7'b0000001;
- reg [6:0] one = 7'b1001111;
- reg [6:0] two = 7'b0010010;
- reg [6:0] three = 7'b0000110;
- reg [6:0] four = 7'b1001100;
- reg [6:0] letterp = 7'b0011000;
- reg [6:0] lettera = 7'b0001000;
- reg [6:0] letterc = 7'b0110001;
- reg [6:0] lettere = 7'b0110000;
- reg [6:0] letterh = 7'b1001000;
- reg [6:0] letterl = 7'b1110001;
- reg [6:0] letters = 7'b0100100;
- reg [6:0] letteru = 7'b1000001;
- reg [6:0] dash = 7'b1111110;
- reg [6:0] empty = 7'b1111111;
- reg [6:0] maxtime = 7'b1111111;
- reg [6:0] encodeletter;
- reg [6:0] encodescorea;
- reg [6:0] encodescoreb;
- reg [6:0] encodelife;
- reg [7:0] encodeled;
- reg [6:0] encodemaker;
- reg [6:0] encodebreaker;
- reg [6:0] transitioncounter;
- reg [1:0] scoreA;
- reg [1:0] scoreB;
- reg [11:0] code_maker;
- reg [11:0] code_breaker;
- reg [1:0] round;
- reg [1:0] codemaker;
- reg [2:0] lives;
- reg [7:0] cm3;
- reg [7:0] cm2;
- reg [7:0] cm1;
- reg [7:0] cm0;
- reg [7:0] cb3;
- reg [7:0] cb2;
- reg [7:0] cb1;
- reg [7:0] cb0;
- always(*)
- begin
- case (letter)
- 3'b001: encodeletter = lettera;
- 3'b010: encodeletter = letterc;
- 3'b011: encodeletter = lettere;
- 3'b100: encodeletter = letterh;
- 3'b101: encodeletter = letterl;
- 3'b110: encodeletter = letters;
- 3'b111: encodeletter = letteru;
- default:encodeletter = empty;
- end case
- end
- always(*)
- begin
- case (codemaker)
- 2'b01:
- begin
- encodemaker = one;
- encodebreaker = two;
- end
- 2'b10:
- begin
- encodemaker = two;
- encodebreaker = one;
- end
- default:
- begin
- encodemaker = 0;
- encodebreaker = 0;
- end
- endcase
- end
- always(*)
- begin
- case (scoreA)
- 2'b00: encodescorea = zero;
- 2'b01: encodescorea = one;
- 2'b10: encodescorea = two;
- default: encodescorea = three;
- end case
- end
- always(*)
- begin
- case (scoreB)
- 2'b00: encodescoreb = zero;
- 2'b01: encodescoreb = one;
- 2'b10: encodescoreb = two;
- default: encodescoreb = three;
- end case
- end
- always(*)
- begin
- case (lives)
- 3'b000: encodelives = zero;
- 3'b001: encodelives = one;
- 3'b010: encodelives = two;
- 3'b011: encodelives = three;
- default: encodelives = four;
- end case
- end
- always(*)
- begin
- if(cb1 == cm1)
- encodeled [7:6] = 2'b11;
- else if(cb1 == cm2 || cb1 == cm3 || cb1 == cm4)
- encodeled [7:6] = 2'b01;
- else
- encodeled [7:6] = 2'b00;
- if(cb2 == cm2)
- encodeled [5:4] = 2'b11;
- else if(cb2 == cm1 || cb2 == cm3 || cb2 == cm4)
- encodeled [5:4] = 2'b01;
- else
- encodeled [5:4] = 2'b00;
- if(cb3 == cm3)
- encodeled [3:2] = 2'b11;
- else if(cb3 == cm1 || cb3 == cm2 || cb3 == cm4)
- encodeled [3:2] = 2'b01;
- else
- encodeled [3:2] = 2'b00;
- if(cb4 == cm4)
- encodeled [1:0] = 2'b11;
- else if(cb4 == cm1 || cb4 == cm2 || cb4 == cm3)
- encodeled [1:0] = 2'b01;
- else
- encodeled [1:0] = 2'b00;
- end
- always(posedge clk)
- begin
- current_state <= next_state;
- end
- always(posedge clk or posedge rst)
- begin
- if(rst)
- begin
- next_state <= 0;
- end
- else
- begin
- if(transitioncounter == maxtime)
- begin
- if(current_state == 0)
- begin
- next_state <= 1;
- scoreA <= 0;
- scoreB <= 0;
- lives <= 4;
- round <= 3;
- end
- else if(current_state == 1)
- begin
- if(round == 0)
- begin
- display <= {encodedscorea , dash , encodedscoreb , empty};
- end
- else
- begin
- if(player == 0)
- begin
- display <= {encodedscorea , dash , encodedscoreb , empty};
- end
- else if(player == 2'b01)
- begin
- next_state <= 2;
- codemaker <= player;
- end
- else if(player == 2'b10)
- begin
- next_state <= 2;
- codemaker <= player;
- end
- end
- end
- else if(current_state == 2)
- begin
- display <= {letterp, encodemaker, empty, empty};
- next_state <= 3;
- transitioncounter <= 0;
- end
- else if(current_state == 3)
- begin
- end
- else if(current_state == 4)
- begin
- end
- else if(current_state == 5)
- begin
- end
- else if(current_state == 6)
- begin
- end
- else if(current_state == 7)
- begin
- end
- end
- else
- begin
- transitioncounter <= transitioncounter + 1;
- end
- end
- end
Add Comment
Please, Sign In to add comment