Мне нужно добавить синтезируемую задержку в моем коде, чтобы получить вывод.Мой код -
module square_wave(clk,rst,dac_out);
input clk;
input rst;
output reg dac_out;
reg [3:0] counter; //
always @(posedge clk)
begin
if (rst == 1'b1 || counter == 4'b1111) // period, count from 0 to n-1
counter <= 0;
else
counter <= counter + 1'b1;
if (rst == 1'b0 && counter < 4'b0110) // duty cycle, m cycles high
dac_out = 1'b1;
else
dac_out = 1'b0;
end
endmodule
Это дает мне вывод, где 6 из 15 раз начального тактового цикла, это будет 1, а в противном случае 0. Пока это хорошо.Но другой сигнал, который мне нужен, TG, должен быть в два раза больше этого сигнала.То есть в 15 циклах это должно быть 1 2 раза.Итак, мне нужно задержать выходной сигнал в 6, 7 или 8 раз по сравнению с исходным тактовым циклом, чтобы получить задержанный сигнал, который я затем могу добавить к исходному выходу, чтобы получить то, что мне нужно.Пожалуйста, обратитесь к приложенному изображению.Я не могу понять синтезируемую задержку.Любая помощь будет оценена.Благодарю. Пожалуйста, посмотрите на эту картинку, чтобы помочь