ottawa 发表于 2007-10-17 03:35

MINI1543 DAC 数字输入自动选择(已完成,附详细说明)

各位好,我刚完成了论坛的MINI1543 DAC,效果不错,正在写作业。
有个问题。我有两个输入设备,想同时接到这个DAC上,并且实现输入自动选择,即哪个线上有数字讯号就自动切到哪个线上。如果都有,就...好比自动接TOSlink的吧。
最好还有,出现错误或者不能解码的讯号(比如不小心把DTS或者Dolby讯号接了过来)时候,自动静音,否则的话,会听到高频数字噪音。

我的设备:
1.STB卫星接收机输出TOSlink信号。
2.XBOX输出SPDIF Coaxial同轴信号。

现在的套件是电路板上有个跳线。有点不方便,简单的办法是加个小开关。可还是不方便。

这两个DAC就有自动输入选择功能,不知道怎么实现的。用过的人能分析分析吗?
http://www.shixingshiye.com/DAC/dac67.htm
http://www.shixingshiye.com/DAC/DAC707/AllDAC707.htm

我想了几个办法,
1.装个小开关。---低科技解决方案。
1.自动监视同轴线上的直流电平,如果有变化,就选同轴,否则光纤。
2.用MCU轮番把输入切换到CS8412上,然后通过MCU监视ERF和E0~E2/F0~F2输出。如果当前输入线使CS8412的,比如说F0~F2产生状态报告,那就保留当前输入线。
MCU输入切换可以用DS2405之类的1-wire数字开关推动MOS管来做。比较高科技。
3.用MCU做个遥控接受电路,收到遥控器讯号,自动切换输入。

请各位高人指点,讨论。

aeon 发表于 2007-10-17 06:55

你说的方法都可以。
原来设计的时候考虑用光千输出TTL电平跟同轴的0.5v电平分别输入8412(4) 的两个输入端,这样就能自动检测信号,光千优先。但实际试验的时候有误动作的现象,你可以试验一下。
开关是最方便的,但注意线不能过长,阻抗要匹配。
MCU。。没试过,估计比较好用。期待你的报告。

ottawa 发表于 2007-10-17 08:47

多谢,我正在写装机报告,并加入一些改进建议.
打算等自动输入选择做出原型后加进入然后一次贴上来.

APMA 发表于 2007-10-17 09:46

创新数字子卡输入部份电路,可作参考。
东芝的TORX178、179无信号输入时不稳定,不能用于此电路,只能用TORX173、176或其它牌子的接收器。

ottawa 发表于 2007-10-17 10:14

刚才看了一下
5脚/C1:在SPDIF输入的是PCM时候,也 就 是 正常播音的时候是5V,在输入SPDIF-Dolby时候,音箱听到的是 一片噪音.5脚为0v
原因:套件板子的SEL接的5V,6脚悬空,不过从芯片手册上看,6脚无论什么样,5脚都输入/C1状态. CS8412工作在Channel Status Reporting状态.

25 ERF:在正常播音的 时候 我的卫星接收机在无讯号,静音,软关机的时候,光纤都是亮的,结果是25总是0v,XBOX也一样,只有在XBOX/STB影关机时候25才是5V,报告错误.我 怀疑SPDIF是负逻辑,即0的时候 总 是 高电平.
不过 没关系,XBOX我 不看的时候,是不开机的

设想:如果接同轴时候, 25是5v,就 是 XBOX没 开机,转光纤.
如果结同轴时候,25是 0v,就是 XBOX开机了,转同轴.
这样同轴比光纤又高的优先级.如果XBOX开机了,就接同轴,不管STB的状态.
如果XBOX没开机,就默认是光纤.

准备用手头的16F84检测25状态实现自动切换.切换用5v的1x2继电器控制
CS8412的I2S输出通过第二个继电器接到1543上,如果任何时候5脚变成0v,说明有解码不了的讯号产生,可能是Dolby DTS等,就用第二个继电器切断I2S输出,第二个继电器(如果是2x2的)也可以接到1543的模拟输出.这样数字流总是不断的.

另外,打算把电源灯接倒16F84的一个输出脚上,光纤时候闪2下,然后常亮.同轴时候闪三下,然后常亮.

16F84用内部震荡电路,不接晶振,稳定性没问题,电路最简单.继电器用个三极管推动.

赵雷 发表于 2007-10-17 10:23

楼主的想法我很有兴趣,我想这样的话可以在自己马上要做的机子里加上SPDIF和USB的自动切换。不过我只会用89S52,呵呵。另外楼主用ERF检测吗?VERF不可以用吗?我到现在没弄明白这两个脚的区别……

上海孙悟空 发表于 2007-10-17 10:25

数字信号要做自动切换必定要做解码,把帧同步信号提取出来再做模式匹配,否则不会稳定。例如AC3和DTS的自动识别也是基于这个理论

ottawa 发表于 2007-10-17 10:32

ERF是CS8412报告的Error Flag,在正常播放的时候是5v,其他时候是0v,而如果同轴接倒了9脚上,却因为同轴设备没开机而无SPDIF讯号,就会出现0v,只要又SPDIF同步讯号就是5v.我觉得这样可以间接地了解倒同轴设备是否开机.
/C1是CS8412报告的audio/non audio状态,在输入的是Dolby或者DTS的数字讯号时候CS8412部知道是什么,就会出现0v,正常解码时候是5v.

以上两个我刚测过了.

ottawa 发表于 2007-10-17 10:33

谢谢APMA,我如果失败了 就用你这个.
回aeon,刚我试着把10通过一个103接到如论同轴还是光纤上都无法实现自动选择.是不是要反一下?
回赵雷,我觉得VREF和REF是反的.
我在diyAudio上看到一个人也挺有意思的,他弄个单片机的timer数同轴上又多少个脉冲.比如0.5妙里数倒成千上万个脉冲,就是同轴,否则就是光纤.够没技术含量的.CS8412又状态输出呀.

赵雷 发表于 2007-10-17 10:52

看datasheet里,ERF应该是出错时才变高的啊,而且说VERF是VALIDITY和ERF相与的信号。我的CS8412小板被我拆了,楼主大哥方便的话试试28脚那个VERF是啥变化规律,多谢了啊!

赵雷 发表于 2007-10-17 11:01

我被b4了……数脉冲的方法我曾经想过……

六天七夜 发表于 2007-10-17 11:03

早几年我看到一台奇声的功放机,它就以自己识别信号源,但是我不记得是什么型号的了!:)

ottawa 发表于 2007-10-17 11:13

嗯,那个家伙的链接是:http://www.diyaudio.com/forums/showthread.php?s=13fe5c8bd8db66797088a5bcbfdf2881&threadid=110085&highlight
他数100ms里的脉冲.
另一个选择电路
http://www.diyaudio.com/forums/showthread.php?s=&threadid=109691&highlight

看他做得还可以.就是太没技术含量了,不过他说没发现又误动作.
刚看了一下,28VERF和ERF是一样的,即接在9脚的SPDIF设备开机时候0v,没开机5v,不明白.关机是硬关机.因为又很多设备在软关机时候不关SPDIF输出,起码还在输出同步讯号.好在我不看XBOX时候,都关上,风扇有够吵.

PS:用继电器又两个原因,一是我喜欢听那吸合的声音,二是各种数字开关和复用器都有工作频率和增益曲线.我没什么把握.
该睡觉了,我明天看能不能买个小继电器.

赵雷 发表于 2007-10-17 11:33

我想的是数脉冲来确定采样频率的,因为我那个电路里用了DEF,所以不能用F0~F2报告。后来看到说现在的碟里都没有去加重了,所以我看还是直接用F0~F2好了

赵雷 发表于 2007-10-17 11:35

用继电器就要多个几十毫安的供电了~
祝好梦~

ottawa 发表于 2007-10-18 07:05

继电器买来了松下的TQ2-5V.工作电压5v,吸和电流28ma.
双刀双擲

ottawa 发表于 2007-10-18 07:07

MCU还没想好用16F84或者Atmega8,16F84没有内置时钟,要接晶振,手边没有49U的,这个太难看了.

ottawa 发表于 2007-10-19 12:21

刚把16(SEL)从原来的接5v改到了地.发现正常播放的 时候E2,E1,E0全部是111 = No Lock的意思.F2 F1 F0全部是000 = Out of Range的 意思.无论怎么弄都不变 .于是仔细看手册,才发现原来CS8412的错误报告和频率报告是依赖于外部接的6.144M晶振接到内部的频率比较器上才能工作.没有外部晶振,这些报告全部无效.
难怪套件里把16(SEL)给接5v了.这样CS8412就 工作 在 所谓的通道状态报告状态.而由于C0(6)是接5v的,这样,它实际上选中的是Consumer Channel Status状态.
C U VREF 等标记全部需要和FSYNC也就是 现在接TDA1543的那个时钟来同步,才能解码.--此路不通,需要高速单片机才能解码.
对照数据手册,实际上,以套件的设定来看,就只剩下5脚Ca和25-ERF可用了.
如前面我测的,在无改动的状态下,Ca高低反应的应该是有没有音频输出,可从实际看,它反应的是SPDIF-PCM还是无法解码的Dolby/DTS数据流.后者如果不小心接倒了MINI1543上,会有刺耳的数据声.而讯号原设定成SPDIF-PCM时候,静音,软关机等都不影响这个脚的状态.我估计听不见声音的时候,也有SPDIF同步讯号过来.所以从实际出发,这个状态只能用来控制,Dolby/DTS错接倒MINI1543时候,自动关闭输出.保护功放和木耳.

而ERF是个综合的东西,任何错误,跳码呀,CRC错误呀,高码流进来了呀(CS8414和CS8412管脚级兼容,前者是96k的,要好些),电缆脱落呀,信号源关机(硬关机)呀等等,都会导致ERF报错.这个对我来说,可以检测XBOX是不是开机了.

最大的问题:如果当前输入是光纤,看着好好的电视,又开了XBOX的话,我没法测到,除非把STB卫星机硬关了.这样ERF报错,就跳倒Coxial的XBOX去,反过来也一样.而如果都关机的话,如果MCU来回把输入接过来,再通过ERF来看哪个开机的话,那样,继电器就会噼里啪啦地响个没完.成老式交换机了.

看来走综合判断CS8412状态一条路,没戏.起码不接外部晶振没戏.不行我也用计数器数输入脉冲吧.

....继续想办法中......

今天是我心情很失落的一天,不是因为这个,别的事.

ottawa 发表于 2007-10-20 10:05

参考了diyAudio上的帖子,终于实验成功了自动输入切换。正在写进一步的说明。请看恐怖的搭棚实验。

ottawa 发表于 2007-10-20 10:27

效果:
光纤设备(卫星接收机)播放,开同轴设备(XBOX或者影碟机),光纤设备自动静音,只能停到同轴输入的音乐。
关同轴设备,光纤设备的输入自动恢复。
反过来,开着同轴设备,开光纤设备,输入仍保持再同轴上。单一设备开机时候,开哪个,就哪个输入。
结论:同轴输入比光纤输入有更高优先级,可以压制光纤讯号。以上,正好达到了我的要求。
而完全没用MCU继电器什么的这类overkill.
页: [1] 2
查看完整版本: MINI1543 DAC 数字输入自动选择(已完成,附详细说明)