# openwifi-hw
<img src="./openwifi-logo.png" width="300">
**openwifi:** Linux mac80211 compatible full-stack IEEE802.11/Wi-Fi design based on SDR (Software Defined Radio).
[[Introduction](#Introduction)]
[[Build FPGA](#Build-FPGA)]
[[Modify IP cores](#Modify-IP-cores)]
[[Simulate IP cores](#Simulate-IP-cores)]
[[Conditional compile by verilog macro](#Conditional-compile-by-verilog-macro)]
[[GPIO/LED definitions](gpio_led.md)]
## Introduction
This repository includes Hardware/FPGA design. To be used together with **openwifi** repository (driver and software tools).
Openwifi code has dual licenses. [AGPLv3](https://github.com/open-sdr/openwifi/blob/master/LICENSE) is the opensource license. For non-opensource and advanced feature license, please contact Filip.Louagie@UGent.be. 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](https://github.com/analogdevicesinc/hdl/blob/master/LICENSE) for this compound license conditions. [[How to contribute]](https://github.com/open-sdr/openwifi-hw/blob/master/CONTRIBUTING.md).
**Pre-compiled FPGA files:** boards/**$BOARD_NAME**/sdk/ has FPGA bit file, ila .ltx file (if ila inserted) and other initilization files.
Environment variable **BOARD_NAME** options:
- **zc706_fmcs2** ([Xilinx ZC706 board](https://www.xilinx.com/products/boards-and-kits/ek-z7-zc706-g.html) + [FMCOMMS2/3/4](https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-ad-fmcomms2.html))
- **zed_fmcs2** ([Xilinx zed board](https://www.xilinx.com/products/boards-and-kits/1-8dyf-11.html) + [FMCOMMS2/3/4](https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-ad-fmcomms2.html)) -- Vivado license **NOT** needed
- **adrv9364z7020** ([ADRV9364-Z7020 + ADRV1CRR-BOB](https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/adrv9364-z7020.html)) -- Vivado license **NOT** needed
- **adrv9361z7035** ([ADRV9361-Z7035 + ADRV1CRR-BOB/FMC](https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/ADRV9361-Z7035.html))
- **zc702_fmcs2** ([Xilinx ZC702 board](https://www.xilinx.com/products/boards-and-kits/ek-z7-zc702-g.html) + [FMCOMMS2/3/4](https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-ad-fmcomms2.html)) -- Vivado license **NOT** needed
- **antsdr** ([MicroPhase](https://github.com/MicroPhase/) enhanced ADALM-PLUTO SDR. [Notes](boards/antsdr/notes.md)) -- Vivado license **NOT** needed
- **zcu102_fmcs2** ([Xilinx ZCU102 board](https://www.xilinx.com/products/boards-and-kits/ek-u1-zcu102-g.html) + [FMCOMMS2/3/4](https://www.analog.com/en/design-center/evaluation-hardware-and-software/evaluation-boards-kits/eval-ad-fmcomms2.html))
## Build FPGA
* Pre-conditions:
* Xilinx Vivado (with SDK and HLS) 2018.3 (Vivado Design Suite - HLx Editions - 2018.3 Full Product Installation)
* Install the evaluation license of [Xilinx Viterbi Decoder](https://www.xilinx.com/products/intellectual-property/viterbi_decoder.html) into Vivado.
* Ubuntu 18/20 LTS release (We test in these OS. Other OS might also work.)
* Prepare Analgo Devices HDL library (only run once):
```
export XILINX_DIR=your_Xilinx_install_directory
(Example: export XILINX_DIR=/opt/Xilinx. The Xilinx directory should include sth like: Downloads, SDK, Vivado, xic)
./prepare_adi_lib.sh $XILINX_DIR
```
* Prepare Analgo Devices specific ip (only run once for each board you have):
```
export BOARD_NAME=your_board_name
(Example: export BOARD_NAME=zc706_fmcs2)
./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.)
```
* Get the openofdm_rx into ip directory (only run once after openofdm is udpated):
```
./get_ip_openofdm_rx.sh
```
* Generate ip_repo for the top level FPGA project (will take a while):
```
cd openwifi-hw/boards/$BOARD_NAME/
../create_ip_repo.sh $XILINX_DIR
```
* In the Vivado
```
source ./openwifi.tcl
Click "Generate Bitstream" in the Vivado GUI.
(Will take a while)
File --> Export --> Export Hardware... --> Include bitstream --> OK
File --> Launch SDK --> OK, then close SDK
```
* In Linux, store the FPGA files to a specific directory:
```
cd openwifi-hw/boards
./sdk_update.sh $BOARD_NAME
```
* Add the FPGA files to git (only if you want and know the actual repo you want commit to):
```
git add $BOARD_NAME/sdk/*
git commit -m "new fpga img for openwifi (or comments you want to make)"
git push
```
## Modify IP cores
IP core project files are in "ip/ip_name" directory. "ip_name" example: xpu, tx_intf, etc. To create the IP project and do necessary work (modification, simulation, etc.), go to the ip/ip_name directory, then:
```
../create_vivado_proj.sh $XILINX_DIR ip_name.tcl
```
To apply your new/modified IP to the top level FPGA project, start from "../create_ip_repo.sh $XILINX_DIR" in the board directory (Build FPGA section) to integrate your modified IP to the board FPGA design.
If your IP modification is complicated and encounter error while running create_ip_repo.sh, you should check create_ip_repo.sh/ip_repo_gen.tcl/etc, understand and modify them accordingly (for example to include your new added files).
**Change the baseband clock:**
![](./bb-clk.jpg)
By default, 100MHz baseband clock is used. You can change the baseband clock by changing the NUM_CLK_PER_US at the beginning of openwifi.tcl. Available options: 240/100MHz for zcu102; 100/200MHz for zc706 and adrv9361z7035; 100MHz for the rest. Then re-run openwifi.tcl to create the new FPGA project.
## Simulate IP cores
* Create the ip core project in Vivado. To achieve this, you need to follow the "Modify IP cores" section to create the IP's Vivado project.
* Normally you should see the top level testbench (..._tb.v) of that ip core in the Vivado "Sources" window (take openofdm_rx as example):
Go to the openofdm_rx IP directory, then run:
./create_vivado_proj.sh ~/Xilinx/ openofdm_rx.tcl
Then in Vivado
Sources --> Simulation Sources --> sim_1 --> dot11_tb
* To run the simulation, click "Run Simulation" --> "Run Behavoiral Simulation" under the "SIMULATION" in the "PROJECT MANAGER" window. It will take quite long time for the 1st time run due to the sub-ip-core compiling. Fortunately the sub-ip-core compiling is a time consuming step that occurs only one time.
* When the previous step is finished, you should see a simulation window displays many variable names and waveforms. Now click the small triangle, which points to the right and has "Run All (F3)" hints, on top to start the simulation.
* Please check the ..._tb.v to see how do we use $fopen, $fscanf and $fwrite to read test vectors and save the variables for checking later. Of course you can also check everything in the waveform window.
* The openofdm_rx_pre_def.v also includes important definitions for the simulation.
* After you modify some design files, just click the small circle with arrow, which has "Relaunch Simulation" hints, on top to re-launch the simulation.
* You can always drag the signals you need from the "SIMULATION" --> "Scope" window to the waveform window, and relaunch the simulation to check those signals' waveform. An example:
SIMULATION --> Scope --> Name --> dot11_tb --> dot11_inst --> ofdm_decoder_inst --> viterbi_inst
## Conditional compile by verilog macro
While working on a stand alone IP, the create_vivado_proj.sh could accept more arguments. Some arguments will be converted to verilog macro pre-defines into ip_name_pre_def.v, which can be included by IP source files to enable/disable some code blocks. Check more info by running create_vivado_proj.sh:
```
usage:
Need at least 2 arguments: $XILINX_DIR $TCL_FILENAME
More a
没有合适的资源?快使用搜索试试~ 我知道了~
开源IEEE 802.11 WiFi基带FPGA(芯片)设计:FPGA、硬件_Verilog_代码_相关文件_下载
共235个文件
v:93个
tcl:34个
c:14个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 6 下载量 36 浏览量
2022-07-05
20:33:57
上传
评论 1
收藏 24.92MB ZIP 举报
温馨提示
openwifi:基于SDR(软件定义无线电)的Linux mac80211兼容全栈IEEE802.11/Wi-Fi设计。 介绍 该存储库包括硬件/FPGA 设计。与openwifi存储库(驱动程序和软件工具)一起使用。 Openwifi 代码具有双重许可证。AGPLv3是开源许可证。如需非开源和高级功能许可,请联系Filip.Louagie@UGent.be。Openwifi 项目还利用了一些 3rd 方模块。用户有责任根据用途/用途检查并遵守这些模块的许可证。您可以从 Analog Devices 找到有关此复合许可条件的示例说明。[如何贡献] . 预编译的 FPGA 文件: boards/ $BOARD_NAME /sdk/ 有 FPGA 位文件,ila .ltx 文件(如果 ila 插入)和其他初始化文件。 环境变量BOARD_NAME选项: zc706_fmcs2(赛灵思 ZC706 板+ FMCOMMS2/3/4) 等等等等 更多详情、使用方法,请下载后阅读README.md文件
资源推荐
资源详情
资源评论
收起资源包目录
开源IEEE 802.11 WiFi基带FPGA(芯片)设计:FPGA、硬件_Verilog_代码_相关文件_下载
(235个子文件)
system.bd 186KB
system.bd 186KB
system.bd 181KB
system.bd 180KB
system.bd 171KB
system.bd 171KB
system.bd 168KB
psu_init.c 905KB
psu_init_gpl.c 904KB
ps7_init.c 548KB
ps7_init.c 548KB
ps7_init_gpl.c 547KB
ps7_init_gpl.c 547KB
ps7_init.c 546KB
ps7_init.c 546KB
ps7_init_gpl.c 546KB
ps7_init_gpl.c 546KB
ps7_init.c 544KB
ps7_init_gpl.c 543KB
ps7_init.c 510KB
ps7_init_gpl.c 510KB
.gitattributes 230B
.gitmodules 189B
hdf_and_bit.tar.gz 4.68MB
hdf_and_bit.tar.gz 3.33MB
hdf_and_bit.tar.gz 3.25MB
hdf_and_bit.tar.gz 2.76MB
hdf_and_bit.tar.gz 2.75MB
hdf_and_bit.tar.gz 2.72MB
hdf_and_bit.tar.gz 2.71MB
psu_init.h 1.59MB
psu_init_gpl.h 1.59MB
ps7_init.h 5KB
ps7_init.h 5KB
ps7_init.h 5KB
ps7_init.h 5KB
ps7_init.h 5KB
ps7_init.h 5KB
ps7_init_gpl.h 4KB
ps7_init_gpl.h 4KB
ps7_init_gpl.h 4KB
ps7_init_gpl.h 4KB
ps7_init_gpl.h 4KB
ps7_init_gpl.h 4KB
ps7_init.html 2.82MB
ps7_init.html 2.81MB
ps7_init.html 2.81MB
ps7_init.html 2.81MB
ps7_init.html 2.79MB
ps7_init.html 2.66MB
psu_init.html 52KB
bb-clk.jpg 104KB
LICENSE 35KB
system_top.ltx 162KB
system_top.ltx 18KB
system_top.ltx 18KB
system_top.ltx 14KB
system_top.ltx 13KB
system_top.ltx 9KB
system_top.ltx 6KB
test_data_in_out.m 1KB
README.md 9KB
gpio_led.md 3KB
notes.md 1KB
issue-description.md 761B
CONTRIBUTING.md 302B
ht_tx_intf_mem_mcs7_gi1_aggr0_byte8176.mem 17KB
icmem_64.mem 352B
tx_intf.mem 255B
ht_tx_intf_mem_mcs7_gi1_aggr0_byte100.mem 255B
icmem_32.mem 176B
icmem_16.mem 88B
icmem_8.mem 44B
openwifi-logo.png 164KB
.project 980B
.project 980B
.project 980B
.project 980B
.project 980B
.project 980B
.project 980B
create_ip_repo.sh 2KB
sdk_update.sh 2KB
create_vivado_proj.sh 2KB
prepare_adi_board_ip.sh 2KB
ultra_scale_tcl_gen.sh 986B
prepare_adi_lib.sh 570B
pack_hdf_bit.sh 566B
get_ip_openofdm_rx.sh 186B
get_git_rev.sh 150B
psu_init.tcl 865KB
openwifi.tcl 68KB
openwifi.tcl 68KB
openwifi.tcl 67KB
openwifi.tcl 67KB
openwifi.tcl 66KB
openwifi.tcl 66KB
openwifi.tcl 66KB
openofdm_tx.tcl 66KB
mv_avg_tb.tcl 64KB
共 235 条
- 1
- 2
- 3
快撑死的鱼
- 粉丝: 1w+
- 资源: 9156
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- pta题库答案c语言之树结构2ListLeaves.zip
- pta题库答案c语言之树结构1树的同构.zip
- 基于C++实现民航飞行与地图简易管理系统可执行程序+说明+详细注释.zip
- pta题库答案c语言之复杂度1最大子列和问题.zip
- 三维装箱问题(Three-Dimensional Bin Packing Problem,3D-BPP)是一个经典的组合优化问题
- 以下是一些关于Linux线程同步的基本概念和方法.txt
- 以下是一个简化的示例,它使用pygame库来模拟烟花动画的框架.txt
- Linux线程同步机制深度解析与实用指南.zip
- PTA题库C语言解题策略与实战.rar
- SVPWM控制技术的simulink建模与仿真【包括simulink模型,参考文献,操作步骤】
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
前往页