// Имя модуля : divide_by_3 // Имя файла : divide_by_3.v // Функц. назначение : Делитель на 3 // Программист : www.portal-ed.ru module divide_by_3 ( clk_in , //Входные такты reset , // Вход сброса clk_out // Выходные такты ); //-----------Входные порты--------------- input clk_in; input reset; //-----------Выходные порты--------------- output clk_out; //---------Внутренние переменные-------- reg [1:0] pos_cnt; reg [1:0] neg_cnt; //-------------Начало кода----------------- // Счёт по положительному(нарастающему) фронту always @ (posedge clk_in) if (reset) begin pos_cnt <= 0; end else begin pos_cnt <= (pos_cnt == 2) ? 0 : pos_cnt + 1; end // Счёт по отрицательному(спадающему) фронту always @ (negedge clk_in) if (reset) begin neg_cnt <= 0; end else begin neg_cnt <= (neg_cnt == 2) ? 0 : neg_cnt + 1; end assign clk_out = ((pos_cnt != 2) && (neg_cnt != 2)); endmodule