`define WIDTH 8
        module lfsr_updown (
        clk , // Тактовый вход
        reset , // Вход сброса
        enable , // Вход разрешения
        up_down , // Вход направления счёта
        count , // Счётный выход
        overflow // Выход переноса счёта по переполнению счётчика
        );
        input clk;
        input reset;
        input enable;
        input up_down;
        output [`WIDTH-1 : 0] count;
        output overflow;
        reg [`WIDTH-1 : 0] count;
        assign overflow = (up_down) ? (count == {{`WIDTH-1{1'b0}}, 1'b1}) :
                                                    (count == {1'b1, {`WIDTH-1{1'b0}}}) ;
        always @(posedge clk)
        if (reset)
        count <= {`WIDTH{1'b0}};
                 else if (enable) begin
                        if (up_down) begin
        count <= {~(^(count & `WIDTH'b01100011)),count[`WIDTH-1:1]};
                 end else begin
        count <= {count[`WIDTH-2:0],~(^(count & `WIDTH'b10110001))};
                   end
        end
        endmodule