zedboard + AD-FMCOMMS3-EBZ AD9361 (八) matlab BPSK 发送测试

 

BPSK 相移键控  代表  0 和 1 数据 ,是 相位不同 

 

(2 条消息) 从零开始搞信号处理——第三篇(软件无线电[2]BPSK调制流程与发射机基本结构) - 知乎  

 

上面 这位老师的 博客 讲述的 比较详细 , 下面是 网上 找的一个 BPSK  大致过程 的图 ,比较 形象:

 

image

 

matlab  + zedboard +  AD9361   发送 BPSK  信号 流程如下:

信号参数定义:

  1. 调制方式 : BPSK 
  2. 符号速率:1024 bps
  3. AD9361 采样率:1024*1024 Hz , AD9361 采样率设置范围 520.833 kHz ~ 61.44 MHz , 我的理解 为 AD9361的 DAC 输出速率 是  1024*1024 Hz ;

 

 第一步 :把 0x12345678 转换成 bit  , 用于 发送 的数据 matlab byte 转 bit 函数编写 - 所长 - 博客园

% 生成二进制数据(可根据需求调整长度)
% N_symbols = 32; % 符号数量
% bits = randi([0,1], 1, N_symbols); % 随机0/1序列
tx_data_byte = [ 0x12, 0x34, 0x56, 0x78 ];
bits = f_byte2bit( tx_data_byte );

 

第二步: 将随机的数据 映射位 BPSK 

% BPSK调制:0→1,1→-1(基带I路信号,Q路为0)
bpsk_symbols = 2*bits - 1;  % 映射后符号:1或-1

  

第三步:数据进行过采样 , AD9361 的 发送 采样率 设置为  1024*1024 hz,  符号速率是 1024, 因此过采样 倍数    = 1024;

% 过采样(每个符号扩展为N_os个采样点)
N_os = 1024;  % 过采样倍数
oversampled_symbols = upsample(bpsk_symbols, N_os);  % 插入零值实现过采样

 

  为什么 进行过采样 , 是为了 下一步 成形滤波 做准备 , 

 

第四步: 升余弦滤波参数生成  和 对上面的数据 进行滤波 生成  I路数据, Q 路数据全部为0 ,因为 BPSK 的调制 ,为什么 请看 :(2 条消息) 从零开始搞信号处理——第三篇(软件无线电[2]BPSK调制流程与发射机基本结构) - 知乎  

% 升余弦脉冲成形(减少频谱泄漏)
rolloff = 0.35;  % 滚降系数(0~1,越小带外辐射越小)
span = 8;  % 滤波器跨度(覆盖8个符号周期)
num_taps = span * N_os;  % 滤波器抽头数
rcos_filter = rcosdesign(rolloff, span, N_os, 'normal');  % 生成升余弦滤波器

% 滤波(得到最终基带I/Q信号,BPSK的Q路为0)
baseband_I = conv(oversampled_symbols, rcos_filter, 'same');  % I路信号
baseband_Q = zeros(size(baseband_I));  % Q路信号(BPSK中为0)

 

 第五步:  因为  AD936X 的 SDRTX 发送接口 , 数据格式为 复数, 数据范围 【-2047,2047】

baseband_I = baseband_I * 4096;
baseband_Q = baseband_Q * 4096;
tx_data = complex(baseband_I,baseband_Q);

  

此时, plot(real(tx_data))

 

image

 

 

  第六步:  设置 SDRTX 接口 参数

%% 创建发射 接口 tx  
% 接口名称 AD936x
% 如果连接的 是 pluto 则这里可以填写 'Pluto' 
tx = sdrtx('AD936x');

% 设置发射接口 IP 地址
tx.IPAddress = '169.254.0.2';

% 设置发射接口 中心频率 400Mhz
tx.CenterFrequency = 400e6;

% 设置发射接口 带宽采样速率 1024*1024
tx.BasebandSampleRate = 1024*1024;

% 设置发射接口 通道编号 1
tx.ChannelMapping = 1;

 

ping 测试  zedboard

image

 

 

第七步 发送数据 :

%%  重复发送 IQ 数据
    tx.transmitRepeat(tx_data);

 

 

 

 

 

  

posted on 2025-10-31 15:08  所长  阅读(5)  评论(0)    收藏  举报

导航