"класс осталось только AHDL в VHDL/Verilog перевести "
//-- Покладов Александр
//-- Делитель частоты
//-- Выходная частота равна Fout = Fin * (cDiv / (2 ^ cRg))
//-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//-- ! Fout не может быть больше Fin, т.е. cDiv < (2 ^ cRg)
//-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//Constant cDiv = 6; -- коэффициент деления
//Constant cRg = 3; -- количество разрядов в регистре фазы
module fr_div
(
input Fin,
output Fout
);
parameter cDiv = 3'd6;
parameter cRg = 3;
reg [cRg:0] fv; //-- Регистр сумматора
reg rgF_tff;
wire Fin_X_2;
assign Fout = fv[cRg]; // -- Выход частоты
assign Fin_X_2 = Fin ^ rgF_tff; // -- Умножение на 2 Fin
always @(posedge Fin_X_2) // -- Удвоенная частота
begin
rgF_tff <= rgF_tff ^ 1'b1;
fv <= fv + cDiv; // -- Сумматор фазы
end
endmodule