Advertisement
Guest User

Untitled

a guest
Nov 12th, 2019
60
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module m_hiftreg (clk, in, outp);
  2.     input clk;
  3.     input [0:0] in;
  4.     output reg outp;
  5.  
  6.     reg [2:0] state;
  7.  
  8.     parameter st0 = 3'b000;
  9.     parameter st4 = 3'b001;
  10.     parameter st1 = 3'b010;
  11.     parameter st2 = 3'b011;
  12.     parameter st5 = 3'b100;
  13.     parameter st3 = 3'b101;
  14.     parameter st6 = 3'b110;
  15.     parameter st7 = 3'b111;
  16.     parameter dontcare = 3'bxxx;
  17.  
  18.     //TRANSITIONS//
  19.     always @(posedge clk)
  20.     begin
  21.         case (state)
  22.             st0:
  23.                 casez (in)
  24.                     1'b0: state = st0;
  25.                     1'b1: state = st4;
  26.                     default: state = dontcare;
  27.                 endcase
  28.             st4:
  29.                 casez (in)
  30.                     1'b0: state = st2;
  31.                     1'b1: state = st6;
  32.                     default: state = dontcare;
  33.                 endcase
  34.             st1:
  35.                 casez (in)
  36.                     1'b0: state = st0;
  37.                     1'b1: state = st4;
  38.                     default: state = dontcare;
  39.                 endcase
  40.             st2:
  41.                 casez (in)
  42.                     1'b0: state = st1;
  43.                     1'b1: state = st5;
  44.                     default: state = dontcare;
  45.                 endcase
  46.             st5:
  47.                 casez (in)
  48.                     1'b0: state = st2;
  49.                     1'b1: state = st6;
  50.                     default: state = dontcare;
  51.                 endcase
  52.             st3:
  53.                 casez (in)
  54.                     1'b0: state = st1;
  55.                     1'b1: state = st5;
  56.                     default: state = dontcare;
  57.                 endcase
  58.             st6:
  59.                 casez (in)
  60.                     1'b0: state = st3;
  61.                     1'b1: state = st7;
  62.                     default: state = dontcare;
  63.                 endcase
  64.             st7:
  65.                 casez (in)
  66.                     1'b0: state = st3;
  67.                     1'b1: state = st7;
  68.                     default: state = dontcare;
  69.                 endcase
  70.         default: state = dontcare;
  71.         endcase
  72.     end
  73.  
  74.     //OUTPUT//
  75.     always @(posedge clk)
  76.     begin
  77.         case (state)
  78.             st0:
  79.                 casez (in)
  80.                     1'b0: outp <= 1'b0;
  81.                     1'b1: outp <= 1'b0;
  82.                     default: outp <= 1'b?;
  83.                 endcase
  84.             st4:
  85.                 casez (in)
  86.                     1'b0: outp <= 1'b0;
  87.                     1'b1: outp <= 1'b0;
  88.                     default: outp <= 1'b?;
  89.                 endcase
  90.             st1:
  91.                 casez (in)
  92.                     1'b0: outp <= 1'b1;
  93.                     1'b1: outp <= 1'b1;
  94.                     default: outp <= 1'b?;
  95.                 endcase
  96.             st2:
  97.                 casez (in)
  98.                     1'b0: outp <= 1'b0;
  99.                     1'b1: outp <= 1'b0;
  100.                     default: outp <= 1'b?;
  101.                 endcase
  102.             st5:
  103.                 casez (in)
  104.                     1'b0: outp <= 1'b1;
  105.                     1'b1: outp <= 1'b1;
  106.                     default: outp <= 1'b?;
  107.                 endcase
  108.             st3:
  109.                 casez (in)
  110.                     1'b0: outp <= 1'b1;
  111.                     1'b1: outp <= 1'b1;
  112.                     default: outp <= 1'b?;
  113.                 endcase
  114.             st6:
  115.                 casez (in)
  116.                     1'b0: outp <= 1'b0;
  117.                     1'b1: outp <= 1'b0;
  118.                     default: outp <= 1'b?;
  119.                 endcase
  120.             st7:
  121.                 casez (in)
  122.                     1'b0: outp <= 1'b1;
  123.                     1'b1: outp <= 1'b1;
  124.                     default: outp <= 1'b?;
  125.                 endcase
  126.         default: outp <= 1'b?;
  127.         endcase
  128.     end
  129. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement