SURF (SLAC Ultimate RTL Framework) - a huge VHDL library for FPGA development.
Links:
โซ๏ธ sources
โซ๏ธ documentation
#VHDL #library #STL #primitives
@ipcores
Links:
โซ๏ธ sources
โซ๏ธ documentation
#VHDL #library #STL #primitives
@ipcores
๐ฅ11๐8๐ค1๐1
open5G_rx - a synthesizable verilog HDL core for a 5G NR lower phy receiver.
Implemented:
โซ๏ธ Decimator
โซ๏ธ PSS correlator
โซ๏ธ Peak detector
โซ๏ธ PSS detector
โซ๏ธ FFT demodulator
โซ๏ธ SSS detector
โซ๏ธ Frame sync
โซ๏ธ Channel estimator
โซ๏ธ Ressource grid subscriber
โซ๏ธ AXI-DMAC
๐พ https://github.com/catkira/open5G_rx
#SV #5G #DSP #FFT #ORAN
@ipcores
Implemented:
โซ๏ธ Decimator
โซ๏ธ PSS correlator
โซ๏ธ Peak detector
โซ๏ธ PSS detector
โซ๏ธ FFT demodulator
โซ๏ธ SSS detector
โซ๏ธ Frame sync
โซ๏ธ Channel estimator
โซ๏ธ Ressource grid subscriber
โซ๏ธ AXI-DMAC
๐พ https://github.com/catkira/open5G_rx
#SV #5G #DSP #FFT #ORAN
@ipcores
๐11โค4๐ฅ4๐ฑ4โก1
openwifi - open-source IEEE 802.11 WiFi baseband FPGA (chip) design.
Features:
โซ๏ธ802.11a/g/n [IEEE 802.11n (Wi-Fi 4)]
โซ๏ธ20MHz bandwidth; 70 MHz to 6 GHz frequency range
โซ๏ธMode tested: Ad-hoc; Station; AP, Monitor
โซ๏ธDCF (CSMA/CA) low MAC layer in FPGA (10us SIFS is achieved)
โซ๏ธ802.11 packet injection and fuzzing
โซ๏ธCSI: Channel State Information, freq offset, equalizer to computer
โซ๏ธCSI fuzzer: Create artificial channel response in WiFi transmitter
โซ๏ธCSI radar: Moving detection. Joint radar and communication
โซ๏ธIQ capture: real-time AGC, RSSI, IQ sample to computer
โซ๏ธConfigurable channel access priority parameters
โซ๏ธTime slicing based on MAC address (time gated/scheduled FPGA queues)
โซ๏ธEasy to change bandwidth and frequency:
โซ๏ธ2MHz for 802.11ah
โซ๏ธ10MHz for 802.11p
Links:
๐ https://github.com/open-sdr/openwifi
๐พ https://github.com/open-sdr/openwifi-hw
#SV #80211 #SDR #DSP #wifi
@ipcores
Features:
โซ๏ธ802.11a/g/n [IEEE 802.11n (Wi-Fi 4)]
โซ๏ธ20MHz bandwidth; 70 MHz to 6 GHz frequency range
โซ๏ธMode tested: Ad-hoc; Station; AP, Monitor
โซ๏ธDCF (CSMA/CA) low MAC layer in FPGA (10us SIFS is achieved)
โซ๏ธ802.11 packet injection and fuzzing
โซ๏ธCSI: Channel State Information, freq offset, equalizer to computer
โซ๏ธCSI fuzzer: Create artificial channel response in WiFi transmitter
โซ๏ธCSI radar: Moving detection. Joint radar and communication
โซ๏ธIQ capture: real-time AGC, RSSI, IQ sample to computer
โซ๏ธConfigurable channel access priority parameters
โซ๏ธTime slicing based on MAC address (time gated/scheduled FPGA queues)
โซ๏ธEasy to change bandwidth and frequency:
โซ๏ธ2MHz for 802.11ah
โซ๏ธ10MHz for 802.11p
Links:
๐ https://github.com/open-sdr/openwifi
๐พ https://github.com/open-sdr/openwifi-hw
#SV #80211 #SDR #DSP #wifi
@ipcores
โค9๐5โก4๐ฅ2โคโ๐ฅ1
SlowDDR3 - A general slow DDR3 interface.
Features:
โซ๏ธVery little resource consumption*
โซ๏ธSuits for all FPGAs with 1.5V IO voltage
โซ๏ธDesigned to run at DDR-100
โซ๏ธDesigned to work with LVCMOS IO PADs
โซ๏ธWrite in SpinalHDL (Future is coming ๐ )
*E.g. Gowin DDR3 IP consumes 1288 FFs, 1363 LUTs, 102 ALUs, 8 BSRAMs and 110 SSRAMs.
While slowDDR3 consumes 147 FFs and 216 LUTs.
Links:
๐พ src: https://github.com/ZiyangYE/General-Slow-DDR3-Interface
๐ example: https://github.com/ZiyangYE/LicheeTang20K_DDR_Test
#DDR3 #SDRAM #SpinalHDL
@ipcores
Features:
โซ๏ธVery little resource consumption*
โซ๏ธSuits for all FPGAs with 1.5V IO voltage
โซ๏ธDesigned to run at DDR-100
โซ๏ธDesigned to work with LVCMOS IO PADs
โซ๏ธWrite in SpinalHDL (Future is coming ๐ )
*E.g. Gowin DDR3 IP consumes 1288 FFs, 1363 LUTs, 102 ALUs, 8 BSRAMs and 110 SSRAMs.
While slowDDR3 consumes 147 FFs and 216 LUTs.
Links:
๐พ src: https://github.com/ZiyangYE/General-Slow-DDR3-Interface
๐ example: https://github.com/ZiyangYE/LicheeTang20K_DDR_Test
#DDR3 #SDRAM #SpinalHDL
@ipcores
๐ฅ5๐3โค1โคโ๐ฅ1๐1
USB_CDC - Full Speed (12Mbit/s) USB communications device class (or USB CDC class) for FPGA and ASIC designs.
USB_CDC implements the Abstract Control Model (ACM) subclass. Windows 10 provides a built-in driver (
macOS and Linux provide built-in drivers for USB CDC ACM devices too. On macOS, the virtual COM gets a name like
๐พ https://github.com/ulixxe/usb_cdc
#USB #CDC #UART #verilog
@ipcores
USB_CDC implements the Abstract Control Model (ACM) subclass. Windows 10 provides a built-in driver (
Usbser.sys) for USB CDC devices. A USB_CDC device is automatically recognized by Windows 10 as a virtual COM port, and a serial port terminal application such as CoolTerm can be used to communicate with it.macOS and Linux provide built-in drivers for USB CDC ACM devices too. On macOS, the virtual COM gets a name like
/dev/cu.usbmodem14601, whereas, on Linux, it gets a name like /dev/ttyACM0.๐พ https://github.com/ulixxe/usb_cdc
#USB #CDC #UART #verilog
@ipcores
๐19๐ฅ8๐1
USB_HID_host - a compact USB HID host FPGA core supporting keyboards, mice and gamepads.
It is designed mainly for FPGA retro gaming and computing projects. The most significant advantage is its all-in-one design. It does not require a CPU to work. And it is quite small (<300 LUTs, <250 registers and 1 BRAM block).
Features:
โซ๏ธNo CPU is required. The core handles all layers of the USB protocol related to HID devices
โซ๏ธNo USB interface IC (PHY) needed
โซ๏ธUSB low-speed (1.5Mbps). Uses a single 12Mhz clock
๐พ https://github.com/nand2mario/usb_hid_host
#USB #HID #host #verilog
@ipcores
It is designed mainly for FPGA retro gaming and computing projects. The most significant advantage is its all-in-one design. It does not require a CPU to work. And it is quite small (<300 LUTs, <250 registers and 1 BRAM block).
Features:
โซ๏ธNo CPU is required. The core handles all layers of the USB protocol related to HID devices
โซ๏ธNo USB interface IC (PHY) needed
โซ๏ธUSB low-speed (1.5Mbps). Uses a single 12Mhz clock
๐พ https://github.com/nand2mario/usb_hid_host
#USB #HID #host #verilog
@ipcores
๐17โค2
FPGA USB-device - USB full-speed device core to implement. It requires only 3 FPGA common IOs rather than additional chips.
Features:
โซ๏ธPure Verilog implementation
โซ๏ธImplementation of USB-serial, USB-MSD, USB-camera, USB-audio, USB-hid, etc
โซ๏ธThe circuit is simple: three FPGA pins, one resistor and one USB connector
๐พ https://github.com/WangXuan95/FPGA-USB-Device
#USB #HID #MSD #UVC #CDC #device #verilog
@ipcores
Features:
โซ๏ธPure Verilog implementation
โซ๏ธImplementation of USB-serial, USB-MSD, USB-camera, USB-audio, USB-hid, etc
โซ๏ธThe circuit is simple: three FPGA pins, one resistor and one USB connector
๐พ https://github.com/WangXuan95/FPGA-USB-Device
#USB #HID #MSD #UVC #CDC #device #verilog
@ipcores
๐ฅ15๐10
An FPGA-based 7-ENOB 600 MSample/s ADC without any External Components
In this work, a new structure of an FPGA-based ADC is proposed. The ADC is based on the slope ADC, where a time-to-digital converter (TDC) measures the time from the beginning of a reference slope until the slope reaches the voltage-to-be-measured.
Only FPGA-internal elements are used to build the ADC. It is fully reconfigurable and does not require any external components. This innovation offers the flexibility to convert almost any digital input/output (I/O) into an ADC.
The proposed ADC has a resolution of 9.3 bit and achieves an effective number of bits (ENOB) of 7 at a sample rate of 600 MSample/s. An alternative version of the ADC operates at 1.2 GSample/s and achieves an ENOB of 5.3.
Links:
๐พ https://github.com/LukiLeu/FPGA_ADC
๐ https://dl.acm.org/doi/10.1145/3431920.3439287
#ADC #VHDL #TDC
@ipcores
In this work, a new structure of an FPGA-based ADC is proposed. The ADC is based on the slope ADC, where a time-to-digital converter (TDC) measures the time from the beginning of a reference slope until the slope reaches the voltage-to-be-measured.
Only FPGA-internal elements are used to build the ADC. It is fully reconfigurable and does not require any external components. This innovation offers the flexibility to convert almost any digital input/output (I/O) into an ADC.
The proposed ADC has a resolution of 9.3 bit and achieves an effective number of bits (ENOB) of 7 at a sample rate of 600 MSample/s. An alternative version of the ADC operates at 1.2 GSample/s and achieves an ENOB of 5.3.
Links:
๐พ https://github.com/LukiLeu/FPGA_ADC
๐ https://dl.acm.org/doi/10.1145/3431920.3439287
#ADC #VHDL #TDC
@ipcores
๐ฅ20๐9โค1
Send video/audio over HDMI on an FPGA
SystemVerilog code for HDMI 1.4b video/audio output on an FPGA.
Features
โซ๏ธ 24-bit color
โซ๏ธ Data island packets
โซ๏ธ Null packet
โซ๏ธ ECC with BCH systematic encoding GF(2^8)
โซ๏ธ Audio clock regeneration
โซ๏ธ L-PCM audio 2-channel
โซ๏ธ Audio InfoFrame
โซ๏ธ Video formats 1, 2, 3, 4, 16, 17, 18, 19
โซ๏ธ VGA text mode
โซ๏ธ IBM 8x16 font
โซ๏ธ Double Data Rate I/O (DDRIO)
โซ๏ธ Supports up to 3840x2160@30Hz
Links
๐พ https://github.com/hdl-util/hdmi
๐ https://purisa.me/blog/hdmi-released/
#HDMI #video #SV #SystemVerilog
@ipcores
SystemVerilog code for HDMI 1.4b video/audio output on an FPGA.
Features
โซ๏ธ 24-bit color
โซ๏ธ Data island packets
โซ๏ธ Null packet
โซ๏ธ ECC with BCH systematic encoding GF(2^8)
โซ๏ธ Audio clock regeneration
โซ๏ธ L-PCM audio 2-channel
โซ๏ธ Audio InfoFrame
โซ๏ธ Video formats 1, 2, 3, 4, 16, 17, 18, 19
โซ๏ธ VGA text mode
โซ๏ธ IBM 8x16 font
โซ๏ธ Double Data Rate I/O (DDRIO)
โซ๏ธ Supports up to 3840x2160@30Hz
Links
๐พ https://github.com/hdl-util/hdmi
๐ https://purisa.me/blog/hdmi-released/
#HDMI #video #SV #SystemVerilog
@ipcores
๐ฅ10๐5
FPGA-FFT - a highly optimized streaming FFT core based on Bailey's 4-step large FFT algorithm
Features
โซ๏ธData input/output are continuous with no gaps between frames
โซ๏ธSupport power-of-two sizes
โซ๏ธSupport fixed point data
โซ๏ธResource usage is on par with Xilinx FFT IP core
โซ๏ธFmax is up to 30% higher for common sizes than Xilinx FFT IP core
Links
๐พ https://github.com/owocomm-0/fpga-fft
#fft #dsp #vhdl #xilinx
@ipcores
Features
โซ๏ธData input/output are continuous with no gaps between frames
โซ๏ธSupport power-of-two sizes
โซ๏ธSupport fixed point data
โซ๏ธResource usage is on par with Xilinx FFT IP core
โซ๏ธFmax is up to 30% higher for common sizes than Xilinx FFT IP core
Links
๐พ https://github.com/owocomm-0/fpga-fft
#fft #dsp #vhdl #xilinx
@ipcores
๐20๐ฅ6โค1
FPnew - New Parametric Floating-Point Unit with Transprecision Capabilities
Operations:
โซ๏ธAddition/Subtraction
โซ๏ธMultiplication
โซ๏ธFused multiply-add in four flavours (fmadd, fmsub, fnmadd, fnmsub)
โซ๏ธDivision
โซ๏ธSquare root
โซ๏ธMinimum/Maximum
โซ๏ธComparisons
โซ๏ธSign-Injections (copy, abs, negate, copySign etc.)
โซ๏ธConversions among all supported FP formats
โซ๏ธConversions between FP formats and integers (signed & unsigned) and vice versa
โซ๏ธClassification
Links
๐พ https://github.com/openhwgroup/cvfpu
#ieee754 #fp #floatingpoint
@ipcores
Operations:
โซ๏ธAddition/Subtraction
โซ๏ธMultiplication
โซ๏ธFused multiply-add in four flavours (fmadd, fmsub, fnmadd, fnmsub)
โซ๏ธDivision
โซ๏ธSquare root
โซ๏ธMinimum/Maximum
โซ๏ธComparisons
โซ๏ธSign-Injections (copy, abs, negate, copySign etc.)
โซ๏ธConversions among all supported FP formats
โซ๏ธConversions between FP formats and integers (signed & unsigned) and vice versa
โซ๏ธClassification
Links
๐พ https://github.com/openhwgroup/cvfpu
#ieee754 #fp #floatingpoint
@ipcores
๐11๐ฅ2
NNgen is an open-sourced compiler to synthesize a model-specific hardware accelerator for deep neural networks. NNgen generates a Verilog HDL source code and an IP-core package (IP-XACT) of a DNN accelerator from an input model definition.
Generated hardware is all-inclusive, which includes processing engine, on-chip memory, on-chip network, DMA controller, and control circuits. So the generated hardware does not require any additional controls from an external circuit or the CPU after the processing is started.
Links
๐พ https://github.com/NNgen/nngen
#nn #onnx #dl #ml #compiler
@ipcores
Generated hardware is all-inclusive, which includes processing engine, on-chip memory, on-chip network, DMA controller, and control circuits. So the generated hardware does not require any additional controls from an external circuit or the CPU after the processing is started.
Links
๐พ https://github.com/NNgen/nngen
#nn #onnx #dl #ml #compiler
@ipcores
๐11๐ฅ4
Library that supports IEEE754-2008 floating point arithmetic with a parametrizable mantissa and exponent.
Features
โซ๏ธFully parametrizable bit widths for exponent and mantissa
โซ๏ธHandles all special cases:
โช๏ธ SNaN/QNaN
โช๏ธ ยฑ infinity
โช๏ธ Denormalized numbers
โช๏ธ Zeroes
โซ๏ธSingle cycle operation
โซ๏ธSupports rounding to nearest (per official specification) or simply chopping bits
Links
๐พ https://github.com/V0XNIHILI/parametrizable-floating-point-verilog
#IEEE754 #FP #arithmetic
@ipcores
Features
โซ๏ธFully parametrizable bit widths for exponent and mantissa
โซ๏ธHandles all special cases:
โช๏ธ SNaN/QNaN
โช๏ธ ยฑ infinity
โช๏ธ Denormalized numbers
โช๏ธ Zeroes
โซ๏ธSingle cycle operation
โซ๏ธSupports rounding to nearest (per official specification) or simply chopping bits
Links
๐พ https://github.com/V0XNIHILI/parametrizable-floating-point-verilog
#IEEE754 #FP #arithmetic
@ipcores
๐11๐ฅ4โค2
Wupper - PCIe Gen3/Gen4/Gen5 DMA controller for Xilinx FPGA
Features
โซ๏ธSpecifically designed for the 256/512/1024 bit wide AXI4-Stream interface
โซ๏ธGeneric MSI-X compatible interrupt controller.
โซ๏ธSupporting PCIe Gen3, Gen4 and Gen5
โซ๏ธSupporting Series 7, UltraScale, Ultrascale+, Versal Prime and Versal Premium FPGAs
Links
๐พ https://gitlab.nikhef.nl/franss/wupper/
๐ https://gitlab.nikhef.nl/franss/wupper/-/blob/master/documentation/wupper.pdf
#PCIE #DMA #Xilinx #FPGA #VHDL
@ipcores
Features
โซ๏ธSpecifically designed for the 256/512/1024 bit wide AXI4-Stream interface
โซ๏ธGeneric MSI-X compatible interrupt controller.
โซ๏ธSupporting PCIe Gen3, Gen4 and Gen5
โซ๏ธSupporting Series 7, UltraScale, Ultrascale+, Versal Prime and Versal Premium FPGAs
Links
๐พ https://gitlab.nikhef.nl/franss/wupper/
๐ https://gitlab.nikhef.nl/franss/wupper/-/blob/master/documentation/wupper.pdf
#PCIE #DMA #Xilinx #FPGA #VHDL
@ipcores
๐ฅ14๐5โค2
FpOC - FPGA based Field Oriented Control (FOC) for driving Permanent Magnet Synchronous Motors (PMSM) or Brushless DC Motors (BLDC)
Features
โซ๏ธSupport 3 channels of PWM + 1 channel of EN
โซ๏ธSupports angle sensor and phase current sampling ADC with 12bit resolution
โซ๏ธInternally uses 16bit signed integer for computation
Links
๐พ https://github.com/WangXuan95/FPGA-FOC
#verilog #BLDC #PMSM #FOC #motor
@ipcores
Features
โซ๏ธSupport 3 channels of PWM + 1 channel of EN
โซ๏ธSupports angle sensor and phase current sampling ADC with 12bit resolution
โซ๏ธInternally uses 16bit signed integer for computation
Links
๐พ https://github.com/WangXuan95/FPGA-FOC
#verilog #BLDC #PMSM #FOC #motor
@ipcores
๐ฅ12๐6โค3
fpga_linear_time_sorter - a parallel sorting algorithm implemented in hardware that sorts data in linear time as it arrives serially
This algorithm is fast, since the sorting itself is done in parallel while the data is being input serially. It is sorted and ready to be read back immediately following the last write transfer.
A 256-length, 8-bit sorter costs approximately 5500 logical elements on an Altera Cyclone IV.
Links:
๐พ https://github.com/Poofjunior/fpga_fast_serial_sort
#algo #sort #sorting
@ipcores
This algorithm is fast, since the sorting itself is done in parallel while the data is being input serially. It is sorted and ready to be read back immediately following the last write transfer.
A 256-length, 8-bit sorter costs approximately 5500 logical elements on an Altera Cyclone IV.
Links:
๐พ https://github.com/Poofjunior/fpga_fast_serial_sort
#algo #sort #sorting
@ipcores
๐10๐ฅ4โค3
Floating Point Clock Divider is a 24.16 (m.n) bit floating point clock divider (actually it is a fixed point fractional divider).
Features
โซ๏ธResulting frequency precision down to the 0.01Hz
โซ๏ธcalculating PPM error
โซ๏ธcalculating jitter spec
Links
๐พ https://github.com/BrianHGinc/Verilog-Floating-Point-Clock-Divider
๐ https://www.eevblog.com/forum/fpga/verilog-floating-point-clock-divider-release/
#verilog #DIV #FP #clock #divider
@ipcores
Features
โซ๏ธResulting frequency precision down to the 0.01Hz
โซ๏ธcalculating PPM error
โซ๏ธcalculating jitter spec
Links
๐พ https://github.com/BrianHGinc/Verilog-Floating-Point-Clock-Divider
๐ https://www.eevblog.com/forum/fpga/verilog-floating-point-clock-divider-release/
#verilog #DIV #FP #clock #divider
@ipcores
๐ฅ11๐5โค3