在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