Я, например делал так
Код
localparam Fclk = 50_000_000;//Hz
localparam Freq = 300_000;//Hz
localparam Fbase = (Freq/Fclk) * 2^32;
localparam Fstep = Fbase / 128;
/// BITS_STREAM - Si5338 CLK = 320 kHz * 16 bit; When '1' - Freq data, when '0' Freq = Fbase;
assign phase_inc = data_tx[8] ? Fbase + (data_tx[6:0] * Fstep): Fbase - (data_tx[6:0] * Fstep );
///
always_comb begin
if(data_tx[9])
phase_mod = Fbase;
else if (BITS_STREAM) begin
phase_mod = phase_inc;
end
else
phase_mod = Fbase;
end
///
nco_n U1(
.phi_inc_i (phase_mod),
.clk (DCLK),
.reset_n (1),
.clken (1),
.phase_mod_i (),
.freq_mod_i (),
.fsin_o (sin),
.fcos_o (cos),
.out_valid ()
);