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...
Hocam harikasınız
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.
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
Clock Domain Crossing Hakkında bir bir video yapar mısınız hocam ?
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.
@@mehmetburakaykenar Teşekkür ederim hocam :)
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?
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
@@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 :)
@@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