VHDL Dilinde Mantıksal Operatörler
Bu operatörlerin çalışma mantığı iki girişli tek çıkışlı bir sistem için şu şekildedir:
- AND : Her iki girişin de '1' olması durumunda çıkış '1' olur. Diğer durumlarda çıkış hep '0'dır.
- OR: Bu operatörün çıkışından '1' sonucunu almak için girdi değerlerinden birinin '1' olması yeterlidir.
- XOR : Eğer girdi değerlerimiz birbirinden farklıysa o zaman çıkış değeri '1' olur.
- NOT: Tek bir girişin tersini alarak çıkışa gönderir.
NAND, NOR, XNOR operatörleri ise yukarıda vermiş olduğumuz ilgili operatörlerin tersi olarak ifade edilmektedir.
Şimdi de bu operatörlerin VHDL programlama dilinde kullanımını inceleyelim.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity logical_operators is Port ( in_bit1: in std_logic; in_bit2: in std_logic; out_and: out std_logic; out_or: out std_logic; out_nand: out std_logic; out_nor: out std_logic; out_xor: out std_logic; out_xnor: out std_logic ); end logical_operators; architecture Behavioral of logical_operators is begin out_and <= in_bit1 and in_bit2; out_or <= in_bit1 or in_bit2; out_nand <= in_bit1 nand in_bit2; out_nor <= in_bit1 nor in_bit2; out_xor <= in_bit1 xor in_bit2; out_xnor <= in_bit1 xnor in_bit2; end Behavioral;
Yukarıda öncelikle iki giriş bitini ve çıkış durumlarını tanıttık. Daha sonra ise giriş bitlerinin çeşitli mantıksal operatörler ile işlemleri sonucu meydana gelecek çıkışları tanımlamış bulunmaktayız. Bu şekilde programın tasarım kısmını tanımladık.
Şimdi de simülasyon için gerekli olan kısma geçelim:
library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity logical_operators_tb is end logical_operators_tb; architecture Behavioral of logical_operators_tb is signal r_bit1 : std_logic :='0'; signal r_bit2 : std_logic :='0'; signal w_and : std_logic; signal w_or : std_logic; signal w_nand : std_logic; signal w_nor : std_logic; signal w_xor : std_logic; signal w_xnor : std_logic; begin UUT : entity work.logical_operators port map( in_bit1 => r_bit1, in_bit2 => r_bit2, out_and => w_and, out_or => w_or, out_nand=> w_nand, out_nor => w_nor, out_xor => w_xor, out_xnor=> w_xnor ); process is begin r_bit1 <= '0'; r_bit2 <= '0'; wait for 10 ns; r_bit1 <= '0'; r_bit2 <= '1'; wait for 10 ns; r_bit1 <= '1'; r_bit2 <= '0'; wait for 10 ns; r_bit1 <= '1'; r_bit2 <= '1'; wait for 10 ns; end process; end Behavioral;
Burada tasarım kısmında tanımladığımız giriş ve çıkışlara karşılık gelecek sinyal tanımlamalarını ve daha sonra atamalarını gerçekleştirdik. Projenin son kısmında ise farklı giriş değerlerine göre çıkış sinyallerini inceledik.
Hiç yorum yok