RenHao

Lab7

May 13th, 2013
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. module lab7(input L, R, H,F, clk, rst,output LA, LB, LC,LD, RA, RB, RC,RD);
  2. wire scan_clk;
  3. reg[23:0] div;
  4. reg [3:0] state;
  5. parameter IDLE=0,R1=1,R2=2,R3=3,R4=4,L1=5,L2=6,L3=7,L4=8,F1=9,F2=10,F3=11,F4=12,ALL=13;
  6.  
  7. always @(posedge clk, negedge rst)
  8.         begin
  9.             if(!rst) begin
  10.                 div <= 24'b0;
  11.             end
  12.             else begin
  13.                 div <= div + 1;
  14.             end
  15.         end
  16.  
  17.     assign scan_clk = div[23];// 0.67s
  18.  
  19. always@(posedge scan_clk)
  20. begin
  21.     if(!rst)
  22.        state<=IDLE;
  23.     case (state)  
  24.    
  25.     IDLE:begin
  26.         if(H|R&L)
  27.            state<=ALL;
  28.         else if(~H&F&~R&~L)
  29.            state<=F1;
  30.         else if(~H&~F&R&~L)
  31.            state<=R1;
  32.         else if(~H&~F&~R&L)
  33.            state<=L1;
  34.         else  
  35.         state<=IDLE;
  36.     end
  37.     R1:
  38.     begin
  39.         if(H) state<=ALL;
  40.         else if(~H&~F&R&~L)state<=R2;else state<=IDLE;
  41.     end
  42.     R2:
  43.     begin
  44.         if(H) state<=ALL;
  45.         else if(~H&~F&R&~L)state<=R3;else state<=IDLE;
  46.     end
  47.     R3:
  48.     begin
  49.         if(H) state<=ALL;
  50.         else if(~H&~F&R&~L)state<=R4;else state<=IDLE;
  51.     end
  52.     R4:
  53.     begin
  54.         if(H) state<=ALL;
  55.         else state<=IDLE;
  56.     end
  57.     L1:
  58.     begin
  59.         if(H) state<=ALL;
  60.         else if(~H&~F&~R&L)state<=L2;else state<=IDLE;
  61.     end
  62.     L2:
  63.     begin
  64.         if(H) state<=ALL;
  65.         else if(~H&~F&~R&L)state<=L3;else state<=IDLE;
  66.     end
  67.     L3:
  68.     begin
  69.         if(H) state<=ALL;
  70.         else if(~H&~F&~R&L)state<=L4;else state<=IDLE;
  71.     end
  72.     L4:
  73.     begin
  74.         if(H) state<=ALL;
  75.         else state<=IDLE;
  76.     end
  77.     F1:
  78.     begin
  79.         if(H) state<=ALL;
  80.         else if(~H&F&~R&~L)state<=F2;else state<=IDLE;
  81.     end
  82.     F2:
  83.     begin
  84.         if(H) state<=ALL;
  85.         else if(~H&F&~R&~L)state<=F3;else state<=IDLE;
  86.     end
  87.     F3:
  88.     begin
  89.         if(H) state<=ALL;
  90.         else if(~H&F&~R&~L)state<=ALL;else state<=IDLE;
  91.     end
  92.     F4:
  93.     begin
  94.         if(H) state<=ALL;
  95.         else state<=IDLE;
  96.     end
  97.     ALL:state<=IDLE;
  98.     default:state<=IDLE;
  99.     endcase
  100. end
  101.     assign RA=~((state==R1)|(state==R2)|(state==R3)|(state==R4)|(state==ALL)|
  102.                (state==F1)|(state==F2)|(state==F3)|(state==F4));
  103.     assign RB=~((state==R2)|(state==R3)|(state==R4)|(state==ALL)|
  104.                (state==F2)|(state==F3)|(state==F4));
  105.     assign RC=~((state==R3)|(state==R4)|(state==ALL)|(state==F3)|(state==F4));
  106.    
  107.     assign RD=~((state==R4)|(state==ALL)|(state==F4));
  108.    
  109.     assign LA=~((state==L1)|(state==L2)|(state==L3)|(state==L4)|(state==ALL)|
  110.                (state==F1)|(state==F2)|(state==F3)|(state==F4));
  111.     assign LB=~((state==L2)|(state==L3)|(state==L4)|(state==ALL)|
  112.                (state==F2)|(state==F3)|(state==F4));
  113.     assign LC=~((state==L3)|(state==L4)|(state==ALL)|(state==F3)|(state==F4));
  114.    
  115.     assign LD=~((state==L4)|(state==ALL)|(state==F4));
  116.    
  117.    
  118.    
  119.    
  120. endmodule
Advertisement
Add Comment
Please, Sign In to add comment