我想知道是否有人可以帮助我?我不知道如何表达这个问题,但我基本上是在尝试编写一个程序,从方波输入信号生成方波输出信号,匹配输入信号的占空比和频率。基本上,输出只是复制输入。以图形方式总结我所说的,这是我制作的一张图片:
这不是我的最终目标,但足以让我继续前进。我很难弄清楚如何使用输入。我有一个信号发生器产生输入方波信号,并将其发送到输入引脚。我尝试过以数学方式计算占空比,然后只是尝试将输出分配给一个设置为等于时钟信号每个上升沿上的输入的 reg,但它不起作用。
这是我的代码。它具有生成 1 Hz 信号的额外功能,但这只是从早期学习如何创建 pwm 中得出的。您可以忽略“pwm_reg”和“pwm”输出。“pwm2”输出旨在复制“apwm”输入:
`timescale 1ns / 1ps
module duty_cycle_gen(
input clk,
input rst_n,
input apwm,
output pwm,
output pwm2
);
// Input clock is 250MHz
localparam CLOCK_FREQUENCY = 250000000;
// Counter for toggling of clock
integer counter = 0;
reg pwm_reg = 0;
assign pwm = pwm_reg;
reg apwm_val;
always @(posedge clk) begin
if (!rst_n) begin
counter <= 8'h00;
pwm_reg <= 1'b0;
end
else begin
apwm_val <= apwm;
// If counter is zero, toggle pwm_reg
if (counter == 8'h00) begin
pwm_reg <= ~pwm_reg;
// Generate 1Hz Frequency
counter <= CLOCK_FREQUENCY/2 - 1;
end
// Else count down
else
counter <= counter - 1;
end
$display("counter : %d", counter);
end
assign pwm2 = apwm_val;
endmodule