我正在尝试在嵌入式设备上编写相关函数。因为它是嵌入式的,所以我需要确保内存/CPU 使用率最低。
这是交易: - 我有一个以 1 MHz 采样的已保存波形 - 我有波形的时序信息 - 我将采用新的时序信息以 200 kHz 拍摄一个新波形 - 两种波形的时序信息都是可比的其中从零开始 - 我想确定一个波形与下一个波形之间的延迟,精确到 1 us。
我打算使用的方法是: - 找到每个波形的最大值(每个波形中应该只有 1 个峰值,并且它们应该匹配) - 设置每个数组的索引,以便波形的最大值匹配向上。为了做到这一点,我将节省我正在移动的时钟周期数量。- 然后我将关联这个并在每个方向移动几个样本并关联。最高的相关值对应于正确的延迟量,我会保留这个值。
问题是我的阵列操作技能有限。我在尝试实现这个算法时很挣扎,特别是因为其中一个波形的采样率是另一个波形的 5 倍。有没有人对此有任何参考或知道我如何轻松实现这一目标?
我遇到的具体问题是: - 如何以不同方式设置索引以使最大值匹配?我不想写一个新的寄存器,因为这会占用内存并且在读/写周期方面需要很长时间。- 如何补偿不同的采样频率?我可以用零填充 200 kHz 波形(这不会影响相关性),但这会占用更多内存而没有实际用途。- 时间信息不准确,因为它们不一定完全对齐。例如,1MHz 信号的时序编号“10000、10020、10040、10060、10080 和 10100”不一定与 200 kHz 信号的“10000、10100”匹配。所以我不能很容易地依赖使用计时数字作为索引。
如果我的要求不是很清楚,我可以尝试对请求进行一些修饰,但我不希望这太长。