У меня есть входной сигнал ШИМ, который я делю на две части: одна ветвь поступает на вход логического элемента И, тогда как другая ветвь должна быть задержана на переменное 4-битное число (например, «1001» = 9 тактов ) перед переходом к другому входу логического элемента AND, который создает мой окончательный вывод.
Однако я не уверен, какой подход использовать или как создать этот процесс задержки лаконично.
В настоящее время я рассчитываю тактовые циклы, зависящие от заданного целочисленного значения, перед тем как включить входной ШИМ-сигнал - в значительной степени стробированный D-фиксатор.
timebase : process(clk) --clock counter
if (clk'event and clk = '1') then
counter_enable <= '0';
if ( counter < counts-1) then --counts preset integer
count <= counter + 1;
else
counter_enable <= '1';
counter <= '0'
end if;
end if;
end process timebase;
y <= counter_enable; --enable flag
aout_en : process(counter_enable) --enabling input
begin
if (counter_enable'Event and counter_enable = '1') then
hold_out <= a; --internal signal to hold values
end if;
end process aout_en;
x <= hold_out and a; --final output
Что мне нужно, так это регистр переменной памяти для синхронизации входных сигналов ШИМ после задержки; я должен создать 15 различных регистров сдвига разной длины в зависимости от того, что вход? Тогда просто часы через них?