Files
gps/targets/fpga/genesys2

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         : 115200
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.

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

Kok Makefile uzerinden:

make FPGA_BOARD=genesys2 fpga-config
make FPGA_BOARD=genesys2 fpga-bitstream
make FPGA_BOARD=genesys2 fpga-program