OFDM 802.11a的FPGA实现:发射部分的最终实现

目录

1.摘要

2.最终实现的ModelSim仿真

3.Matlab仿真和MoselSim仿真进行对比

4.完整工程


1.摘要

本系统在Xilinx的zynq 7000系列FPGA芯片上实现了一个基于IEEE 802.11a协议的OFDM基带处理发射机的功能。本系统包含了整个发射机的所有功能,包括序列训练符号、Siganl符号和Data符号等的实现过程。实现了data域的数据处理过程:由MAC层传来字节数据->并串转换->扰码->卷积编码->删余->一级交织->二级交织->调制映射->插入导频->IFFT->DAC。

发射机整体构架

发射机整体构架

系统采用125M时钟,DAC采用20M时钟,数据处理时使用AXI-Stream协议,让整个系统工作在流水线状态下,且最终保证了送往DAC的数据以20M的速率无间隙的连续输出,相比《基于Xilinx FPGA的OFDM通信系统基带设计》使用多重跨时钟域,本系统更稳定可靠。

系统硬件框图

系统硬件框图

系统实现了IEEE 802.11a协议里面的BPSK、QPSK、16-QAM、64-QAM调制。

调制方式

调制方式

实现了数据速率6、9、12、18、24、36、48、54Mb/s。

数据速率

数据速率

该设计完成了,Matlab和ModelSim仿真闭环测试对比。

Matlab和ModelSim仿真闭环测试对比

Matlab和ModelSim仿真闭环测试对比

2.最终实现的ModelSim仿真

测试时,数据速率设为36,即16-QAM调制,编码效率3/4。测试数据使用5个OFDM符号,720个bit,即90byte。

下图显现了顶层输入输出的仿真效果,addr=0-89对应测试数据的字节地址:

顶层仿真截图

下图显示了DAC时域组帧模块仿真效果:

DAC时域组帧模块仿真

DAC时域组帧模块仿真

3.Matlab仿真和MoselSim仿真进行对比

clc;
close all;
PATH = 'D:/FPGA/OFDM_802.11a_my/TX/matlab/OFDM_802_11a_TX/';

FPGA_dac_dout = readlines([PATH,'dac_data_out.txt'],'EmptyLineRule','skip')';
display(FPGA_dac_dout);
FPGA_Im_dac_dout = extractBefore(FPGA_dac_dout,9);
FPGA_Re_dac_dout = extractAfter(FPGA_dac_dout,8);
display(FPGA_Re_dac_dout);
display(FPGA_Im_dac_dout);
q = quantizer('fixed','round','saturate',[8,6]);
FPGA_Re_dac_dout = bin2num(q,FPGA_Re_dac_dout);
FPGA_Im_dac_dout = bin2num(q,FPGA_Im_dac_dout);
FPGA_Re_dac_dout = cell2mat(FPGA_Re_dac_dout);
FPGA_Im_dac_dout = cell2mat(FPGA_Im_dac_dout);
FPGA_dac_dout = FPGA_Re_dac_dout + 1j*FPGA_Im_dac_dout;

preamble_out  = preamble_out  / max(abs(preamble_out ));
FPGA_dac_dout = FPGA_dac_dout /max(abs(FPGA_dac_dout));%归一化
display(preamble_out );
display(FPGA_dac_dout);
figure;
subplot(2,1,1);
plot(real(preamble_out ));title('Matlab仿真输出实部');
subplot(2,1,2);
plot(real(FPGA_dac_dout));title('FPGA仿真输出后实部');
figure;
subplot(2,1,1);
plot(imag(preamble_out ));title('Matlab仿真输出后虚部');
subplot(2,1,2);
plot(imag(FPGA_dac_dout));title('FPGA仿真输出后虚部');

matlab对比结果:

实部

实部

虚部

虚部

图形走势是一致的,只是幅度不相等,可能是IFFT核计算时会进行缩放,与Matlab仿真设置的缩放不一样,不过不影响。

4.完整工程

获取完整工程链接:点此跳转,或者点击阅读原文跳转

完整工程包括,matlab仿真代码、matlab自动化对比代码、verilog HDL代码、仿真测试激励文件

完整工程

完整工程

src文件夹里面包含所有的verilog HDL代码:

image

关注微信公众号获取完整工程:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/654692.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【debug】windows11安装WSL+Docker+本地部署cvcat

windows系统安装wsl虚拟机 首先观察是否已启用虚拟化: 在windows应用商店下载wsl 下载好后打开,创建用户名和密码,即可使用: 换源:ubuntu | 镜像站使用帮助 | 清华大学开源软件镜像站 | Tsinghua Open Source Mirr…

ctfhub中的SSRF相关例题(中)

目录 上传文件 gopher协议的工作原理: gopher协议的使用方法: 相关例题: FastCGI协议 FastCGI协议知识点 相关例题: Redis协议 知识点: 相关例题 第一种方法 第二种方法 上传文件 gopher协议的工作原理: …

【分支控制】(switch) 详解

switch分支结构 基本语法 switch (表达式){case 常量1: //当...语句块1;break; //跳出switchcase 常量2:语句块2;break;...case 常量n;语句块n;break;default:default语句块;break;}switch 关键字, 表示switch分支表达式, 对应一个值case 常量1: 当表达式的值等于常量1, 就执行…

OrangePi AIpro初识及使用大模型GPT-Neo-1.3B测试

OrangePi AIpro介绍 1.1. 开发板简介 Orange Pi AI Pro 开发板是香橙派联合华为精心打造的高性能AI 开发板,其搭 载了昇腾AI 处理器,可提供8TOPS INT8 的计算能力,内存提供了8GB 和16GB 两种版本。可以实现图像、视频等多种数据分析与推理…

package.json中peerDependencies的使用场景

文章目录 peerDependencies 的使用场景peerDependencies 的使用案例为什么使用 peerDependencies需要注意的事项主要作用 ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入&#xf…

保护“第二生命线”,科技守护颈椎健康

脊柱支撑着人体重量,汇集着众多血管神经,素有“人体第二生命线”之称。在如今快节奏的时代,人们生活方式也在发生着变化,长期低头看手机、伏案久坐等不良生活习惯引发脊柱健康问题,且呈现年轻化趋势。目前,…

基于 Wireshark 分析 TCP 协议

一、TCP 协议 TCP(Transmission Control Protocol)是一种面向连接的、可靠的传输层协议。它在网络通信中扮演着重要的角色,用于保证数据的可靠传输。 TCP协议的特点如下: 1. 面向连接:在通信前需要先建立连接&#x…

阿赵UE引擎C++编程学习笔记——GameMode和生命周期

大家好,我是阿赵。   之前在介绍HelloWorld的时候,我们很创建了一个MyGameModeBase的c类,然后就可以在BeginPlay函数里面写打印的HelloWorld。这一篇主要是说一下,GameMode究竟是一个什么东西,然后UE里面的生命周期是…

瑞_Windows环境下使用bat重启jar包等服务

文章目录 命令示例重启ray-project.jar重启redis服务 🙊 前言:经验分享——Windows环境下使用.bat批处理文件重启 jar 包等服务。在学习或者工作日常中,有时候会需要在 Windows 系统环境下去启动 jar 包或其它服务,此时如果使用关…

RSC英国皇家化学学会文献查找下载

英国皇家化学学会(Royal Society of Chemistry,简称RSC)是以促进全球化学领域研究发展与传播为宗旨的国际权威学术机构,是化学信息的一个重要宣传机关和出版商。RSC出版的期刊是化学领域的核心期刊,大部分被SCI和MEDLINE收录,如An…

详解 Scala 的变量、标识符、数据类型

一、注释 Scala 注释与 Java 一致 // 单行注释/** 多行注释*//*** 文档注释*/二、变量与常量 1. 语法 // 变量,类型可以省略 var varName:varClass value // 常量,类型可以省略 val valName:valClass value2. 案例 // 使用 var/val 才会在类中声明属…

系统架构设计师【第1章】: 绪论 (核心总结)

文章目录 1.1 系统架构概述1.1.1 系统架构的定义及发展历程1.1.2 软件架构的常用分类及建模方法1.1.3 软件架构的应用场景1.1.4 软件架构的发展未来 1.2 系统架构设计师概述1.2.1 架构设计师的定义、职责和任务1.2.2 架构设计师应具备的专业素质1.2.3 架构设计师的知识…

自适应星空背景个人导航单页(附带源码)

自适应星空背景个人导航单页 效果图部分源码领取源码下期更新预报 效果图 部分源码 function Star(id, x, y) {this.id id;this.x x;this.y y;this.r Math.floor(Math.random() * 2) 1;var alpha (Math.floor(Math.random() * 10) 1) / 10 / 2;this.color "rgba(…

pip install pytorch-quantization error

一 报错信息 最近安装pytorch-quantization报错,安装失败报错信息如下: Looking in indexes: https://pypi.org/simple, https://pypi.ngc.nvidia.com Collecting pytorch-quantizationDownloading pytorch-quantization-2.2.1.tar.gz (6.8 kB)Prepari…

Kali : 安装Google Chrome 浏览器和ChromeDriver

一、安装Google Chrome 浏览器 1、下载Google Chrome 执行如下命令,下载最新版Chrome wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb 执行下载截图 2、安装Chrome 使用dpkg安装下载的deb包 sudo dpkg -i google-chrome-st…

美业系统SaaS收银系统源码-顾客在系统付款了但系统未显示怎么办?美业系统实测

美业SaaS系统 连锁多门店美业收银系统源码 多门店管理 / 会员管理 / 预约管理 / 排班管理 / 商品管理 / 活动促销 PC管理后台、手机APP、iPad APP、微信小程序 1. 提供门店名称、付款凭证和会员手机号 2. 到订单明细查询, 按门店名称和会员手机号查询看是否有相…

IDEA社区版创建并运行maven管理的web项目的基本流程

一、前言 注意,这是社区版,旗舰版可以绕路。 二、过程 1、下载安装社区版 2、安装jdk,tomcat,maven 3、创建并启动项目 注意选择的骨架是maven-archetype-webapp,然后next,设置项目名,存放…

家政预约小程序07服务分类展示

目录 1 创建服务分类页面2 侧边栏选项卡配置3 配置数据列表4 从首页跳转到分类页总结 上一篇我们开发了首页的服务展示功能,本篇我们讲解一下服务分类功能的开发。在小程序中通常在底部导航栏有一个菜单可以展示所有服务,侧边选项卡可以展示分类信息&…

Android 11 触摸小圆点显示流程

在开发者选项中,打开 “显示点按操作反馈” 开关,当我们在触摸屏幕时,会显示一个小圆点,来分析下小圆点的显示流程。 操作这个开关时,其实就是操作Settings数据库中的 SHOW_TOUCHES //packages\apps\Settings\src\com…

数据大屏vue3+ts+axios+MockJS+dataV+echarts

一、官网/文档 vue3:https://cn.vuejs.org/api/TypeScript:https://www.tslang.cn/docs/handbook/basic-types.htmlaxios:http://www.axios-js.com/zh-cn/docs/MockJS:http://mockjs.com/dataV:http://datav.jiamingh…