论坛风格切换切换到宽版
  • 6935阅读
  • 52回复

做了个MiniDDS,但是杂散大得吓死人了 [复制链接]

上一主题 下一主题
离线alchemier
发帖
69
只看该作者 40楼 发表于: 2008-07-22
'

设想如果在最高频率输出的时候也能保证每个周期有512个样点,而随着频率的降低,样点也逐步增加,也就是说每次送d/a输出的时间间隔是一样的,随着周期的变长,输出的样点也变多,那么就可以保证输出正弦波的台阶宽度是相等的,因此谐波分量的变化范围就很小,滤波平滑的效果就很好,这也是我前面说的采用16.8m个样点表的原因(样本幅度可以用16bit或者24bit表示)。
需要做一些实验。
'

我明白你说的意思了啊,请看我加粗的部分。
当用8bit也就是一个字节来编码的话,当然是没必要整那么多的样点,因为很多值量化后是一样的。所以我说要在样点个数和样点幅度的量化位数之间做个平衡,需要做一些实验嘛。
离线mainstreet
发帖
44
只看该作者 41楼 发表于: 2008-08-03
[quote=小比尔/5]你说的非常有道理,这就是为什么我要把表从256样点增加到512样点的原因。
这样做的目的其实只是工程上的一种近似方法,因为stc12c5410只有10k的内存,主程序就有500多字节,把整个表都放进去是不现实的,也是不可能的。目前的程序要占用约50个机器周期,表项太多,程序的复杂度会变高,stc里的直接寻址命令效率不高,担心会影响到采样频率的实现,而且对8位的d/a来说,改善也不大。
以你的数据做个假设吧。如果我要输出0.5hz,那么16.8m个样点是不是就不够了?
即便只存储1/4t的样点,采用一定的算法输出一个周期,那么,16.8m个样点最多也只能保证0.25hz频率的准确性。
因此,为了实现方便,就只能用表的截短形式。于是,截短的表就相当于对原来的正弦进行
了周期性的调相,所以就会出现谐波。
事实上,即便采用16.8m个样点,如果采样频率与输出频率不满足整数比,输出也会有谐波杂散。
另一方面,我的d/a的参考电压是无源器件得到的,输出也是无源的,所以在接测量声卡的时候,声卡的输入阻抗非常低,只有600欧,对d/a的整个线性度产生了非常不好的影响,因此这一部分非线性失真也产生了谐波。
昨天,我有一条汇编语言的位置写“错”了,这条语句的目的是向d/a送输出允许信号,在它之前有判断分支,两个分支的时序似不平衡。修改后,输出允许信号不抖动了,但是输出的杂散却变多了。由此可以看到,对输出的相位进行抖动,有助于减少谐波分量。在电脑上的仿真实验证明,不管用矩形、三角形,还是高斯抖动,都可以消除谐波分量。但是,输出的底噪变大。在锁相环应用中,运用抖动可以减少锁相环失锁、错锁在谐波上的概率,但作为信号源,c/(n+i)指标却下降了。如果能过采样,并通过抖动,把量化噪声集中到接近nyquist频率的位置,输出通过低通滤波器把这些噪声滤除,那么不管是对底噪还是谐波,都有很大改善,可惜,目前我的单片机的运算速度不够,加上理论功底的限制,还做不到这一点。[/quote]
原来你说的抖动是这个。这等效于在时钟上加抖动吧,不必在指令上下功夫了。它会把基波和谐波的能量都在频谱上分布开来。

过取样怎么实现?
离线mainstreet
发帖
44
只看该作者 42楼 发表于: 2008-08-03
[quote=一异]在dds中,数据的截断误差造成的噪声是和基频相关的,而不是白噪声,这也是dds输出的频谱不纯的重要原因。
这个问题可以通过将从存储器得到的数据加上一个1bit白噪声(比如伪随即序列的频谱接近白噪声)来改善。[/quote]

这个可能有问题。多位系统的量化噪声和输入信号相干很弱,基本可以认为是完全随机的白噪声。

linear tech的有些adc,为了避免输出数据引入固定模式的干扰,把数据用随机数异或以后输出。这个免费的随机数就是adc的最后一位。

比特数为一或者比较小的就不一样。西格吗-德尔塔的模拟里面一般也假设假设量化噪声随机,虽然大家都指导不怎么对,可是也没有更好的办法。低比特数的量化是非常非线性的系统,不好处理。
离线小比尔/5
发帖
2582
只看该作者 43楼 发表于: 2008-08-03
我这里所说的抖动是在音频应用里用的:

比如说24bit混音得到的音乐片断,为了播放和转换的方便,需要下转换到16bit,如果直接转换,就会有离散谱线的量化噪声出现,而通过抖动,就可以将离散谱转化为白噪声。
方法是在最后一位按照一定的概率分布(gaussan分布、三角分布等),叠加一位噪声。
离线mdj-fish
发帖
125
只看该作者 44楼 发表于: 2008-08-07
破0832去掉吧,请你们看看这个。。。。
http://www.myplace.nu/avr/minidds/index.htm
离线bd1es
发帖
2096
只看该作者 45楼 发表于: 2008-08-07
这里是源头吧,搬凳子坐着...
离线小比尔/5
发帖
2582
只看该作者 46楼 发表于: 2008-08-07
表打击我……我只是想做个低成本的。
现在我的ad7541还在我的元件盒里睡觉。
ad9832是专用芯片,这个东东看来不错啊。
离线bd1es
发帖
2096
只看该作者 47楼 发表于: 2008-08-07
怎么说曹操曹操到啊,那个avr minidds就是我以前做过的,效果不是太好,
离线elchb
发帖
21
只看该作者 48楼 发表于: 2008-08-08
我做的minidds,dac为0800,输出没有滤波,参照44楼
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线elchb
发帖
21
只看该作者 49楼 发表于: 2008-08-08
20khz,垂直刻度10db/div
本主题包含附件,请 登录 后查看, 或者 注册 成为会员
离线elchb
发帖
21
只看该作者 50楼 发表于: 2008-08-08
可见,采用minidds的谐波还是很小的。呵呵
离线小比尔/5
发帖
2582
只看该作者 51楼 发表于: 2008-08-08
指标差别不大(6db左右),只是刻度不同的关系。
离线一异
发帖
868
只看该作者 52楼 发表于: 2008-08-08
其实8bitpcm的理论信噪比也就是48db,已经不错了