Son Yazılar

VHDL Dilinde Mantıksal Operatörler





Mantıksal operatörler, VHDL dilinde devre tasarımında kullanılan temel operatörlerdendir. Bunlar, AND ('and'), OR ('or'), XOR ('xor'), NOT ('not'), NAND ('nand'), NOR ('nor') ve XNOR ('xnor') şeklindedir. 
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