VHDL ile FPGA PROGRAMLAMA - Ders27: I2C (Inter-Integrated Circuit) Master Tasarımı ve Simülasyonu

Поделиться
HTML-код
  • Опубликовано: 7 фев 2025
  • Diğer RUclips kanalım "İki Kanat"
    / @ikikanat-qq8wn
    Twitter - X
    / iki_2_kanat
    VHDL ile FPGA PROGRAMLAMA
    Ders27: I2C (Inter-Integrated Circuit) Master Tasarımı ve Simülasyonu
    Ders İçeriği:
    I2C (Inter-Integrated Circuti) Haberleşme Protokolü
    I2C Protokolü Sinyalleri, Yazma ve Okuma Fonksiyonları, Yaz ve Oku için Durum Makinesi ve Timing Analizi
    opencores.org açık-kaynak (open-source) internet sitesi ve projeleri
    I2C_master VHDL modülü analizi
    I2C master modülünü test etmek için testbench kodu yazılması ve simülasyon sonuçları
    / mehmet-burak-aykenar-7...
    by Mehmet Burak AYKENAR
    "VHDL ile FPGA Programlama" oynatma listesi videolarında kullanılan kodlara aşağıdaki linkten açık olarak erişebilir ve dosyaları indirebilirsiniz:
    github.com/mba...

Комментарии • 10

  • @fatihmehmetvaral2112
    @fatihmehmetvaral2112 4 года назад

    Hocam harikasınız

  • @oysa21
    @oysa21 3 года назад

    hocam birşeyi merak ediyorum okuma yazma değilde sda nın pull up direncini düşüğe çeken slave midir master midir? çünkü incelediğim bir kaynakta başlatma koşulunda sda hattı, scl hattı düşüğe geçmeden önce düşüğe geçer diyor. durma durumundan sonra ise scl hattı düşükten yükseğe geçiyor sonra sda düşükten yükseğe geçiyor.

    • @mehmetburakaykenar
      @mehmetburakaykenar  3 года назад

      merhaba, slave sadece okunması istenilen veriyi basarken ve ack vermesi gereken yerde sda yi sürer, başlangıç ve bitisi yapan masterdir, vhdl kodunda da bu sekilde inceleyebilirsiniz

  • @pusatberk4193
    @pusatberk4193 4 года назад

    Clock Domain Crossing Hakkında bir bir video yapar mısınız hocam ?

    • @mehmetburakaykenar
      @mehmetburakaykenar  4 года назад +1

      i2c bitince FPGA configuration ve boot ile ilgili bir video yapacağım inşallah. sonra da static timing analysis ile ilgili birkaç video planlıyorum. cdc konusu da timing içerisinde inceleyip örnek yapacağım inşallah ama 3 4 haftaya anca planlarım gibi geliyor.

    • @pusatberk4193
      @pusatberk4193 3 года назад

      @@mehmetburakaykenar Teşekkür ederim hocam :)

  • @oguzhaneker7098
    @oguzhaneker7098 4 года назад

    merhaba, Spartan 7(Sp701) için constraints yapılandırması yapmak isityorum ama xdc dosyasında clock(clk) pinini bulamadım. Yardımcı olur musunuz?

    • @mehmetburakaykenar
      @mehmetburakaykenar  4 года назад

      merhaba, Xilinxin sitesinde sp701 için dokümanlar ve örnek projeler var. örnek projelerde xdc dosyasında mutlaka olması lazım. user guide dokümanında sysclk olarak isimlendirmis, belki bu isimdedir xdc de

    • @oguzhaneker7098
      @oguzhaneker7098 4 года назад

      @@mehmetburakaykenar sysclk_p ve sysclk_n şeklinde var ve bunlar differential olduğu söyleniyror. günlerdir bunu araştırıyorum ama hala system clk sını bulamadım. eğer bu konuda yardımcı olabilirseniz takipçiniz olarak çok mutlu olacağım :)

    • @mehmetburakaykenar
      @mehmetburakaykenar  4 года назад

      @@oguzhaneker7098 ben daha önce differential clock kullanmadım ama araştırdığım kadarıyla yardımcı olmaya çalışayım. differential clock olduğu zaman top modüle iki input sinyali alınıyor CLK_P ve CLK_N, single ended olsayda CLK gibi bir sinyal alacaktık. Xilinx'in differential clock'u içeride single'a dönüştürmek için IBUFDS diye bir modülü var. Bu direk instantiate edilebiliyor. xilinx forumda bunun nasıl kullanılacağı ile ilgili bir thread gördüm bakınca.
      forums.xilinx.com/t5/Other-FPGA-Architecture/Differential-Clock-Input-fed-into-IBUFDS-cannot-set-LOC-property/td-p/867460
      burada aşağıdaki gibi kullanmış:
      -- IBUFDS: Differential Input Buffer
      -- 7 Series
      -- Xilinx HDL Libraries Guide, version 2012.2
      IBUFDS_inst : IBUFDS
      generic map
      (
      DIFF_TERM => FALSE, -- Differential Termination
      IBUF_LOW_PWR => TRUE, -- Low power (TRUE) vs. performance (FALSE) setting for referenced I/O standards
      IOSTANDARD => "LVDS_25")
      port map
      (
      O => clk_i, -- Buffer output
      I => CLK_P, -- Diff_p buffer input (connect directly to top-level port)
      IB => CLK_N -- Diff_n buffer input (connect directly to top-level port)
      );
      XDC dosyasında da extra bir şey yapmamış:
      # SYS clock 100 MHz (input) signal. The CLK_P and sys_clk_n
      # signals are the PCI Express reference clock.
      set_property PACKAGE_PIN B6 [get_ports CLK_P]
      set_property PACKAGE_PIN B5 [get_ports CLK_N]
      set_property IOSTANDARD LVDS_25 [get_ports CLK_P]
      set_property IOSTANDARD LVDS_25 [get_ports CLK_N]
      umarım yardımcı olur