Mrb
Arkadaslar Wait for 50ns; process'i askıya almak istiyorum. Yazılımı derlemek istediğimde ağagıdaki gibi bir hata veriyor .Nedenini bulamadım. Program Asagıdakı gıbıdır.
LIBRARY ieee;
USE ieee.std_logic_1164.ALL;
USE ieee.numeric_std.ALL;
use ieee.std_logic_unsigned.all;
entity Ram_2048 is
Port
(
Clk : in STD_LOGIC
);
end Ram_2048;
architecture Behavioral of Ram_2048 is
begin
process (Clk)
begin
IF (Clk'event AND Clk = '1') THEN
WAIT FOR 50 ns ;
END IF;
END PROCESS;
end Behavioral;
Aldıgım Hata Mesajı : Wait Statement must contain condition clause with UNTIL keyword
wait for if içinde kullanılmaz. Hatanın anlamı for yerine until kullanmanız. Bu arada wait for/until sadece benzetim için kullanılır. Sentezlenemez.
if içinde kullanılmadıgını bilmiyordum aydınlattıgın için tşkler . kucuk bir timer'a ihtiyacım vardı en basit şekilde bu gelmişti aklıma
bu şart saglanırsa
50ms bekle
bu sartı yerine getir şeklinde olacaktı.
sayıcı'ylamı yapmak durumundayım o halde...
evet sayaç oluşturup yapabilirsiniz. bir process içerisinde sayma işlemini yapıp diğer process e dallandırabilirsiniz.
http://www.vhdl.club/2016/10/17/nexys4-ddr-7-segment-display-0-f-counter/
linkteki örnekte clk_1hz_process adında process oluşturulup sayma işlemi bittiği zaman clk_1hz process i 1 yapılıp işlemler yapılmıştır. Clock hızına göre parametreleri değişebilirsiniz.
1 Hz = 1000 ms den, 100Mhz clk girişin varsa 5 bitlik sayıcı kurduğun da 5. biti 20ns sonra 1 olur.
Bilgiler için tşk ederim gerçek zaman saatine ihtiyacım yok .Sadece gecikme vermek için timer'a ihtiyacım vardı. Öyle bi durum ki bu geçikmeden bana 64 adet gerekli aynı mimari içinde bu zamanlayıcıları ayarlamak için 64 adet int değişkeni tanımlamam gerekecek gibi.
Daha iyi bir fikri olan var mı ?