【仿真测试】基于FPGA的8ASK扩频通信链路实现,包含帧同步,定时点,扩频伪码同步,信道,误码统计

目录

✅1.引言

👉2.算法测试效果

💡3.算法涉及理论知识概要

[1️⃣3.1 扩频](#1️⃣3.1 扩频)

[2️⃣3.2 8ASK映射/逆映射](#2️⃣3.2 8ASK映射/逆映射)

[3️⃣3.3 帧同步](#3️⃣3.3 帧同步)

[4️⃣3.4 基于相关峰的定时点提取](#4️⃣3.4 基于相关峰的定时点提取)

[5️⃣3.5 解扩](#5️⃣3.5 解扩)

❤️4.Verilog核心接口

✨5.参考文献

🔍6.完整算法代码文件获得


本文介绍了一种基于FPGA实现的8ASK扩频通信系统设计方案。系统采用伪随机码扩频和8ASK调制技术,通过AWGN信道传输数据,接收端包含帧同步、定时点提取和解扩等模块。关键技术包括8ASK映射(3比特映射为8个幅度电平)、相关峰检测实现帧同步和定时提取、伪码峰值判决实现解扩同步。测试结果表明系统在9dB和16dB信噪比下均能稳定工作,并给出了RTL结构图和核心Verilog接口设计。参考文献涉及扩频通信和调制技术相关研究。完整算法代码可通过指定方式获取。

✅1.引言

基于FPGA的8ASK通信链路实现,系统包括8ASK调制模块,8ASK解调模块,AWGN信道模块,误码统计模块,数据源模块,相关峰提取帧同步和定时点提取模块,扩频解扩等。

👉2.算法测试效果

vivado2022.2测试

设置SNR=9db

设置SNR=16db

系统RTL结构图如下:

💡3.算法涉及理论知识概要

整体系统结构如下所示:

`timescale 1ns / 1ps

module test_QPSK;

reg i_clk;

reg i_rst;

reg signed7:0i_SNR;

//时钟生成模块

wire sample_clk;

wire dsss_clk;

wire dat_clk;

wire dat_2clk;

clk_div clk_div_u(

.i_clk (i_clk),

.i_rst (i_rst),

.sample_clk(sample_clk),

.dsss_clk (dsss_clk),

.dat_clk (dat_clk),

.dat_2clk (dat_2clk)

);

wire o_msg;

wire1:0o_msgen;

signal signal_u(

.i_clk (dat_clk),

.i_rst (i_rst),

.o_en (o_msgen),

.o_bits(o_msg)

);

wire signed1:0o_endsss;

wire o_msgdsss;

wire signed15:0o_qpsk;

wire signed15:0o_qpsk_Rn;

wire signed31:0o_Ifir;

wire signed31:0o_Qfir;

wire 31:0o_all_peak;

wire o_frame_start;

wire 1:0o_bits;

wire o_en_data;

wire o_en_jdsss;

wire o_msg_jdsss;

wire signed31:0o_error_num;

wire signed31:0o_total_num;

//QPSK调制解调系统

QPSK4 uut(

.sample_clk (sample_clk),

.dsss_clk (dsss_clk),

.dat_clk (dat_clk),

.dat_2clk (dat_2clk),

.i_en (o_msgen),

.i_bits (o_msg),

.i_rst (i_rst),

//扩频输出

.i_SNR (i_SNR),//设置SNR

.o_endsss (o_endsss),

.o_msgdsss (o_msgdsss),

.o_qpsk (o_qpsk),

.o_qpsk_Rn (o_qpsk_Rn),

.o_de_qpsk (),

.o_Ifir (o_Ifir),

.o_Qfir (o_Qfir),

.o_all_peak (o_all_peak),

.o_frame_start (o_frame_start),

.o_bits (o_bits),

.o_en_data (o_en_data),

.o_en_jdsss (o_en_jdsss),

.o_msg_jdsss (o_msg_jdsss),

.o_error_num (o_error_num),

.o_total_num (o_total_num)

);

initial

begin

i_clk = 1'b1;

i_rst = 1'b1;

i_SNR = 15;//-4~30

#1000

i_rst = 1'b0;

end

always #1 i_clk=~i_clk;

endmodule

1️⃣3.1 扩频

用伪随机码(伪码)c(k)(周期为N,c(k)∈{+1,−1} )扩展信号带宽,实现抗干扰。扩频后信号

2️⃣3.28ASK映射/逆映射

8ASK(8进制振幅键控)是一种高效数字调制技术,每个符号携带3比特信息,通过8个不同幅度电平传输数据,实现更高频谱效率。8ASK将3比特二进制码组(000~111)映射为8个离散幅度电平,再与载波相乘生成已调信号。

3️⃣3.3 帧同步

在数字通信 中,信息通常是以帧为单位进行组织和传输的。帧同步的目的是确定每一帧的起始位置,以便接收端能够正确地解调出每帧中的数据。设发送的帧结构为:帧同步码+信息码元序列。帧同步码是具有特定规律的码序列,用于接收端识别帧的起始。帧同步的过程就是在接收序列中寻找与帧同步码匹配的位置,一旦找到匹配位置,就确定了帧的起始位置,后续的码元就可以按照帧结构进行正确的划分和处理。

4️⃣3.4 基于相关峰的定时点提取

在接收信号中,通过寻找与本地已知序列(如训练序列或导频序列)的相关峰来确定定时点。具体来说,将接收信号与本地序列进行相关运算,当两者的相位 和时间对齐时,相关值会出现峰值,这个峰值点对应的位置就是最佳的定时点,用于确定信号的采样时刻,以保证后续信号处理的准确性。在确定了定时点后,对接收信号进行采样,将采样值与预设的判决门限进行比较,根据比较结果确定接收信号的电平值,从而恢复出原始的二进制比特流。

5️⃣3.5 解扩

用与发射端同步的伪码压缩带宽,恢复原始数据。伪码同步后,解扩输出:

在本课题中,伪码同步采用的是伪码峰值判决的方法,当出现峰值时,说明此时伪码同步。

❤️4.Verilog核心接口

程序构架如下:

✨5.参考文献

1程晓畅,苏绍景,王跃科,等.伪随机码超声扩频测距系统设计 与算法J.测试技术学报, 2007, 21(1):5.DOI:10.3969/j.issn.1671-7449.2007.01.016.

2张歆,彭纪肖,李国梁.采用FSK调制的直接序列扩频水声通信技术J.西北工业大学学报, 2007, 25(2):4.DOI:10.3969/j.issn.1000-2758.2007.02.005.0sj5_007m

🔍6.完整算法代码文件获得

完整程序见博客首页左侧或者打开本文底部GZH名片

(V关注后回复码:X139)

V

相关推荐
FPGA小迷弟1 小时前
FPGA 与卫星:从星载硬件到在轨智能的完整技术解析
fpga开发·架构·fpga·1024程序员节·无线电
NamoAmitabha1281 小时前
CPU 内部结构是什么?---deepseek
fpga开发
abc light2 小时前
ARM 裸机开发(6)——时钟树与定时器
arm开发·单片机·fpga开发
1560820721917 小时前
JFMZQ28DR、JFMZQ68DR、RFsoc XCZU47DR、XCZU48DR 信号处理板
fpga开发·信号处理
XMAIPC_Robot19 小时前
-40~85℃宽温实测:RK3588 机器人控制器硬件底座,长时间 SLAM 定位稳定性验证
人工智能·fpga开发·机器人·边缘计算·arm+fpga·rk3588+fpga
樱木花道長20 小时前
AMD Ross 深度系列 8:FAQ 七问七答(文末附网盘链接)
人工智能·fpga开发
FPGA小迷弟20 小时前
FPGA 与无人机:从飞控实时性到智能载荷的硬件加速实践
人工智能·ai·fpga开发·架构·无人机·ai编程
低慢小uav21 小时前
(已解决)Zynq芯片lwip协议栈,使用tcp作为服务器Service,接收大量数据时,长度接收正常,接收对数据校验,校验和异常分析
网络协议·tcp/ip·fpga开发
szxinmai主板定制专家1 天前
ARM+FPGA 数控机床控制器:选 CODESYS SoftMotion CNC,还是基于 LinuxCNC 自研搭建?架构、授权、实时性、量产风险深度对比
arm开发·fpga开发·codesys·数据采集卡·linuxcnc·rk3576
女神下凡1 天前
芯参谋(79):嵌入式学习进阶_(硬件与软件)深入实践指南
arm开发·单片机·嵌入式硬件·学习·fpga开发·设计规范