01为什么我会接触到downsampling的概念?
最近不是一直在搞DF仿真么?DF呢,全称为dataflow,即数据流仿真。
因为仿真链路中有ADC,为了配合ADC的采样率,所以链路中需要加upsample,有时候还需要加downsample。
课程中的设计,正好是过采样,也就是说fs>2*fc,所以不用加downsample;但是虽说课程中用不着,但总是也要考虑一下欠采样该怎样设置。
SystemVue中的ADC的模型,考虑了SNR,SFDR等量化指标,但是自身仿真不出欠采样时的混叠特性,所以如果要仿真欠采样的话,需要在ADC后面,再加一个downsample模型。
这种设置,虽然没有在SystemVue的例子中见过(也有可能是我没有找到),但是在ADS的例子中有一点端倪,再加上号友的权威建议,以及实际的验证,应该是可行的。
02仿真软件中的对应模型是怎么样的?
在SystemVue仿真软件中,应用于抽取(downsample)的模型有三种,名称分别为DownSample,DownSampleEnv和DownSampleVarPhase,如下图所示。
SystemVue中模型的输入输出线的粗细,以及颜色都代表了不同的数据类型,如下图所示。
所以,上面的模型中,DownSampleEnv只可以处理Envelope Signal,而另外两种,则是所有的都能处理;也就是说,另外两种可以替代DownSampleEnv,但是可能需要外接抗混叠滤波器,因为DownSampleEnv里面集成了,不过设置为可选项。
在三个模型中,都有phase的选项,即选取哪个采样点,作为抽取的开始点。这也比较容易从时域上理解,假设抽取率为3,那原始信号有3个点可以选用,这个选项就是设置是选哪一个。
DownSampleVarPhase模型,还专门把phase项设置在外面,如下图所示,就像VGA一样,不知道使用场景是在哪里。
03DownSample都在干什么?
模型的help文件中,是这样说的。
大概的意思是,downsample是用来降低输入信号的采样率的,假设需要降N倍,那么输入端每输入N个样本,输出端输出一个样本,也就是N取1。
04DownSample以后,那携带的信息会有变化么?
先说一下答案,如果信号的频率限制在一定带宽里面的话,就能完全还原,也就是说,如果没有产生混叠的话,就能完全还原。
那为啥呢?如果光想想,就觉得这咋可能呢?
这个就如同用ADC把模拟信号采样成数字信号一样,它是把N个数字信号采样成1个数字信号。明明连续的,变成了断断续续的;或者有N个数字信号,变成了1个,然后告诉我说,别看数据少了,还是能还原出原来的信号, 总是有一点反直觉。
不过,这也确确实实是真的。
今天在写文章之前的这段时间,我最主要是在看文献[2]的4.6节中的4.6.1节 Sampling Rate Reduction by an Integer Factor。
说实话,看的是云里雾里,看不懂的时候,真的是心烦气躁。
老大闺女在我旁边,一会儿问我这个字怎么写,一会儿问我能不能尝尝咖啡,一会问我这个水能不能泡咖啡,一会问我800ml是多少,80ml又是多少。
本来已经看东西看的心烦气躁了,再加上耳朵边时不时传来问句,那感觉就像明明电脑的CPU已经100%运行了,但是还非得再运行点啥,特别想崩。
好在,当我开始写这篇文章的时候,心态慢慢地就变平和了。然后再想想刚才看到的那些内容,好像有那么一点点的理解了。
05先讲讲射频工程师们较为熟悉的采样定理。
射频工程师的工作在慢慢往后扩,开始需要了解ADC。
而ADC的工作原理,就是基于采样定理。
虽然实际采样的时候,可能用的是Sampling and Hold,如下图所示。
但是,把采样信号看成一系列冲激函数,则有助于理解概念。
整幅图一下子看起来,会让人很烦躁,不过试着按图中标注的顺序来看一下,就会好很多。
①是一个待采样的信号,变量是t,也就是连续时间函数;②是一个冲激序列的表达式;③则是待采样信号与冲激序列相乘,以及利用冲激函数的特性进行一系列的运算;④则是待采样的信号与采样后的信号的图形表示;⑤则是把④中的信号变成无时间概念的序列后的图形表示。
在④中,Xs(t)本质上还是一个连续时间函数,只不过在t=nT上有值,其他地方都为0,这是数学上的一种抽象;在⑤中,才是我们实际中使用的,是一个序列。
不过,今天的文章,就止步于④,主要原因是因为从④到⑤的分析,需要用到DTFT,而我对这个,已经忘了,或者说在学校就没学明白,这个我后面再补起来。
好在,止步于④,对于概念的理解,应该是够了。
下面从频域来理解一下采样的过程。
①是冲激序列的时域和频域表达;②是采样后信号的时域和频域表达;③是假设Xc(t)是带限信号时的频谱,(c)表示发生没有混叠,(d)表示发生混叠。
06再延伸一下,理解downsample
在文献[2]中,正式推导downsample的频谱,是基于DTFT来推导的,前面说过,我已经把DTFT给忘了,所以我换一种方式来理解。
就如文献[2]中所讲的,
虽然,这种方式,不是实际采用的实现方式,但是用来理解概念,个人觉得应该问题不大。也就是说,都从待采样信号Xc(t)出发,分别用Ωs和Ωs/N的采样率,对Xc(t)进行采样,来理解downsample的概念。
为了更具象一点,假设downsample的factor是N=4,也就是从N=4个样本里取出1个样本,即用Ωs/N的采样率来对Xc(t)进行采样;然后再用Ωs的采样率对Xc(t)进行采样,感受一下频谱的差别。
看了上面的图,应该就能回答为什么downsample后,还是能还原出原始的信号的问题了。
如果待采样信号Xc(t)满足2ΩN≤Ωs/N,那么在从图可以看出来,不管采样率Ωs还是Ωs/4(即downsample的因子是4),在[-ΩN,ΩN]之间的频谱并没有改变,所以在经过低通滤波以后,都仍然是原始的信号。
参考文献:
[1] SystemVue的help
[2] ALAN v. OPPENHEIM,RONALD w. SCHAFER,DISCRETE-TIME SIGNAL PROCESSING
[3] Qizheng Gu,RF SYSTEM DESIGN OF TRANSCEIVERS FOR WIRELESS COMMUNICATIONS