๐—œ๐—ฃ cores
1.23K subscribers
77 photos
1 file
75 links
Collection of IP-cores for FPGA & ASIC written on Verilog/VHDL

#FPGA #ASIC #VHDL #verilog #IP #Xilinx #Altera

PS: also might be intresting @fpgasic
Download Telegram
SURF (SLAC Ultimate RTL Framework) - a huge VHDL library for FPGA development.

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
๐Ÿ‘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
โค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
๐Ÿ”ฅ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 (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
๐Ÿ‘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
๐Ÿ”ฅ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
๐Ÿ”ฅ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
๐Ÿ”ฅ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
๐Ÿ‘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
๐Ÿ‘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
๐Ÿ‘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
๐Ÿ‘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
๐Ÿ”ฅ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
๐Ÿ”ฅ12๐Ÿ‘6โค3
Channel name was changed to ยซ๐—œ๐—ฃ coresยป
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
๐Ÿ‘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
๐Ÿ”ฅ11๐Ÿ‘5โค3