All Projects → open-sdr → Openwifi Hw

open-sdr / Openwifi Hw

Licence: agpl-3.0
FPGA/hardware design of openwifi

Projects that are alternatives of or similar to Openwifi Hw

Openwifi
open-source IEEE 802.11 WiFi baseband FPGA (chip) design
Stars: ✭ 2,257 (+1146.96%)
Mutual labels:  verilog, fpga, sdr, software-defined-radio, hls
Uhd
The USRP™ Hardware Driver Repository
Stars: ✭ 544 (+200.55%)
Mutual labels:  verilog, fpga, sdr
oscimpDigital
OscillatorIMP ecosystem for the digital characterization of ultrastable oscillators and Software Defined Radio (SDR) frontend processing
Stars: ✭ 41 (-77.35%)
Mutual labels:  fpga, sdr, software-defined-radio
Red Pitaya Notes
Notes on the Red Pitaya Open Source Instrument
Stars: ✭ 205 (+13.26%)
Mutual labels:  verilog, fpga, sdr
hwt
VHDL/Verilog/SystemC code generator, simulator API written in python/c++
Stars: ✭ 145 (-19.89%)
Mutual labels:  fpga, hls, verilog
1bitSDR
Minimal SDR with Lattice MachXO2 FPGA. And a port to Cyclone3 by Steven Groom
Stars: ✭ 53 (-70.72%)
Mutual labels:  fpga, verilog, sdr
Beagle sdr gps
KiwiSDR: BeagleBone web-accessible shortwave receiver and software-defined GPS
Stars: ✭ 300 (+65.75%)
Mutual labels:  verilog, fpga, sdr
Fpga readings
Recipe for FPGA cooking
Stars: ✭ 164 (-9.39%)
Mutual labels:  verilog, fpga, hls
Aes
Verilog implementation of the symmetric block cipher AES (Advanced Encryption Standard) as specified in NIST FIPS 197. This implementation supports 128 and 256 bit keys.
Stars: ✭ 131 (-27.62%)
Mutual labels:  verilog, fpga
Gemm hls
Scalable systolic array-based matrix-matrix multiplication implemented in Vivado HLS for Xilinx FPGAs.
Stars: ✭ 134 (-25.97%)
Mutual labels:  fpga, hls
Wbuart32
A simple, basic, formally verified UART controller
Stars: ✭ 133 (-26.52%)
Mutual labels:  verilog, fpga
Open Register Design Tool
Tool to generate register RTL, models, and docs using SystemRDL or JSpec input
Stars: ✭ 126 (-30.39%)
Mutual labels:  verilog, fpga
Connectal
Connectal is a framework for software-driven hardware development.
Stars: ✭ 117 (-35.36%)
Mutual labels:  verilog, fpga
Fpga Chip8
CHIP-8 console on FPGA
Stars: ✭ 169 (-6.63%)
Mutual labels:  verilog, fpga
Vm80a
i8080 precise replica in Verilog, based on reverse engineering of real die
Stars: ✭ 114 (-37.02%)
Mutual labels:  verilog, fpga
Livehd
Live Hardware Development (LiveHD), a productive infrastructure for Synthesis and Simulation
Stars: ✭ 110 (-39.23%)
Mutual labels:  verilog, fpga
Tang e203 mini
LicheeTang 蜂鸟E203 Core
Stars: ✭ 135 (-25.41%)
Mutual labels:  verilog, fpga
Symbiflow Arch Defs
FOSS architecture definitions of FPGA hardware useful for doing PnR device generation.
Stars: ✭ 137 (-24.31%)
Mutual labels:  verilog, fpga
Openfpgaduino
All open source file and project for OpenFPGAduino project
Stars: ✭ 137 (-24.31%)
Mutual labels:  verilog, fpga
Tinytpu
Implementation of a Tensor Processing Unit for embedded systems and the IoT.
Stars: ✭ 153 (-15.47%)
Mutual labels:  verilog, fpga

openwifi-hw

openwifi: Linux mac80211 compatible full-stack IEEE802.11/Wi-Fi design based on SDR (Software Defined Radio).

This repository includes Hardware/FPGA design. To be used together with openwifi driver and software repository.

Openwifi code has dual licenses. AGPLv3 is the opensource license. For non-opensource license, please contact [email protected]. Openwifi project also leverages some 3rd party modules. It is user's duty to check and follow licenses of those modules according to the purpose/usage. You can find an example explanation from Analog Devices for this compound license conditions. [How to contribute].

Pre-compiled FPGA files: boards/board_name/sdk/ has FPGA bit file, ila .ltx file and some other files might be needed.

board_name options:

  • zc706_fmcs2 (Xilinx ZC706 dev board + FMCOMMS2/3/4)
  • zed_fmcs2 (Xilinx zed board + FMCOMMS2/3/4)
  • adrv9361z7035 (ADRV9361-Z7035 + ADRV1CRR-BOB/FMC)
  • adrv9364z7020 (ADRV9364-Z7020 + ADRV1CRR-BOB)
  • zc702_fmcs2 (Xilinx ZC702 dev board + FMCOMMS2/3/4)
  • zcu102_fmcs2 (Xilinx ZCU102 dev board + FMCOMMS2/3/4)

Build FPGA: (Xilinx Vivado (also SDK and HLS) 2018.3 is needed. Example instructions are verified on Ubuntu 18)

  • In Linux, prepare Analgo Devices HDL library (only run once):
export XILINX_DIR=your_Xilinx_directory
./prepare_adi_lib.sh $XILINX_DIR
  • In Linux, prepare Analgo Devices board specific ip (only run once for each board you have):
./prepare_adi_board_ip.sh $XILINX_DIR $BOARD_NAME
(Don't need to wait till the building end. When you see "Building ABCD project [...", you can stop it.)
  • Install the evaluation license of Xilinx Viterbi Decoder into Vivado. Otherwise there will be errors when you build the whole FPGA design.
  • Open Vivado, then in Vivado Tcl Console:
Change to openwifi-hw/boards/board_name/ directory by "cd" command, if Vivado is launched in different directory.
source ./openwifi.tcl
  • In Vivado:
Open Block Design
Tools --> Report --> Report IP Status
Generate Bitstream
(Will take a while)
File --> Export --> Export Hardware... --> Include bitstream --> OK
File --> Launch SDK --> OK, then close SDK
  • In Linux:
cd openwifi-hw/boards
./sdk_update.sh board_name
git commit -a -m "new fpga img for openwifi (or comments you want to make)"
git push
(Above make sure you can pull this new FPGA from openwifi submodule directory: openwifi-hw)

Modify IP cores:

IP core source files are in "ip" directory. After IP is modified, export the IP core into "ip_repo" directory. Then re-run the full FPGA build procedure. For IP project created by _high.tcl or _low.tcl or _ultra_scale.tcl, exporting target directory should be ip_repo/high/ or ip_repo/low/ or ip_repo/ultra_scale/ (for ZynqMP SoC, like zcu102 board). Other IP should be exported to ip_repo/common/.

  • IP cores designed by HLS (mixer_ddc and mixer_duc). mixer_ddc as example:
Create a project "mixer_ddc" with file in ip/mixer_ddc/src directory in Vivado HLS.
During creating, set mixer_ddc as top, select zc706 board as "Part" and set Clock Period 5 (means 200MHz).
Run C synthesis.
Click solution1, Solution --> Export RTL
Copy project_directory/solution1/impl/ip to ip_repo/common/mixer_ddc
  • IP cores designed by block-diagram (ddc_bank_core, fifo32_1clk, etc). fifo32_1clk as example:
Open Vivado, then in Vivado Tcl Console:
cd ip/fifo32_1clk
source ./fifo32_1clk.tcl
In Vivado:
Open Block Design
Tools --> Report --> Report IP Status
Tools --> Create and Package New IP... --> Next --> Package a block design from ... --> Next --> set "ip_repo/common/fifo32_1clk" as target directory --> Next --> OK -- Finish
In new opened temporary project: Review and Package --> Package IP --> Yes
  • IP cores designed by verilog (rx_intf, xpu, etc). xpu as example:
Open Vivado, then in Vivado Tcl Console:
cd ip/xpu
source ./xpu_high.tcl
In Vivado:
Tools --> Report --> Report IP Status
Tools --> Create and Package New IP... --> Next --> Next --> set "ip_repo/high/xpu" as target directory --> Next --> OK -- Finish
In new opened temporary project: Review and Package --> Package IP --> Yes
  • openofdm_rx: You need to apply the evaluation license of Xilinx Viterbi Decoder and install on your PC firstly.

    • In Linux:

      cd ip/
      git submodule init openofdm_rx
      git submodule update openofdm_rx
      cd openofdm_rx
      git checkout dot11zynq
      git pull
      
    • Open Vivado, then in Vivado Tcl Console:

      cd ip/openofdm_rx
      source ./openofdm_rx.tcl
      
    • In Vivado:

      Tools --> Report --> Report IP Status
      Tools --> Create and Package New IP... --> Next --> Next --> set "ip_repo/common/openofdm_rx" as target directory --> Next --> OK -- Finish
      In new opened temporary project: Review and Package --> Package IP --> Yes
      

Note: openwifi adds necessary modules/modifications on top of Analog Devices HDL reference design. For general issues, Analog Devices wiki pages would be helpful!

Notes: The 802.11 ofdm receiver is based on openofdm project. You can find our patch (bug-fix, improvement) here which is mapped to ip/openofdm_rx.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].