Bu örnekte bir önceki bölümde anlatılan “Yükselen Kenar Tetiklemeli D İki Durumlusu” örneğinden farklı olarak, tasarıma eşzamanlı olmayan bir reset girişi eklenmiştir. Eşzamanlı olmayan reset girişi, tetikleme işaretinden bağımsız olarak, çıkışların sıfırlanmasını sağlamaktadır. Gerçekleştirilen tasarıma ait doğruluk tablosu Tablo 1’de verilmiştir.
Tablo 1’den de görüleceği üzere in_rst giriş portu değeri ‘0’ ve saat darbesi yükselen kenarı mevcut ise in_giris giriş port değeri out_cikis çıkış portuna, in_giris giriş port değerinin değili ise out_cikis’ çıkış portuna atanmaktadır.
Yükselen kenar mevcut olmadığı durumlarda ise çıkış değerleri bir önceki durumlarını korumaktadır. Eğer in_rst giriş değeri ‘1‘ ise in_giris giriş portu değeri ve saat darbesi girişinin durumları önemsiz hale gelmektedir. Bu durumda out_cikis çıkış portu değerine ‘0’ ve out_cikis’ çıkış portu değerine ‘1’ atanmaktadır. Şekil 1’de ise “Eşzamanlı Olmayan Resetli Yükselen Kenar Tetiklemeli D İki Durumlusu” tasarımına ait mantık devresi verilmiştir.
in_rst | in_clk | in_giris | out_cikis(+) | out_cikis'(+) |
0 | Çıkan kenar | 0 | 0 | 1 |
Çıkan kenar | 1 | 1 | 0 | |
Çıkan kenar yok | X | out_cikis | out_cikis’ | |
1 | Çıkan kenar | 0 | 0 | 1 |
Çıkan kenar | 1 | 0 | 1 | |
Çıkan kenar yok | X | 0 | 1 |

Şekil 1 Eşzamanlı olmayan resetli yükselen kenar tetiklemeli D iki durumlusu mantık devresi
Örnek 1: Aşağıda eşzamanlı olmayan resetli yükselen kenar tetiklemeli D iki durumlu mantık devresinin gerçekleştirildiği eszam_olmayan_rstli_d_mandali.vhd VHDL kodu verilmiştir. Tablo 1 ve Şekil 1’den de görülceği üzere eszam_olmayan_rstli_d_mandali varlığımız üç giriş ve iki çıkış portuna sahiptir. Port tanımlamaya ilişkin bildirimler 5-11 satırları arasında yapılmatıdır.
16. satırda r_cikis sinyali tanımlanmaktadır. 20. satırda tanımlanan söz dizimi ile process’in in_clk, in_rst ve in_giris giriş portları değerlerinde meydana gelen değişiklikler ile aktif olacağı belirtilmektedir. 23. satırda tanımlı koşul ifadesi ile in_rst giriş portu değeri ‘1’ olduğunda in_clk ve in_giris sinyallerinin durumu farketmeksiniz r_cikis sinyaline ‘0’ değeri atanmaktadır. Bu durumda out_cikis çıkış portu değeri ‘0’ ve out_cikis_degil çıkış portu değeri ‘1’ olmaktadır. in_rst giriş portunun diğer durumlarında ise 25. satırda tanımlı koşul ifadesinin sağlanması yani in_clk giriş portunda yükselen kenar meydana gelmesi durumunda in_giris giriş port değeri r_cikis sinyaline atanmaktadır. Aksi durumlarda ise r_cikis sinyali bir önceki değerini korumaktadır. 31 satırda out_cikis portuna r_cikis sinyali atanırken, 32. satırda ise out_cikis_degil portuna r_cikis sinyalinin değili atanmaktadır.
library IEEE; use IEEE.STD_LOGIC_1164.all; entity eszam_olmayan_rstli_d_mandali is port ( in_clk : in std_logic; in_rst : in std_logic; in_giris : in std_logic; out_cikis : out std_logic; out_cikis_degil : out std_logic ); end eszam_olmayan_rstli_d_mandali; architecture Behavioral of eszam_olmayan_rstli_d_mandali is signal r_cikis : std_logic := '0'; begin process(in_clk, in_rst, in_giris) begin if in_rst = '1' then r_cikis <= '0'; elsif in_clk'event and in_clk = '1' then r_cikis <= in_giris; end if; end process; out_cikis <= r_cikis; out_cikis_degil <= (not r_cikis); end Behavioral;
Aşağıda ise eszam_olmayan_rstli_d_mandali varlığının benzetim yapılabilmesi için tb_eszam_olmayan_rstli_d_mandali.vhd sınama kodu (test bench) verilmiştir ve benzetim çıktısı Şekil 2’de gösterilmiştir. Şekil 2’de gösterilen benzetim sonucunda:
1. adım : in_rst giriş portudeğerinin ‘0’ olması ve in_clk giriş portunda meydana gelen yükselen kenarı ile birlikte in_giris giriş portu değeri r_cikis sinyaline atanmaktadır ve r_cikis sinyalinin değeri ‘0’ olmaktadır. r_cikis sinyalinin değerinin ‘0’ olması ile out_cikis çıkış portu değerine ‘0’, out_cikis_degil çıkış portu değerine ise ‘1’ atanmaktadır.
2. adım:in_rst giriş portudeğerinin ‘1’ olması nedeniyle r_cikis sinyaline ‘0’ atanmaktadır. r_cikis sinyalinin değerinin ‘0’ olması ile out_cikis çıkış portu değerine ‘0’, out_cikis_degil çıkış portu değerine ise ‘1’ atanmaktadır.
3. adım:in_rst giriş portudeğerinin ‘0’ olması ve in_clk giriş portunda meydana gelen yükselen kenar ile birlikte in_giris giriş portu değeri r_cikis sinyaline atanmaktadır ve r_cikis sinyalinin değeri ‘1’ olmaktadır. r_cikis sinyalinin değerinin ‘1’ olması ile out_cikis çıkış portu değerine ‘1’, out_cikis_degil çıkış portu değerine ise ‘0’ atanmaktadır.
4. adım:in_rst giriş portudeğerinin ‘1’ olması nedeniyle r_cikis sinyaline ‘0’ atanmaktadır. r_cikis sinyalinin değerinin ‘0’ olması ile out_cikis çıkış portu değerine ‘0’, out_cikis_degil çıkış portu değerine ise ‘1’ atanmaktadır. 4. adım içerisinde in_giris giriş port değerinin ‘1’ olmasına rağmen in_rst giriş portunun değerinin ‘1’ olması nedeniyle çıkışa aktarılamamıştır
5. adım:in_rst giriş portudeğerinin ‘0’ olması ve in_clk giriş portunda meydana gelen yükselen kenar ile birlikte in_giris giriş portu değeri r_cikis sinyaline atanmaktadır ve r_cikis sinyalinin değeri ‘0’ olmaktadır. r_cikis sinyalinin değerinin ‘0’ olması ile out_cikis çıkış portu değerine ‘0’, out_cikis_degil çıkış portu değerine ise ‘1’ atanmaktadır. 5. adım içerisinde in_giris giriş portu değeri ‘1’ olmasına rağmen saat darbesi yükselen kenarı mevcut olmadığından r_cikis sinyaline atanamamıştır.
6. adım:in_rst giriş portudeğerinin ‘0’ olması ve in_clk giriş portunda meydana gelen yükselen kenar ile birlikte in_giris giriş portu değeri r_cikis sinyaline atanmaktadır ve r_cikis sinyalinin değeri ‘1’ olmaktadır. r_cikis sinyalinin değerinin ‘1’ olması ile out_cikis çıkış portu değerine ‘1’, out_cikis_degil çıkış portu değerine ise ‘0’ atanmaktadır.
7. adım:in_rst giriş portudeğerinin ‘1’ olması nedeniyle r_cikis sinyaline ‘0’ atanmıştır. r_cikis sinyalinin değerinin ‘0’ olması ile out_cikis çıkış portu değerine ‘0’, out_cikis_degil çıkış portu değerine ise ‘1’ atanmaktadır.

Şekil 2 eszam_olmayan_rstli_d_mandali varlığı benzetim çıktısı
tb_eszam_olmayan_rstli_d_mandali.vhd VHDL kodun amacı eszam_olmayan_rstli_d_mandali varlığının benzetiminin yapmak olduğundan dolayı tb_eszam_olmayan_rstli_d_mandali varlığına ait bir port tanımlaması yapılmamıştır. tb_eszam_olmayan_rstli_d_mandali.vhd VHDL kodu sentezlenemez sadece benzetim için kullanılabilmektedir. 19. satırda saat darbesinin periyodunun belirlendiği sabit tanımlaması yapılmıştır. Tanımlamada saat darbesi periyodu 150 ns olarak belirlenmiştir. Test kodlarının oluşturulması amacı ile kullanılacak olan sinyallerin tanımlama işlemleri 20-24. satırlarda yapılmıştır.
28-35. satırlar arasında tanımlanan process ile in_clk saat darbesinin davranışı tanımlanmaktadır. 30. satırda in_clk sinyaline ‘1’ değeri atanmakta ve 31. satırda tanımlanan ifade ile saat darbesi periyodunun yarısı kadar beklenmektedir. 33. satırda in_clk sinyaline ‘0’ değeri atanmakta ve 34. satırda tanımlanan ifade ile saat darbesi periyodunun yarısı kadar beklenmektedir. Bu şekilde %50 doluluk oranında saat darbesi elde edilmiştir.
37-46 satırları arasında tanımlanan process içerisinde in_rst sinyalinin davranışı tanımlanmaktadır. 39. satırda tanımlanan ifade ile in_rst sinyalinin 0-50 ns aralığında alacağı değerin ‘0’ olacağı belirtilmektedir. 40. satırda tanımlanan ifade ile in_rst sinyalinin 50-150 ns aralığında alacağı değerin ‘1’ olacağı belirtilmektedir. 41. satırda tanımlanan ifade ile in_rst sinyalinin 150-450 ns aralığında alacağı değerin ‘0’ olacağı belirtilmektedir. 42 satırda tanımlanan ifade ile in_rst sinyalinin 450-600 ns aralığında alacağı değerin ‘1’ olacağı belirtilmektedir. 43. satırda tanımlanan ifade ile in_rst sinyalinin 600-800 ns aralığında alacağı değerin ‘0’ olacağı belirtilmektedir. 44. satırda tanımlanan ifade ile in_rst sinyalinin 800-980 ns aralığında alacağı değerin ‘1’ olacağı belirtilmektedir. 45. satırda tanımlanan ifade ile in_rst sinyalinin 980-100 ns aralığında alacağı değerin ‘0’ olacağı belirtilmektedir.
48-55. satırları arasında tanımlanan process içerisinde in_giris sinyalinin davranışı tanımlanmaktadır. 50. satırda tanımlanan ifade ile in_giris sinyalinin 0-100 ns aralığında alacağı değerin ‘0’ olacağı belirtilmektedir. 51. satırda tanımlanan ifade ile in_giris sinyalinin 100-500 ns aralığında alacağı değerin ‘1’ olacağı belirtilmektedir. 52. satırda tanımlanan ifade ile in_giris sinyalinin 500-700 ns aralığında alacağı değerin ‘0’ olacağı belirtilmektedir. 53. satırda tanımlanan ifade ile in_giris sinyalinin 700-800 ns aralığında alacağı değerin ‘1’ olacağı belirtilmektedir. 54. satırda tanımlanan ifade ile in_giris sinyalinin 800-1000 ns aralığında alacağı değerin ‘0’ olacağı belirtilmektedir.
eszam_olmayan_rstli_d_mandali varlığının tb_eszam_olmayan_rstli_d_mandali varlığında alt devre olarak kullanılabilmesi için gerekli component tanımlama işlemleri 9-17. satırlar arasında yapılmıştır. 57-64. satırlar arasında ise eszam_olmayan_rstli_d_mandali alt devresine ilişkin bağlantılar yapılmaktadır.
library IEEE; use IEEE.STD_LOGIC_1164.all; entity tb_eszam_olmayan_rstli_d_mandali is end tb_eszam_olmayan_rstli_d_mandali; architecture Behavioral of tb_eszam_olmayan_rstli_d_mandali is component eszam_olmayan_rstli_d_mandali Port ( in_clk : in std_logic; in_rst : in std_logic; in_giris : in std_logic; out_cikis : out std_logic; out_cikis_degil : out std_logic ); end component; constant CLK_PERIOD : time := 150 ns; signal in_clk : std_logic := '0'; signal in_rst : std_logic := '0'; signal in_giris : std_logic := '0'; signal out_cikis : std_logic := '0'; signal out_cikis_degil : std_logic := '0'; begin process begin in_clk <= '1'; wait for CLK_PERIOD / 2; in_clk <= '0'; wait for CLK_PERIOD / 2; end process; process begin in_rst <= '0'; wait for 50 ns; in_rst <= '1'; wait for 100 ns; in_rst <= '0'; wait for 300 ns; in_rst <= '1'; wait for 150 ns; in_rst <= '0'; wait for 200 ns; in_rst <= '1'; wait for 180 ns; in_rst <= '0'; wait for 20 ns; end process; process begin in_giris <= '0'; wait for 100 ns; in_giris <= '1'; wait for 400 ns; in_giris <= '0'; wait for 200 ns; in_giris <= '1'; wait for 100 ns; in_giris <= '0'; wait for 200 ns; end process; eszam_olmayan_rstli_d_mandali_map : eszam_olmayan_rstli_d_mandali port map( in_clk => in_clk, in_rst => in_rst, in_giris => in_giris, out_cikis => out_cikis, out_cikis_degil => out_cikis_degil ); end Behavioral;