Aşğaıda verilen display.vhd VHDL kod ile tanımlı 4 bitlik giriş portunun aldığı değeri 7 Segment Displaylerde gösterilmektedir. Aynı zamanda bu kod ile Vivado programında sinyal değişlenlerinin aldığı değerleri kontrol edilebilmektedir. 26-33. satırlarda tanımlı nitelikler (attribitude) ile kod FPGA içerisinde çalışırken tanımlı sinyallerin aldığı değerleri görebilmemiz sağlanacaktır. 26-27. satırlarda tanımlı nitelikle kod içerisinde kesinlikle bulunması gerekmektedir. 29-30 ve 32-33. satırlarda tanımlı ifadelerde ise r_giris ve r_cikis sinyallerinin aldığı değerlerin izlenceği tanımlanmaktadır.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; entity display is Port ( in_clk : in std_logic; in_rst : in std_logic; in_giris : in std_logic_vector(3 downto 0); out_disp_sec : out std_logic_vector(7 downto 0); out_cikis : out std_logic_vector(7 downto 0) ); end display; architecture Behavioral of display is type t_display_ekran is array (0 to 15) of std_logic_vector(7 downto 0); constant DISP_EKRAN : t_display_ekran := ("10000001", "11001111", "10010010", "10000110", "11001100", "10100100", "10100000", "10001111", "10000000", "10000100", "10001000", "11100000", "10110001", "11000010", "10110000", "10111000"); signal r_giris : std_logic_vector(3 downto 0) := (others => '0'); signal r_cikis : std_logic_vector(7 downto 0) := (others => '0'); attribute syn_keep : string; attribute mark_debug : string; attribute syn_keep of r_giris : signal is "true"; attribute mark_debug of r_giris : signal is "true"; attribute syn_keep of r_cikis : signal is "true"; attribute mark_debug of r_cikis : signal is "true"; begin out_disp_sec <= "00000000"; out_cikis <= r_cikis; process(in_clk, in_rst, in_giris) begin if in_rst = '1' then r_giris <= (others => '0'); r_cikis <= (others => '0'); elsif rising_edge(in_clk) then r_giris <= in_giris; r_cikis <= DISP_EKRAN(conv_integer(r_giris)); end if; end process; end Behavioral;
Uygulamaya ilişkin pin atama işlemlerinin yapıldığı varsayımı ile anlatıma devam edilecektir. 7 Segment Display modülünün Nexys 4 kartında çalışabilmesi için gerekli port konumları ve port standarları Tablo 1’de verilmiştir.
Port | Konum | I/O Standart |
in_clk | E3 | LVCMOS33 |
in_rst | V10 | LVCMOS33 |
in_giris(0) | U9 | LVCMOS33 |
in_giris(1) | U8 | LVCMOS33 |
in_giris(2) | R7 | LVCMOS33 |
in_giris(3) | R6 | LVCMOS33 |
out_disp_sec(0) | N6 | LVCMOS33 |
out_disp_sec(1) | M6 | LVCMOS33 |
out_disp_sec(2) | M3 | LVCMOS33 |
out_disp_sec(3) | N5 | LVCMOS33 |
out_disp_sec(4) | N2 | LVCMOS33 |
out_disp_sec(5) | N4 | LVCMOS33 |
out_disp_sec(6) | L1 | LVCMOS33 |
out_disp_sec(7) | M1 | LVCMOS33 |
out_cikis(0) | L6 | LVCMOS33 |
out_cikis(1) | M2 | LVCMOS33 |
out_cikis(2) | K3 | LVCMOS33 |
out_cikis(3) | L4 | LVCMOS33 |
out_cikis(4) | L5 | LVCMOS33 |
out_cikis(5) | N1 | LVCMOS33 |
out_cikis(6) | L3 | LVCMOS33 |
out_cikis(7) | M4 | LVCMOS33 |
Sentezleme ve port tanımlama işlemleri yapıldıktan sonra Window sekmesi altında bulunan Debug seçilir (Şekil 1).

Şekil 1 Hata ayıklama işlemleri – 1
Açılan Debug penceresinde bulunan Set Up Debug pencersi seçilir (Şekil 2).

Şekil 2 Hata ayıklama işlemleri – 2
Açılan pencerede Next butonuna basılır (Şekil 3).

Şekil 3 Hata ayıklama işlemleri – 3
Niteliklerde tanımlı r_cikis ve r_giris sinyallerinin listelendiği görülmektedir. Next butonuna basılarak bir sonraki aşamaya geçilir (Şekil 4).

Şekil 4 Hata ayıklama işlemleri – 4
Next butonuna basılarak bir sonraki aşamaya geçilir (Şekil5).

Şekil 5 Hata ayıklama işlemleri – 5
Finish butonuna basılarak işlem sonlandırılır (Şekil 6).

Şekil 6 Hata ayıklama işlemleri – 6
İşlemin bitirilmesinin ardından Debug penceresinde bağlantılar görülmektedir (Şekil 7).

Şekil 7 Hata ayıklama işlemleri – 7
Var olan bağlantıyı silmek için bağlantı üzerine sağ tıklanır ve Delete seçilir. Daha sonra açılan pencereden Yes seçilirerek bağlantı silinir (Şekil 8, Şekil 9).

Şekil 8 Hata ayıklama işlemleri – 8

Şekil 9 Hata ayıklama işlemleri – 9
Yeni bağlantı eklemek için Debug penceresinde Create Debug Port seçilir (Şekil 10).

Şekil 10 Hata ayıklama işlemleri – 10
Açılan pencerede Ok butonuna basılır (Şekil 11).

Şekil 11 Hata ayıklama işlemleri – 11
Oluşan yeni bağlantı noktasına boşta olan sinyal sürüklenerek bırakılırak yeni bağlantı oluşturulur (Şekil 12).

Şekil 12 Hata ayıklama işlemleri – 12
Bağlantı işlemlerinin tamamlanmasından sonra tüm işlemler kaydedilir. Analtıma Implementation ve Generate Bitstream aşamalarının tamamlanıp kodun FPGA’ya yüklendiği varsayımı yapılarak devam edilecektir.
Yükelme işlemini bitiminden Name penceresinde xc7a100t_0 sekmesine sağ tıklanırak Run Trigger seçilir (Şekil 13).

Şekil 13 Hata ayıklama işlemleri – 13
Anahtarlarla giriş portuna “0001” değeri gönderilmiştir. Şekil 14’den de görüleceği üzere r_giris sinyali 1 hex değerini ve r_cikis sinyali de DISP_EKRAN(1) değerini almıştırlar.

Şekil 14 Hata ayıklama işlemleri – 14
Anahtarlarla giriş portuna “1101” değeri gönderilmiştir. Şekil 15’den de görüleceği üzere r_giris sinyali d hex değerini ve r_cikis sinyali de DISP_EKRAN(14) değerini almıştırlar.

Şekil 15 Hata ayıklama işlemleri – 15