Guest User

Untitled

a guest
May 19th, 2018
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //ellesmeyin verilog var burda!
  2.  
  3.  
  4. //challenge accepted: bonus 2
  5. //state 0: start state
  6. //state 1: display score, get player if round > 0
  7. //state 2: display player (timed)
  8. //state 3: codemaker's input
  9. //state 4: display player & life (timed)
  10. //state 5: codebreaker's input
  11. //state 6: LED's
  12. //state 7: real code (timed)
  13.  
  14. module term_project(clk, rst, player, letter, display, leds);
  15.  
  16.     input clk, rst;
  17.     input [1:0] player;
  18.     input [2:0] letter;
  19.     output reg [27:0] display;
  20.     output reg [7:0] leds;
  21.    
  22.     reg [6:0] zero    = 7'b0000001;
  23.     reg [6:0] one     = 7'b1001111;
  24.     reg [6:0] two     = 7'b0010010;
  25.     reg [6:0] three   = 7'b0000110;
  26.     reg [6:0] four    = 7'b1001100;
  27.     reg [6:0] letterp = 7'b0011000;
  28.     reg [6:0] lettera = 7'b0001000;
  29.     reg [6:0] letterc = 7'b0110001;
  30.     reg [6:0] lettere = 7'b0110000;
  31.     reg [6:0] letterh = 7'b1001000;
  32.     reg [6:0] letterl = 7'b1110001;
  33.     reg [6:0] letters = 7'b0100100;
  34.     reg [6:0] letteru = 7'b1000001;
  35.     reg [6:0] dash    = 7'b1111110;
  36.     reg [6:0] empty   = 7'b1111111;
  37.     reg [6:0] maxtime = 7'b1111111;
  38.    
  39.     reg [6:0] encodeletter;
  40.     reg [6:0] encodescorea;
  41.     reg [6:0] encodescoreb;
  42.     reg [6:0] encodelife;
  43.     reg [7:0] encodeled;
  44.     reg [6:0] encodemaker;
  45.     reg [6:0] encodebreaker;
  46.     reg [6:0] transitioncounter;
  47.     reg [1:0] scoreA;
  48.     reg [1:0] scoreB;
  49.     reg [11:0] code_maker;
  50.     reg [11:0] code_breaker;
  51.     reg [1:0] round;
  52.     reg [1:0] codemaker;
  53.     reg [2:0] lives;
  54.     reg [7:0] cm3;
  55.     reg [7:0] cm2;
  56.     reg [7:0] cm1;
  57.     reg [7:0] cm0;
  58.     reg [7:0] cb3;
  59.     reg [7:0] cb2;
  60.     reg [7:0] cb1;
  61.     reg [7:0] cb0;
  62.    
  63.     always(*)
  64.     begin
  65.         case (letter)
  66.             3'b001: encodeletter = lettera;
  67.             3'b010: encodeletter = letterc;
  68.             3'b011: encodeletter = lettere;
  69.             3'b100: encodeletter = letterh;
  70.             3'b101: encodeletter = letterl;
  71.             3'b110: encodeletter = letters;
  72.             3'b111: encodeletter = letteru;
  73.             default:encodeletter = empty;
  74.         end case
  75.     end
  76.    
  77.     always(*)
  78.     begin
  79.         case (codemaker)
  80.             2'b01:
  81.             begin
  82.                 encodemaker = one;
  83.                 encodebreaker = two;
  84.             end
  85.             2'b10:
  86.             begin
  87.                 encodemaker = two;
  88.                 encodebreaker = one;
  89.             end
  90.             default:
  91.             begin
  92.                 encodemaker = 0;
  93.                 encodebreaker = 0;
  94.             end
  95.         endcase
  96.     end
  97.    
  98.     always(*)
  99.     begin
  100.         case (scoreA)
  101.             2'b00:   encodescorea = zero;
  102.             2'b01:   encodescorea = one;
  103.             2'b10:   encodescorea = two;
  104.             default: encodescorea = three;
  105.         end case
  106.     end
  107.    
  108.     always(*)
  109.     begin
  110.         case (scoreB)
  111.             2'b00:   encodescoreb = zero;
  112.             2'b01:   encodescoreb = one;
  113.             2'b10:   encodescoreb = two;
  114.             default: encodescoreb = three;
  115.         end case
  116.     end
  117.    
  118.     always(*)
  119.     begin
  120.         case (lives)
  121.             3'b000:  encodelives = zero;
  122.             3'b001:  encodelives = one;
  123.             3'b010:  encodelives = two;
  124.             3'b011:  encodelives = three;
  125.             default: encodelives = four;
  126.         end case
  127.     end
  128.  
  129.     always(*)
  130.     begin
  131.         if(cb1 == cm1)
  132.             encodeled [7:6] = 2'b11;
  133.         else if(cb1 == cm2 || cb1 == cm3 || cb1 == cm4)
  134.             encodeled [7:6] = 2'b01;
  135.         else
  136.             encodeled [7:6] = 2'b00;
  137.        
  138.         if(cb2 == cm2)
  139.             encodeled [5:4] = 2'b11;
  140.         else if(cb2 == cm1 || cb2 == cm3 || cb2 == cm4)
  141.             encodeled [5:4] = 2'b01;
  142.         else
  143.             encodeled [5:4] = 2'b00;
  144.        
  145.         if(cb3 == cm3)
  146.             encodeled [3:2] = 2'b11;
  147.         else if(cb3 == cm1 || cb3 == cm2 || cb3 == cm4)
  148.             encodeled [3:2] = 2'b01;
  149.         else
  150.             encodeled [3:2] = 2'b00;
  151.        
  152.         if(cb4 == cm4)
  153.             encodeled [1:0] = 2'b11;
  154.         else if(cb4 == cm1 || cb4 == cm2 || cb4 == cm3)
  155.             encodeled [1:0] = 2'b01;
  156.         else
  157.             encodeled [1:0] = 2'b00;
  158.     end
  159.    
  160.     always(posedge clk)
  161.     begin
  162.         current_state <= next_state;
  163.     end
  164.    
  165.     always(posedge clk or posedge rst)
  166.     begin
  167.         if(rst)
  168.         begin
  169.             next_state <= 0;
  170.         end
  171.         else
  172.         begin
  173.             if(transitioncounter == maxtime)
  174.             begin
  175.                 if(current_state == 0)
  176.                 begin
  177.                     next_state <= 1;
  178.                     scoreA <= 0;
  179.                     scoreB <= 0;
  180.                     lives  <= 4;
  181.                     round  <= 3;
  182.                 end
  183.                 else if(current_state == 1)
  184.                 begin
  185.                     if(round == 0)
  186.                     begin
  187.                         display <= {encodedscorea , dash , encodedscoreb , empty};
  188.                     end
  189.                     else
  190.                     begin
  191.                         if(player == 0)
  192.                         begin
  193.                             display <= {encodedscorea , dash , encodedscoreb , empty};
  194.                         end
  195.                         else if(player == 2'b01)
  196.                         begin
  197.                             next_state <= 2;
  198.                             codemaker <= player;
  199.                         end
  200.                         else if(player == 2'b10)
  201.                         begin
  202.                             next_state <= 2;
  203.                             codemaker <= player;
  204.                         end
  205.                     end
  206.                 end
  207.                 else if(current_state == 2)
  208.                 begin
  209.                     display <= {letterp, encodemaker, empty, empty};
  210.                     next_state <= 3;
  211.                     transitioncounter <= 0;
  212.                 end
  213.                 else if(current_state == 3)
  214.                 begin
  215.                 end
  216.                 else if(current_state == 4)
  217.                 begin
  218.                 end
  219.                 else if(current_state == 5)
  220.                 begin
  221.                 end
  222.                 else if(current_state == 6)
  223.                 begin
  224.                 end
  225.                 else if(current_state == 7)
  226.                 begin
  227.                 end
  228.             end
  229.             else
  230.             begin
  231.                 transitioncounter <= transitioncounter + 1;
  232.             end
  233.         end
  234.     end
Add Comment
Please, Sign In to add comment