随着片上系统设计技术的发展,嵌入式技术在IT界扮演着越来越多的重要的角色。多媒体应用是嵌入式系统的一个重要方面,本文介绍了一种基于飞利浦PNX1500DSP的多媒体嵌入式系统的硬件设计以及底层驱动程序。
1 平台整体结构图 基于飞利浦的嵌入式多媒体硬件平台以飞利浦PNX1500为核心,完成视音频编码解码工作。由EEPROM存储系统最基本的启动配置程序,如配置内存和DSP工作频率,配置应用程序起始地址。我们选用三星NandFlash存储系统应用程序,如音视频编解码程序;由三星K4D551638F-TC构成系统的内存。由LG Philip的5.6英寸数字液晶显示屏构成系统的视频输出部分,该液晶屏能与1500输出的数字信号直接匹配,无需数模转换。视频输入部分由模拟摄像头与模数转换芯片SA7113组成。如图1所示。
2 系统各模块介绍
2.1 飞利浦PNX1500内部结构
飞利浦PNX1500是一款32为超长指令集的音视频和图像处理器,其内含为TM3260处理器,并行五个指令执行槽。能够运行音视频处理软件和通用控制PNX1500里的几个图像和视频协处理器
能够进行图像缩放和合成,大大提高了视频处理的性能。除此之外,PNX1500内部还集成有音频输入输出模块、网络模块、系统启动模块、硬件计时器、通用输入输出口等等。内部高速总线将多个模块连接在一起,如图2所示。
2.2 内存模块
我们选用了两片三星公司的K4D551638F-TC作为内存,共64MB,支持200Mhz工作频率。由于DDR内存技术较为成熟,就不再过多的介绍。值得注意的是,内存部分的时钟信号采用差分信号的方式,在发送端匹配接地电阻,在接收端匹配串连电阻,防止信号反射。
2.3 启动EEPROM模块
PNX1500上电后根据指定的8个引脚的电平高低来判断采取怎样的启动模式,从而从不同的存储体读取可执行的程序。启动模式分为EEPROM启动模式、Flash启动模式和辅助主机模式(例如PNX1500作为PC上显卡芯片时)。这里选择EEPROM启动模式,用上下拉电阻来配置8个引脚。由于启动程序二进制代码较短,选择容量为16KB的Atmel 24C128,通过IIC总线和PNX1500通信。启动程序中最最要的信息就是对PNX1500工作状态的配置和接下来应该的程序入口。EEPROM中配制DSP工作模式的程序如下所示。
以上程序编译为二进制代码后写入EEPROM。
由于IIC总线结构简单,硬件图省去。
2.4 Flash模块
由于EEPROM容量有限,并不能装载下视频编解码等应用程序,所以需要例如Flash这样容量合适的存储媒体。选取的是由三星公司生产的NandFlashK9F2808U0C,16M×8bit。PNX1500提供了与Flash很好的兼容,引脚的接口如图3所示。
通过阅读K9F2808U0C的手册,根据其工作时序,为上层软件编写了Flash的驱动程序,如下。
2.5 视频输入模块
本系统采用Philips SAA7113作为视频解码器,SAA7113接收标准的CVBS PAL/NTSC制式的视频信号,也可以接收S-Video视频输入信号。SAA7113内建了很多视频处理单元,通过其IIC接口可以方便的控制其色度、亮度等等。SAA7113可以选择输出CCIR656规定的数字视频信号,提供与DSP处理器的方便接口。在系统上电后,PNX开始操作IIC总线对SAA7113的寄存器进行配置,让其输出所需要的视频格式,PNX1500内部的视频输入(Video Input)单元可以工作在几种不同的模式下,用来从片外的视频源读取(这个过程是DMA操作)数据到内存中。它可以与符合ITU-TCCIR656的设备直接相连,视频数据输入后,将被分成Y/U/V分别存放在内存中。SAA7113H与PNX1500连接如图4:
本设计中,对SAA7113的设置其实就是设置他们芯片中的IIC寄存器,我们将功能做封装,实现如下接口函数。
2.5.1 基本IIC操作函数
2.5.2 初始化函数
2.5.3 以下函数针对SAA7113的某个功能作处理
类似的函数要实现很多,将这些函数写成板级支持库的软件代码包,供上层调用,构成BSP。
2.6 视频输出模块
PNX1500支持数字液晶屏数据格式。我们采用数字液晶屏来作为视频输出部分,从而省掉了数模转换的这一环节,方便了开发。选用了LG-Philps的LB064V02-A16.4英寸液晶屏,该显示屏分辨率为480×640,每个象素用18bit数据表示,采用RGB模式,每种色彩6bit。LB064V02-A1的工作信号时序图的如图5所示。
LB064V02-A1与PNX1500连接图如图6所示。
其中LB064V02-A1的时序参数都是由一定的规格要求。为了能让PNX1500的输出图像能被正常显示,设计了以下程序初始化PNX1500的视频输出模块。
2.7 音频输入输出
我们选择了具有回声消除功能的音频编解码芯片MSM7731,它与PNX1500的接口是通过PNX1500的音频输入输出模块连接的。如图6所示。
音频部分的设置有几点需要注意:将PNX1500的音频输出单元(AO)作为主控器,由其输出时钟和帧同步信号,将MSM7731和PNX1500的音频输入单元(AI)作为从设备,其位同步信号和帧同步信号由外界传来。AO_CLK和AO_WS通过设置分频系数从PNX1500的PLL处得到。
配置音频编解码芯片,音频编解码芯片的配置接口分为两种,一种通过管脚外接上拉或下拉的电阻来设定参数,由于管脚有限,所以这种方法能配置的参数均为基本参数,功能有限。另一种方法是通过单片机MCU来控制,其接口信号为串行的同步信号。我们在系统上添加一款单片机来配置该音频解码芯片。
2.8 网 络部分
选用National Semiconductor公司的DP83847作为MAC层上的设备。由于DP83847与PNX1500之间有很好的硬件兼容,故不再介绍两者之间的硬件链接。值得注意的是,DP83847的状态指示LED引脚和DP83847物理地址引脚是共用的,所以一定要用上拉或下拉电阻配置。主要的驱动函数如下。
2.9 电源系统
PNX1500的电源系统相对复杂,其核心电压为1.2V,内存操作模块工作电压为2.5V,其余模块都工作在3.3V。作为一个嵌入式平台,希望外接电源的电压总数越少越好,所以我们平台上运用了DC-DC器件,将单一的外界电源5V转换为系统所需要的多种电压。值得注意的是,由于平台上芯片和器件比较多,需要将每件器件的工作电流峰值之和作为DC-DC器件的电流参数。我们选用ST公司的LD1580芯片,这款芯片的特点是能提供最大7A的电流,输出电压范围大,由外接匹配电阻决定输出电压。一共三个LD1580芯片组成本系统,首先外接直流电源5V被LD1580转换为3.3V,然后3.3V由两个LD1580分别转换为1.2V和2.5V。电源部分电路图和输出电压计算公司如图7,其中VREF为2.5V。
此外,由于系统各芯片具有大量的I/O口,在这些I/O口进行高低电平转换时,会瞬间产生大的电流变化量,由于电路板并不是一个理想导体,存在电感效应,在电流变化过快时会产生电压差,导致误动作,所以需要在电源的电和地之间加上低阻抗通道消除电感效应带来的电压差。我们在电源的电和地之间并联220微法到100纳法的多个旁路电容,消除不同频率的电压跳变。同时对板上各个芯片的电脚也加以旁路电容。
3 印刷电路设计
由于本系统有模拟和数字信号混合,器件繁多,电压复杂,如何保证系统能够稳定工作成为需要着重考虑的问题。本系统采用10层设计,每个信号层之间由电层或者地层隔开,模拟地与数字信号的地信号分开,同时在布局的时候考虑芯片电流回流问题,防止串扰。
本文介绍了基于飞利浦多媒体DSP PNX1500的嵌入式多媒体平台的硬件设计和低层驱动。该平台能性能稳定,工作良好,具有很好的应用前景。