SPI Master/Slave IP

Tam bir master ile tam bir slave’i, tek bir çekirdek içinde iki bağımsız AXI4-Lite register bankasının arkasına yerleştiren, bellek eşlemeli bir SPI çekirdeği. Dört SPI transfer modunun tamamı standart 4-telli, 3-telli yarı çift yönlü (half duplex), Dual ve Quad aralarında yeniden build almaya gerek kalmadan, çalışma zamanında register haritasından seçilir.

Genel Bakış

RunX SPI Controller (spi_top), chip select ve seri saati üreten bir master ile harici bir master tarafından saatlenen bir slave’i örnekler; her ikisinin de kendi AXI4-Lite register bankası vardır ve çekirdek içinde birbirlerine kablolanmamışlardır. Bir transfer; saat hızının, modun ve çerçevelemenin CFG’ye, veri yükünün TXD register’larına, enable/start bitlerinin ise CTRL’ye yazılmasıyla kurulur; sonuç, donanımın sahip olduğu done göstergesi durum değiştirdiğinde RXD register’larında görünür.

İki build-zamanı generic, tek bir RTL kaynağının tam olarak bir uygulamanın ihtiyacına göre ölçeklenmesini sağlar: G_ROLE, yalnızca-master, yalnızca-slave veya her ikisini birden seçer; G_MODE ise tek bir transfer modunu, çalışma zamanında seçilebilir bırakmak yerine elaborasyon anında sabitleyebilir. İkisi birlikte, çekirdeği 3441 LUT’tan (her iki rol, her mod çalışma zamanında seçilebilir) 729 LUT’a (yalnızca-master, yalnızca-STD) indirir aynı kaynak kodla %79’luk bir azalma.

SPI Basitleştirilmiş Mimari SPI Basitleştirilmiş Mimari

Teknik Özellikler

ÖzellikDeğer
Veri yolu arayüzüAMBA AXI4-Lite × 2 (bağımsız master ve slave register bankaları)
Transfer modlarıSTD (4-telli) · 3-telli · Dual · Quad varsayılan olarak çalışma zamanında seçilebilir
SPI modları0 – 3 (tüm CPOL/CPHA kombinasyonları)
Bit sırasıMSB-first veya LSB-first, çalışma zamanında seçilebilir
Transfer boyutu128-bit düz (flat) bir veri yükü üzerinde 1 – 123 bit
Register’larTaraf başına 12 × 32-bit, 0x00 – 0x2C ofsetleri
KesmeTaraf başına, toggle yapan bir done biti tarafından tetiklenen seviye-duyarlı tek bir hat
Saat domainleri1 (clk_i) slave, harici SCK’yi saat olarak kullanmak yerine aşırı örnekler (oversample)
Kaynak diliVHDL, paketleyiciler için bir Verilog wrapper (IP_spi.v) ile birlikte
Üretici desteğiAMD Xilinx (build alınmış ve timing kapanışı sağlanmış) · Altera (sentezlenmiş) · Lattice · Microchip
Lojik (AMD/Xilinx, Zynq UltraScale+)3441 LUT’tan (her iki rol, runtime) 729 LUT’a (yalnızca-master, yalnızca-STD)
Fmax (AMD/Xilinx)97.0 MHz test edilmiş çalışma noktası (referans tasarım, +4.890 ns WNS)

Kaynak kullanım rakamları, xck26-sfvc784-2LV-c üzerinde spi_top’un Vivado 2025.2 ile yapılmış out-of-context sentez sonuçlarıdır; Fmax, referans tasarımın routing sonrası (routed) timing’idir ve taranmış (swept) bir maksimum değil, test edilmiş bir noktadır. Altera (Quartus Prime, Agilex 3) Fmax değeri, aynı rol/mod matrisinde 222–320 MHz arasında değişir; LUT/ALUT kullanımı ise ~800’den (yalnızca-master, yalnızca-STD) ~5000’e (her iki rol, runtime modu) kadar uzanır.

Standart Mod Çerçevesi

Standart moda (4-telli) bir transfer: master, chip select ve seri saati sürer; MOSI/MISO ise CTRL.data_size’ın seçtiği saat sayısı kadar tam çift yönlü (full-duplex) bir veri yükünü shift eder.

Standart mod (STD) SPI çerçevesi: chip select, seri saat ve tam çift yönlü MOSI/MISO veri yükü.

Karşılaştırma

RunX SPIAMD/Xilinx AXI Quad SPIAltera SPI coreMicrochip CoreSPI
Kaynak kullanımı729 – 3441 LUT / 540-1120 FF (role/mod’a bağlı)442-479 LUT / 676 FF (role/mod’a bağlı)922 ALM / 1320 FF
Fmax97.0 MHz test edilmiş (Xilinx)276 MHz302 MHz
Tek çekirdekte master + slaveEvet, bağımsız register bankalarıHayır, birinin seçilmesi gerekirHayır, birinin seçilmesi gerekir
Çalışma zamanında mod değişimiSTD / 3-telli / Dual / Quad, çalışma zamanındaSTD / Dual / Quad, elaborasyon anındaSTD / Dual / Quad, çalışma zamanında
Yazılımla kontrol edilebilirTaraf başına 12 register + bare-metal C sürücübare-metal C sürücübare-metal C sürücü

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

ParametreAmaç
G_MODERUNTIME (varsayılan), her transfer modunu çalışma zamanında seçilebilir tutar; STD/3WIRE/DUAL/QUAD ise elaborasyon anında tek bir modu sabitler
G_ROLEBOTH (varsayılan), master ve slave’i birlikte örnekler; MASTER/SLAVE ise tek-rollü bir çekirdek build eder
G_BIT_SIZEVeri yükü genişliği, varsayılan olarak 128 bit
G_DW / G_AWAXI4-Lite veri/adres genişlikleri, varsayılan olarak 32-bit / 8-bit
G_DEVICEÜretici çıkarım (inference) ipucu: Xilinx · Altera · Lattice · Microchip · generic

Doğrulama

AlanDetay
OrtamSystemVerilog regresyon testbench’i ve pasif bir protokol denetleyicisi
Senaryo coverage’ıDört modun, tüm CPOL/CPHA kombinasyonlarının, transfer boyutlarının ve turnaround pozisyonlarının tamamında 436 regresyon konfigürasyonu
Protokol uyumluluğu~49,450 pasif-denetleyici assertion’ı
Sentez/timingZynq UltraScale+ referans tasarımında (Vivado) temiz
Güncel durumSimülasyon başarılı; üçüncü taraf donanımlarla birlikte çalışabilirlik (interoperability) validasyonu henüz başlamadı

Teslim Edilenler

  • ✓ Sentezlenebilir VHDL RTL kaynağı, spi_top altında beş modül
  • ✓ IP paketleyicileri için Verilog wrapper (IP_spi.v)
  • ✓ Her iki taraf için bare-metal C sürücü (Apache-2.0), blocking ve non-blocking
  • ✓ Register seviyesindeki sırayı dokümante eden referans pseudocode
  • ✓ SystemVerilog regresyon testbench’i ve protokol denetleyicisi
  • ✓ Referans tasarımdan timing constraint’leri (XDC)
  • ✓ Ürün Kullanım Kılavuzu (PDF)
  • ✓ Blok diyagramı ve waveform kaynak dosyaları

Neden Bu Çekirdek

Çalışma zamanında esneklik, build zamanında tasarruf. Her transfer modu varsayılan olarak register üzerinden seçilebilir; bir uygulama yalnızca tek bir mod veya tek bir role ihtiyaç duyduğunda ise G_ROLE/G_MODE, tamamen esnek bir build’in maliyetinin %79’una kadarını geri kazandırır aynı kaynak kodu her iki durumu da karşılar.

Tek çekirdekten master ve slave. Her taraf için bağımsız AXI4-Lite register bankaları, tek bir bitstream’in harici SPI cihazlarını sürebilmesini, harici bir master’a yanıt verebilmesini veya ikisi arasında köprü kurabilmesini sağlar iki ayrı IP örneklemeye gerek kalmadan.

Açık sürücü, lisanslı RTL. Bare-metal C sürücüsü Apache-2.0 lisanslıdır ve bir son ürünle birlikte yeniden dağıtılabilir; RTL’in kendisi ise ayrı olarak, NDA kapsamında lisanslanır.

Yazılım dahildir. Çekirdekle birlikte yalnızca register seviyesinde pseudocode değil; hem master hem de slave için blocking, timeout ve non-blocking yolları içeren eksiksiz bir sürücü teslim edilir.


© 2026 RunX Technology Inc. · Kritik Görev FPGA Tasarımı www.run-x.com · info@run-x.com