I2C Master IP
Herhangi bir AXI4-Lite master’ın on iki adet 32-bit register üzerinden iki telli bir veri yolunu sürmesini sağlayan, bellek eşlemeli bir I2C master. Bit zamanlaması, çerçeveleme, onay (ACK) işleme, clock-stretching kurtarma ve çoklu-master arbitrajı tamamen donanımda yürütülür yazılım yalnızca işlemleri kuyruğa alır ve bir durum sözcüğünü (status word) okur.
Genel Bakış
RunX I2C Master Controller, bir AMBA AXI4-Lite register arayüzünü standart
iki telli bir I2C veri yoluna bağlar. START, repeated-START ve STOP
çerçevelemesini, 7-bit adreslemeyi, bayt seviyesinde onayı (ACK),
programlanabilir bir zaman aşımına sahip slave clock-stretching’i ve
çoklu-master arbitraj kaybı tespitini uygular.
Bit zamanlaması SYS_CLK ve I2C_CLK parametrelerinden elaborasyon anında
türetilir; böylece programlanacak bir çalışma zamanı saat bölücüsü yoktur ve
bitstream ile sürücü arasında bir uyumsuzluk riski oluşmaz. 32 kelimelik bir
gönderim (transmit) ve 32 kelimelik bir alım (receive) FIFO’su, yazılımı
veri yolundan ayrıştırır: bir sürücü tüm bir işlem grubunu kuyruğa alabilir,
tek bir biti ayarlayabilir ve tek bir tamamlanma bildirimini işleyebilir.
Teknik Özellikler
| Özellik | Değer |
|---|---|
| Veri yolu arayüzü | AMBA AXI4-Lite, 8-bit adres, 32-bit veri |
| Bit hızları | Standart 100 kHz, Fast 400 kHz (100 kHz – 800 kHz) |
| Adresleme | 7-bit, okuma/yazma yön biti ile |
| Veri yükü | İşlem başına 0 – 4 bayt, grup başına en fazla 255 işlem |
| FIFO derinliği | 32 kelime × 32 bit, TX ve RX (parametrelenebilir) |
| FIFO depolama | Block RAM · dağıtık RAM · register |
| Register’lar | 12 × 32-bit, 0x00 – 0x2C ofsetleri |
| Kesme | Alınan veri üzerinde karşılaştırma eşleşmesiyle tetiklenen, seviye-duyarlı tek bir hat |
| Saat domainleri | 1 senkron (s_axi_aclk) + asenkron I2C veri yolu |
| Kaynak dili | SystemVerilog, paketleyiciler için bir Verilog-2001 wrapper ile birlikte |
| Üretici desteği | AMD Xilinx · Altera · Microchip · Lattice |
| Lojik (ön izlenim) | ≈ 400 LUT / 375 FF · 2 × RAMB18 · 0 DSP |
| Fmax | Karakterizasyon beklemede |
Kaynak kullanım rakamları, Vivado 2025.2’de bir Kintex-7 xc7k70tfbv676-1
üzerinde, varsayılan parametre setiyle yapılan sentez sonrası (post-synthesis)
sonuçlarıdır. Bu rakamlar ön niteliktedir ve cihaza özel karakterizasyona
tabidir.
AXI4-Lite İşlemi
Bir register yazma işlemi, tek vuruşlu (single-beat) bir AXI4-Lite
işlemidir; slave, kabul edilen bir yazma işlemini adres, veri ve bayt
strobe’larını taşıyan tek bir backend darbesine (pulse) dönüştürür.
Karşılaştırma
| RunX I2C Master | AMD/Xilinx AXI IIC | Altera i2c_master | Microchip CoreI2C | |
|---|---|---|---|---|
| Kaynak kullanımı | ~ 388 LUT / 375 FF / 2 BRAM | 375 LUT / 356 FF | 347 ALM / 483 FF | |
| Fmax | 256 MHz | 280 MHz | 346 MHz | |
| Yazılımla kontrol edilebilir | 12 register + bare-metal C sürücü | bare-metal C sürücü | bare-metal C sürücü | |
| AXI desteği | AXI4-Lite slave, yerel (native) | AXI4-Lite slave, yerel (native) | yerel değil | |
| Özel frekans | Elaborasyon anında ayarlanan herhangi bir SYS_CLK / I2C_CLK çifti | Elaborasyon anında ayarlanan herhangi bir SYS_CLK / I2C_CLK çifti | Herhangi bir SYS_CLK
100/400 KHz I2C_CLK çifti, çalışma zamanında (runtime) ayarlanır! |
Diğer sütunları, güncel üretici veri sayfalarından (datasheet) tamamlanacaktır. Kaynak kullanımı ve frekans rakamları yalnızca aynı cihaz ailesi ve hız derecesinde (speed grade) ölçüldüğünde karşılaştırılabilir olduğundan, her hücre ölçümün alındığı parçayı belirtmelidir.
Parametreleştirme
Her parametre elaborasyon anında çözümlenir; böylece çalışma zamanında programlanması gereken hiçbir şey yoktur ve bitstream ile sürücü arasında bir sapma oluşamaz.
| Parametre | Amaç |
|---|---|
SYS_CLK | Sistem saat frekansı, 1 MHz – 250 MHz |
I2C_CLK | Hedef bit hızı, 100 kHz – 800 kHz |
FIFO_DEPTH | Her iki FIFO’nun derinliği, 32-bit kelime cinsinden |
FIFO_MEM_TYPE | block · distributed · REG |
DEVICE | Üretici çıkarım (inference) ipucu: Xilinx · Altera · Lattice · Microchip · generic |
VERSION / BUILD_DATE | Salt okunur (read-only) ID register’ları tarafından döndürülen değerler |
Doğrulama
Çekirdek, yalnızca RTL’siyle değil, doğrulama ortamıyla birlikte teslim edilir. Bir UVM doğrulama IP’si; master ve slave agent’ları, START/STOP çerçevelemesi ve onay (ACK) davranışı için protokol denetleyicilerini, bir scoreboard’u ve adresleme modları, bayt sayıları, clock-stretching ve arbitraj senaryoları genelinde fonksiyonel coverage’ı sağlar.
| Alan | Detay |
|---|---|
| Ortam | UVM agent’ları, protokol denetleyicileri, scoreboard, fonksiyonel coverage |
| Simülatörler | Vivado xsim · Questa / ModelSim |
| Teslim edilen scriptler | Her iki simülatör için testbench ve regresyon çalıştırıcıları (runner) |
| Senaryo coverage’ı | Adresleme, bayt sayısı, clock-stretching, arbitraj kaybı, NACK |
| Güncel durum | En güncel RTL revizyonuna karşı regresyon beklemede |
Teslim Edilenler
- ✓ Sentezlenebilir SystemVerilog RTL kaynağı
- ✓ IP paketleyicileri ve şifreleme akışları için şeffaf Verilog-2001 wrapper
- ✓ Bare-metal C sürücü ve register header dosyası
- ✓ Timing constraint şablonu
- ✓ xsim ve Questa için simülasyon çalıştırma scriptleri
- ✓ UVM doğrulama IP’si (ayrı lisanslanır)
- ✓ Ürün Kullanım Kılavuzu (PDF)
- ✓ Blok diyagramları ve WaveDrom zamanlama kaynak dosyaları
Neden Bu Çekirdek?
Doğrulama. Buradaki fark yaratan unsur, doğrulama ortamının sonradan akla gelen bir ek değil, RTL ile birlikte teslim edilen ve iki simülatörde çalıştırılabilen, protokol denetleyicilerine ve coverage’a sahip bir UVM VIP ürünü olmasıdır.
Tasarım gereği çoklu-üretici desteği. RTL, hiçbir üretici-özel
primitive örneklemez. Aynı kaynak kodu AMD Xilinx, Altera, Microchip
ve Lattice’i hedefler; DEVICE yalnızca çıkarım (inference) ipuçlarını
değiştirir, dolayısıyla bakımı gereken üretici-özel bir fork bulunmaz.
Parametreleştirme. Saat oranı, FIFO derinliği, FIFO depolama biçimi, hedef cihaz ve tanımlama register’larının tümü elaborasyon-zamanı parametreleridir. Bit hızı programlanmaz, türetilir; dolayısıyla bir build çalışma zamanında yanlış yapılandırılamaz.
Yazılım dahildir. Çekirdekle birlikte dokümante edilmiş bir API’ye sahip bare-metal bir C sürücüsü teslim edilir; böylece devreye alma (bring-up), register seviyesinde bir entegrasyon uğraşı değil, bir fonksiyon çağrısı haline gelir.
© 2026 RunX Technology Inc. · Kritik Görev FPGA Tasarımı www.run-x.com · info@run-x.com