Sample rate 理解
在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