Yazılan programın simülasyonu için; (A<B), (A>B) ve (A=B) durumunu sağlayacak 2 şer tane değeri girerek modelsimde oluşan sonuçları çiziniz.

Benzer belgeler
T.C. RC SERVO MOTOR KONTROLÜ

Tek Vuruşluk Đşlemci. -- Company : Ege Universitesi, Elektrik-Elektronik Mühendisliği

Deney 2: Flip-Floplar

VHDL. Ece Olcay Güneş & S. Berna Örs

EK A VHDL DONANIM TANIMLAMA DİLİ

18. FLİP FLOP LAR (FLIP FLOPS)

EEM122SAYISAL MANTIK SAYICILAR. Elektrik Elektronik Mühendisliği Yrd. Doç. Dr. Hüseyin Sağkol

DENEY 8- Flip Flop ve Uygulamaları. Amaç: - Flip Flop çalışma mantığını kavramak

ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ SAYISAL DEVRE TASARIMI LABORATUVARI DENEY RAPORU. Deney No: 3 FF Devreleri

Deney 5: Shift Register(Kaydırmalı Kaydedici)

Deney 6: Ring (Halka) ve Johnson Sayıcılar

İçindekiler. Sinyal İşleme Donanımları FPGA FPGA ile Tasarım VHDL Uygulama Gerçekleştirme Kart Üzerinde Çalıştırma

BÖLÜM 10 KAYDEDİCİLER (REGİSTERS) SAYISAL TASARIM. Bu bölümde aşağıdaki konular anlatılacaktır

NECMETTİN ERBAKAN ÜNİVERSİTESİ MÜHENDİSLİK MİMARLIK FAKÜLTESİ ELEKTRİK-ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ SAYISAL DEVRE TASARIMI LABORATUVARI DENEY FÖYÜ

Verilog HDL e Giriş Bilg. Yük. Müh. Selçuk BAŞAK

DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM223 SAYISAL MANTIK TASARIMI : QUARTUS II TASARIM ORTAMI: TEMEL VHDL KULLANIMI

T.C. İstanbul Medeniyet Üniversitesi Mühendislik ve Doğa Bilimleri Fakültesi Elektrik-Elektronik Mühendisliği Bölümü

Bu derste! BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Yazmaç Aktarımı Düzeyi! Büyük Sayısal Sistemler! 12/25/12

FPGA ile Gömülü Sistem Tasarımına Giriş

DENEY 5 RS FLİP-FLOP DENEYLERİ

KMU MÜHENDİSLİK FAKÜLTESİ ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ SAYISAL DEVRELER II LABORATUVARI DENEY 1 TOPLAYICILAR - ÇIKARICILAR

BÖLÜM 8 MANDAL(LATCH) VE FLİP-FLOPLAR SAYISAL ELEKTRONİK. Bu bölümde aşağıdaki konular anlatılacaktır

Bir devrede bellek elemanı olarak kullanılmak üzere latch leri inceledik.

Deney 3: Asenkron Sayıcılar

7.Yazmaçlar (Registers), Sayıcılar (Counters)

Güz Y.Y. Lojik Devre Laboratuvarı Laboratuvar Çalışma Düzeni

Temel Flip-Flop ve Saklayıcı Yapıları. Mikroişlemciler ve Mikrobilgisayarlar

BBM 231 Yazmaçların Aktarımı Seviyesinde Tasarım! Hacettepe Üniversitesi Bilgisayar Müh. Bölümü

Bir devrede bellek elemanı olarak kullanılmak üzere tutucuları inceledik.

8. HAFTA BLM323 SAYISAL ANALİZ. Okt. Yasin ORTAKCI.

k ise bir gerçek sayı olsun. Buna göre aşağıdaki işlemler Matlab da yapılabilir.

T.C. KOCAELİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLİŞİM SİSTEMLERİ MÜHENDİSLİĞİ

TURGUT ÖZAL ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ MANTIK DEVRELERİ LABORATUARI. Deney 5 Flip Flop Devreleri

BÖLÜM 2 SAYI SİSTEMLERİ

Digital Design HDL. Dr. Cahit Karakuş, February-2018

Saklayıcı (veya Yazmaç) (Register)

DENEY 6: FLİP-FLOP (BELLEK) DEVRESİ UYGULAMALARI

Bu deney çalışmasında kombinasyonel lojik devrelerden decoder incelenecektir.

Teorik Bilgi DENEY 7: ASENKRON VE SENKRON SAYICILAR

Bölüm 4 Ardışıl Lojik Devre Deneyleri

(I) şimdiki. durum (S) belleği. saat. girşi

Bölüm 4 Aritmetik Devreler

ELK2016 SAYISAL TASARIM DERSİ LABORATUVARI DENEY NO: 4 DENEYİN ADI: JK, RS, T VE D TİPİ FLİP-FLOPLARIN İNCELENMESİ

DERS NOTLARI. Yard. Doç. Dr. Namık AKÇAY İstanbul Üniversitesi Fen Fakültesi

VERILOG. Modüller

SAYICILAR. Tetikleme işaretlerinin Sayma yönüne göre Sayma kodlanmasına göre uygulanışına göre. Şekil 52. Sayıcıların Sınıflandırılması

Sayıcılar n bitlik bir bilgiyi tutmanın yanısıra her saat çevriminde tuttukları değeri artıran veya azaltan ardışıl devrelerdir.

mikroc Dili ile Mikrodenetleyici Programlama Ders Notları

T.C. TRAKYA ÜNİVERSİTESİ FEN BİLİMLERİ ENSTİTÜSÜ ŞİFRELEME İŞLEMLERİ İÇİN FPGA İLE YÜKSEK KAPASİTELİ ÇARPMA DEVRESİ TASARIMI.

ÖDEV (Vize Dönemi) CEVAPLAR. 1. Ekrana Merhaba Dünya! yazdıran algoritmanın akış diyagramını çiziniz ve sözde kod olarak yazınız.

ARDIŞIL DEVRELER SENKRON ARDIŞIL DEVRELER

T.C. BOZOK ÜNİVERSİTESİ ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ BÖLÜMÜ LOJĐK DEVRELER LABORATUARI DENEY FÖYÜ

ARDIŞIL DEVRELER FLIP FLOP (İKİLİ DEVRELER)

SAYISAL ELEKTRONİK. Ege Üniversitesi Ege MYO Mekatronik Programı

VHDL Programlama Dili ve Sayısal Elektronik Devrelerin FPGA Tabanlı Uygulaması

GEO182 Lineer Cebir. Matrisler. Matrisler. Dersi Veren: Dr. İlke Deniz Derse Devam: %70. Vize Sayısı: 1

Matris İşlemleri Uygulaması

İSTANBUL TEKNİK ÜNİVERSİTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ LOJİK DEVRELERİ LABORATUVARI DENEY RAPORU

VHDL ile Mikroişlemci Tasarımı ve Eğitimde Uygulanabilirliği

7. Port Programlama. mikroc Dili ile Mikrodenetleyici Programlama Ders Notları -42- Şekil 2.1. Atmega16 mikrodenetleyici pin şeması

Bölüm 7 Ardışıl Lojik Devreler

İnönü Üniversitesi Mühendislik Fakültesi Bilgisayar Mühendisliği Bölümü

K uark projesi. Temel Özellikler :

T.C. ERCİYES ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ MEKATRONİK MÜHENDİSLİĞİ BÖLÜMÜ ELEKTRONİK SİSTEMLER LABORATUVARI 1

Genel Tanımlama. Erkal USUK

İKİLİ SAYILAR VE ARİTMETİK İŞLEMLER

DENEY 3-1 Kodlayıcı Devreler

Uygulama 1) Sabit olarak belirlenen sayıda tekrar eden (5 kez) Visual Basic kaynak kodlarını yazınız.

BİL 264 Mantıksal Devre Tasarımı ELE 263 Sayısal Sistem Tasarımı Öğretim Yılı Yaz Dönemi 2. Ara Sınav Adı Soyadı Öğrenci Numarası Bölümü

DENEY 4-1 Kodlayıcı Devreler

SELÇUK ÜNĠVERSĠTESĠ MÜHENDĠSLĠK-MĠMARLIK FAKÜLTESĠ ELEKTRĠK-ELEKTRONĠK MÜHENDĠSLĠĞĠ BÖLÜMÜ LOJĠK DEVRE TASARIM DERS NOTLARI

DENEY 1a- Kod Çözücü Devreler

SAYISAL TASARIM. Ege Üniversitesi Ege MYO Mekatronik Programı

1. BÖLÜM. Sayılarda Temel Kavramlar. Bölme - Bölünebilme - Faktöriyel EBOB - EKOK. Kontrol Noktası 1

Yrd.Doç.Dr. Celal Murat KANDEMİR. Kodlama (Coding) : Bir nesneler kümesinin bir dizgi (bit dizisi) kümesi ile temsil edilmesidir.

BÖLÜM 9 (COUNTERS) SAYICILAR SAYISAL ELEKTRONİK. Bu bölümde aşağıdaki konular anlatılacaktır

1. PL/SQL de kontrol yapıları

BLM 221 MANTIK DEVRELERİ

3. BÖLÜM MATRİSLER 1

DSP DONANIMI. Pek çok DSP için temel elemanlar aşağıdaki gibidir.

ANKARA ÜNİVERSİTESİ GAMA MESLEK YÜKSEKOULU

DENEY 6: VERİ SEÇİCİLER İLE TASARIM

DOĞU AKDENİZ ÜNİVERSİTESİ BAHAR BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ BLGM-324 BİLGİSAYAR MİMARİSİ

5. LOJİK KAPILAR (LOGIC GATES)

BM217 SAYISAL TASARIM DERSİ LABORATUVAR DENEYLERİ

BİL 810 İnşaat Mühendisliğinde Bilgisayar Uygulamaları

ALGORİTMA VE PROGRAMLAMA I

Aşağıdaki uygulama faaliyetini yaparak asenkron yukarı sayıcıdevresini kurabileceksiniz.

DOĞRULUK TABLOLARI (TRUTH TABLE)

SEÇİM İŞLEMLERİ. Yüzde Hesaplamaları HÜCRE KOPYALAMA & TAŞIMA FORMÜL GİRİŞİ FORMULLER 3) DÖRT İŞLEM. a) Bugün: b) Şimdi: c) Topla: d) Çarpım:

FPGA ile Gömülü Sistem Tasarımına Giriş Bilgisayar Bil. Müh. Selçuk BAŞAK

Mantık Devreleri Laboratuarı

BLM 221 MANTIK DEVRELERİ

NĐĞDE ÜNĐVERSĐTESĐ Elektrik Elektronik Mühendisliği Bölümü. Devre Tasarımı Ders Notları MATLAB. Arş. Gör. Salim ÇINAR. salim çınar

AND Komutu. and hedef, kaynak

BLM1011 Bilgisayar Bilimlerine Giriş I

BM202 SAYISAL ÇÖZÜMLEME

TEKNOLOJİ FAKÜLTESİ ELEKTRİK ELEKTRONİK MÜHENDİSLİĞİ EET-206 SAYISAL ELEKTRONİK - II LABORATUVARI

DENEY 2- Sayıcılar ve Kaydırmalı Kaydediciler

BMT 101 Algoritma ve Programlama I 6. Hafta. Yük. Müh. Köksal Gündoğdu 1

Transkript:

Girilen iki sayının birbiriyle karşılaştırılıp sonucunda büyük, küçük veya eşit sinyallerinin verileceği bir programı VHDL dili ile yazınız. A : karşılaştırılacak 1.sayıdır. 8 bitlik giriştir. B : karşılaştırılacak 2.sayıdır. 8 bitlik giriştir. Less : A küçüktür B ise 1 olacaktır. 1 bitlik çıkıştır. Greater : A büyük B ise 1 olacaktır. 1 bitlik çıkıştır. Equal : A eşittir B ise 1 olacaktır. 1 bitlik çıkıştır. (A<B), (A>B) ve (A=B) durumunu sağlayacak 2 şer tane değeri girerek modelsimde oluşan sonuçları çiziniz. library ieee; entity Comparator is port( A: in std_logic_vector(n-1 downto 0); B: in std_logic_vector(n-1 downto 0); less: out std_logic; equal: out std_logic; greater: out std_logic); end Comparator; architecture behv of Comparator is process(a,b) if (A<B) then less <= '1'; equal <= '0'; greater <= '0'; elsif (A=B) then less <= '0'; equal <= '1'; greater <= '0'; else less <= '0'; equal <= '0'; greater <= '1'; end behv;

4 bitlik D flip-flop bellek yapısını VHDL dili ile yazınız. Enable sinyali 1 iken, clk sinyalinin yükselen kenar tetiklemesi geldiği zaman Data_in girişindeki bilgi iç değişkende saklanacak ve Q çıkışına yazılacaktır. Aynı zamanda saklanan bilginin tersi (not) Q_not çıkışına yazılacaktır. Enable sinyali 0 ise var olan değeri tutmaya, bu değeri Q ve Q_not da göstermeye devam edecek ve yeni değer kaydetmeyecektir. Data_in : 4 bitlik veri girişi. Enable : 1 bitlik giriş. (logic 1 için kaydetme yapar.) Clk : 1 bitlik clock tetikleme sinyali Q : 4bitlik saklanan bilgi değeri Q_not : 4 bitlik saklanan bilginin tersinin değeri 6 farklı değeri Data_in girişine uygulayarak bu değerleri D-flip-flop bellek yapısına kaydettirmeye çalışın. Q ve Q_not değerlerini gözlemleyin. 6 değerin 2 tanesinde enable 0 için kayıt yapılamadığını gösterin. Simülasyon sonuçlarınızı çizdiriniz. library ieee ; entity dff is port( data_in: clock: data_out: end dff; in std_logic; in std_logic; out std_logic); architecture behv of dff is process(data_in, clock) if (rising_edge(clock)) then data_out <= data_in; end behv;

1 bitlik JK flip-flop bellek yapısını VHDL dili ile yazınız. JK flip flop bellek yapısının davranışı yandaki tabloda verilmiştir. J : 1 bitlik giriş. K : 1 bitlik giriş. CP : 1 bitlik clock tetikleme sinyali Q : 1 bitlik saklanan değer Q_not : 1 bitlik saklanan değerin tersi En az 6 adım simülasyon yaparak doğruluk tablosunun çalıştığını gösteriniz. library ieee; entity JK_FF is port ( clock: in std_logic; J, K: in std_logic; reset: in std_logic; Q, Qbar: out std_logic ); end JK_FF; architecture behv of JK_FF is signal state: std_logic; signal input: std_logic_vector(1 downto 0); input <= J & K; p: process(clock, reset) is if (reset='1') then state <= '0'; elsif (rising_edge(clock)) then case (input) is when "11" => state <= not state; when "10" => state <= '1'; when "01" => state <= '0'; when others => null; end case; Q <= state; Qbar <= not state; end behv;

Seri girişli paralele çıkışlı 8-bit Shift- Register yapısını VHDL dili yazınız. Shift register; 1 bitlik data_in girişindeki değeri tetikleme sinyalinin her yükselen kenarında bir adım sağa kaydıran yapıdır. İp ucu: kaydırılacak sayının istenilen değerleri seçilerek ve birleştirme operatörü (&) ile yeniden birleştirilerek kaydırma işlemi yapılabilir. Sistem girişleri; data_in : 1 bitlik giriş. ( veri girişi.) clk: 1 bitlik tetikleme sinyali data_out: 4 bitlik paralel veri çıkışı. (kaydırılan değer çıkarılacaktır.) Herhangi bir 4 bitlik sayının bitleri teker teker data_in girişinden yazılarak kaydırma işlemi ile bu sayının data_out da yazılmasını sağlayınız. Simülasyon sonucunu çiziniz. (seçtiğiniz sayı 0000 veya 1111 olmasın.) library ieee; entity shift is port(c, SI, LEFT_RIGHT : in std_logic; PO : out std_logic_vector(7 downto 0)); end shift; architecture archi of shift is signal tmp: std_logic_vector(7 downto 0); process (C) if (rising_edge(c)) then if (LEFT_RIGHT='0') then tmp <= tmp(6 downto 0) & SI; else tmp <= SI & tmp(7 downto 1); PO <= tmp; end archi;

1 bitlik T flip-flop bellek yapısını VHDL dili ile yazınız. T flip flop bellek yapısının davranışı yandaki tabloda verilmiştir. CP nin her yükselen kenarında T=1 ise sakladığı değeri tersleycek, T=0 ise değeri değiştirmeyecektir. T : 1 bitlik giriş. CP : 1 bitlik clock tetikleme sinyali Enable: 1 bitlik giriş. (enable 1 ise çalışır. ) Reset: 1 bitlik giriş. (reset 1 ise sakladığı değeri 0 yapar.) Q : 1 bitlik saklanan değer Q_not : 1 bitlik saklanan değerin tersi En az 6 adım simülasyon yaparak doğruluk tablosunun çalıştığını gösteriniz. library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity t_trigger is port (T,Reset,CLK,CLK_enable: in std_logic; Q: out std_logic); end t_trigger; architecture beh_t_trigger of t_trigger is signal temp: std_logic; process (Reset,CLK) if (rising_edge(clk)) then if Reset='1' then temp <= '0'; elsif CLK_enable ='1' then temp <= T xor temp; Q <= temp; end beh_t_trigger;

paralel girişli seri çıkışlı 8-bit Shift- Register yapısını VHDL dili yazınız. Shift register; 4 bitlik data_in girişindeki değeri tetikleme sinyalinin her yükselen kenarında bir adım sağa kaydıran yapıdır. İp ucu: kaydırılacak sayının istenilen değerleri seçilerek ve birleştirme operatörü (&) ile yeniden birleştirilerek kaydırma işlemi yapılabilir. Sistem girişleri; data_in : 4 bitlik giriş. ( veri girişi.) clk: 1 bitlik tetikleme sinyali data_out: 1 bitlik seri veri çıkışı. (kaydırılan değer çıkarılacaktır.) Herhangi bir 4 bitlik sayının bitleri data_in girişinden yazılarak kaydırma işlemi ile bu sayının data_out da yazılmasını sağlayınız. Simülasyon sonucunu çiziniz. (seçtiğiniz sayı 0000 veya 1111 olmasın.) library IEEE; use IEEE.STD_LOGIC_1164.ALL; entity ParalellToSerial is Port ( reset,clk,start : in STD_LOGIC; data_in:in STD_LOGIC_VECTOR (7 downto 0); data_out:out STD_LOGIC); end ParalellToSerial; architecture Behavioral of ParalellToSerial is signal DST:STD_LOGIC_VECTOR (7 downto 0):=(others=>'0'); signal DATA,STOP:STD_LOGIC:='0'; process(reset,clk) if reset='1' then DST<=(others=>'0'); DATA<='0'; STOP<='0'; elsif rising_edge(clk) then if start='1' then DATA<='1';--start bit STOP<='1';--stop bit DST<=data_in; Else DATA<=DST(7); STOP<='0'; DST<=DST(6 downto 0)&STOP; data_out<=data; end Behavioral;

Girilen 2 matrisin toplamasını ve/veya çıkarmasını yapan programı VHDL dili ile yazınız. Girilen matriler 2x2 boyutundadır. Matrislerin her bir elemanı 4 bitlik vektör olarak ayrı ayrı girilmektedir. İşlem sonucunda oluşan 2x2 boyutundaki matrisin her bir elemanı ayrı ayrı 4bitlik vektör olarak çıkışa verilmektedir. 1 1 2 3 + 2 = 3 1 1 2 2 3 3 a1,b1,c1,d1: 1.matrisin 4 bitlik elemanları a2,b2,c2,d2: 2.matrisin 4 bitlik elemanları islem: 1 bitlik işlem seçici. (1 için toplama yapar, 0 için çıkarma yapar.) a3,b3,c3,d3: çıkış matrisinin 4 bitlik elemanları 2 farklı toplama ve 2 farklı çıkarma işlemi gerçekleştirin. Simülasyon sonucunu çiziniz. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity matris_add_subb is port ( a1,b1,c1,d1: in std_logic_vector(3 downto 0); a2,b2,c2,d2: in std_logic_vector(3 downto 0); islem: in std_logic; a3,b3,c3,d3: out std_logic_vector(3 downto 0)); end matris_add_subb; architecture behaviour of matris_add_subb is process(a1,b1,c1,d1,a2,b2,c2,d2,islem) if islem='1' then a3=a1+a2; b3=b1+b2; c3=c1+c2; d3=d1+d2; else a3=a1-a2; b3=b1-b2; c3=c1-c2; d3=d1-d2; end behaviour;

Girilen 2 matrisin çarpımını yapan programı VHDL dili ile yazınız. Girilen matriler 2x2 boyutundadır. Matrislerin her bir elemanı 4 bitlik vektör olarak ayrı ayrı girilmektedir. Çarpım sonucunda oluşan 2x2 boyutundaki matrisin her bir elemanı ayrı ayrı 8bitlik vektör olarak çıkışa verilmektedir. 1 1 2 3 2 = 3 (skaler çarpım değil. Matris çarpımı yapılacaktır.) 1 1 2 2 3 3 a1,b1,c1,d1: 1.matrisin 4 bitlik elemanları a2,b2,c2,d2: 2.matrisin 4 bitlik elemanları a3,b3,c3,d3: çıkış matrisinin 8 bitlik elemanları 3 farklı çarpım işlemi gerçekleştirin. Simülasyon sonucunu çiziniz. Çarpım işlemlerinden 1 tanesi için sonucun doğruluğunu matematiksel olarak da gösterip ispatlayınız. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity matris_mull is port ( a1,b1,c1,d1: in std_logic_vector(3 downto 0); a2,b2,c2,d2: in std_logic_vector(3 downto 0); a3,b3,c3,d3: out std_logic_vector(7 downto 0)); end matris_mull; architecture behaviour of matris_mull is process(a1,b1,c1,d1,a2,b2,c2,d2) a3= conv_std_logic_vector(conv_integer(a1)* conv_integer(a2),8); b3= conv_std_logic_vector(conv_integer(b1)* conv_integer(b2),8); c3= conv_std_logic_vector(conv_integer(c1)* conv_integer(c2),8); d3= conv_std_logic_vector(conv_integer(d1)* conv_integer(d2),8); end behaviour;

Girilen 2x2 boyutlarındaki bir matrisin determinantını bulduran programı VHDL dili ile yazınız. Determinantın işareti pozitif ise isaret çıkışı 1 yapılacaktır. Negatif ise 0 yapılacaktır. a,b,c,d: 1.matrisin 4 bitlik elemanları det: determinant sonucu 4 bitlik vektör. isaret: 1 bitlik çıkış. 6 farklı matris için determinant işleminin gerçekleştiriniz. Simülasyon sonucunu çiziniz. library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity matris_det is port ( a,b,c,d : in std_logic_vector(3 downto 0); det : out std_logic_vector(3 downto 0); isaret : out std_logic;); end matris_det; architecture behaviour of matris_det is signal temp:std_logic_vector(4 downto 0); process(a,b,c,d) temp=conv_std_logic_vector((conv_integer(a)*conv_integer(d)- conv_integer(b)*conv_integer(c)),5); det=temp(3 downto 0); isaret=temp(4); end behaviour;

Aşağıda verilen Fonksiyon tablosu için VHDL ile ALU kodlarını yazınız. library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity soru1 is port( secim :in std_logic_vector(2 downto 0); in_a,in_b :in std_logic_vector(7 downto 0); sonuc:out std_logic_vector(7 downto 0)); end soru1; Secim İslem 000 Not A 001 A and B 010 A xor B 011 Shift left 1 bit A 100 Shift right 1 bit B 101 A+B 110 A*B 111 A/B architecture behaviour of matris_det is process(a,b,c,d) case secim is when 000 => sonuc <=not in_a; when 001 => sonuc <= in_a and in_b; when 010 => sonuc <= in_a xor in_b; when 011 => sonuc <= in_a sll 1; when 100 => sonuc <= in_b srl 1 when 101 => sonuc <= in_a + in_b; when 110 => sonuc <= conv_std_logic_vector(conv_integer(in_a)*conv_integer(in_b),8); when 111 => sonuc <= conv_std_logic_vector(conv_integer(in_a)/conv_integer(in_b),8); end behaviour;

Verilen state machine koduna göre; a)her state in içinde yapılan işlemi yazarak akış diyagramını çiziniz. b)verilen sinyal girdilerine göre oluşacak simülasyon sonucunu türetiniz. (Zaman grafiği üzerinde çiziniz.) library ieee; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity state is port( clock:in std_logic; start:in std_logic; reset:in std_logic; a: in std_logic_vector(7 downto 0); led_out: out std_logic_vector(7 downto 0); bitti: out std_logic); end state; architecture beh of state is type state is (st1,st2,st3,st4); signal pr_state,next_state:state; signal data,temp: std_logic_vector(7 downto 0); process(clock,reset) if(reset='1')then pr_state<=st1; elsif(rising_edge(clock))then pr_state<=next_state; process(pr_state, start) case pr_state is when st1=> temp<=a; data<="00000001 ; led_out<="00000000"; bitti<='0'; if start='1' then next_state<=st2; else next_state<=st1; when st2=> data<= conv_std_logic_vector( conv_integer(data)* conv_integer(temp),8); led_out<="00000000"; bitti<='0'; next_state<=st3; when st3=> temp<=temp-"00000001"; led_out<="00000000"; bitti<='0'; if temp<="00000001" then next_state<=st4; else next_state<=st2; when st4=> led_out<=data; next_state<=st4; bitti<='1'; end case; end beh;