fpganedir.com'da ara

fpganedir mail

 * Proje Hakkında

 * VHDL Kod

 * Test Bench

  * Simulasyon

TEST BENCH / HATA AYIKLAMA ve PROGRAM DOĞRULAMA

Neden Simülasyon?

Yazdığımız kodda her ne kadar sentaks hatası olmasa da, programımızın istediğimiz sonuçları verip vermediğini bilemeyiz.

Özellikle büyük programlarda,  FPGA yüklenmeden önce programın doğru çalıştığı kontrol edilip, mantıksal hataların giderilmesi gerekir. Aksi taktirde beklenmedik sonuçlar elde edebiliriz. Bu nedenle, programımız için bir test programı hazırlayıp herhangi bir test platformunda simülasyonunu yapmamız gerekir.

Test Bench Yazma

Test bench, oluşturduğumuz projenin simülasyonunu yapmak için hazırladığımız test programıdır. Test Bench formatı, FPGA'e yüklenen program ile aynıdır.

Test Bench programımıza, kullanacağımız kodların bulunduğu kütüphaneyi tanımlayarak başlıyacağız.

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

Daha sonra entity tanımlayacağız. Fakat bu entity herhengi bir giriş yada çıkış portu içermeyecek.

ENTITY AND_GATE_TEST_BENCH IS
END AND_GATE_TEST_BENCH;

Entity tanımladıkan sonra ARCHITECTURE kısmına geçip programımızı yazmaya başlayabiliriz. Bu kısımda simülasyonunu yapacağımız programı  test bench programına dahil edeceğiz.  Architecture ile begin arasında kalan kısımda programı deklare edip, girdi  ve çıktıları tanımlayacağız.

ARCHITECTURE behavior OF AND_GATE_TEST_BENCH IS

  -- test edilecek programın deklaresi 
COMPONENT AND_GATE
PORT(
           data0 : IN  std_logic;
           data1 : IN  std_logic;
          output : OUT  std_logic
            );
END COMPONENT;

  --girdiler
 
signal data0 : std_logic := '0';
  signal data1 : std_logic := '0';

   --çıktılar
   signal output : std_logic;

BEGIN

Artık component olarak tanımladığımız yapıyı kullanıp (instantiate) programa devam edebiliriz.

   --Instantiate
U1: AND_GATE PORT MAP (
                                                    data0 => data0,
                                                    data1 => data1,
                                                    output => output
                                                     );
process
     begin                
          wait for 10 ms;   
          data0<='1';
          wait for 10 ms;
          data0<='0';
          data1<='1';
          wait for 10 ms;
          data0<='1';
          wait for 10 ms;
          assert false
          report "simülasyon bitti"
         severity failure;
   end process;

END;

Yazdığımız program parçalarını birleştirdiğimizde aşağıdaki programı elde ederiz:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;

ENTITY AND_GATE_TEST_BENCH IS
END AND_GATE_TEST_BENCH;

ARCHITECTURE behavior OF AND_GATE_TEST_BENCH IS

COMPONENT AND_GATE
PORT(
           data0 : IN  std_logic;
           data1 : IN  std_logic;
          output : OUT  std_logic
            );
END COMPONENT;

    signal data0 : std_logic := '0';
    signal data1 : std_logic := '0';

    signal output : std_logic;

BEGIN
     U1: AND_GATE PORT MAP (
                                                    data0 => data0,
                                                    data1 => data1,
                                                    output => output
                                                     );
   process
       begin                
          wait for 10 ms;   
          data0<='1';
          wait for 10 ms;
          data0<='0';
          data1<='1';
          wait for 10 ms;
          data0<='1';
          wait for 10 ms;
          assert false
          report "simülasyon bitti"
         severity failure;
   end process;

   END;

Artık Test Bench'imizin simülasyonuna başlayabiliriz.

 

 

 

Anasayfa | Fpga | VHDL | VHDL Sözlüğü | Embedded Sistem | Android | Sayısal Tasarım | Simulasyon | PCB | Örnekler | Forum | İletişim
Copyright © 2010-2013 FPGAnedir. All Rights Reserved.