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

相关推荐
LabVIEW开发3 小时前
LabVIEW 如何把地下震源定位误差做到5米内
fpga开发·labview·labview知识·labview功能·labview程序
Dr.kangder6 小时前
嵌入式处理器架构解析(十)——DSP+FPGA
fpga开发·架构·嵌入式
szxinmai主板定制专家12 小时前
Zynq MPSoC实现半导体真空腔体状态监测|FPGA多传感器时序同步采集方案
fpga开发·zynq·控制器·mpsoc·半导体设备·fpga同步
学习FPGA的电气小兴兴15 小时前
基于FPGA的DDS信号发生器设计,生成频率可调的正弦波、三角波、锯齿波和方波
fpga开发·数字信号处理·fpga·vivado·dsp·dds·diy
szxinmai主板定制专家1 天前
Zynq MPSoC半导体高精度运动控制方案|FPGA硬件插补实现亚微米级伺服实时控制
人工智能·嵌入式硬件·fpga开发·zynq·运动控制·ethercat
星夜离尘562 天前
ILA 在线调试:Vivado 抓取片内信号与定位下板问题(附完整实操)
fpga开发
jz_ddk2 天前
[学习] 深入理解 USB 通信与 FPGA 实现:从协议到逻辑设计
学习·fpga开发·xilinx·usb2.0
星夜离尘563 天前
PWM 信号生成与呼吸灯:占空比控制、按键调光与舵机扩展(附完整 Verilog 实操)
fpga开发
zlinear数据采集卡3 天前
ZLinear DABM-D223 通信协议与软件开发全解析:从 USB CDC 到 DDS 波形输出
arm开发·嵌入式硬件·fpga开发·开源