用户登录  |  用户注册
首 页商业源码原创产品编程论坛
当前位置:PB创新网文章中心解决方案电子通信

TMS320C5402在电视数字传输复用器中的应用

减小字体 增大字体 作者:佚名  来源:本站整理  发布时间:2009-01-10 22:42:15
(188/10 000)×6=0.1128ms,期间FIFO的填充量为0.112 8×1=0.112 KB,远不能输入码流将子卡的输入FIFO填充满而导致溢出。

4.2 码流交织和PSI信息配置

为了将6块子卡输入的TS流复合成1路TS流,主卡DSP的功能就是将6路TS流均匀交织。主卡数据通过HPI送到主卡的DSP内部RAM中,再写到外部FIFO中。由于各种码流的PID叫可能相同,需要对各路TS流的ID号进行重新设置。主卡根据预先设置的所有PID生成新的PSI表,并按照一定时间间隔发送到外部的FIFO中去。主卡的CPU以100MHz运行,输出FIFO的大小为8KB,以固定5MHz的码率发送,子卡填写的数据不会导致主卡上溢。当主卡的输出FIFO没有达半满时,填充空包,使FIFO不会下溢。

在子卡中根据分析得到的PSI信息,可以提取1路或者多路的节目流,并将PID号改为事先规定的,通过HPI通信接口传送到主卡。

4.3 HPI接口

HPI(Host Port Interface)接口可以方便地实现主卡与子卡之间的通信,而不需要额外的器件。C5402的HPI操作是8位的。当C5402运行在100MHz主频时,通信速度可达到25MB/s。HPI接口具有3个16bit寄存器:HPIA(地址寄存器)、HPID(数据寄存器)、HPIC(控制寄存器)。主卡与子卡的DSP芯片之间的连接如图4所示:HD0~HD7是8位数据线,直接接到主设备的数据线上;HCS为选通信号;HDS1~HDS2为数据锁存信号,在主设备的存取周期控制数据的传输,一般连到设备的数据选通;HR/W是读写信号;HCNTL0/HCNL1用于主设备选择存取HPI的哪一个寄存器和对寄存器的存取类型,连至主设备的地址线。由于HPI寄存器是16位的,javascript:window.open(this.src);" style="cursor:pointer;"/>而HPI与主设备仅以8位数据线相连,因而用HBIL决定当前存取的是1个字的第1个字节还是第2个字节,连到主设备地址线。

对HPI操作首先将控制字写入HPIC,然后将要存取的地址写入HPIA,最后丰取HPID,就可从HPI存储块或将数据写入HPI存储块。此外,还可选择HPIA自动增加方式,将初始地址写入HPIA,可不再操作HPIA,每存取1次数据,地址都会自动加1,因而加快了存取速度。

4.4 主卡DSP与计算机接口

为了实现系统自检、码率以及节目信息提取、输出,我们通过DSP的串口与计算机的串口进行通信。如图5所示,采用的是异步通信方式。其中75C189和75C188为电平转换芯片,C5402有2个McBSP(多通道缓冲串行口)。McBSP提供了全双工的通信制以及双缓存的发送寄存器和三级存的接收寄存器,允许连续的数据流传输,数据长度可以为8、12、16、20、24、32;同时还提供了A-律和μ-律压扩,多达128个通道的发送和接收。数据经McBSP与外设的通信通过DR和DX引脚相连。控制信号则由CLKX、CLKR、FSX、FSR四条引脚来实现。

4.5 DSP程序BOOTL0ADER的实现

BOOTLOADER是为了在上电时,将用户代码从外部加载到内部的存储器以加快运行速度。我们使用C5402外部8位并行I/O口实现BOOTLOADER程序。C5402读I/O口0xffff,这里面存放着外部存储器的首地址(数据区)。若在这个首地址内读到了关键字08 AA,就进行8位加载;若是10AA则表示16位加载。硬件系统就是加了1片3.3V的Flash,程序用编程器烧入Flash。

5 C5402的软件编程体会

(1)C语言与汇编混合编程

在运算能力不是十分紧张的情况下,用C语言开发DSP程序不仅使DSP开发的速度大大加快,而且开发出来的DSP程序的可读性和可移植性大大加强,程序修改也极为方便。采用C编译器的优化功能可以增加C代码的效率。

一般情况下,采用C语言和汇编混合编程方法有3种:①独立编写C程序和汇编程序;②直接在C语言程序的相应位置嵌入汇编语句;③对C程序进行编译生成相应汇编程序,然后对汇编程序进行手工优化和修改。可以从C程序中访问汇编程序的变量和常量,也可以在汇编程序中访问C程序变量。

(2)预防流水线冲突

流水线操作是DSP实现高速度、高效率的关键技术之一。在TMS320C54X中采用了深度与6级的流水线操作,因此流水线冲突不可避免的。一般情况下,当发生流水线冲突时,由DSP自动插入延迟解剖冲突问题,但有时需要程序员通过调整程序语句的次序或在程序中插入一定量的NOP来解决。例如:

STLM A,BRC

NOPjavascript:window.open(this.src);" style="cursor:pointer;"/>

RPTB LOOP

语句

LOOP

(3)存储空间要正确分配

C5402总共有192K字大小存储空间,64K字的程序区、64K字的数据区和64K字的I/O区。当寄存器PMST的OVLY=0时,片内RAM在数据区内可访问,在程序区不可访问;当OVLY=1时,片内RAM映射到程序区和数据区,但数据页(地址从0H~7FH)不映射到程序空间。我们在程序编程中选用后种模式。程序和数据同一块片内RAM,在编写CMD文件时程序和数据区间不能发生重叠。

(4)指令的使用

①TMS320C54X的汇编有算术指令和程序指令,2种指令可以互换。当外部端口操作时使用端口指令PORTW和PORTR。

②利用DADST和DSADT指令,可以同时在1个累加器中进行2次运算。

③利用DADD和DSUB可实现32的加减法。

④利用CMPS、SACCD、SRCCD、STRCD四个条件存储指令,以减少条件判断指令的开销;利用MAX、MIN、FIRS、LMS可以减少运算所需的指令周期;利用C54的并行指令可以省去多次数据存储,提高编程的效率。

⑤充分利用*(IK)寻

上一页  [1] [2] [3]  下一页

Tags:

作者:佚名

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
PB创新网ourmis.com】Copyright © 2000-2009 . All Rights Reserved .
页面执行时间:27,578.13000 毫秒
Email:ourmis@126.com QQ:2322888 蜀ICP备05006790号