繁体   English   中英

如何在VHDL中实现时钟使能?

[英]How to implement a clock enable in VHDL?

因此,基本上我想做的是在一定时间后激活和停用时钟。 这是我正在寻找的一个小例子:

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)。 我想要这样的东西:

拖鞋

感谢您的帮助,希望我能找到解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM