Спасибо Rob, вот:
module Indicator
(
output reg [7:0]segments,
input clk,
input reset
);
localparam MAX_DIGIT_N = 10 ;
localparam CNT_DIV = 100_000 ;
localparam CNT_WH = $clog2(CNT_DIV);
reg [$clog2(MAX_DIGIT_N)-1:0] digit_cnt ;
reg [ CNT_WH-1:0] time_cnt ;
reg time_pulse;
always @(posedge clk)
begin
case(digit_cnt)
4'd1:segments = 8'b11101011;
4'd2:segments = 8'b10001100;
4'd3:segments = 8'b10001001;
4'd4:segments = 8'b00101011;
4'd5:segments = 8'b00011001;
4'd6:segments = 8'b00011000;
4'd7:segments = 8'b11001011;
4'd8:segments = 8'b00001000;
4'd9:segments = 8'b00001001;
4'd10:segments = 8'b01001000;
default:
segments = 8'b11111111;
endcase
end
always @(posedge clk)
if (reset)// у меня сброса нет, а если я выставляю 0, то высвечивается 8, а так ничего не светится
begin
digit_cnt <= 0;
// time_pulse <= 0;
// time_cn?t <= 0;
{time_pulse, time_cnt} <= (1<<CNT_WH)-CNT_DIV+1;
end
else begin
// time_cnt <= time_cnt + 1;
// time_pulse <= (time_cnt==(CNT_DIV-2));
// time_cnt <= time_pulse ? 0 : (time_pulse + 1);
{time_pulse, time_cnt} <= {time_pulse, time_cnt} + 1;
if (time_pulse) begin
{time_pulse, time_cnt} <= (1<<CNT_WH)-CNT_DIV+1;
digit_cnt <= digit_cnt + 1;
if (digit_cnt==MAX_DIGIT_N) begin
digit_cnt <= 0;
end
end
end
endmodule
не (работает) получается...