Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*`timescale 1ns / 1ps
- //////////////////////////////////////////////////////////////////////////////////
- // Company:
- // Engineer:
- //
- // Create Date: 03:01:54 12/23/2019
- // Design Name:
- // Module Name: led_march2
- // Project Name:
- // Target Devices:
- // Tool versions:
- // Description:
- //
- // Dependencies:
- //
- // Revision:
- // Revision 0.01 - File Created
- // Additional Comments:
- //
- //////////////////////////////////////////////////////////////////////////////////
- module led_march2(
- input i_clk,
- output reg [7:0] o_led
- );
- reg toggle;
- initial
- begin
- o_led = 8'd1;
- toggle = 0;
- end
- always @(posedge i_clk)
- begin
- o_led <= (toggle==1) ? o_led >> 1 : o_led << 1;
- if(o_led == 8'd0)
- begin
- if(toggle)
- o_led <= 8'h2;
- else
- o_led <= 8'h40;
- toggle = ~toggle;
- end
- end
- endmodule
- */
- module led_march2(input i_clk,
- output reg [7:0] o_led
- );
- reg reverse;
- reg [2:0] counter;
- reg [23:0] speed_control;
- reg stb;
- initial
- begin
- reverse = 0;
- counter = 0;
- o_led = 1;
- speed_control = 0;
- stb = 0;
- end
- always @(posedge i_clk)
- if(stb)
- begin
- if(~reverse)
- o_led <= {o_led[6:0],o_led[7]}; //walking right to left
- else
- o_led <= {o_led[0],o_led[7:1]}; //walking left to right
- end
- always @(posedge i_clk)
- counter <= counter + 1;
- always @(posedge i_clk)
- {stb,speed_control} <= speed_control + 1;
- always @*
- begin
- reverse = 0;
- if(counter == 3'd7)
- reverse = ~reverse;
- end
- endmodule
Add Comment
Please, Sign In to add comment