Previously recommended excellent open source projects on GitHub, “What are the excellent VHDL/Verilog/FPGA projects on GitHub“. OpenWIFI, as a leader in the communication field, many people will naturally take it for learning. This article will share with you how to build a low-cost OpenWIFI using ZYNQ (requires ZYNQ010 or higher chip) + AD936X.
Introduction
openwifi: A full-stack IEEE802.11/Wi-Fi design compatible with Linux mac80211 based on SDR (Software Defined Radio).The hardware used is as follows:1. ZYNQ7020 + AD9364, Analog Devices AD9364- BBCZ integrated 1×1 RF Agile Transceiver™ + Xilinx Zynq XC7Z020-1CLG400I AP SoC (for digital processing)2. Introduction of 7020:https://china.xilinx.com/support/documentation/boards_and_kits/zc702_zvik/ug850-zc702-eval-bd.pdf3. AD9364: See the Chinese manual for details.Note 1:Some ZYNQ + AD936x solutions are basically variations of the official ADI AD-FMCOMMS [2,3,4,5] –EBZ (details see Note 2), all design materials can be directly used with the official project. At the same time, the official has also made u-boot, kernel, and file systems for some commonly used development boards and open-source hardware, and you only need to prepare an SD/FT card and a card reader during use;Note 2:
Board
AD936x Device
Simultaneous Transmit/Receive
Tx (Range)
Rx (Range)
Purpose
Connector
ADALM-PLUTO
1 AD9363
1 x 1
1 (325-3800 MHz)
1 (325-3800 MHz)
Active Learning Module
Taiwan Semiconductor
ADRV9364-Z7020
1 AD9364
1 x 1
1 (2400-2500 MHz)
1 (2400-2500 MHz)
Highly Integrated Module System
Taiwan Semiconductor
ADRV9361-Z7035
1 AD9361
2 x 2
2 (2400-2500 MHz)
2 (2400-2500 MHz)
Highly Integrated Module System
Taiwan Semiconductor
AD-FMCOMMS2-EBZ
1 AD9361
2 x 2
2 (2400-2500 MHz)
2 (2400-2500 MHz)
Best RF Performance in Narrow Range
FMC-LPC
AD-FMCOMMS3-EBZ
1 AD9361
2 x 2
2 (70-6000 MHz)
2 (70-6000 MHz)
Software Testing and Waveform Development
FMC-LPC
AD-FMCOMMS4-EBZ
1 AD9364
1 x 1
1 (2400-2500 MHz) 1 (70-6000 MHz)
1 (2400-2500 MHz) 1 (70-6000 MHz)
FMC-LPC
AD-FMCOMMS5-EBZ
2 AD9361
4 x 4
4 (2400-2500 MHz) 4 (70-6000 MHz)
4 (2400-2500 MHz) 4 (70-6000 MHz)
MIMO Test Platform, Can Synchronize in RF Domain
2 FMC-LPC
Application
The official supported board is as follows:
board_name
board combination
zc706_fmcs2
Xilinx ZC706 dev board + FMCOMMS2/3/4
zed_fmcs2
Xilinx zed board + FMCOMMS2/3/4
adrv9364z7020
ADRV9364-Z7020 + ADRV1CRR-BOB
adrv9361z7035
ADRV9361-Z7035 + ADRV1CRR-BOB/FMC
zc702_fmcs2
Xilinx ZC702 dev board + FMCOMMS2/3/4
zcu102_fmcs2
Xilinx ZCU102 dev board + FMCOMMS2/3/4
zcu102_9371
Xilinx ZCU102 dev board + ADRV9371
1. Download the SD card imageThe image contains U-boot, kernel, and file system.Open the following URL:
After downloading, it will be a .xz fileOn Windows, you need to unzip it first, and the extracted file is the .img file we need.Next, prepare an SD/TF card with more than 8GB of memory and connect it to the computer through a card reader.Prepare an SD card burning software. I usually use Win32DiskImager. Open the software, select the downloaded img file, and set it as follows:Step 1: Select the downloaded img file;Step 2: Select the corresponding drive letter of the SD/TF card, be sure to check carefully to prevent damaging other cards;Step 3: Click WRITE to write the file to the card;Step 4: Wait for completion.2. Copy files to the corresponding locationThe burned card can only display the boot partition on Windows, first check what files are in the partition:The u-boot and device tree provided by ADI for each board are located in the corresponding folder:Files in each folder:The SD card also includes the kernel + u-boot environment variablesWhere uImage (kernel) is in the folder shown in the image below and also needs to be copied to the root directory of the SD card, after copying, as shown in the image above.File system:The file system needs to be viewed in the Linux system (WINDOWS does not support), as follows:Finally, in the boot partition mentioned above, copy the u-boot and device tree to the root partition of the SD card,Open the path shown in the image below:Copy the internal files to the root directory of the SD card:Note to replace the original files, then you can modify the environment variable text as needed (default not needed), connect the platform’s serial port + power on to see the complete system print information, the serial port settings are as follows:So far, the process of building the platform using AD936X + ZYNQ with the official image has been completed, and you can have fun now.To summarize: 1. Download the image file; 2. Copy the corresponding u-boot, device tree, and kernel (uImage) from the OpenWIFI folder to the root directory of the SD card (BOOT).
Openwifi Application
Hardware:SDR Hardware PlatformDevelopment Platform: WindowsAttachment: WIFI Antenna*2Required: RouterNote: The antenna interface must choose the corresponding socket interface for your SDR platform, the common one is SMA interface. Other interfaces need to find a way to connect the antenna to the RX and TX interfaces of the SDR.1.Router SettingsAfter OpenWIFI starts, there is a fixed IP. You need to connect the platform to the WLAN interface of the router. If the IP segment of OpenWIFI is not in the same frequency segment as the router, you need to modify the IP of OpenWIFI or the fixed IP of the router, modify it as convenient, I directly modified the router IP as shown in the image below:2. Start OpenWIFIInput the command in the interface shown above:~/openwifi/fosdem-11ag.shOpenWIFI has started, at this time use your phone to connect to Openwifi’s wifi;Open the browser on your phone and go to192.168.13.1 webpage to see the author’s homepage, detailed video see the link below.The current settings still cannot access the internet, you need to bridge OpenWIFI and the WLAN of the router, mainly using three commands:
sudo sysctl -w net.ipv4.ip_forward=1sudo iptables -t nat -A POSTROUTING -o NICY -j MASQUERADEsudo ip route add 192.168.13.0/24 via 192.168.10.122 dev ethX
The red part is what needs to be changed, the specific meaning will not be explained (mainly related to the routing table issue), just look at the board-end IP used above and you will understand.The actual modified command is as follows:
sudo sysctl -w net.ipv4.ip_forward=1sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADEsudo ip route add 192.168.13.0/24 via 192.168.10.122 dev eth0
Modify the configuration in the serial port.At this point, connecting to Open WIFI’s wifi with your phone can access the internet, as shown below:The signal reception part is weak because the antenna is not plugged in.That’s it.
– END –
NOW take action!
Recommended Reading
【Vivado those things】How to find official examples and how to use official examples 【Vivado Usage Pitfalls and Advanced】Summary 【Vivado those things】Vivado header file usage precautions 【Vivado those things】Common shortcuts in Vivado (1) F4 key 【Vivado those things】Common shortcuts in Vivado (2) Other common shortcuts
SystemVerilog Digital System Design_ Xia Yuwen PDF Difference between always, assign and always@(*) in Verilog
How to find the maximum and second maximum of 32 inputs on FPGA: Divide and Conquer Book Recommendation| ARM Cortex-M0 Fully Programmable SoC Principles and Implementation
How to learn FPGA RISC-V Further! The world's first 5nm RISC-V SOC successfully taped out!
Several open-source SDR platforms
Xilinx launches Kria adaptive system module product portfolio, accelerating innovation and AI applications at the edge
Introduction to RISC-V instruction set architecture and introduction to domestic and foreign manufacturers
Vitis tasting (1)
Basic principles of LNA and PA in SDR/wireless design
Disassembling the 1968 US military computer, really doubting it's a "time travel"!
A comprehensive popular science article on FPGA technology
The first Chinese CPU instruction specification, Loongson launched the LoongArch infrastructure manual
Have you ever seen a 1-bit CPU?
Advanced FPGA design techniques! Multi-clock domain and asynchronous signal processing solutions
【Vivado those things】Netlist description of circuit structure in Vivado
What is the difference between bare-metal development and Linux development in ZYNQ?
The prototype of modern computers - the microcomputer MCS-4
Is the world's first microprocessor really the Intel 4004? In fact, this is a complex story...
【Weekly Question】How to control the output high and low level of FPGA IO pins when loading FPGA programs
【Vivado those things】Error when generating .bit file in vivado - ERROR: [Drc 23-20]
AD9361 and Zynq and their reference design instructions Have you been using a virtual machine for 1202 years? Detailed tutorial on installing Ubuntu subsystem and graphical interface on Win10
Talk about the implementation process of Xilinx FPGA design
Excellent VHDL/Verilog/FPGA projects on GitHub
Building a radio with AD936x+ZYNQ (1)
Building a radio with AD936x+ZYNQ (2) including video demonstration