• 正文
  • 相关推荐
申请入驻 产业图谱

基于FPGA定点实现双路信号的互相关计算和延迟对齐

04/28 15:23
363
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

一、整体架构

工程代码实现互相关计算,用于计算两个信号(参考信号和单通道信号)的互相关函数,并支持数据延迟调整功能。

S_IDLE        → 空闲,等待启动信号
    ↓ i_corr_start
S_STORE       → 存储阶段:将输入数据写入 RAM1/RAM2(2048点)
    ↓ 存满2048点
S_ACC_PRE     → 累加预处理:准备计算能量
    ↓
S_CALC_ENERGY → 计算能量:分别计算 ref 和 single 的信号能量(∑x²)
    ↘ 等待12拍(流水线延迟)
S_CALC_SQRT   → 开方计算:√(energy_a × energy_b),用于归一化分母
    ↓
S_LAG_CYCLE   → 滞后循环初始化:设置读写地址
    ↓
S_LAG_PRE     → 滞后预处理:判断地址是否越界
    ↓
S_LAG_ACC     → 滞后累加:计算当前 lag 的互相关值(∑x[n]·y[n+lag])
    ↘ 等待12拍(乘法器+累加流水线)
S_LAG_NEXT    → 下一个滞后量:lag = lag + 1
    ↘ 如果 lag ≤ max_lag,回到 S_LAG_CYCLE
S_CALC_FINISH → 计算完成:置位 o_done
    ↓
S_DELAY_PRE   → 延迟模式预处理(i_delay_start触发)
    ↓
S_DELAY_CTRL  → 延迟输出模式:直接从RAM读取延迟后的数据输出
    ↓ 读完2048点
S_FINISH      → 结束

通过独立控制两个RAM的读取地址,实现了灵活的延迟调整功能,满足您一组0延迟、另一组36个数据延迟的需求。

工作原理

通过独立控制两个RAM的读取起始地址,可以实现不同的延迟量

如果i_ref_delay=0,则参考数据0延迟输出

如果i_single_delay=36,则信号数据36个数据延迟后

输出两路数据按各自的延迟参数从RAM中读取,实现对齐

三、FPGA与Matlab仿真

Matlab仿真

生成用于FPGA仿真的定点数据,同时计算互相关延迟量,并通过移动延迟量保证信号同步。

FPGA仿真

互相关峰值

仿真验证结果为-34,与Matlab仿真结果一致。

移相前的信号,相位不一致

移相后的信号,相位一致

四、源码

1、百度网盘链接

请前往购买:https://mp.weixin.qq.com/s/938eIcm9ecmt7icqnfpWZA

相关推荐