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

相关推荐
kaizq2 小时前
在线MakerChip虚拟FPGA设计动态仿真实践
fpga开发·mulerun·makerchip·virtualfpgalab·在线动态仿真·imacopilot
FPGA小徐3 小时前
OV5640 摄像头 DDR3 缓存 HDMI/VGA 显示系统详解与
fpga开发
Monkey of Semi4 小时前
ARTIX-7 FPGA 核心板学习之FPGA Xilinx 7 series 命名规则
fpga开发
ALINX技术博客4 小时前
【黑金云课堂】FPGA技术教程Vitis开发:TCP以太网通信
网络协议·tcp/ip·fpga开发
FPGA小徐6 小时前
FPGA 电赛信号叠加与分离项目 完整工程包
fpga开发
FPGA小徐6 小时前
FPGA在做信号处理相比cpu的优势对比
fpga开发
Szime6 小时前
AD9218国产替代方向:双通道10位105MSPS ADC深智微科技选型经验
fpga开发
江鸟的坚持6 小时前
xilinx xadc 例化
fpga开发·xadc·xilinx xadc
明德扬7 小时前
AD采集卡适配方案交流:模块、板卡与FPGA示例工程支持
fpga开发
FPGA小徐8 小时前
FPGA 千兆以太网原理全解析(含题目)
fpga开发