Advertisement
akatla

Task Lola

Jul 8th, 2019
336
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1.  
  2. `timescale 1ns / 1ps
  3. //////////////////////////////////////////////////////////////////////////////////
  4. // Company:
  5. // Engineer:
  6. //
  7. // Create Date:    20:09:51 11/04/2018
  8. // Design Name:
  9. // Module Name:    runlight
  10. // Project Name:
  11. // Target Devices:
  12. // Tool versions:
  13. // Description:
  14. //
  15. // Dependencies:
  16. //
  17. // Revision:
  18. // Revision 0.01 - File Created
  19. // Additional Comments:
  20. //
  21. //////////////////////////////////////////////////////////////////////////////////
  22. module RunLolaOne #(parameter DIGINIT = 0, DIGITA = DIGINIT + 3)                    // 21
  23. (    
  24.     input  clk,
  25.     output [3:0]row
  26. );
  27.  
  28. // 25 wires.
  29. wire [DIGITA:0]add;
  30. wire [2:0]add_stp;
  31.  
  32. // Register counter.
  33. reg  [DIGITA:0]RG = {(DIGINIT + 4){1'b0}};
  34. // Register shifter
  35. reg [3:0]rowGO = 4'b0000;
  36. reg [2:0]step_r = 3'b000;
  37.  
  38. assign row[3:0] = rowGO[3:0];
  39.  
  40. assign add[DIGITA:0] = RG[DIGITA:0] + 1'b1;
  41.  
  42. assign add_stp[2:0] = step_r[2:0] + 1'b1;
  43.  
  44. // Register shifter run
  45. always@(posedge clk) begin
  46.            
  47.             if(RG[DIGITA:0] == {{(DIGINIT + 3){1'b0}},{1'b1}}) begin
  48.            
  49.                 if(step_r[2:0] == 3'b000) begin
  50.                     rowGO[3:0] <= 4'b1110;
  51.                                        
  52.                 end
  53.                
  54.                 if(step_r[2:0] == 3'b100) begin
  55.                     rowGO[3:0] <= 4'b0111;
  56.                    
  57.                 end
  58.  
  59.             end
  60.            
  61.             if(RG[DIGITA:0] == {{(DIGINIT + 2){1'b0}},{2'b10}}) begin
  62.                
  63.                         if(step_r[2:0] >= 3'b000 && step_r[2:0] <= 3'b011)
  64.                        begin
  65.                             rowGO <= {rowGO[0], rowGO[3:1]};                       
  66.                         end
  67.                        
  68.                        if(step_r[2:0] >= 3'b100 && step_r[2:0] <= 3'b111)                      
  69.                         begin                      
  70.                             rowGO <= {rowGO[2:0], rowGO[3]};                       
  71.                         end
  72.                        
  73.                     step_r[2:0] <= add_stp[2:0];
  74.                                    
  75.             end
  76.            
  77.             RG[DIGITA:0] <= add[DIGITA:0];
  78. end
  79.  
  80. endmodule
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement