‘壹’ TVL320AIC33IZQE是个什么芯片原理是什么
是不是弄反了,TLV320AIC33IZQE 是立体声音频编解码器。
‘贰’ TLV320AIC14K工作原理
建议直接去德州仪器的网站下这款IC的芯片资料
结合你的应用向TI的技术支持问询,或去电源网等相关的专业论坛和大家一起讨论会更快的熟悉
‘叁’ tlv320aic23b 使用i2c模式的芯片地址是7bits,请问芯片地址具体是多少,第八位是补在最高位还是最低位
最低位表示是读还是写,所以7位地址可以左移一位,读写信号补在最低位,调试这个芯片可以买个I2C适配器来调试,可以很方便的读取或写入相关数据,推荐纬图虚拟仪器有限公司的Ginkgo I2C适配器,我用过,感觉还不错!
‘肆’ tlv320aic23可不可以采集两路语音信号
你好!
不能同时采集两路语音信号,只能分别进行模拟信号的编辑!
TLV320AIC23是TI公司推出的一款高性能立体声音频编解码器,内置耳机输出放大器,支持mic和line in二选一的输入方式。输入和输出都具有可编程的增益调节功能。
‘伍’ TLV320AIC23的应用
TLV320AIC23的应用:
基于DDK的TLV320AIC23型编解码器的驱动设计
DSP/BIOS Driver Developer’s Kit(DDK)是TI为简化驱动程序开发为TMS320系列DSP及其EVM板等提供的驱动程序开发套件。该套件为TMS320系列各种外围器件提供完整的标准化驱动程序模型,使得驱动程序可以很方便地移植到其他应用中,大大提高驱动程序开发的效率。DDK是对每种TMS320系列DSP都提供的芯片支持库(Chip Support Library—CSL)的补充,CSL提供对外围器件寄存器配置及初始化等的低级控制,DDK完全通过CSL来对外围器件进行控制。简单地说。DDK建立在CSL上层.所以用DDK来开发驱动程序将更为快捷且可移植性更好。
DDK为开发驱动程序定义了标准模型和一系列的API。为简化程序设计。标准模型又被分为二个层次.其中高层称为Class driver,低层称为Mini—driver。Class drivei与器件相对独立.完成诸如缓冲区管理和请求同步等功能.同时扮演着与API和Mini—driver二者接口的角色。Mini—driver完成特定的器件初始化和控制功能.它符合IOM(I/O Mini—driver)的接口标准。DDK的这种分层结构使得驱动开发人员仅需了解单一的Mini—driver API就可以完成整体外围器件的驱动设计,而且这一过程比设计整个驱动程序要简单得多,因为Class driver控制了缓冲区管理和同步等。DDK提供3种Class driver.分别为SIO/DIO、PIP/PIO和GIO,它们都可以和任何Mini—driver结合使用。
2 TLV320AIC23的驱动设计基础
DDK的标准模型结构如图1所示。高层的应用和底层驱动相互没有直接的关联,开发中只需通过Class driver控制Mini—driver。
下面以DM642 EVM板为例.说明基于DDK的TLV320AIC23的驱动程序设计方法。
首先,需要使用配置工具建立驱动程序的入口。在DSP/BIOS con_fig下的cdb文件中.依次选择In-puffOutplut---Deviee Drivers→User→defined Drivers.在这些例程中一般已经添加了udevCodec.如果需要的话,用户可以自行添加或编辑。右键单击选择Properties选项来编辑其属性,其属性应设置如下:
Comment:可以加入自己的注释
lnit function:键入EVMDM642_EDMA_AIC23一init
Function table ptr:键入 EVMDM642_EDMA_A-IC23一Fxn8
Function table type:选择IOM_Fxns
Deviceid:该项会被自动忽略.因为DM642 EVM板上只有一块TLV320AIC23
Device params ptr:TLV320AIC23参数结构的入口指针.使用缺省参数时设为0x0
Device global data ptr:必须设置为OxO
正确配置驱动程序入口后.就要按照需要设置相关的参数。下面具体讨论TLV320AIC23参数的设置。
TLV320AIC23的参数结构体原型如下:
typedef struct
在一般应用中。上述结构体的大多数参数无需更改,需要修改的主要是aie23Config.它是TLV320AIC23控制寄存器值.需要通过它来控制TLV320AIC23的工作模式、输入/输出选择、采样率等重要参数。
除了复位寄存器外.TLV320AIC23共有9个控制寄存器.每个寄存器控制字长为9bit.地址位为7bit,共有16bit。地址位为高7位而控制字在低9位。具体如下:
Register0:左声道输入音量控制,缺省值为 0x0017
Register1:右声道输入音量控制,缺省值为 0x0017
Register 2:左声道输出音量控制。缺省值为Ox01F9
Register 3:右声道输出音量控制,缺省值为Ox01F9
Register 4:模拟音频通道设置.缺省值为Ox0011
Register 5:数字音频通道设置。缺省值为0x0000
Register 6:节电模式控制.缺省值为0x0000
Register 7:数字音频接口格式控制,缺省值为0x0043
Register 8:采样率控制,缺省为48kHz,对DM642EVM板.缺省值为Ox0002
Register 9:数字音频接口激活开关.缺省值为0x0001
通常情况下需要修改的寄存器包括4号和8号寄存器.即选择是由mic输入还是由line in输入和根据需要选择采样率。这2个寄存器的详细配置如下:
4号寄存器配置见表1,其中,D2位。INSEL(In-put select for ADC)是输入选择,“O”为line in;“l”为mic.D1位MICM(Microphone mute)是mic静音开关.为“l”表示静音。DO位MICB(Microphone boost)如设置为“1”将为mic输入提供20dB的增益。8号寄存器配置见表2,其中,采样率控制位为D5~D2的SR[3:O]。对于DM642 EVM板,设置方式见表3。
可见.需要通过4号寄存器的D2来选择输入,同时考虑Dl和DO对mic的控制;采样率的控制通过设置8号寄存器的SR[3:0]来实现。
3 TLV320AIC23的驱动配置方法
很多初学者在运行DM642 EVM的echo或其他音频例程时,最容易碰到的问题是通过line in输入时有输出.而通过mic输入时没有输出,更不要说改变采样率了。即使参考资料编辑aic23-h和emvdm642_edma_aic23.h修改Dcfauh参数仍然无法解决。
出现这样的问题时。首先要了解TLV320AIC23的模拟音频输入为mic和line in二选一的,其次要知道如何能够正确配置TLV320AIC23的参数使之满足特定应用的需要。如果仔细分析echo例程和其他音频例程的话,可以发现只有在echo例程中包含了aie23.h和emvdm642_edma_aie23.h 2个头文件。其实在echo例程中.所包含的这2个头文件和TLV320AIC23的初始化语句实际并未使用。如果屏蔽掉对这2个头文件的包含以及TLV320AIC23的初始化语句,会发现编译后仍然能够正常运行。实际上echo例程中的TLV320AIC23初始化语句只是提供了对Ⅱ,V320AIC23进行配置的一种方法而并未直接使用。该方法在DDK包的emvdm642部分说明文件中也已提及。
由于在echo例程中初始化驱动程序人口和其他的音频例程一样使用了默认参数,而默认参数是通过调用DDK包中的evmdm642_edma_aic23.164库获得的.该库不变则配置也不变,于是就会出现上述问题。
在明确了以上原理后.通过实践证明,本文提供的以下三种配置方法可以适应各种应用。
方法一
既然默认参数是通过调用evmdm642_edlna_a-ic23.164库获得的.那么自然可以通过修改该库来达到修改参数的目的。TI提供的DDK包中包含了各种库的源代码.这使得修改库文件成为可能。本文用到的库生成工程是tiddksrcaudioevmdm642目录下的evmdm642_edma_mc23_64.pjt,只需要打开该工程.修改其中aic23.h中的默认参数,重新编译就能生成新的库文件。这样,所有的音频例程都会默认按修改过的参数运行。
这种方法适合TLV320AIC23参数配置相对固定的应用场合。配置完全通过调用evmdm642_ed_ma_aic23.164库初始化时进行.不用在应用工程文件中添加任何附加代码.使得工程文件更简洁.可移植性更高。
方法二
自定义符合标准结构EVMDM642_EDMA_A.IC23一DevParams的结构体,例如:
然后将“_myParms”作为Device params ptr在指定人口指针时替代默认的0x0。这就符合TI推荐的方法,在echo例程中的相关代码也说明了这种方法。
这种方法能够适应几乎任何使用情况,初始化参数自定义非常明确,代码易读性较高。但是不建议像echo例程中那样直接包含默认参数的头文件.最好参照该头文件定义自己的结构体。
方法三
通过仔细分析生成evmdm642_edma_aic23.164库的源代码,可以发现对TLV320AIC23寄存器的设置是通过AIC23_setParams()函数来完成的。在大多数情况下,只要修改寄存器值而不必修改标准结构EVMDM642_EDMA_AIC23_DevParams结构体中的其他变量。所以可以调用AIC23_setParams()函数来完成对TLV320AIC23参数的配置。这样就只需要定义1个符合标准的寄存器数组.将数组名作为参数来调用AIC23_setParamsf()函数就可以达到目的。
这种方法使用灵活,代码长度很短,含义非常明确,可以用不同参数多次调用.尤其适用于TLV320AIC23参数可变的特殊场合。
在实际工作基础上对TLV320AIC23参数配置提出了3种方法,各有特点且都十分实用。在进行基于DDK的TLV320AIC23驱动程序设计时.可以根据需要方便地选用。
‘陆’ 如何使用tlv320aic3104来播放音频
不能同时采集两路语音信号,只能分别进行模拟信号的编辑! TLV320AIC23是TI公司推出的一款高性能立体声音频编解码器,内置耳机输出放大器,支持mic和line in二选一的输入方式。输入和输出都具有可编程的增益调节功能。
‘柒’ 如何在ARM linux上使用FDT和initrd
这文章算是最近工作的备忘。
FDT是ARM
Linux最新的设备驱动程序信息表,使用FDT的内核,就不用像过去的内核那样,一个板子加一个mach的C文件,所有的设备信息可以记录在一个树状信息文件里面。
目前这方面资料比较少,我以AM335x处理器为例概括一下FDT的使用:
FDT仅仅是一个信息的目录和参数表,要使用某个功能内核中还必须有相应的驱动程序代码
FDT的源文件位置在:arch/arm/boot/dts,例如,TI的Beagle bone black,源文件是arch/arm/boot/dts/am335x_boneblack.dts
FDT在make ARCH=arm的时候就会自动生成,也可用make ARCH=arm
dtbs来生成,例如TI的Beagle bone black生成的文件是arch/arm/boot/dts/am335x_boneblack.dtb,这是一个二进制文件
要想新增你自定义的FDT,请修改arch/arm/boot/dts/Makefile,并在相应的Kconfig中增加config选项,例如,TI的Beagle
bone black,Kconfig的位置在arch/arm/mach-omap2/Kconfig
FDT的dtb文件由u-boot传递给内核,u-boot必须把这个文件拷贝到内核解压地址之后的某个位置,确保内核解压的时候不会覆盖,然后使用“bootm
[内核地址] - [dtb地址]”来启动内核
如果dtb文件不正确,对于3.10以上的内核,可能什么显示都没有,3.8内核,可能就显示到Uncompressing kernel......done
FDT的编写规则说明在Documentation/devicetree/bindings,不同的设备有相应的txt文件说明,其中的“compatible”可以作为关键字搜索驱动程序的源文件,例如,AM335x的GPIO,用“ti,omap4-gpio”为关键字,可以找到其代码位于drivers/gpio/gpio-omap.c
FDT可以包含子文件,比如am335x_boneblack.dts就包含了am33xx.dtsi,am335x-bone-common.dtsi
以一个例子来说明编写规则,我的板子上,I2C0上挂了一个音频CODEC,其地址是0x18,型号是TLV320AIC3104IRHBT。
先找到i2c0节点的位置,这在arch/arm/boot/dts/am33xx.dtsi中:
i2c0: i2c@44e0b000
{
compatible =
"ti,omap4-i2c";
#address-cells =
<1>;
#size-cells =
<0>;
ti,hwmods =
"i2c1";
reg = <0x44e0b000
0x1000>;
interrupts =
<70>;
status =
"disabled";
};
要在这个节点上挂东西,可以直接在am33xx.dtsi中挂,可以写成这样:
i2c0: i2c@44e0b000
{
compatible =
"ti,omap4-i2c";
#address-cells =
<1>;
#size-cells =
<0>;
ti,hwmods =
"i2c1";
reg = <0x44e0b000
0x1000>;
interrupts =
<70>;
status =
"okay";
tlv320aic3x: tlv320aic3x@18 {
compatible = "ti,tlv320aic3x";
reg = <0x18>;
status = "okay";
AVDD-supply = <&ldo4_reg>;
IOVDD-supply = <&ldo4_reg>;
DRVDD-supply = <&ldo4_reg>;
DVDD-supply = <&ldo4_reg>;
};
};
其中compatible字串“ti,tlv320aic3x”是在Documentation/devicetree/bindings里面全文搜索“tlv320aic”获得的,“tlv320aic3x:
tlv320aic3x@18”遵循的是“标识符:名称@地址”的格式,前面的“i2c0:
i2c@44e0b000”也是这个格式。这里的标识符可以在包含这个文件的文件或这个文件的其他位置引用,因此,可以使用arch/arm/boot/dts/am335x-boneblack.dts包含arch/arm/boot/dts/am33xx.dtsi,然后在am335x-boneblack.dts里写:
&i2c0 {
status = "okay";
tlv320aic3x: tlv320aic3x@18 {
compatible = "ti,tlv320aic3x";
reg = <0x18>;
status = "okay";
AVDD-supply = <&ldo4_reg>;
IOVDD-supply = <&ldo4_reg>;
DRVDD-supply = <&ldo4_reg>;
DVDD-supply = <&ldo4_reg>;
};
};
&i2c0表示引用了i2c0这个标识符,然后把括号里的内容挂载到标识符下,如果属性的名字相同,例如status出现两次,前面是“disabled”后面是“okay”,以后面的为准,引用标识符的次数不受限制。
也许一开始会觉得FDT的工作过程很神秘,但你只要用compatible的字串去全文搜索一下C文件,然后仔细阅读一下,就会发现很简单,没过几分钟你就可以自定义FDT节点的属性了。反倒是这些操作过程我没找到什么文档说,比较头痛,所以我把这些写出来,希望能给大家帮助。
下面说说initrd,initrd的用处是给内核一个初始的基本文件系统,用来加载内核模块之类的东西。很多人觉得嵌入式系统不需要initrd,也可以把initrd作为最终的根文件系统。我用initrd是用来校验真正的根文件系统,因为在嵌入式设备上,无法预测用户到底什么时候关机,可能会造成文件系统问题。
initrd可以用buildroot,像制作正常文件系统一样做,最后把根下的linuxrc换成一个例如下面这样的文件:
#!/bin/sh
/bin/echo Now Check SD Card
/sbin/fsck.ext4 /dev/mmcblk0p5
虽然Documentation/initrd.txt里面说,内核会执行initrd里面的/sbin/init,但在我用的linux-3.8.13上,init/do_mounts_initrd.c里面,执行的是/linuxrc,不知道是不是文档没有更新过来。具体的调用顺序是,kernel_init(init/main.c)
> kernel_init_freeable(init/main.c)
> prepare_namespace(init/do_mounts.c)
> initrd_load(init/do_mounts_initrd.c) > handle_initrd
(init/do_mounts_initrd.c)。
在使用initrd的时候有几点需要注意的:
不建议在initrd上挂载别的东西,会引起未知的问题,貌似看到个文章说这个,找不到了
因为上面的这条,而且在initrd的时候,内核还没有挂载devtmpfs,因此建议使用静态设备节点,以AM335x为例(内核参数console=/dev/ttyO0,115200n8),必须的节点有:
/dev/null
/dev/console
/dev/ttyO0
这些节点可以用fakeroot之后mknod在buildroot的output/target/dev里创建,除了/dev/console,buildroot会自己创建,其他也可以写到buildroot的system/device_table.txt里面让buildroot自动创建:
#
/dev/null
c 666 0 0
1 3
-
-
-
/dev/ttyO0 c 600
0 0 250
0
-
-
-
如果你用的是Atmel的处理器,上面的ttyO0可能是ttyS0,如果是三星的,可能是ttySAC0,而且major和minor也会不一样,请自行解决。如果你像我一样要检验SD卡,那就还必须加上SD卡的分区对应的节点。
/linuxrc可以是个程序也可以是个脚本,脚本的话,命令写绝对路径,而且记得把/linuxrc的mode改为755
使用initrd只需要用u-boot把buildroot制作的文件系统映像拷贝到内存里,然后传递initrd=[地址],[容量]这样的参数给内核,例如initrd=0x81300000,8M,最终的root参数可以不变,例如root=/dev/mmcblk0p5,这表示最终的root是SD卡上扩展分区中的第一个逻辑分区。给两个内核参数的例子:
console=ttyO0,115200n8 root=/dev/mmcblk0p5 initrd=0x81300000,8M vram=16M
consoleblank=0
console=ttyO0,115200n8 initrd=0x81300000,8M root=/dev/nfs rw
nfsroot=192.168.5.226:/home/c/nfsroot
ip=192.168.5.222:192.168.5.226:192.168.5.1:255.255.255.0:core335x:eth0:off
vram=16M consoleblank=0
第一个不解释了,第二个表示使用initrd,同时使用nfsroot。
最后啰嗦一句,使用initrd需要在内核配置里打开支持,这个网上的资料太多了,我就不说在哪里了。
‘捌’ 怎么验证linux tlv320aic3104 驱动代码
你好,Linux的驱动都是集成在内核里的
一般情况下 只需要 另外 安装显卡驱动就好了
如果 你的Linux能够正常使用 就证明 你的硬件是被支持的
建议楼主 去你用发行版本的Linux官方网站上 查看 硬件是否支持
另外 在自己 安装 显卡驱动就好了
‘玖’ 请教关于TLV320AIC3101使用中的一些问题
mp4目前,还有许多消费者对MP4的认识比较模糊,就简单认为MP4,就是MP3的下一代,能够播放MPEG-4的播放器, 后来,随着知识的积累,才有比较系统的认识。关于MP4的准确概念,一言难尽,因为无论是从MP4的品牌、市场、产品规格、配置标准等各方面来说,都可以用一个字来形容——“乱”。不知是炒作还是趋势 ,在现在商家眼里,只要能视频沾一边的播放器,统统都叫MP4,这种说法简单直观,似乎和笔者当初模糊的认识基本一致。
关于MP4的概念众说纷纭,下图是笔者集百家之言,总结出来的关于MP4概念的认识,MP4既“软”,又“硬”,纷繁复杂。
音频MP4格式:AAC
MP4最初是一种,音频格式,和MPEG-4没有太大的关系,就像MP3和MPEG-3没有关系一样。MP3是MPEG-1 Audio Layer 3 的缩写;而MP4是MPEG-2 AAC,完完全全是一种音频压缩格式, 增加了诸如对立体声的完美再现、多媒体控制、降噪等新特性,最重要的是,MP4通过特殊的技术实现数码版权保护,这是MP3所无法比拟的。
视频MP4格式:MPEG-4
现在市面上的MP4多数偏向于多媒体播放器,能够播放AAC的,可以说是凤毛麟角。甚至有媒体把MP4说成是MPEG4的缩写,这在以前看来是一个谬论,但是经过商家不断的炒作,这个谬论也就成为了真理。现在若果你去电脑城听到MP4这个词,绝对是能播放视频格式的多媒体播放器的概念,而不是能播放音频MP4 AAC的随身听。出现这种怪现象不是毫无原因的,上面已提到AAC有版权保护功能,这也是众多唱片公司支持AAC的原因,要使自己的播放器支持AAC,还得支持付一定的版权费或专利费,另外,AAC的来源也是个问题,不像MP3那么开放,网上来源极少,所以目前音频MP4播放器发展尚不成熟,鉴于以上现状,众商家干脆“借尸还魂”,把MP4等同MPEG-4缩写而论,这样也恰好应了MP4是MP3的下一代这条规律,除了支持MP3所具有的音乐播放功能外,还具备强大的MPEG-4视频播放能力,另外,恰好“4”在“3”后,从这点出发,把MP4等同MPEG-4是合理的。
能播放视频的MP3
这种播放器其实不算是MP4,本质上是MP3,视频播放只不过是其附件功能,被称作MP4,纯粹是商业炒作。这种播放器局限性极大屏幕很小(0.8~1.8英寸),闪存容量小,支持特定的格式(MTV、MP4、MPV和DMV等),而且大多数是采用OLED和CSTN等低端屏幕,所以准确地说,这只能称作可播放视频的MP3罢了。代表有:DEC F12R、金邦炫彩王、3E E1000和PISA 炫彩飞艇等。
硬盘式MP4
这类MP4是现阶段发展的主流,产品数量也占绝对的优势,对于硬盘MP4的概念,简单来说就是以硬盘作媒介的随身看。大肚能容天下,有了硬盘再也不用担心不够空间了。硬盘MP4一般来说还集成其它很多功能,例如, 数码相机、摄像机、录音笔、数码伴侣...... 本次横评有11款是硬盘MP4。
闪存式MP4
对比硬盘式MP4,闪存式MP4就是以闪存来作存储媒介的随身看,这种MP4一般都支持内接闪存卡扩充,一般都是SD卡。这次横评有两款是这类型MP4,分别是Govideo PMP-120 和 JXD-680。闪存式MP4相对小巧轻便得多,价格便宜几倍。
没有显示屏的MP4
有些厂商认为MP4的3.5英寸屏幕太小,播放高质量的视频显得寒暄,另外对于闪存式MP4的128~256M,也令人不能欣赏大片,因此这些厂商设计出一种没有屏幕的硬盘MP4,这种MP4可以通过AV-OUT等输出端输出到电视等屏幕,并且采用的是2.5英寸硬盘,体积上偏大,但是对于这种不强调移动性的MP4来说,体积上比传统的DVD机要小巧不少,市面上仅有寥寥可数的几款,这种MP4带有几十吉的容量,但售价和闪存式MP4相若。例如, 博可视MP4 。
关于MP4的各种称呼
虽然MP4这个概念有软硬之分,但是就硬件的MP4来说,根据所采用的设计标准不一样或是功能的侧重点相异又有不同的名字,例如,MP4,PMP,PMC,PVP,PVR,PMA等。
MP4
一个笼统而没有统一定义的概念,这里说的是硬件MP4的概念,MP4可以是随身看,可以是MP3的下一代,可以是所有的PMP,PMC,PVP,PVR......诸多如此的播放器的总称。
PMP( Portable Media Player)
没有统一的标准,而是完全按照厂商自己的要求生产,如iRiver PMP-120,PMP-120的软件系统基于Linux,PMP的系统一般都是Linux开发的,没有固定的软件和硬件要求,可以任意组合,但这也是造成MP4产品多样化的原因。另外,PMP的格式兼容性和解码能力跟硬件有关,所以升级比较难。
PMC( Portable Media Center)
该平台的硬件和软件都由微软统一规定,硬件方面指定用Intel的XScale处理器,而软件系统是Windows Portable Media Player,这个平台属于开放式构架,软件方面容易扩展。PMC是微软为进军移动娱乐数码领域而制定的新标准。例如,YH-999,完完全全符合PMC的标准。
PVR( Personal Video Recorder )
PVR的功能侧重点是视频录像,可以说PVR具有强大的视频录像功能,PVR一般都带有AV-IN/AV-OUT或录像功能。例如,拍得丽iTouch,Mustek PVR-H140。
PVP(Personal Video Player)
和PMP差不多的概念。
PMA( Pocket Media Assistant)
简单地说就是PDA与硬盘MP4的合体,是比较新潮的数码产品,Archos PMA 4XX系列,是全球首款也是现今唯一一款集个人娱乐,商务应用和无线上网于一体的PMA。
2.MP4的硬件构架
MP4的“芯”脏
从原理上说,MP4与MP3区别不大,但是从硬件性能来说,两者相差甚远,主要是因为视频播放功能,Divx和Xvid等MPEG-4的播放,要求中央处理器和DSP较高的处理能力,而且要有一定的系统内存,Divx编码器问世之初,编码器开发者就使用主频为400MHz以上的计算机来完成解码,可见MP4要求芯片具有很高的计算性能,很多MP4华丽的操作界面也会消耗不少的系统资源,MP4不仅仅是视频数据和图像数据的处理器,现在的MP4还是很多数码功能和多媒体功能的统一体,要实现形形式式的功能,例如,数码伴侣,视频采集,DC,FM,Game......甚至有些MP4还支持多线工作。所以MP4的芯片不仅要求具有很高的计算能力,还要集成多方面的功能。
由于MP4核心芯片的制作,工艺水平要求过高,所以一般的MP4厂商都无能为力,这些核心一般由有传统芯片大家制作,如Intel,TI,Sigma Designs等,甚至AMD也推出了MP4专用处理芯片—— AU1200。现阶段MP4主要采用的都是TI的方案和Wintel的完整软硬件方案。其中,TI(Texas Instruments)是移动娱乐设备的芯片巨头,而Intel台式平台的芯片巨头,由于TI起步早,所以现在大多是MP4都是采用TI的芯片方案占领绝大部分的市场份额。虽然硬件有一定的规范,但是软件系统没有一个统一的标准,而是格商家自己进行开发(多数是Linux),这也是“造乱”的一个很大的原因。现在绝大部分厂商都是采用TI的方案,主要的有爱可视、以及欧美和日系数码厂商的sony、东芝。
而Wintel强强联盟,推出PMC新标准,中央处理器采用Intel的XScale系列,软件系统是微软的Windows Portable Media Center系统,软件和硬件都具有统一的标准,充分体现微软进军便携媒体市场,雄心勃勃,由于系统Windows Portable Media Center,整体架构为开放式,所以可以在操作系统的基础上自行扩展应用软件。Wintel的反感,统一了业界的标准,某种程度上为MP4的发展点明了方向。目前该方案的支持这主要有iRiver、微星、三星和创新等。
TMS320DM270芯片:
TMS320DM270内部结构:
由TMS320DM270的核心,可以看出该芯片是一款功能极强大的芯片,主要由ARM(80MHz)、C54xDSP(90MHZ)和iMX(180MHz)三核心组成,其中ARM7 RISC 微处理器主要负责外部接口的管理, C54X DSP数字信号处理器负责音频方面的各种处理,而iMX引擎处理视频数据和图像数据。另外,集成的各种功能模块和控制器使其还具有其它强大的功能,如照相,读卡器,录音,AV-IN/AV-OUT等。
TI关于MP4系统方案:
TI的tms320dm270方案是MP4目前最先进解决方案之一,具有画质好和视频格式兼容性好的特证,本次横评大多数MP4都是采用该方案。MP4内部核心架构大多数都是采用中央处理器配合DSP协调工作的方式,一般中央处理器和DSP是集成在一起的。DSP(Digit Signal Processor)主要负责视频解码和编码;而中央处理器主要是处理档案管理、存取,以及使用接口、周边组件的掌控等事务。另外,某些功能模块还要增加特殊的芯片,例如DC控制模块和显示控制模块等。
从上图看,该方案主要由音频处理、视频显示、存取管理、电源管理、视频采集和TMS320DM270等几部分组成。
音频处理
音频处理方面,TI主要采用自家开发的TLV320AIC23B编码器,它一款高性能低功耗的立体声音频Codec芯片,内置耳机输出放大器,支持MIC和LINE IN两种输入方式,输入/输出都具有可编程增益调节。AIC23内部集成了模数转换(ADC)和数模转换(DAC)电路,输出信噪比可分别达到90dB和100dB,可在8K~96K的频率范围内提供16/20/24/32位的采样。 音质较为纯正,保真度高,高音响亮,低音实净。本次横评的MSI MEGAWVIEW 561就是采用这种音频解码芯片。
视频显示
视频显示即可以是通过NTSC或PAL制式往外部输出,也可以是输出到自带的液晶屏幕,现在MP4采用的屏幕主要有:CSTN、TFT和LPTS等液晶屏,关于这三种屏幕的特性与效果方面的知识,请参考太平洋较早前的文章: 《扫盲运动 便携式媒体播放器MP4全面释疑》。
存取管理
目前主流的硬盘MP4采用的都是来自HITACHI、FUJITSU及TOSHIBA的1.8英寸的为硬盘,偶尔也有采用2.5英寸笔记本硬盘的;而为了节约成本,市面上也有采用小容量和缩小体积闪存的MP4,不过对于MP4来说采用闪存作为介质,从目前的技术背景和市场价格来看,虽然闪存具有硬盘无从攀比的优点(稳定,能耗低,防震性好),但是闪存还不是正道。自HITACHI上一年发布的0.8英寸的微硬盘以来,给处于尴尬局面的MP4带来了新希望。
电源管理
关于电源的问题,正如片源一样,一直都是MP4的死穴,一般的硬盘MP4仅能支持一部大片时间的视频播放续航,这是绝对不够的,特别是对于内置锂电池的MP4,这是极不方便的,因为电池续航力太短等于失去了随身看的意义。不过,这次从接评的10多款MP4种看到了电池问题的新希望,有MP4用可拆御的锂电池,有用AA干电池,更令人欣喜的就是有当中有可以连续播放视频8小时和11小时的。想知谁是谁非,请看下文。
微软PMC采用的核心——Intel XScale PXA255
PXA255的内部构成
3.关于MPEG-4编码与格式
MP4播放器所支持的编码格式可以说是“乱中之乱”,除了PMC,由于硬件平台的没有统一的标准,软件系统也是由厂商自行设计,这是造成MP4播放器的解码兼容性和解码稳定性参差不齐的根本原因;另外,由MPEG-4编码体系洐生出来的格式很多,除PMC之外的MP4,解码兼容性和硬件有关,这就大大增加了解码的难度,视频格式本来就多例如AVI,ASF,MPG,WMV,再加上编码算法也多:MPEG-1,MPEG-2,MPEG-4,而大多MP4播放器所支持的MPEG-4编码,又有多种衍生的编码算法:DivX、XviD、H.263、 MS MPEG-4 3688 、 Microsoft Video1 、Microsoft RLE......
流媒体格式当中,微软所开发的ASF和WMV都是采用MPEG-4编码的,部分MP4支持ASF或WMV这两种流媒体格式,而RM和RMVB,这两种网络上流传极为广泛的流媒体格式,居然没有一款MP4能够支持。而mpg格式既可以是MPEG-1和MPEG-2编码又可以是MPEG-4编码。
另外需要注意的就是,MPEG-4并没有确定必须用什么扩展名,它只是一种编码方法而已,使用avi作为扩展名,是一种习惯性的沿用,这和标准的AVI是有所区别的。现在主流的MP4一般都支持DivX或Xvid编码的avi格式,但是其它很多编码的avi就不一定支持了。最后一提,格式兼容性还跟视频格式的分辨率,zhen率和比特率有关,一个支持DivX的MP4播放器,却播放不了DivX的avi,很可能跟前面的三个因素有关。
‘拾’ 大家来帮我选一下器件
精密运算放大器opa727 , opa365
高速运算放大器opa843 , opa355
完全差分放大器ths4520
差分放大器ina159
仪表放大器ina217 , ina331
比较tlv3501
可编程增益放大器pga202
电压控制放大器vca822
∑ - Δ ADC的ads1255 ( 24位)
特区艺发局ads7886 ( 12位) , ads7888 ( 8位)
流水线模数转换器ads830 ( 8位)
输出电压发援tlv5636 ( 12位) , tlv5624 ( 8位)
电流输出发援dac902 ( 12位) , dac908 ( 8位)
音频编解码器tlv320aic23b ( 24位)
双输出的DSP / FPGA的tps70302
直流/直流转换器(集成开关) tps5430 , tps54310 , tps61045
直流/直流控制器(外部开关) tps40200
电压参考lm4041c , ref3012 , ref3020 , ref3025 , ref3030 , ref3033 , ref3040
模拟开关ts5a23166