Keep the current GPS software and Genesys2/VCU118 flows while integrating Ti375C529 Efinity, flash, programming, and debug support. Add board-specific SPI NOR profiles and persistent GPS flash layouts across all three boards.
Genesys2 Rocket FPGA Flow
Bu dizin Digilent Genesys2 uzerinde Rocket SoC bitstream'i uretmek ve karti programlamak icin VCU118 akisina paralel, sade bir Vivado non-project akisi saglar.
Kullanilan kart ayarlari
make -C targets/fpga/genesys2 fpga-config
Varsayilanlar:
SoC/fabric clock : 50 MHz
GPS acquisition : 80 MHz
GPS tracking : 125 MHz
UART baud : 460800
App flash offset : 0x01800000
QSPI flash : 32 MiB S25FL256S
RF input mode : pmod
SoC/fabric saati 200 MHz kart kristalinden uretilir. GPS acquisition ve tracking/PPS saatleri ise kart kristalinden degil secili RF sample clock'tan uretilir. Varsayilan 16.367981 MHz RF referansi iki MMCM kademesinden gecerek 55.555556 MHz ara referans, 80 MHz acquisition ve 125 MHz tracking saati olusturur. Iki kademeli oran nominal tracking saatini yaklasik 0.007 ppm hata ile uretir; tek MMCM'li yuzlerce ppm hata tasiyan yaklasim kullanilmaz. SoC reset'i fabric MMCM ile iki GPS MMCM'in de lock olmasini bekler.
RF, acquisition ve tracking domainleri ayni frekans referansini paylassalar da RTL aralarinda CDC kullanir. Vivado scripti bu nedenle bu domainleri timing acisindan ayri asynchronous gruplar olarak tutar; ortak referans frekans coherency saglar, CDC protokolunu ortadan kaldirmaz.
UART baudrate Chisel config ile board'a ozel uretilmez. Software startup,
BSP_UART_CLOCK_HZ ve BSP_UART_BAUDRATE define'larindan UART divisor
register'ini programlar.
UART pin isimleri Digilent USB-UART bridge tarafindan adlandirilir. Bu yuzden
uart_tx_in FPGA'ya giren hatti, uart_rx_out FPGA'dan PC'ye giden hatti
ifade eder:
port FPGA pin FPGA I/O SoC tarafi
uart_tx_in Y20 LVCMOS33 uart_rxd input
uart_rx_out Y23 LVCMOS33 uart_txd output
JTAG / OpenOCD debug
Genesys2 OpenOCD debug yolu FPGA TAP uzerindeki BSCANE2 USER4 chain'ini
kullanir. Bu kartta BSCAN-DMI koprusu VCU118 ile ayni dosyayi kullanmaz:
hardware/fpga/genesys2/rtl/rocket_bscan_dmi_tunnel.sv icinde TDO response
baslangici iki bit geciktirilir. Bu gecikme olmazsa DTMCS degeri iki bit saga
kaymis okunur; ornegin beklenen 0x5071, OpenOCD tarafinda 0x141c olur ve
unsupported dtm version: 12 hatasi gorulur.
OpenOCD FTDI configi Genesys2 icin explicit tutulur: Digilent Adept USB device
0403:6010 ve ftdi channel 1. Kurulu OpenOCD'nin genel
digilent_jtag_smt2.cfg dosyasi 0403:6014 bekledigi icin bu kartta
kullanilmaz.
RF girisi
Genesys2 FPGA top'u tools/gen_genesys2_wrapper.py ile uretilir. RF kaynagi
RF_INPUT_MODE ile secilir:
pmod Harici RF clock + 4-bit RF data PMOD JA'dan SoC GPS RF portuna gider ve GPS PLL'lerini referanslar.
generated Eski fallback: dahili RF clock uretilir, RF data 4'd0 olur.
ethernet RTL8211E-VL RGMII PHY uzerinden raw-Ethernet RF streamer yolu.
Varsayilan RF_INPUT_MODE=pmod degeridir:
make -C targets/fpga/genesys2 bitstream
make -C targets/fpga/genesys2 bitstream RF_INPUT_MODE=generated
make -C targets/fpga/genesys2 bitstream RF_INPUT_MODE=ethernet
Ethernet RF modunda top-level portlar Genesys2 kartindaki RGMII/MDIO PHY pinlerine acilir. Host sender ayni raw Ethernet protokolunu kullanir:
sudo make -C targets/fpga/genesys2 eth-rf-send
Bu mod ilk Genesys2 RGMII tasimasidir. PHY MDIO hatti su an idle birakilir; RTL8211E-VL kart strap ayarlariyla acilir. Kart uzerinde link veya timing sorunu gorulurse ilk bakilacak yerler PHY delay/MDIO init ve RGMII timing constraintleridir.
PMOD JA pinleri 3.3 V LVCMOS33 olarak constrain edilir. Connector ve FPGA
I/O seviyesi ayni 3.3 V'tur:
port FPGA pin PMOD pin FPGA I/O PMOD header level
rf_clk_pmod U27 JA[0], MRCC LVCMOS33 3.3 V
rf_data_pmod[0] U28 JA[1] LVCMOS33 3.3 V
rf_data_pmod[1] T26 JA[2] LVCMOS33 3.3 V
rf_data_pmod[2] T27 JA[3] LVCMOS33 3.3 V
rf_data_pmod[3] T22 JA[4] LVCMOS33 3.3 V
Pin constraintleri hardware/fpga/genesys2/constraints/genesys2_pmod_rf.xdc
dosyasindadir ve sadece RF_INPUT_MODE=pmod iken Vivado tarafindan okunur.
PMOD SPI portu her RF modunda aktiftir. SoC register adresi 0x10015000'dir;
kart konfig flash'ina bagli mevcut SPI 0x10014000 adresinde kalir.
SPI, bosta kalan PMOD JC'ye atanir. Driver single/quad calisma modunu secer;
single modda sadece dq[0] MOSI ve dq[1] MISO kullanilir.
port FPGA pin PMOD pin
pmod_spi_csn AC26 JC1
pmod_spi_dq[0] AJ27 JC2 MOSI
pmod_spi_dq[1] AH30 JC3 MISO
pmod_spi_sck AK29 JC4 SCK
pmod_spi_dq[2] AD26 JC7
pmod_spi_dq[3] AG30 JC8
Pin constraintleri hardware/fpga/genesys2/constraints/genesys2_pmod_spi.xdc
dosyasindadir ve Vivado akisi tarafindan her RF modunda okunur.
MAX2771 icin generic PMOD SPI'dan bagimsiz, 48-clock/tek-SDATA hatli bir IP
0x10016000 adresindedir. 50 MHz Genesys2 fabric saatinden yedi fabric cycle
yarim periyot ile 3.571 MHz SCLK uretilir; MAX2771'in 4 MHz ust siniri ve
250 ns minimum periyodu korunur.
port FPGA pin PMOD pin yon
max2771_spi_sclk V30 JB2 output
max2771_spi_csn V25 JB3 output
max2771_spi_sdata W26 JB4 bidirectional
SDATA read header'indaki R/W bitinden sonraki falling edge'de input/high-Z
olur; uc turnaround clock ve 32 read-data clock'u boyunca FPGA bu tek hatti
okur. Constraintler
hardware/fpga/genesys2/constraints/genesys2_max2771_spi.xdc dosyasindadir.
EV kit uzerindeki MAX32625 PICO ayni hatlara baglidir; FPGA baglanmadan once
PICO SPI pinleri high-Z yapilmali veya controller fiziksel olarak ayrilmali ve
EV kit GUI ayni anda calistirilmamalidir.
Register test uygulamasi tum data-sheet default register tablosunu yazar ve geri okuyup dogrular:
make -C targets/fpga/genesys2 debug-load APP=max2771_spi_test
Sensorden gelen external interrupt hatti SPI'dan bagimsizdir. Guncel pin
planinda pmod_irq PMOD JB pin 1'e cikar ve PLIC'te BSP_PMOD_IRQ (11)
ID'siyle gorunur. Eski JC9/AK30 eslemesi 2026-07-14'te JB1/V29 olarak
degistirildi; mevcut XDC ve bitstream icin sensor INT1 hatti JB1'e
baglanmalidir. JC10 GPS PPS cikisidir.
port FPGA pin PMOD pin
pmod_irq V29 JB1
Pin constraintleri hardware/fpga/genesys2/constraints/genesys2_pmod_irq.xdc
dosyasindadir ve Vivado akisi tarafindan her RF modunda okunur.
Ethernet PHY pinleri sadece RF_INPUT_MODE=ethernet iken
hardware/fpga/genesys2/constraints/genesys2_ethernet.xdc dosyasindan okunur.
RGMII/MDIO bank 33 tarafinda 1.5 V LVCMOS15, PHY reset 3.3 V LVCMOS33,
INTB/PMEB ise 1.8 V LVCMOS18 seviyesindedir:
port FPGA pin FPGA I/O board signal
eth_rxck AG10 LVCMOS15 ETH_RXCK
eth_rxctl AH11 LVCMOS15 ETH_RXCTL
eth_rxd[0] AJ14 LVCMOS15 ETH_RXD0
eth_rxd[1] AH14 LVCMOS15 ETH_RXD1
eth_rxd[2] AK13 LVCMOS15 ETH_RXD2
eth_rxd[3] AJ13 LVCMOS15 ETH_RXD3
eth_txck AE10 LVCMOS15 ETH_TXCK
eth_txctl AK14 LVCMOS15 ETH_TXCTL
eth_txd[0] AJ12 LVCMOS15 ETH_TXD0
eth_txd[1] AK11 LVCMOS15 ETH_TXD1
eth_txd[2] AJ11 LVCMOS15 ETH_TXD2
eth_txd[3] AK10 LVCMOS15 ETH_TXD3
eth_mdc AF12 LVCMOS15 ETH_MDC
eth_mdio AG12 LVCMOS15 ETH_MDIO
eth_phyrst_n AH24 LVCMOS33 ETH_RSTN
eth_int_b AK16 LVCMOS18 ETH_INT_B, pull-up
eth_pme_b AK15 LVCMOS18 ETH_PME_B, pull-up
Bu pinler Digilent Genesys 2 reference manual ve Genesys-2-Master.xdc pin isimleriyle ayni tutuldu.
fpga-config ve help ciktisi aktif RF_INPUT_MODE degerini gosterir.
Komutlar
make -C targets/fpga/genesys2 software
make -C targets/fpga/genesys2 rtl
make -C targets/fpga/genesys2 bitstream
make -C targets/fpga/genesys2 program-fpga
make -C targets/fpga/genesys2 program-flash
make -C targets/fpga/genesys2 program-app APP=gps_system
make -C targets/fpga/genesys2 uart-listen UART_PORT=/dev/ttyUSB1
Kok Makefile uzerinden:
make FPGA_BOARD=genesys2 fpga-config
make FPGA_BOARD=genesys2 fpga-bitstream
make FPGA_BOARD=genesys2 fpga-program
# TDK + GPS + ESKF, UART varsayilani 460800
make FPGA_BOARD=genesys2 APP=gps_system \
GPS_ESKF_ENABLE=1 IMU_SENSOR=tdk fpga-mcs
# GPS-only; tracking, Doppler velocity WLS ve PPS aktif
make FPGA_BOARD=genesys2 APP=gps_system \
GPS_ESKF_ENABLE=0 fpga-mcs
program-app APP=gps_system yalniz application flash bolgesini derleyip
programlar. Tracking mailbox registerlari ve synchronizer RTL degisikligi
bitstream gerektirir; Doppler IIR katsayisi/yazilim degisikligi ise bitstream
gerektirmez, yalniz yeni gps_system uygulamasinin yuklenmesi yeterlidir.
GPS_ESKF_ENABLE verilmezse ESKF aciktir. ESKF kapali profilde IMU ve fusion
baslatilmaz; GPS acquisition/tracking, C/N0, Doppler velocity WLS, ham konum ve
PPS calismaya devam eder. Iki profil ayni genesys2_rocket.mcs/.bin cikti
yoluna yazdigi icin birlikte saklanacaksa build sonrasinda yeniden
adlandirilmalidir.
debug-load APP=gps_system ELF'i GDB ile DTIM/RAM'e yukler; hizli kart testi
icin uygundur fakat power-cycle/reset sonrasinda flash'taki eski uygulama geri
gelir. Kalici kullanim icin program-app APP=gps_system kullanilmalidir.