Kristal, Ahşap, Bayrak.. Plaket ihtiyaçlarınıza Mükemmel çözümler üretiyoruz.
FIFO (First In First Out) veya Türkçe karşılığıyla İlk Giren İlk Çıkar, veri saklama ve iletimi için sıklıkla kullanılan bir yöntemdir. Bu yöntem, verilerin kuyruğa alındığı ve en eski verinin ilk olarak alınarak işlem gördüğü bir yapıya sahiptir. FIFO, ayrıca, veri iletiminde hataları önlemek için kullanılan bir tampon görevi görür.
FIFO Mantığı
FIFO, verilerin miktarını belirleyen bir boyutta bir dizi eleman olarak tasarlanır. Veriler, FIFO'nun giriş ucundan gönderilir ve FIFO girişinde saklanır. Sıradaki her bir veri elemanı, FIFO'nun çıkış ucunda alınabilir ve verileri okuyan bir işlemciye gönderilir. FIFO, verilerin işlenmesi için yeterli alan olduğunda veri elemanlarını belirli bir sırayla alır ve ardından FIFO'nun çıkış ucundan sırayla verilerin alınmasını sağlar.
FIFO Tasarımı
FIFO tasarımı, VHDL ya da Verilog gibi tasarlama dillerinde yapılabilir. FIFO tasarımının oluşturulması için ilk olarak FIFO'nun özelliklerinin belirlenmesi gerekmektedir. Aşağıda, FIFO tasarımı için dikkate alınması gereken özellikler yer almaktadır.
1. FIFO Boyutu: FIFO tasarımında kullanılan belleğin boyutu, verilerin sayısını belirleyecektir.
2. Giriş ve Çıkış Arayüzleri: FIFO tasarımında verilerin giriş ve çıkışları için arayüzler tasarlanmalıdır.
3. Veri Boyutu: Veri boyutu, FIFO'ya gelen verilerin büyüklüğünü belirleyecektir.
4. Yazma ve Okuma Göstergeleri: FIFO'da yazma ve okuma yerleri, verilerin yazıldığı veya okunduğu yeri belirleyecektir.
5. Depolama Sistemi: FIFO tasarımı depolama sistemi ile gerçekleştirilebilir. Bu sayede verileri depolamak ve çıkarmak için adresleme yöntemi kullanılır.
Örnek
FIFO tasarımı için basit bir örnek tasarlayalım. 8 bitlik FIFO boyutu belirleyelim. Üç bitlik veri yerine indirimi olacak ve her işlem 2 birimde bir yapılmış olacak.
FIFO tasarlamak için öncelikle dizi belirlememiz gerekiyor. Bu örnekte, 8 bitlik bir dizi kullanacağız. Dizi, FIFO için veri depolama alanı sağlar. Daha sonra, FIFO içindeki depolama alanını takip eden iki adres belirleyeceğiz: giriş adresi ve çıkış adresi.
Giriş adresi, FIFO'ya yeni veri eklemek için kullanılırken, çıkış adresi, FIFO'dan veri çıkarmak için kullanılır. FIFO tasarımında, giriş adresi, veri miktarının artmasıyla her adımda artar ve çıkış adresi, veri miktarı azaldıkça adım adım artar.
Örnek VHDL Kodu:
entity FIFO is
generic (
FIFO_SIZE : integer := 8;
DATA_WIDTH : integer := 8
);
port (
clk : in std_logic;
reset : in std_logic;
push_data : in std_logic;
data_out : out std_logic_vector(DATA_WIDTH-1 downto 0);
pull_data : in std_logic;
data_in : in std_logic_vector(DATA_WIDTH-1 downto 0);
full : out std_logic;
empty : out std_logic
);
end FIFO;
architecture arch_FIFO of FIFO is
type mem_t is array (FIFO_SIZE-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0);
signal memory : mem_t;
signal read_ptr : integer;
signal write_ptr : integer;
signal count : integer range 0 to FIFO_SIZE := 0;
begin
process(clk, reset)
begin
if reset = '1' then
count <= 0;
read_ptr <= 0;
write_ptr <= 0;
elsif rising_edge(clk) then
-- eğer veri ekleniyorsa ve fifo dolu değilse
if (push_data = '1') and (count < FIFO_SIZE) then
memory(write_ptr) <= data_in;
write_ptr <= write_ptr + 1;
if write_ptr = FIFO_SIZE then
write_ptr <= 0;
end if;
-- fifo veri depolama alanı artırılıyor
count <= count + 1;
end if;
-- eğer veri çıkartılıyorsa ve fifo boş değilse
if (pull_data = '1') and (count > 0) then
data_out <= memory(read_ptr);
read_ptr <= read_ptr + 1;
if read_ptr = FIFO_SIZE then
read_ptr <= 0;
end if;
-- fifo veri depolama alanı azaltılıyor
count <= count - 1;
end if;
end if;
end process;
full <= '1' when (count = FIFO_SIZE) else '0';
empty <= '1' when (count = 0) else '0';
end arch_FIFO;
Sık Sorulan Sorular
1. FIFO'nun kullanım alanları nelerdir?
FIFO, veri iletiminde kullanılabilecek birçok alanda kullanılabilir. Özellikle veri saklama ve iletimi, veri aktarımı ve işlemci tasarımlarında FIFO'lar kullanılabilir.
2. FIFO'nun öncelikli özellikleri nelerdir?
FIFO, verilerin sırayla saklanması ve tekrar sırayla çıkarılması için tasarlanabilir. FIFO boyutu, FIFO'ya giren ve çıkan veri sayısını belirler. FIFO, hataları önlemek ve verileri tamponlamak için kullanılır.
3. FIFO'da veriler normalde ne kadar süre saklanır?
Veriler, FIFO'ya girdikten sonra, FIFO'nun boyutuna bağlı olarak bir süre boyunca saklanabilir. FIFO'daki veri depolama alanları doluysa, yeni veriler FIFO'ya eklenmeden önce eski veriler FIFO'dan çıkarılabilir. Bir FIFO'nun çalışması, bellek boyutuna ve verilerin giriş ve çıkış hızına göre değişebilir."
FIFO (First In First Out) veya Türkçe karşılığıyla İlk Giren İlk Çıkar, veri saklama ve iletimi için sıklıkla kullanılan bir yöntemdir. Bu yöntem, verilerin kuyruğa alındığı ve en eski verinin ilk olarak alınarak işlem gördüğü bir yapıya sahiptir. FIFO, ayrıca, veri iletiminde hataları önlemek için kullanılan bir tampon görevi görür.
FIFO Mantığı
FIFO, verilerin miktarını belirleyen bir boyutta bir dizi eleman olarak tasarlanır. Veriler, FIFO'nun giriş ucundan gönderilir ve FIFO girişinde saklanır. Sıradaki her bir veri elemanı, FIFO'nun çıkış ucunda alınabilir ve verileri okuyan bir işlemciye gönderilir. FIFO, verilerin işlenmesi için yeterli alan olduğunda veri elemanlarını belirli bir sırayla alır ve ardından FIFO'nun çıkış ucundan sırayla verilerin alınmasını sağlar.
FIFO Tasarımı
FIFO tasarımı, VHDL ya da Verilog gibi tasarlama dillerinde yapılabilir. FIFO tasarımının oluşturulması için ilk olarak FIFO'nun özelliklerinin belirlenmesi gerekmektedir. Aşağıda, FIFO tasarımı için dikkate alınması gereken özellikler yer almaktadır.
1. FIFO Boyutu: FIFO tasarımında kullanılan belleğin boyutu, verilerin sayısını belirleyecektir.
2. Giriş ve Çıkış Arayüzleri: FIFO tasarımında verilerin giriş ve çıkışları için arayüzler tasarlanmalıdır.
3. Veri Boyutu: Veri boyutu, FIFO'ya gelen verilerin büyüklüğünü belirleyecektir.
4. Yazma ve Okuma Göstergeleri: FIFO'da yazma ve okuma yerleri, verilerin yazıldığı veya okunduğu yeri belirleyecektir.
5. Depolama Sistemi: FIFO tasarımı depolama sistemi ile gerçekleştirilebilir. Bu sayede verileri depolamak ve çıkarmak için adresleme yöntemi kullanılır.
Örnek
FIFO tasarımı için basit bir örnek tasarlayalım. 8 bitlik FIFO boyutu belirleyelim. Üç bitlik veri yerine indirimi olacak ve her işlem 2 birimde bir yapılmış olacak.
FIFO tasarlamak için öncelikle dizi belirlememiz gerekiyor. Bu örnekte, 8 bitlik bir dizi kullanacağız. Dizi, FIFO için veri depolama alanı sağlar. Daha sonra, FIFO içindeki depolama alanını takip eden iki adres belirleyeceğiz: giriş adresi ve çıkış adresi.
Giriş adresi, FIFO'ya yeni veri eklemek için kullanılırken, çıkış adresi, FIFO'dan veri çıkarmak için kullanılır. FIFO tasarımında, giriş adresi, veri miktarının artmasıyla her adımda artar ve çıkış adresi, veri miktarı azaldıkça adım adım artar.
Örnek VHDL Kodu:
entity FIFO is
generic (
FIFO_SIZE : integer := 8;
DATA_WIDTH : integer := 8
);
port (
clk : in std_logic;
reset : in std_logic;
push_data : in std_logic;
data_out : out std_logic_vector(DATA_WIDTH-1 downto 0);
pull_data : in std_logic;
data_in : in std_logic_vector(DATA_WIDTH-1 downto 0);
full : out std_logic;
empty : out std_logic
);
end FIFO;
architecture arch_FIFO of FIFO is
type mem_t is array (FIFO_SIZE-1 downto 0) of std_logic_vector(DATA_WIDTH-1 downto 0);
signal memory : mem_t;
signal read_ptr : integer;
signal write_ptr : integer;
signal count : integer range 0 to FIFO_SIZE := 0;
begin
process(clk, reset)
begin
if reset = '1' then
count <= 0;
read_ptr <= 0;
write_ptr <= 0;
elsif rising_edge(clk) then
-- eğer veri ekleniyorsa ve fifo dolu değilse
if (push_data = '1') and (count < FIFO_SIZE) then
memory(write_ptr) <= data_in;
write_ptr <= write_ptr + 1;
if write_ptr = FIFO_SIZE then
write_ptr <= 0;
end if;
-- fifo veri depolama alanı artırılıyor
count <= count + 1;
end if;
-- eğer veri çıkartılıyorsa ve fifo boş değilse
if (pull_data = '1') and (count > 0) then
data_out <= memory(read_ptr);
read_ptr <= read_ptr + 1;
if read_ptr = FIFO_SIZE then
read_ptr <= 0;
end if;
-- fifo veri depolama alanı azaltılıyor
count <= count - 1;
end if;
end if;
end process;
full <= '1' when (count = FIFO_SIZE) else '0';
empty <= '1' when (count = 0) else '0';
end arch_FIFO;
Sık Sorulan Sorular
1. FIFO'nun kullanım alanları nelerdir?
FIFO, veri iletiminde kullanılabilecek birçok alanda kullanılabilir. Özellikle veri saklama ve iletimi, veri aktarımı ve işlemci tasarımlarında FIFO'lar kullanılabilir.
2. FIFO'nun öncelikli özellikleri nelerdir?
FIFO, verilerin sırayla saklanması ve tekrar sırayla çıkarılması için tasarlanabilir. FIFO boyutu, FIFO'ya giren ve çıkan veri sayısını belirler. FIFO, hataları önlemek ve verileri tamponlamak için kullanılır.
3. FIFO'da veriler normalde ne kadar süre saklanır?
Veriler, FIFO'ya girdikten sonra, FIFO'nun boyutuna bağlı olarak bir süre boyunca saklanabilir. FIFO'daki veri depolama alanları doluysa, yeni veriler FIFO'ya eklenmeden önce eski veriler FIFO'dan çıkarılabilir. Bir FIFO'nun çalışması, bellek boyutuna ve verilerin giriş ve çıkış hızına göre değişebilir."
*256 Bit SSL Sertifikası * Full Mobil Uyumlu * Full SEO Uyumlu
İsterseniz Mobil Uygulama Seçeneğiyle