VHDL - переменная тактовая задержка для ШИМ - PullRequest
0 голосов
/ 25 апреля 2019

У меня есть входной сигнал ШИМ, который я делю на две части: одна ветвь поступает на вход логического элемента И, тогда как другая ветвь должна быть задержана на переменное 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 различных регистров сдвига разной длины в зависимости от того, что вход? Тогда просто часы через них?

...