论坛风格切换切换到宽版
  • 18217阅读
  • 212回复

方波的采样定理和DDS的问题 [复制链接]

上一主题 下一主题
离线bd1es
发帖
2096
只看该作者 120楼 发表于: 2008-08-06
图片在这里:
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线bd1es
发帖
2096
只看该作者 121楼 发表于: 2008-08-06
这两张拿16位dds玩玩。分别是16333、32111两个相位增量,可以看到输出质量相同。

唯一的问题是第二个频率怎么滤波呢?恐怕造不出好的滤波器去得到它, :( ,这是前面说的采样定理问题。
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线bd1es
发帖
2096
只看该作者 122楼 发表于: 2008-08-06
再补一张波形图,这是上面16位dds置入16333时的时域图形。

我们看到即使输出频率不到奈奎斯特频率的一半,它的波形也已经严重变形了,这是基频与带外影频相互叠加的结果。

可是我们知道通过使用良好的滤波器,我们一定能得到纯净的基频。这样的滤波器我们做得出来。我们的套件中已经有很多了,
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线小比尔/5
发帖
2582
只看该作者 123楼 发表于: 2008-08-06
关于滤波器,确实是这样的,我上示波器观察过。
我的外接声卡可以在48k采样频率出19k正弦信号(用rmaa做环路测试可以看到类似切比雪夫的低通特性),但板载声卡就乱得一团糟,都是毛刺。
量化噪声在通带内是均匀分布的,所以过采样的好处就是可以想办法把这些噪声分配到更宽的带宽上,甚至“赶”到频率高段,然后用滤波器抑制掉,而且滤波器也好做些。
离线bd1es
发帖
2096
只看该作者 124楼 发表于: 2008-08-06
没错。有人建议dds的最高输出频率只取时钟频率的1/3甚至1/4,这与过取样是一个道理,这样才有可能作出合格的滤波器,
离线alchemier
发帖
69
只看该作者 125楼 发表于: 2008-08-06
'
不同意没关系,大家一起仿真呗,反正图贴在这里了。:)
关于第二点,大多数人都是觉得点数多代表质量高。然而真的恕我直言,这观点不对。暂时忘掉dds,说说录音机。同样是44.1khz的采样频率,难道我们录得150 hz和15 khz在质量上有什么差异吗?奈奎斯特早就说了,它们质量相同。
再强调,输出滤波器至关重要,那是数字世界通向模拟世界的一扇大门。以15 khz来说,在数字域里看到的波形都不成样子了,简直一塌糊涂,是严重经调制的波形。而经正规手段还原后却与原来一模一样。因为经滤波后那些“边带”被滤出了。
这是采样定理,跟dds无关的。
'

是否可以理解为,因为是做的同步dft,所以不管采多少个点,它们都落在应该呆的正弦曲线上的位置,所以做出的频谱才那么干净?
如果不滤波直接da输出接频谱仪看的话,应该不会有那么纯的频谱。因为频谱仪的采样点和dds是不同步的,这样阶梯波的频谱就全出来了。
离线bd1es
发帖
2096
只看该作者 126楼 发表于: 2008-08-06
不是的。这里的分析方法是在奈奎斯特带宽内,就是说输出已经经过了理想滤波器了。

应该说实际电路的输出质量不会比这个好,但也不会出现本不存在的边带,那是dds的原理决定的,该有就有,该没有就没有。

除非dds的输出没经滤波器,那是另一回事,实际的电路是不允许这么玩的。

几经试验,程序有小的完善,再次贴出供朋友们参考,:)。
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线alchemier
发帖
69
只看该作者 127楼 发表于: 2008-08-06
没明白,难道对方波的采样也是经过滤波器了吗?
离线bd1es
发帖
2096
只看该作者 128楼 发表于: 2008-08-06
对呀,见二楼.
离线小比尔/5
发帖
2582
只看该作者 129楼 发表于: 2008-08-06
'
没明白,难道对方波的采样也是经过滤波器了吗?
'

经过滤波器以后,不可能有方波,会出现振铃现象
但是在这里画图的时候,采用的是线性内插,而不是sinc(x)函数
用sinc(x)函数内插,得到的才是滤波后的输出波形
这里的fft分析是带限的,如果不限制带宽,就会看到一系列与基带相同的边带
离线bd1es
发帖
2096
只看该作者 130楼 发表于: 2008-08-06
耶丝!高人!

就是这样的。如果方波的频率低于采样频率的1/10,那我们能采到看上去有点儿像方波的波,并伴有耸肩、振荡或溜肩膀的形态,取决于滤波器的形式和方波的陡度。随着方波的频率升高,就越来越不像了。

而如果不接输入滤波器,恐怕采完了是什么就谁也不知道了。方波的频带太宽了。
离线alchemier
发帖
69
只看该作者 131楼 发表于: 2008-08-06
请看小比尔/5在28楼的fft和波形(未经滤波),这与理论分析为什么差这么多?是不是可以验证我上面的观点?
离线bd1es
发帖
2096
只看该作者 132楼 发表于: 2008-08-06
没明白,没差什么呀。-40db的谐波失真不大容易从时域波形看出来。

而且计算机声卡的输入端本身就可能有不小的谐波失真,还随输入的强度变,这样的声卡我也有过。所以从声卡的信号看dds输出就最好人为加高些。

实际dds并没有谐波输出,产生谐波多是半导体器件惹的祸,这不说明什么。用dds芯片产生的信号经mmic放大后也有不小的谐波,这不必惊讶,够使就得。:)
离线小比尔/5
发帖
2582
只看该作者 133楼 发表于: 2008-08-06
'
请看小比尔/5在28楼的fft和波形(未经滤波),这与理论分析为什么差这么多?是不是可以验证我上面的观点?
'
其实滤波是有的,声卡输入的时候有防混叠滤波器(有在20khz左右,有频谱折叠的问题,以前遇到过),如果在示波器上看,就是一个个台阶,采样点会爬。
和理论分析的差别,我觉得是dac的线性差,还有就是中断的时间会抖动导致采样周期不准,其它的不太清楚。

至于方波的问题……以前想用声卡出方波,结果出的方波是带振铃的。

事实上,两天没来,我现在已经晕了,不知道到底在讨论什么了…… -_-|||
离线一异
发帖
868
只看该作者 134楼 发表于: 2008-08-06
'
我还是坚持认为已经说明问题了。fft长度从1k增加到256k,变了256倍,而那边带的宽度和高度都没有变化,难道这会是谱泄漏吗?这泄漏也太顽固了,不可能的, [表情] 。
'

很遗憾没看到16bit dds用32k点fft的分析结果,可能使我太固执……

至于说泄漏太顽固,我不这么认为。因为这儿的泄漏实际上已经小于100db,也就是说即使这是频谱泄漏所导致的误差,这种误差已经到了0.001%的数量级,应该说已经够小了。而泄漏频谱不变,应当是窗函数本身的性能决定的吧?

今天所做的频谱图我还没怎么看明白,主要是没搞明白这些图和前面的图之间的差异究竟是怎样的。
离线alchemier
发帖
69
只看该作者 135楼 发表于: 2008-08-06
'
没明白,没差什么呀。-40db的谐波失真不大容易从时域波形看出来。
而且计算机声卡的输入端本身就可能有不小的谐波失真,还随输入的强度变,这样的声卡我也有过。所以从声卡的信号看dds输出就最好人为加高些。
实际dds并没有谐波输出,产生谐波多是半导体器件惹的祸,这不说明什么。用dds芯片产生的信号经mmic放大后也有不小的谐波,这不必惊讶,够使就得。:)
'

这个解释恐怕不能让人信服,-60和-100db真的没什么区别吗,况且输出的是1khz,应该是声卡的最佳响应频率,也是dds的最佳输出。没有滤波的那些台阶不产生谐波吗
离线小比尔/5
发帖
2582
只看该作者 136楼 发表于: 2008-08-06
8192点加“blackmann-harris”的主瓣宽度大概是<0.16% fs@-120dbc
32768点大概是<0.08% fs@-120dbc

8192点加“hanning”窗的主瓣宽度大概是<1.1% fs@-120dbc
32768点大概是<0.23% fs@-120dbc
离线bd1es
发帖
2096
只看该作者 137楼 发表于: 2008-08-07
'
这个解释恐怕不能让人信服,-60和-100db真的没什么区别吗,况且输出的是1khz,应该是声卡的最佳响应频率,也是dds的最佳输出。没有滤波的那些台阶不产生谐波吗
'

我还是不大明白。其实小比尔/5已经说了,滤波是有的。这个滤波器就是声卡输入端的防混叠滤波器,任何声卡都有,在这里被等效用作dds的输出滤波器。所以实际再采样的是已经模拟化后的信号。尽管这种做法不够严谨,但如果dds的时钟频率比声卡采样频率高得多的话,这样做也无可厚非。

-60db和-100db当然有区别,它们与-40db又有区别。可是仅凭波形能看出这些失真吗?还是那句话,-40db以下的失真是很难用肉眼从波形上看出的,人眼对1%以下的形变已经不大敏感了。真想看出失真只有两个方法,一、愣练眼力,像王逸夫那样;二、启用谱分析。

我对您这句话的另一个理解是对失真的一种担忧。如果经由ic放大后dds的谐波失真很大,比如是-30dbc,那会不会有问题。我的回答是没问题,至少是对我们来说。试想dds通常做本振用的,后接混频器,再好的无失真信号送入混频器后也都会被失真掉。有一点儿谐波失真对混频器通常是无害的。别忘了优质信号源的谐波水平也不过-30dbc。

最后,台阶与谐波无关。即使不滤波,台阶也不产生谐波,那只是数字值的复现。但它产生奈奎斯特带宽外的干扰,这些干扰需要用还原滤波器滤掉,就像我们前面强调的那样。一个dac系统包括数模转换ic和它后面的防混叠滤波器,二者缺一不可,否则您就没有完成信号的还原,把不该带的带到模拟世界来了。

dds的输出发生谐波失真通常由两种可能:(不经放大就有失真)
1、波表做得有问题
2、dac芯片的线性差

在这里还有一个附加因素,声卡的质量可能有问题。去中关村抓一个几十元的声卡很可能就是这样,我们在淘保上买的usb声卡也可能这样。这是质量问题。毕竟廉价声卡较重视还原的质量,不大重视采样的质量。听mp3是一回事,录音就是另一回事了。
离线bd1es
发帖
2096
只看该作者 138楼 发表于: 2008-08-07
[quote=一异]很遗憾没看到16bit dds用32k点fft的分析结果,可能使我太固执……

至于说泄漏太顽固,我不这么认为。因为这儿的泄漏实际上已经小于100db,也就是说即使这是频谱泄漏所导致的误差,这种误差已经到了0.001%的数量级,应该说已经够小了。而泄漏频谱不变,应当是窗函数本身的性能决定的吧?

今天所做的频谱图我还没怎么看明白,主要是没搞明白这些图和前面的图之间的差异究竟是怎样的。[/quote]

不管怎样,泄漏都是有特征的,见我前面的帖子。不符合这些特征的就一定不是泄漏,而是信号自身的能量。

何谓泄漏?信号被某个函数调制了。哪来的调制?加窗。所谓不加窗就是被方波调制(也叫加矩形窗),所谓加窗就是被某个特定窗函数调制。因为我们所分析的序列都是有限长的,它不可能不被调制(调幅)。

但是调制与否,泄漏都会随序列的增加而减小,它是变的,那等效于调制信号的频率降低。如果不变,就绝对不是泄漏。

满足您的要求,32k的。其实我昨天作了45678的,比32768的更说明问题。

下面是32768 fft,不加窗和加汉宁窗。注意不加窗的那个无分析意义,因为存在谱泄漏。
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线bd1es
发帖
2096
只看该作者 139楼 发表于: 2008-08-07
这是32位的那个,同样的加窗和不加窗的
本主题包含附件,请 登录 后查看, 或者 注册 成为会员