Как реализовать включение часов в VHDL? - PullRequest
0 голосов
/ 29 октября 2018

Итак, в основном я пытаюсь активировать и деактивировать часы по истечении определенного времени. Вот небольшой пример того, что я ищу: `

library ieee;
use ieee.std_logic_1164.ALL;
use ieee.numeric_std.all;

entity example is
  generic (
    clk1       : in  std_logic; --- 100hz
    clk2 : in std_logic ;       --- 10hz

    );
end example;

architecture example_arch of example is

signal clk_count1, clk_count2 : integer range 0 to 1000:= 0;
signal clk_enable1 :  std_logic := '1';
signal clk_enable2 :  std_logic := '0';

begin

process (clk1)
  begin
    if rising_edge(clk1) and clk_enable1 = '1' then
        if clk_count = 1000 then
             clk_enable1 <= '0'; 
             clk_enable2 <= '1'; 
             clk_count1  <= 0; 
        else
             clk_count1 <= clk_count1 + 1;
             [...] --- do what you want to do while you are using clk1
        end if;
   end if;
  end process;

process (clk2)
      begin
        if rising_edge(clk2) and clk_enable2 = '1' then
            if clk_count2 = 1000 then
                 clk_enable1 <= '1'; 
                 clk_enable2 <= '0'; 
                 clk_count2  <= 0; 
            else
                 clk_count2 <= clk_count2 + 1;
                 [...] --- do what you want to do while you are using clk2
            end if;
       end if;
      end process;

end example_arch;

` Таким образом, в этом примере у нас есть два такта, где clk1 имеет большую частоту, чем clk2. Когда clk_enable1 равен 1, мы работаем с первым процессом, а когда clk_enable2 равен 1, мы работаем со вторым.

Проблема с этим кодом состоит в том, что даже если мы знаем, что clk_enable имеет значение '1', он все равно позволяет двум процессам выполнять себя после каждого тактового события двух часов. То, что я пытаюсь сделать, это деактивировать часы, пока я использую другой, чтобы не было событий часов с часами, которые я деактивировал, чтобы мы никогда не выполняли процесс этих часов, пока мы выполняем другой процесс. Другими словами, когда часы могут быть в 1 или 0, другой находится в высоком импедансе (Z). Я хочу что-то вроде этого:

флип-флоп

Спасибо за вашу помощь, надеясь, что я найду решение.

...