Advertisement
Guest User

Untitled

a guest
Nov 26th, 2017
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module lab3_wa(input logic clk,
  2.                     input logic reset,
  3.                     input logic left, right,
  4.                     output logic la, lb, lc, ra, rb, rc);
  5.     // Define states
  6.     typedef enum logic[2:0] {S0, S1, S2, S3, S4, S5, S6, S7} statetype;
  7.     statetype[2:0] state, nextstate;
  8.                    
  9.     // Update register
  10.     always_ff@(posedge clk, posedge reset)
  11.         if(reset) state <= S0;
  12.         else         state <= nextstate;
  13.        
  14.     // Determine the next state
  15.     always_comb
  16.         case(state)
  17.             S0:     if(left & right)            nextstate = S7;
  18.                     else if(~left & right)  nextstate = S1;
  19.                     else if(left & ~right)  nextstate = S4;
  20.                     else                            nextstate = S0;
  21.             S1: nextstate = S2;
  22.             S2: nextstate = S3;
  23.             S3: if(left & right)            nextstate = S7;
  24.                     else if(~left & right)  nextstate = S1;
  25.                     else if(left & ~right)  nextstate = S4;
  26.                     else                            nextstate = S0;
  27.             S4: nextstate = S5;
  28.             S5: nextstate = S6;
  29.             S6: if(left & right)            nextstate = S7;
  30.                     else if(~left & right)  nextstate = S1;
  31.                     else if(left & ~right)  nextstate = S4;
  32.                     else                            nextstate = S0;
  33.             S7: if(left & right)            nextstate = S7;
  34.                     else if(~left & right)  nextstate = S1;
  35.                     else if(left & ~right)  nextstate = S4;
  36.                     else                            nextstate = S0;
  37.             default: nextstate <= S0;
  38.         endcase
  39.        
  40.     // Determine output
  41.     case(state)
  42.             S0:
  43.                 assign la = 0;
  44.                 assign lb = 0;
  45.                 assign lc = 0;
  46.                 assign ra = 0;
  47.                 assign rb = 0;
  48.                 assign rc = 0;
  49.             S1:
  50.                 assign la = 1;
  51.                 assign lb = 0;
  52.                 assign lc = 0;
  53.                 assign ra = 0;
  54.                 assign rb = 0;
  55.                 assign rc = 0;
  56.             S2:
  57.                 assign la = 1;
  58.                 assign lb = 1;
  59.                 assign lc = 0;
  60.                 assign ra = 0;
  61.                 assign rb = 0;
  62.                 assign rc = 0;
  63.             S3:
  64.                 assign la = 1;
  65.                 assign lb = 1;
  66.                 assign lc = 1;
  67.                 assign ra = 0;
  68.                 assign rb = 0;
  69.                 assign rc = 0;
  70.             S4:
  71.                 assign la = 0;
  72.                 assign lb = 0;
  73.                 assign lc = 0;
  74.                 assign ra = 1;
  75.                 assign rb = 0;
  76.                 assign rc = 0;
  77.             S5:
  78.                 assign la = 0;
  79.                 assign lb = 0;
  80.                 assign lc = 0;
  81.                 assign ra = 1;
  82.                 assign rb = 1;
  83.                 assign rc = 0;
  84.             S6:
  85.                 assign la = 0;
  86.                 assign lb = 0;
  87.                 assign lc = 0;
  88.                 assign ra = 1;
  89.                 assign rb = 1;
  90.                 assign rc = 1;
  91.             S7:
  92.                 assign la = 0;
  93.                 assign lb = 0;
  94.                 assign lc = 0;
  95.                 assign ra = 0;
  96.                 assign rb = 0;
  97.                 assign rc = 0;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement