Перейти к содержанию
    

Alexey87

Участник
  • Постов

    80
  • Зарегистрирован

  • Посещение

Весь контент Alexey87


  1. Спасибо 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 не (работает) получается...
  2. Это я и хотел бы сделать, но как описать на верилоге? наверное как-то так: always @(posedge clk) begin if (count >= 100000000) begin count = 0; code = code + 1; end if (code > 9) code = 4'd1111;//погасить end но правильно ли?
  3. Добрый вечер! Вопрос по коду: module Indicator_Sum_Count( output reg [23:0]segments, input clk ); reg [3:0]code; reg [31:0] count; always @(posedge clk) begin case(code) 4'd1:segments = 8'b11101011;//1 4'd2:segments = 8'b10001100;//2 4'd3:segments = 8'b10001001;//3 4'd4:segments = 8'b00101011;//4 4'd5:segments = 8'b00011001;//5 4'd6:segments = 8'b00011000;//6 4'd7:segments = 8'b11001011;//7 4'd8:segments = 8'b00001000;//8 4'd9:segments = 8'b00001001;//9 4'd10:segments = 8'b01001000;//0 default: segments = 8'b11111111; endcase end always @(posedge clk) begin if (count > 100000000) begin code = 4'd11; count = 0; end else if (count > 90000000 & count < 100000000) code = 4'd1; if (count > 80000000 & count < 90000000) code <= 4'd2; if (count > 70000000 & count < 80000000) code <= 4'd3; if (count > 60000000 & count < 70000000) code <= 4'd4; if (count > 50000000 & count < 60000000) code <= 4'd5; if (count > 40000000 & count < 50000000) code <= 4'd6; if (count > 30000000 & count < 40000000) code <= 4'd7; if (count > 20000000 & count < 30000000) code <= 4'd8; if (count > 1 & count < 20000000) code <= 4'd9; count <= count + 1; end endmodule Пытаюсь реализовать индикацию от 0 до 9 с задержкой при помощи счётчика, как правильно описать?
×
×
  • Создать...