以 10kHz 调制信号开关

Modulating a signal on-off at 10kHz

我已经为输入 clk = 10MHz 和 output_clk = 5MHz 编写了代码。我想以 10kHz 的频率调制 output_clk 开关,如示例信号所示。但是,我当前的代码仅将 output_clk 修改为 10kHz,而不是将信号调制为 10kHz,而 output_clk 保持 5MHz。有什么建议可以实现吗?

请参阅示例 output_clk 我想要作为输出的信号。

// mclk1 = 10MHz
always#(50)
begin
    mclk1 <= ~mclk1;
end

reg [31:0]count_500;

always@(posedge mclk1)
begin
  if (count_500 == 500-1)
  begin
      mdata1 <= ~mdata1;
      count_500 <= 0;
  end
  else
  begin
      count_500 <= count_500 + 1;
  end
end

您可以创建一个跟随 mclk1 但被 10kHz 信号选通的新信号:

wire mclk1gated = mdata1 ? mclk1 : 0;

这是一个完整的代码示例:

module tb;

bit mclk1,mdata1;

// mclk1 = 10MHz
always#(50)
begin
    mclk1 <= ~mclk1;
end

reg [31:0]count_500=0;

always@(posedge mclk1)
begin
  if (count_500 == 500-1)
  begin
      mdata1 <= ~mdata1;
      count_500 <= 0;
  end
  else
  begin
      count_500 <= count_500 + 1;
  end
end

wire mclk1gated = mdata1 ? mclk1 : 0;

initial begin
    #300us $finish;
end

endmodule