【仿真测试】基于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

相关推荐
仲南音15 小时前
Xilinx FPGA——时钟IP核MMCM、PLL
fpga开发
I'm a winner1 天前
基于Xilinx FPGA的LVDS高速串行通信系统(三)--数据训练及握手机制【文末源码】
fpga开发
upper20201 天前
coremark移植坑之-nostartfiles -nostdlib参数
学习·fpga开发·coremark移植·riscv设计
Eloudy2 天前
Vivado 纯命令行构建 FPGA 项目教程
fpga开发
Rambo.xia2 天前
AXI跨时钟域与数据一致性——CDC FIFO深度不够、写后读冒险、多Master仲裁、乱序返回,出了Bug根本查不出来
fpga开发·bug
upper20202 天前
FPGA部署卷积神经网络识别MINST图片
fpga开发·卷积神经网络·minst·minst识别·部署神经网络·神经网络识别图片
你是我的解忧王子2 天前
嵌入式 ADC采样 原始数据分析上层(平均值 波动率 正态分布 线性补偿 系统误差)
fpga开发·数据挖掘·数据分析
9527华安3 天前
FPGA纯verilog代码ISP图像处理培训教程,基于IMX214,提供工程源码+视频教程+FPGA开发板
图像处理·fpga开发·isp·imx214·mipi
千寻xun3 天前
二、实战篇-NVME SSD控制之ZYNQ实现(六)-读写NVME SSD硬盘数据
fpga开发·nvme·nvme ssd
千寻xun3 天前
二、实战篇-NVME SSD控制之ZYNQ实现(三)
fpga开发·nvme ssd·nvme协议