5

主题

0

好友

5672

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
26078
帖子
5585
精华
2
经验
5672 点
金钱
5633 ¥
注册时间
2007-8-18
发表于 2010-6-19 13:33 | 显示全部楼层
这个傅立叶分析的确在1.5K处出现波峰!在1KHz~3KHz出现9个峰。而且在低于1kHz的地方也出现波峰!LT Spice的FFT算法与Multisim可能有点差别的。真的包含了互调失真?

When a PreAmp circuit was simulated I found 1.5Khz appeared in FFT figure ,iuput were 1KHz.
That would be IM distortion frequency ?
But FFT should be just harmonics ,it isn't right?
It's puzzles me.
white PreAmp.jpg

5

主题

0

好友

5672

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
26078
帖子
5585
精华
2
经验
5672 点
金钱
5633 ¥
注册时间
2007-8-18
发表于 2010-6-19 14:01 | 显示全部楼层
转帖
快速傅立叶变换原理 收藏
  要计算一个N点的离散傅立叶变换需要同一个N*N点的W矩阵(关于W矩阵请参阅信号与系统方面的书籍)相运算,随着N值的增大,运算次数显著上升,当点数达到1024时,需要进行复数乘法运算1,048,576次,显然这种算法在实际运用中无法保证当点数较大时的运算速度,无法满足对信号的实时处理。

  根据W矩阵中W元素的周期性和对称性我们可以将一个N点的DFT运算分解为两组N/2点的DFT运算,然后取和即可,为进一步提高效率,将上述两个矩阵按奇偶顺序逐级分解下去。当采样点数为2的指数次方M时,可分解为M级子矩阵运算,全部工作量仅为:

  复数乘法:M*N/2次

  复数加法:N*M次

  而直接DFT需要的运算量为:

  复数乘法:N*N次

  复数加法:N*(N-1)次

  当点数N为几十个点时FFT的优势还不明显,而一旦达到几千、几百个点时优势是十分明显的:

  N=1024时:DFT需1048576次运算,FFT仅需5120次运算,改善比204.8。

  N=2048时:DFT需4194304次运算,FFT仅需11264次运算,改善比达到372.4。

  "时间抽选奇偶分解快速离散傅立叶变换"的程序实现

  当采样点数较多时,如变换前和变换后的序列都按自然顺序排列,则中间运算过程会占用大量的中间存储单元,造成效率的低下和存储单元的浪费。根据FFT的实现原理我们可以对采样序列进行逐次奇偶抽选,打乱以前的次序重新排序,然后按此顺序参加运算,可以实现"即位运算"提高存储单元的利用率。

  (一) 复数的描述方法

  进行傅立叶变换时不可避免的要用到复数,而在VC中并没有现成的可用于表示复数的数据类型,可以自己定义一个含有两个成员变量的数据结构来表示复数,这两个成员变量可分别用于表示复数的实部与虚部:

typedef struct tagComplex...{
 float Re; //复数的实部
 float Im; //复数的虚部
}Complex;

  (二) 倒序的实现

  在进行快速傅立叶变换时,可以将输入的时域序列和输出的频域序列都按照自然顺序排列;也可以按照"蝴蝶图"所描述的计算方法对输入的时域序列按奇偶分解后的序列排序而输出的频域序列仍是按自然顺序排列的;还有一中方式是输入的时域序列是不进行抽选的自然序列,而输出的频域序列则是按奇偶分解后的顺序排列的。这三种方式各有优点,第一种对输入、输出不需要进一步排序,但由于自然排序不符合"蝴蝶图"运算规律,会占用大量中间存储单元。而后两种则无须中间存储单元,但需要倒一次序。权衡利弊,当采样点较多时还是采用后两种方式好,多一次倒序运算对现在的高性能计算机而言并不是什么负担。下面代码用于对原始采样序列的时间抽选奇偶分解工作,其中A、N分别表示指向采样序列复数数组的指针和序列的长度。

int NV2=N/2;
int NM1=N-1;
int I,J,K=0;
Complex T;//用于中介的复数变量T
I=J=1;
while(I<=NM1)
...{
 if(I<J)
 ...{
  T=A[J-1];//将A[J-1]的内容和A[I-1]的内容互换,借助于中间变量T
  A[J-1]=A[I-1];
  A[I-1]=T;
 }
 K=NV2;
 while(K<J)
 ...{
  J-=K;
  K/=2;
 }
 J+=K;
 I++;
}

  (三) 时域信号的频谱分析

  首先要将从外设输入或采集的时域波形数据经抽样量化后,通过CFile类的Open(……)、Read(……)等成员函数将其读取到缓存中,并将其转化为复变量存放于复变量数组A中,同时需要验证以下数据量的长度是否为2的整数次幂,如若不是则必须用0来补齐,否则无法用"蝴蝶图"进行分解运算。下面代码用于完成对原始采样时域序列的快速傅立叶变换,A、M分别表示指向原始采样数据数组的指针和序列长度的2的整数次幂:

……
Complex U,W,T;
int LE,LE1,I,J,IP;
int N=(int)pow(2,M);
//在此采用的是时间抽选奇偶分解方式,所以在参加运算前首先要对时间序列进行倒序
ReverseOrder(A,N);
int L=1;
while(L<=M)
...{
 LE=(int)pow(2,L);
 LE1=LE/2;
 U.Re=1.0f;
 U.Im=0.0f;
 W.Re=(float)cos(PI/(1.0*LE1));//计算W算子的值
 W.Im=(float)-1.0*sin(PI/(1.0*LE1));
 if(abs(W.Re)<1.0e-12)
  W.Re=0.0f;
 if(abs(W.Im)<1.0e-12)
  W.Im=0.0f;
  J=1;
  while(J<=LE1)
  ...{
   I=J;
   while(I<=N)
   ...{
    IP=I+LE1;
    T.Re=(float)A[IP-1].Re*U.Re-A[IP-1].Im*U.Im;//计算复数运算A*U
    T.Im=(float)A[IP-1].Re*U.Im+A[IP-1].Im*U.Re;
    A[IP-1].Re=(float)A[I-1].Re-T.Re;//计算复数运算A-T
    A[IP-1].Im=(float)A[I-1].Im-T.Im;
    A[I-1].Re+=T.Re;//计算复数运算A+T
    A[I-1].Im+=T.Im;
    I+=LE;
   }
   float temp=U.Re;
   U.Re=(float)U.Re*W.Re-U.Im*W.Im;//计算复数运算U*W
   U.Im=(float)temp*W.Im+U.Im*W.Re;
   J++;
  }
  L++;
 }
……

  上述代码执行完毕时,原先存放着时域数值的复变量数组内存放的就是经过分析后的频域值了,对此数据可以通过绘图将频域波形直观的显示出来,也可以将其存成数据文件,以备进一步使用。

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/iu_81/archive/2008/05/05/2395849.aspx

5

主题

0

好友

5672

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
26078
帖子
5585
精华
2
经验
5672 点
金钱
5633 ¥
注册时间
2007-8-18
发表于 2010-6-19 14:14 | 显示全部楼层
转贴

原贴出处 http://zq2007.blog.hexun.com/4170886_d.html
以前在博客上放的基二FFT源程序,可读性是比较差的,现在已经改过程序,从新发上去了。这几天仔细的研究了一下基二FFT算法,受益非浅。现在简单的分析一下基二算法的原理。在VISIO里画了程序框图,呵呵。可是不知道怎么传上来,最后还是存为BMP格式的,传了上来。希望对大家有所帮助。源程序见我的另一篇文章《基二FFT的C语言实现》

    当N太大时,直接进行DFT运算,运算量会很大,这就对计算机的性能提出了很高的要求。但是利用周期性可以大大的降低运算量。利用周期性,可将N点DFT分解为两个N/2点的DFT。同理可以对x(n)进行继续分解,依次类推经过M-1次分解,最后将N点DFT分解成N/2个2点的DFT。N点DFT的一次时域分解图如图1





根据DFT的基二分解方法,可以发现在第L(L表示从左到右的运算级数,L=1,2,3…M)级中,每个蝶形的两个输入数据相距B= 2^(L-1)个点,同一旋转因子对应着间隔为2^L点的2^(M-L)个蝶形。从输入端开始,逐级进行,共进行M级运算。在进行L级运算时,依次求出个2^(L-1)不同的旋转因子,每求出一个旋转因子,就计算完它对应的所有的2^(M-L)个蝶形。因此我们可以用三重循环程序实现FFT变换。同一级中,每个蝶形的两个输入数据只对本蝶形有用,而且每个蝶形的输入、输出数据节点又同在一条水平线上,所以输出数据可以立即存入原输入数据所占用的存储单元。,这种方法可称为原址计算,可节省大量的存储单元。FFT算法的程序框图如图2



FFT算法的输出X(K)为自然顺序,但为了适应原位计算,其输入序列不是按x(n)的自然顺序排序,这种经过M-1次奇偶抽选后的排序为序列的倒序。因此,在运算之前应先对序列x(n)进行倒序。倒序的规律就是把顺序数的二进制位倒置,即可得到倒序值。倒序数是在M位二进制数最高位加一,逢2向右进位。对于 ,M位二进制数最高位的权值为N/2,且从左到右二进制位的权值依次为你N/4,N/8,···,2,1。因此,最高位加一相当于十进制运算J+N/2。(J表示当前倒序数的十进制数值)。倒序的程序框图如图3



详细的解释请参考西安电子科学技术大学出版的《数字信号处理
b_7123D50BA08CA914.jpg
b_E7453AB15B576CF4.jpg
b_D8102204F11B5E5A.jpg

19

主题

0

好友

2850

积分

罗宾汉 当前离线

曾经被狗咬

Rank: 7Rank: 7Rank: 7

UID
15214
帖子
2716
精华
0
经验
2850 点
金钱
2574 ¥
注册时间
2006-11-26

社区贡献 乐于助人

发表于 2010-6-19 14:32 | 显示全部楼层
是啊,我需要BJT输出。目前失真够低的了
卖油翁 发表于 2010-6-19 12:46

输出级用BJT管,推动用MOS管时:(输出管静态电流每管395mA)
3.PNG
4.PNG
1.png
2.PNG
100KHz  85Vp-p方波:
6.PNG

若取消前馈,输出112W时1KHz和20KHz的失真分别为0.000096%和0.0015%。

另外,采用共集-共基电压放大的线路进展缓慢。因为多了一级共集放大,电路更容易自激。

133

主题

4

好友

5161

积分

罗宾汉 当前离线

将军

Rank: 7Rank: 7Rank: 7

UID
6576
帖子
6943
精华
0
经验
5161 点
金钱
5013 ¥
注册时间
2005-11-29
 楼主| 发表于 2010-6-19 15:23 | 显示全部楼层
谢谢,这电路基本符合我的目标了!据说D1、2分别用两只稳压管串接,加并电容,据说燥声会更小?推动换用K241、J77不会有什么变化吧?

19

主题

0

好友

2850

积分

罗宾汉 当前离线

曾经被狗咬

Rank: 7Rank: 7Rank: 7

UID
15214
帖子
2716
精华
0
经验
2850 点
金钱
2574 ¥
注册时间
2006-11-26

社区贡献 乐于助人

发表于 2010-6-19 15:30 | 显示全部楼层
推动换用K214、J77关键是Id略小了点,可惜Multisim里没有这对管的模型。也许因为这对管的极间电容小,连预推动级都可以省了。
好像那些精密稳压管内部就是二只管子串联的。
再贴一个幅频和相频曲线图:
3.PNG

1178

主题

26

好友

8896

积分
     

贵宾 当前离线

Rank: 3Rank: 3

UID
27792
帖子
23360
精华
0
经验
8896 点
金钱
5396 ¥
注册时间
2007-9-27

社区贡献 论坛贵宾 新人进步

发表于 2010-6-19 18:08 | 显示全部楼层
呵呵  ,不错,我的新pcb,已经做出来,线路和你这个部分相似的。
weizinou 发表于 2010-6-12 21:34

什么时候出啊?

152

主题

3

好友

1316

积分
     

侠之大者 当前离线

Rank: 6Rank: 6

UID
1159
帖子
3357
精华
0
经验
1316 点
金钱
748 ¥
注册时间
2004-8-5
发表于 2010-6-19 19:31 | 显示全部楼层
今天油兄弟搬来前级到我处,终于听到油翁的前级,让我的系统升了个档次,与高文JOB4后级几合的,赞一个

133

主题

4

好友

5161

积分

罗宾汉 当前离线

将军

Rank: 7Rank: 7Rank: 7

UID
6576
帖子
6943
精华
0
经验
5161 点
金钱
5013 ¥
注册时间
2005-11-29
 楼主| 发表于 2010-6-20 00:14 | 显示全部楼层
今天油兄弟搬来前级到我处,终于听到油翁的前级,让我的系统升了个档次,与高文JOB4后级几合的,赞一个
chenhifi 发表于 2010-6-19 19:31


不客气,兄弟哪里好东西真多!

5

主题

0

好友

5672

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
26078
帖子
5585
精华
2
经验
5672 点
金钱
5633 ¥
注册时间
2007-8-18
发表于 2010-6-20 08:22 | 显示全部楼层
262# xlf0602
我没上过大学。我想学过高等数学的都知道,把一个1KHz的波形可分成1KHz的基波和N(N为≥2的正整数)次的谐波,不可能分出低于基波频率以下的谐波。只有二个不同频率的信号相互调制才会有低于二者频率的差频信号产生,这个差频信号在音频放大器里就是互调失真。


虽然阁下对FFT的数学原理的叙述有缺陷正如287楼所说的那样,我们现在不去讨论。
要知道,电路的傅立叶分析决不是单纯的数学运算那么简单,它是结合具体电路的传输函数进行运算的,如果不结合具体电路的传输特点和经过每个节点的影响,忽略这些因素而算出来的结果就是做数学的同一道题的结果都没有差别。

0

主题

0

好友

211

积分

业余侠客 当前离线

Rank: 4

UID
21599
帖子
230
精华
0
经验
211 点
金钱
206 ¥
注册时间
2007-4-14
发表于 2010-6-20 09:39 | 显示全部楼层
查看进展。技术性浓郁,值得学习。

133

主题

4

好友

5161

积分

罗宾汉 当前离线

将军

Rank: 7Rank: 7Rank: 7

UID
6576
帖子
6943
精华
0
经验
5161 点
金钱
5013 ¥
注册时间
2005-11-29
 楼主| 发表于 2010-6-20 12:27 | 显示全部楼层
查看进展。技术性浓郁,值得学习。
qiufeng 发表于 2010-6-20 09:39


好象关注的人不多,郁闷

6

主题

3

好友

799

积分

职业侠客 当前离线

亦在 HI - FI 下效命

Rank: 5Rank: 5

UID
39973
帖子
1064
精华
0
经验
799 点
金钱
801 ¥
注册时间
2008-4-10
发表于 2010-6-20 13:03 | 显示全部楼层
好象关注的人不多,郁闷
卖油翁 发表于 2010-6-20 12:27

卖油的我来支持你

5

主题

0

好友

377

积分

业余侠客 当前离线

Rank: 4

UID
69277
帖子
424
精华
0
经验
377 点
金钱
371 ¥
注册时间
2008-12-17
发表于 2010-6-20 13:06 | 显示全部楼层
世界杯连股市房市都整淡,家电那边也少了不少帖子。

5

主题

0

好友

5672

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
26078
帖子
5585
精华
2
经验
5672 点
金钱
5633 ¥
注册时间
2007-8-18
发表于 2010-6-20 13:17 | 显示全部楼层
332# 卖油翁


好象关注的人不多,郁闷


DIYer肯定都有几部功放的,有可以欣赏音乐的了,就不会对什么功放电路都很高的热情,尤其对复杂电路的功放,
而且,现在也很多很成熟的功放套件,随便到××音响公司看看,功放套件可谓琳琅满目。
你这还在设计论证阶段的东东,又那么复杂,到做出机器来影响的因素很多,越复杂越难做好,尤其是解空间很窄的电路替换1~2种晶体管性能就太不如前的情况,你用这么多晶体管配对就够你受,但就输入级的JFET的N和P沟的配对就不是很容易,当然不可能会有很高的热度。
发光二极管的饱和压降:红色 2.0~2.2v,绿色 3.0~3.2v, 白色 3.5v   
   
我的LTSpice元件库的LED 一般的是0.7v(另外有标注电压LED)。
如果你这是已经做好的机器有多项测试数据(包括AP测试)都非常优秀,加上听感又很好,那关注的人就会多很多。

这个电路的解空间特别窄,随机取另外一种型号的JFET代换,它98%会不能够正常工作

这个电路的解空间特别窄,随机取另外一种型号的JFET代换,它98%会不能够正常工作

这个电路的解空间比较大,随机取另外一种型号的JFET代换,它98%仍然会能够正常工作并且性能没多少降低

这个电路的解空间比较大,随机取另外一种型号的JFET代换,它98%仍然会能够正常工作并且性能没多少降低

13

主题

1

好友

1406

积分

认证会员 当前离线

Rank: 4

UID
30337
帖子
1595
精华
0
经验
1406 点
金钱
1382 ¥
注册时间
2007-11-12

认证会员

发表于 2010-6-20 13:27 | 显示全部楼层
LS所言极是,
我最近也考虑做一个功放,不过我的要求不高。50W/8欧姆的额定输出就可以了。
         我也来贴一个
电路架构很像鹤顶红前级,8欧姆输出50W。电源是交流的,滤波电容才3300uFX2。
仿真了一下,失真还蛮大的。
仿真.jpg
仿真02.jpg

9

主题

2

好友

8648

积分

贵宾 当前离线

Rank: 3Rank: 3

UID
50625
帖子
9930
精华
0
经验
8648 点
金钱
8558 ¥
注册时间
2008-8-12

社区贡献 论坛贵宾 乐于助人

发表于 2010-6-20 15:17 | 显示全部楼层
喝了这么多毒物,最后不要忘了用砒霜漱口!

19

主题

0

好友

2850

积分

罗宾汉 当前离线

曾经被狗咬

Rank: 7Rank: 7Rank: 7

UID
15214
帖子
2716
精华
0
经验
2850 点
金钱
2574 ¥
注册时间
2006-11-26

社区贡献 乐于助人

发表于 2010-6-20 15:22 | 显示全部楼层
262# xlf0602
虽然阁下对FFT的数学原理的叙述有缺陷正如287楼所说的那样,我们现在不去讨论。
要知道,电路的傅立叶分析决不是单纯的数学运算那么简单,它是结合具体电路的传输函数进行运算的,如果不结合具 ...
ch639827608 发表于 2010-6-20 08:22

我说的那是基本原理,谈不上缺不缺陷的问题。至于287楼所提的问题我在291楼已说得很清楚了,是因为他没看仔细我所说的,看来你也和他一样。
解决问题当然要具体问题具体分析,但最终基本原理是不能违反的。如果基本原理被“违反”了,要么这个解决问题的思路是错误的,要么就该有新的“基本原理”产生了。
不管问题有多么复杂,我想解决问题的方式应该是“化繁为简”。就好比一个复杂的线路有很多节点,那就从局部开始,一个个节点的来分析,这应该就算是“化繁为简”吧。如果解决问题的方式是“化简为繁”,也许问题永远也不能解决。

5

主题

0

好友

5672

积分

罗宾汉 当前离线

Rank: 7Rank: 7Rank: 7

UID
26078
帖子
5585
精华
2
经验
5672 点
金钱
5633 ¥
注册时间
2007-8-18
发表于 2010-6-20 15:26 | 显示全部楼层
338# xlf0602


我说的那是基本原理,谈不上缺不缺陷的问题。至于287楼所提的问题我在291楼已说得很清楚了,是因为他没看仔细我所说的,看来你也和他一样。
解决问题当然要具体问题具体分析,但最终基本原理是不能违反的。如果基本原理被“违反”了,要么这个解决问题的思路是错误的,要么就该有新的“基本原理”产生了。
不管问题有多么复杂,我想解决问题的方式应该是“化繁为简”。就好比一个复杂的线路有很多节点,那就从局部开始,一个个节点的来分析,这应该就算是“化繁为简”吧。如果解决问题的方式是“化简为繁”,也许问题永远也不能解决。



你说1Khz的波形,当然要包括正弦波,不是吗?你又没说除外正弦波。
你没说定什么1k的波形,那就是说噪音波形也可以,那你就看看,这下面的1k~100K的噪音的快速傅立叶变换是怎么样的吧。
1K~100K的噪音变换出1Hz内的噪音功率是否违反了什么原理?是LT公司的软件设计团队违反了什么原理吗?

1K~100K噪音输出

1K~100K噪音输出

1k~100k 噪音输出的FFT图

1k~100k 噪音输出的FFT图

某个前级输出1k正弦波的快速傅立叶变换这个图也违反原理?

某个前级输出1k正弦波的快速傅立叶变换这个图也违反原理?

259

主题

27

好友

5924

积分

罗宾汉 当前离线

高级灌水专家

Rank: 7Rank: 7Rank: 7

UID
14213
帖子
7902
精华
3
经验
5924 点
金钱
5274 ¥
注册时间
2006-11-4

社区贡献 乐于助人 DIY大赛获奖

发表于 2010-6-20 15:30 | 显示全部楼层
这个电路我做过的,不错,看看对你们有否参考的价值

AM7040-3.jpg
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Powered by Discuz! X3.4

© 2001-2012 Comsenz Inc.

返回顶部