Ana Sayfa FPGA FPGA İle 8×8 Bitlik Memory ve Register Tasarımı

FPGA İle 8×8 Bitlik Memory ve Register Tasarımı

5 min read
0
3
722

Tasarımını yapacağımız Memory 8×8 bitlik olacaktır.

MW=1 iken yazım işlemimizi, MW=0 iken okuma işlemimizi yaptıracağız.

Data in olarak bir data girişi ve Address kısmımızdan ise adres seçimi yapılacaktır.

Çıkan sonuçlarımız, data out ile dışarı verilecektir.

Kodumuzu yazdıktan sonra da ModelSim üzerinden örnek bir simülasyonunu göstereceğim.


library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity memory is

port(datain : in std_logic_vector(7 downto 0);

dataout : out std_logic_vector (7 downto 0);

wr : in std_logic;

adress : in std_logic_vector(3 downto 0)

 

);

end memory;

 

architecture beh of memory is

type mem_type is array(3 downto 0) of std_logic_vector (7 downto 0);

signal mem : mem_type;

begin

process(datain,wr,adress)

begin

if(wr='0') then

dataout<=mem(conv_integer(adress));

elsif (wr='1') then

mem(conv_integer(adress))<=datain;

end if;

end process;

end beh;

 

ModelSim’de gördüğünüz gibi işlemlerimizi yaptık ve Memorymiz doğru şekilde çalışıyor.

Memory tasarımımızdan sonra şimdi de Register tasarımımıza geçiyoruz.

Registerımız  da 8×8 bitlik olacaktır.

RW=1 iken yazım, RW=0 iken okuma yapılacaktır.

DA yazılacak adresin seçim bitleridir. RW=1 iken kullanacağız.

AA okuma anında A çıkışında gösterilecek Registerı seçen

bitlerdir.

BA okuma anında B çıkışında gösterilecek Registerı seçen

bitlerdir.

Yani DA ile yazma yapacağız ve okumak için ise RW bitini 0 yapıp BA veya AA’yı okuyacağız.

Senkronizasyon için düşen kenarlı Clock kullanılacaktır.

Veriler D data’dan girecektir.


library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

use IEEE.STD_LOGIC_ARITH.ALL;

use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity register0 is

port(datain : in std_logic_vector(7 downto 0);

dataout1 : out std_logic_vector (7 downto 0);

dataout2 : out std_logic_vector (7 downto 0);

wr : in std_logic;

DA : in std_logic_vector(2 downto 0);

AA : in std_logic_vector(2 downto 0);

BA : in std_logic_vector(2 downto 0) );

end register0;

architecture beh of register0 is

type mem_type is array(7 downto 0) of std_logic_vector (7 downto 0);

signal mem : mem_type;

begin

process(datain,wr,DA,AA,BA)begin

if(wr='1') then

mem(conv_integer(DA))<=datain;

elsif (wr='0') then

dataout1<=mem(conv_integer(AA));

dataout2<=mem(conv_integer(BA));

end if;

end process;

end beh;

ModelSim üzerinde Registerımızı da simulasyonunu yaptık ve doğru bir şekilde çalıştığını görmüş olduk.

Buğra UNUTMAZ

 

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Buğra Unutmaz
  • FPGA ile Counter Tasarımı

    Merhaba arkadaşlar bu yazımızdaki Counter tasarımımızda ALTERA-DE0 veya DE2 kullanabiliriz…
  • Quartus’da Program Oluşturma

    Quartus-II üzerinde program oluşturmakta aslında temelde 2 yol vardır.Bu yollardan bir tan…
  • Quartus’a Giriş

    Yazıma programı kurup çalıştırabildiğinizi varsayarak başlayacağım.Hakaret kabul ederim de…
Daha Fazla Göster -  FPGA

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

Elektrik Enerjisi İle Gül Yapraklarının Renk Değişimi

Herkese merhaba yapılmış bir araştırmanın detaylarını paylaşmak istedim. Keyifli okumalar&…