以 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
我已经为输入 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