`default_nettype none module lfsr_updown ( clk , // Clock input reset , // Reset input enable , // Enable input up_down , // Up Down input count , // Count output overflow // Overflow output ); input clk; input reset; input enable; input up_down; output [7 : 0] count; output overflow; reg [7 : 0] count; assign overflow = (up_down) ? (count == {{7{1'b0}}, 1'b1}) : (count == {1'b1, {7{1'b0}}}) ; always @(posedge clk) if (reset) count <= {7{1'b0}}; else if (enable) begin if (up_down) begin count <= {~(^(count & 8'b01100011)),count[7:1]}; end else begin count <= {count[5:0],~(^(count & 8'b10110001))}; end end endmodule