Sample rate 理解

时间:2022-01-26 19:45:29

在Gnuradio中,我们可以看到很多模块中都有Sample rate 这个概念

然后看到一个说明
Any processing block's 'Sample Rate' parameter is used for
DSP calculation, not for controlling the rate at which samples are
produced. This is distinct from a hardware
(or Throttle) block where it is  used to control sample flow.

任何处理模块的采样率参数只是用了为了DSP计算的,并不能控制样本的产生频率。 这与硬件或者阀门模块不同。

举个例子:

为了得到一个指定频率的正余弦信号,我们还要知道采样率。因为为了得到一个数学表达式,我们必须要计算每一个时间点的样本的幅度值。

而真实的样本频率值可以是任意的。很多时候你会再你接下来的流图中使用相同的数值,这样,所有的东西都可以保持一致。运行在相同的采样率之下。

除了在DSP的计算中,采样频率同样也指样本通过这个流图的速率。

如果没有速率控制(物理时钟或者阀门机制),样本将会尽快的通过这个流图。(速率由CPU能力决定)

如果你是想在存储数据上执行一些固定的DSP,这样做是很好的。(例如,读取一个文件,重新采样并回写) 。

只有一些代表着现实中物理硬件的模块(usrp,sound card)或者阀门模块(Throttle) 可以通过采样频率(sample rate)来设置物理时钟,因此可以用来控制流图中的样本频率。

1.Throttle

采用host-based timing 来控制产生的样本的频率。

2.hardware sink

以一个固定的频率接收样本

3.hardware source以一个固定的频率产生样本

根据节流作用  Throttle block 和 hardware sink block 将会对上游的模块产生反作用,将会限制起上游模块的频率。

一般来说,在一个流图中只需要有一个block 来控制样本流。

如果有多个、不同步的信号源时,你要特别小心,因为他们的产生和消耗频率不同,最终可能会失去同步并且造成溢出或欠载。

为了避免这种情况的产生,我们需要 改变重采样频率来调整时钟偏移。

allow non-blocking I/O, and/or tweak resampling rates to account for the clock offsets