2014-10-02 35 views
0

作爲VHDL的新手我想知道是否有任何特殊的原因,爲什麼我不能使用計數器單獨減慢我的時鐘?在我看到的所有例子中,人們似乎已經爲新時鐘創建了一個實體和獨立的流程。 下面的代碼是我的嘗試。VHDL:減慢時鐘下降的方法

variable clk_counter : integer range 0 to 30 := 0; 
begin 
if rising_edge(clk) then 
clk_counter:=clk_counter+1; 
    if clk_counter = 30 then 
    clk_counter := 0; 
    ... 

任何幫助將不勝感激。

+0

您的問題中的代碼是您所指的例子之一還是您試圖簡化它們的嘗試? – fru1tbat 2014-10-02 16:30:32

+1

1.如果你想創建一個全新的實體,這是個人喜好。 2.意識到你不是在「放慢」時鐘。您正在創建一個充當clock_enable的計數器。當clk_counter = 30時,你可以允許一些代碼執行。但是你的所有代碼都應該以相同的頻率進行計時,這是你的主要時鐘。 – Russell 2014-10-02 16:37:46

+0

該代碼是我的嘗試。 Russel,我遇到的麻煩是我希望計數器每30個時鐘週期clock_enable一次。但是,它似乎沒有註冊在我的代碼的其餘部分 – BayK 2014-10-02 16:46:51

回答

0

有點晚了,但這是實現時鐘縮放的一種簡單方法。將縮放矢量的長度更改爲任何您需要的。將clockScalers(x)作爲縮放時鐘。

signal clockScalers : std_logic_vector(30 downto 0); 
-- Clock process 
process (clk100mhz, rst) begin 
    if (rst = '1') then 
     clockScalers <= (others=>'0'); 

    elsif (clk100mhz'event and clk100mhz = '1') then 
     clockScalers <= clockScalers + '1'; 
    end if; 
end process;