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.
Teknik Özellikler
| Özellik | Değ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 boyutu | 128-bit düz (flat) bir veri yükü üzerinde 1 – 123 bit |
| Register’lar | Taraf başına 12 × 32-bit, 0x00 – 0x2C ofsetleri |
| Kesme | Taraf başına, toggle yapan bir done biti tarafından tetiklenen seviye-duyarlı tek bir hat |
| Saat domainleri | 1 (clk_i) slave, harici SCK’yi saat olarak kullanmak yerine aşırı örnekler (oversample) |
| Kaynak dili | VHDL, paketleyiciler için bir Verilog wrapper (IP_spi.v) ile birlikte |
| Üretici desteği | AMD 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.
Karşılaştırma
| RunX SPI | AMD/Xilinx AXI Quad SPI | Altera SPI core | Microchip 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 | |
| Fmax | 97.0 MHz test edilmiş (Xilinx) | 276 MHz | 302 MHz | |
| Tek çekirdekte master + slave | Evet, bağımsız register bankaları | Hayır, birinin seçilmesi gerekir | Hayır, birinin seçilmesi gerekir | |
| Çalışma zamanında mod değişimi | STD / 3-telli / Dual / Quad, çalışma zamanında | STD / Dual / Quad, elaborasyon anında | STD / Dual / Quad, çalışma zamanında | |
| Yazılımla kontrol edilebilir | Taraf 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
| Parametre | Amaç |
|---|---|
G_MODE | RUNTIME (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_ROLE | BOTH (varsayılan), master ve slave’i birlikte örnekler; MASTER/SLAVE ise tek-rollü bir çekirdek build eder |
G_BIT_SIZE | Veri yükü genişliği, varsayılan olarak 128 bit |
G_DW / G_AW | AXI4-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
| Alan | Detay |
|---|---|
| Ortam | SystemVerilog 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/timing | Zynq UltraScale+ referans tasarımında (Vivado) temiz |
| Güncel durum | Simülasyon başarılı; üçüncü taraf donanımlarla birlikte çalışabilirlik (interoperability) validasyonu henüz başlamadı |
Teslim Edilenler
- ✓ Sentezlenebilir VHDL RTL kaynağı,
spi_topaltı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