EDN首页   博客首页

最新日志

发表于:2007-7-13 23:45:04
标签:无标签

1

MPEG-2信道解复用器的DSP+FPGA设计

                转自http://www.ddsic.com/modules/article/

   数字高清晰度电视(High Definition Television)简称HDTV,是继黑白电视和彩色电视之后的第三代电视系统。其图像细腻逼真,质量与35 mm电影相当,再配以环绕音响,使收视效果大幅度提高。它将成为21世纪的主要电视产品,具有潜在的巨大经济效益。因此,日、欧、美等发达国家都相继投入了大量人力、物力来开发HDTV系统。我国从1996年启动国家重大产业工程项目HDTV功能样机系统研究开发工程。

1  MPEG-2标准简介以及数字电视功能分析

    MPEG(Motion pictures expert group)译为运动图像专家组,他是在ISO的召集下,为数字视频和音频制定压缩标准的专家组。该组织于1994年推出MPEG-2标准。此标准分为4个文件,分别是:

    系统层(System,ISO13818-1)描述视频,音频的数据复用方式和视频,音频同步方式。

    视频压缩层(Video,ISO13818-2)描述数字视频编码方式和解码过程。

    音频压缩层(Audio,ISO13818-3)描述数字音频编码方式和解码过程。

    一致性(Conformance,ISO13818-4)说明测试编码码流的过程,检验是否符合前3个文件的规定。

    MPEG-2运动图像及其伴音通用国际标准在数字音/视频领域得到了广泛的应用。在MPEG-2中,定义了两种形式的码流,即传输流(TS)和节目流 (PS)。节目流一般用于相对无错的环境中,如交互式多媒体业务,其长度是可变的。传输流则用于有错误的环境中,如数字电视的地面广播传输,其分组长度固定为188 b。传输流和节目流都是编码后的基本数据流(ES)按照一定的格式打包后形成PES包,再加上一些系统级信息而构成。码流的形成过程可以用图1来表示。其中,采样得到的视频数据流和音频数据流经过编码器后,成为MPEG-2 基本流(ES),再通过打包,成为包化ES流(PES),再经过传输复用器,将音频PES,视频PES,以及其他的数据和控制信息,转换成MPEG2传输流(TS).TS流经过信道编码和调制之后,发送到信道中。在接收端,正好相反,经过解调,信道解码和前向纠错之后,再通过传输解复用器,分别输出视频 PES流,音频PES流,以及数据和控制信息,再通过视频解码器和音频解码器后,分别送入DTV显示系统和音频播放系统。

 

2  关于传输流以及传输流中几个重要概念

    传输流TS包的结构如图2所示。

 点击看大图

    传输流由一道或多道节目组成,每道节目由一个或多个原始流和一些其他流复合在一起,包括视频流,音频流,节目特殊信息流和其他数据包。

    首先介绍视频和音频PES流是如何转换成TS流的。PES流是由视频或音频基本流分别打包处理后形成的PES包系列,PES包的长度是不定的。每个PES包的包头携带了:

    流标识(SID)由同一个ES经打包处理后得到的PES,其流标识相同。

    显示时间戳(PTS)用于视频和音频之间的同步控制,它指示对解码后视频和音频播放的适当时刻。

    解码时间戳(DTS)用于视频基本流解码器和音频基本流解码器的同步控制,它指示对视频和音频基本流解码的适当时刻基本流的速率控制信息。

    由于TS包长固定为188 b,所以在打包时,PES包长若大于188 b,则对其进行分段处理,因为PES是放在TS包的有效载荷区进行传送的,所以分段后每段大小为184 b,不足184 b的加上适应字段构成184 b,有没有适应字段则由包头中的适应字段控制来指示。每段加上TS包头就形成一个TS包。

    TS包包头中各字段含义如下:

    同步字节指示一个TS包的开始。

    传输错误指示表示该传输包在传输过程中有无错误。

    有效传输开始指示若有效载荷区传输的是来自PES包的数据,则有效传输开始指示表示有效载荷区的第一字节是否为被分段的PES包的起首字节。若有效载荷区传输的是来自节目特殊信息的数据,则有效传输开始指示表示载荷区第一字节是否是PSI数据起首字节的位置指针。

    传输优先指示表示的是具有相同的PID的传输包的优先级。

    连续计数器PID相同的传输包的计数。

    此外,在TS包包头的调整字段中,有一个重要的域PCR,即节目时钟基准。它以固定的频率插入包头。在解码端,正是根据PCR来恢复系统时钟的。

    PSI信息使用4个表来定义码流的结构,分别为节目关联表(PAT)、节目映射表(PMT)、条件接收表(CAT)和网络信息表(NIT)。其中,最重要的表信息是PAT和PMT。PAT是PSI信息的根,其PID是0,表中列出了传送码流中所有节目的节目映射表的PID,PMT表中列出与该节目有关的所有基本码流,如视频、音频和PCR及有关信息的PID。除PAT表包的PID永远是0外,还有两种包的PID是预留的:

    ①空包,用来作码流填充,PID是8191。

    ②CAT包,PID值是1。所有PSI信息必须以一定的频率发送,每秒钟至少要发送20次。

3  信道解复用器的原理

    信道解复用器位于信道调制前端,它对输入TS流进行处理以适应该信道要求,基于MPEG-2的实时TS流信道解复用器的原理框图如图3所示。系统包括码流输入接口、PCR校正模块、PSI分析和重新生成模块及用户接口等部分。

    码流输入接口支持ASI(异步串行接口)和SPI(同步并行接口)两种输入格式。输入信号经过接口电平转换,变为并行TTL电平信号。输入TS流的最大数据率可达120 Mb/s,该系统实现两路独立的TS流输出,它们各自的数据率分别由CLOCK1和CLOCK2时钟决定。其取值范围从1.5 Mb/s到120 Mb/s。

    系统中核心部分为2片FPGA和1片DSP,其中1片FPGA主要完成PID过滤和PCR延时补偿,另外1片负责用户接口。而DSP则负责分析TS流,根据用户设定分路,并生成新的PAT及PMT数据包。CLOCK1和CLOCK2来自后端信道调制器的时钟,输入的单路多节目TS流的内容将根据用户的设定被分别分配到TS1和TS2,输出码率分别决定于CLOCK1和CLOCK2。DSP前端和后端的FIFO消除了输入输出码率不同所带来的数据丢失现象。 27 MHz的本地时钟用来补偿输入TS流的PCR在系统中所产生的延时。用户接口通过一双口RAM与系统交换相关的设定信息。下面对系统的几个重要部分说明如下:

 

3.1  码流分析

    信道解复用器系统进入正常状态工作前要完成用户参数设定,用户最关心的参数是输入TS流中所含节目类型、PID号、码率等信息。系统首先会对输入的TS进行分析,从中提取出所有的节目信息,并且计算出不同类型数据包的码率。用户根据这些分析结果可以了解到目前输入TS流的所有基本信息。

3.2  用户设定  

    根据用户的实际需要,输入TS流的节目内容可以分别被指定分配到两个输出通道,并且允许同一个节目同时被分配到两个通道,用户也被允许修改PID号。比如:输入为一个22 Mb/s的TS流,包含3个节目,每个节目又包含多个视频、音频等数据流。假如目前用户有两个输出信道,一个为829 Mb/s,另一个为2356 Mb/s,并且用户打算将输入码流中的节目1分配到信道1,节目2和3分配到信道2。用户则可根据需要做相应的设定,解复用器系统将根据用户的设定来分别为输出TS1和TS2生成新的PAT和PMT并且将相应的视频、音频等数据包分配到相应的通道。用户选择节目时也可以只选择该节目中的部分数据流。比如某个节目包含4个视频流,而用户只对其中的两个视频流感兴趣,那么用户在设定时可以只选择需要的视频流,在系统进入正常工作时,未被选中的数据流将被自动过滤。

3.3  PCR补偿

    PCR是TS流的重要部分,它的精度决定了解码端恢复时钟的精度,直接关系到解码器是否能正常的工作。输入TS流中各节目的数据包从进来到出去会在信道解复用器的FIFO内产生一定的延时,如果不对其PCR做相应的延时补偿,其输出TS流的PCR误差将有可能远大于协议所规定的±500 ns的误差范围,从而导致解码不正常。假定某个PCR在T1时刻进入信道解复用器,在T2时刻从解复用器输出,则该时刻的PCR值将被替换为PCR′。

    PCR′ = PCR +(T2-T1)

    延时补偿运算中所用到的时间标记T1、T2是由本地27 MHz时钟计数所得,由于码流在解复用器内的停留时间并不会太大,所以用本地27MHz记录延时带来的累积误差很小。

3.4  用户接口

    对于解复用器后端的信道调制器来说,最关心的是如何从信道解复用器中得到节目信息,以及如何将所选节目分配到TS1和TS2上。这些信息是通过用户接口进行交换的。

    考虑到本系统需交换的信息较多,这里采用一容量较大的16位地址的双端口RAM(DPRAM),作为信道调制器和解复用器交换信息的平台。信道解复用器在对输入TS流进行分析后,将所提取的各种节目信息放在双口RAM的相应地址中,以供信道调制器读取和修改。解复用器根据调制器送入的读写信号及相关数据和地址信息,由FPGA电路实现取指和译码,将调制器所需信息从DPRAM的相应地址中取出并送给信道调制器,或将信道调制器修改后的信息从DPRAM的相应地址中取出。

点击此处查看原文 >>

系统分类: DSP   |    用户分类:    |    来源: 转贴

评论(1) | 阅读(1298)
发表于:2007-7-13 23:41:26
标签:无标签

2

DSP中的存储器共享与快速访问技术设计

转自http://www.ddsic.com/modules/article/

    在多任务信号处理系统中,为了提高信号的处理速度,往往使用几个DSP协同工作,为此,必须要解决好几个DSP对共享存储器的高速访问问题。具体来说,主要要解决好两个问题:
  (1)通过建立竞争仲裁机制解决存储器访问共享竞争问题;
  (2)解决批量数据高速访问问题。DSP对批量数据的访问一般都是通过启动DMA完成,而DMA一旦启动,数据的传输就不受DSP控制,因此,要设计专门控制电路和缓冲区来确保高速数据传输的稳定性和可靠性。

  本文重点介绍了两个TMS320C5402之间共享SRAM和DDRSDRAM的设计方法。

1 SRAM的共享访问
  图1是2片TMS320C5402共享SRAM 的原理图。为了保证对SRAM访问的可靠性,2片DSP共用同一个系统时钟和具有相同的访问优先级。当2 片DSP同时对共享存储器发出访问需求时,FPGA中的共享仲裁控制逻辑会在第1个存储器访问周期允许第1片DSP对SRAM进行访问,同时向第2片 DSP发出READY等待信号,然后在下一个存储器访问周期撤销该等待信号,允许第2片DSP对SDRAM进行访问。如果进行批量数据传输,则2片DSP 对应的READY信号会交替启动。FPGA中的2个双向缓冲器是互相禁止的。另外,在DSP的软件编程时要注意,在软件等待周期寄存器被写入后至少要等待 2个时钟周期DSP才会启动对READY信号的检测。

2 DDRSDRAM的高速共享访问
  在上述方式中,如果2片DSP同时要对共享存储器进行访问,其访问速度将会降低一倍。在实际的信号处理系统中,特别是在连续视频信号的编码、压缩与速访问,如果采用大容量双口RAM,其硬件成本开销太大。现在PC机中大量使用的双速数据同步动态存储器(Double Data Rate Synchronous,DRAM)具有存储容量大、访问速度快、价格低廉等特点,因此在大容量高速数字信号处理系统中,只要解决好对DDRSDRAM的读写访问控制问题,就能解决好大容量高速存储器的共享访问问题。

2.1 DDRSDRAM的读写访问特性
  图2为现代公司的HY5DV651622双速同步动态存储器的功能框图。其存储容量为8 Mb,数据宽度为16 B,分为4个页面,采用行列地址复用方式。在时钟的上升和下降沿均可以进行数据的读写操作。对DRAM的控制包括命令控制和数据读写控制,在命令控制中主要包括模式寄存器设置、存储器自动刷新控制等,通过模式寄存器的设置可以使存储器工作于猝发读写方式,读写长度可以达到256个地址。 

2.2 共享DDRSDRAM的工作过程
  为了保证 DSP对SDRAM大数据量访问的高效性,将SDRAM设置为猝发读写模式,DSP设置为DMA方式,在FPGA中设置容量均为128 b的SRAM缓冲区B0和B1做为数据缓存区,从SDRAM中输出的数据或输入至SDRAM的数据都要经过B0和B1,通过控制寄存器的设置将B0和B1 都映射到2片DSP中地址为FF00H到FF80H的数据区间,但同一时刻1片DSP只能访问B0或B1中的1个。

  在实际工作中,当一片DSP访问B0时,另一片DSP或SDRAM访问B1;相应地当一片DSP访问B1时,另一片DSP或SDRAM则访问B0。如果SDRAM和DSP 同时向同一个数据缓冲区B0或B1写入或读出数据,FPGA会自动禁止,并通过控制寄存器向DSP传递数据读写状态错误信息。这种数据传递方式不仅加速了 DSP对数据的访问速度,而且解决了DSP和SDRAM之间时钟频率不同步问题,不用像图1那样让2片DSP共享同一个时钟。SDRAM与双DSP的接口如图3所示。 

点击看大图

  具体来说,DSP对SDRAM的访问分以下两种情况:
  (1)同时只有1片DSP对SDRAM访问 此时B0,B1均属于该DSP所有,以读数据为例,首先DSP将需要对SDRAM访问的首末地址通过控制寄存器写入 FPGA,并且设置B0,B1为空的标志,然后起动数据传送命令,FPGA在收到该命令后读入128字入B0,并设置B0的标志为满,随后再读入128字入B1,并设置B1的标志为满;接着判断B0的标志是否为空,若为空则读出128字入B0,并设置B0的标志为满,否则等待直到B0的标志为空,判断B1 的标志是否为空,若为空则读出128字入B1,并设置B1的标志为满,否则等待直到B1的标志为空。如此反复,直到读取数据结束或收到数据读取结束命令为止。对DSP来说,他在发出起动数据传送命令后,判断B0标志是否为满,若为满,则起动DMA读取该128字,读取结束后设置B0的标志为空,然后用同样的方法去读取B1中的数据。如此反复直到将规定的数据读取完毕为止。

  (2)2片DSP同时对SDRAM访问 与单片DSP的访问方法类似,通过B0、B1及相应的标志位设定完成数据的访问。

2.3 共享DDRSDRAM的读写访问逻辑设计
  DSP提供下列信号给外部存储器用以完成外部控制:CLK,CS,A0~A15, D0~D15,R/W,MSTRB,ISTRB和IS,但是 DDRSDRAM使用的控制信号为:CLK,/CLK,CKE,/CS,/RAS,/CAS,/WE,数据总线DQ0~DQ15和地址总线A0~A11。由于控制信号的不同,因此在DSP和SDRAM的接口电路中需要用逻辑电路根据DSP的命令产生SDRAM的控制信号。正是由于接口电路的这种复杂性,在设计SDRAM和DSP的接口过程中才需要用FPGA来完成。

  从图3可以看到,FPGA的控制主要包含3个部分:控制寄存器接口、缓冲区接口和SDRAM控制接口。
  (1)控制寄存器接口 主要包括对DSP地址信号和控制信号的解码;SDRAM的读写模式选择;B0和B1的地址、数据的切换选择及标志控制;读写首末地址的设置等。
  (2)缓冲区接口 主要代表2个缓冲区B0和B1的相关信号产生,主要有:读写信号;地址信号(ADDR[6-0]);数据输入输出信号(DATAIN[15-0]和DATAOUT[15-0])等。
  (3)SDRAM控制接口 产生SDRAM的控制信号、地址信号与数据总线信号,完成SDRAM的3项功能:刷新、读、写。其中读、写主要通过猝发方式进行。由于SDRAM是动态RAM,为了防止数据丢失,必须对其进行动态刷新。在SDRAM控制接口部分设计了专门的刷新电路来完成这项功能。

3
 

    由于FPGA内的SRAM访问速度可以达到10 ns以上,而DDRSDRAM的访问速度比普通的SDRAM快一倍,因此,在采用DDRSDRAM实施存储器共享后,不仅大大节省了系统成本,而且通过提高FPGA对DDRSDRAM的访问速度后,系统对数据的访问速度并没有受到影响,可以达到100 Mb/s以上。

点击此处查看原文 >>

系统分类: DSP   |    用户分类:    |    来源: 转贴

评论(0) | 阅读(1011)
发表于:2006-10-7 2:15:49
标签:无标签

12

UltraEdit的上百种语法高亮文件下载

UltraEdit的上百种语法高亮文件下载,具体添加请看其中说明!(推荐)

Text Editor – HEX Editor
HTML Editor – Programmers Editor

Additional Downloads Page

* This page has been put together to provide you, the user, with wordfiles, macros, tag lists, and autocomplete files generated for different programming languages, all of which have been developed by other users.

* I have not necesessarily tried all of the wordfiles, macros, tag lists, and autocomplete files here so use them with care, however, I only add the files that I believe are going to be helpful.

* If you have any suggestions or contributions you would like make to this page, please send an email to me.

* If wordfiles, macros, tag lists, dictionaries, or autocomplete files are not what you intended to download, please return to the Main Downloads page for UltraEdit or UltraCompare Shareware Evaluation Files.

Wordfiles

Each wordfile contains one language. Each wordfile has been set up to be language twenty "/L20" (UltraEdit supports up to twenty languages - "/L1" to "/L20" - in one wordfile at the same time). With this in mind, you should be able to open the file in your browser and copy it and append it to your existing wordfile without too much difficulty.

The "/Lnn" number corresponds to the language's position in the Language Lists that are available via the follwing dialogs:

  1. View --> View As (Highlighting File Type)
  2. Advanced --> Configuration --> Syntax Highlighting --> Language dropdown
If a new lanugage is added as "/L20", for example, the language list will look like this:

     8. ...
     9. JavaScript
     10. language 10
     ...
     19. language 19
     20. The New Language You Added

The default languages in wordfile.txt are numbered from /L1 to /L9. New languages that are added should not conflict with those, or with each other. For example, Python 2 and and Unix Shell Scripts are *both* numbered /L20. So one or the other has to change, if both extensions are to be added. You add new languages by appending the contents of appropriate wordfile to wordfile.txt.

If it is desired to incorporate multiple wordfiles into the default wordfile it may be easiest to download and save these in a temporary directory and work from the saved local copies while editing the wordfile. You can open the active wordfile for editing by going to Advanced -> Configuration -> Syntax Highlighting (in UltraEdit) and clicking on the Open button.

To edit wordfile.txt go to Advanced --> Configuration --> Syntax Highlighting and click on the "Open" button beside the "Full path name for wordlist". After editing the file, it is not necessary to restart UltraEdit. The changes take effect immediately, as may be seen by reloading a file with an extension listed in one of the newly added wordfiles.

In the case of the zip files you will need to download these and unzip them and then copy and paste the wordfiles from the archive. UltraEdit's help file includes help on modifying the wordfile if it is needed under Syntax Highlighting.

Click on the type of item you wish to download:

ALL WORDFILES IN ONE PACKAGE
ABAP/4 - 08/02/2002
ABB Rapid Command - 08/24/99
ABB-S4 Rapid Command - 02/18/2003
ActionScript 2.0 - NEW - 04/14/2004
ASL/ACPI - 12/01/2000
Ada95 - NEW - 04/14/2004
ADEPT Command Language - 06/02/99
ADEPT V+ - 7/24/2003
ADSP2181 - 12/01/2000
AHDL - 03/28/2000
AlphaScript - 03/28/2000
AML (Arc Macro Language) & SML (Simple Macro Language)
AMPL - 03/28/2000
AMTrix- 03/02/99
ANSYS - 05/30/2000
ANSYS Parametric Design Language - 03/28/2000
Apache Web Server - 10/12/2001
ASN.1 - 10/12/2001
ASP (JScript) - 03/28/2000
ASP (PerlScript) - 08/02/2002
ASP (Visual Basic) - 03/28/2000
ASP (Visual Basic/HTML) - 12/31/2001
ASP (VBScript) - 03/28/2000
ASP (VBScript - Hipertools) - 10/12/2001
ASPX - 08/02/2002
ASPECT - 10/12/2001
Assembly for 21xx - 05/30/2000
Assembly for 2106x - 01/21/99
Assembly for 6502 - 08/02/2002
Assembly for 6809
Assembly for 68HC908 - 12/01/2000
Assembly for 68HC11 - 03/28/2000
Assembly for 8051 - 12/01/2000
Assembly for ARM - 12/01/2000
Assembly for AVR - 08/24/99
Assembly for CALM - 10/12/2001
Assembly for C167 V7.0 - 08/02/2002
Assembly for C515C - 12/01/2000
Assembly for DSP56K - 03/28/2000
Assembly for F240 - 03/28/2000
Assembly for H8S - 12/01/2000
Assembly for MASM - 06/02/99
Assembly for Microchip PIC - NEW - 04/14/2004
Assembly for MIPS - 08/02/2002
Assembly for M68000 - 10/12/2001
Assembly for MPC860 - 12/01/2000
Assembly for NEC 75X Microcontroller - 11/3/98
Assembly (Netwide) - 08/02/2002
Assembly for NSC COP8 - 7/24/2003
Assembly for RDS-500 - 08/24/99
Assembly for S/370 - 05/30/2000
Assembly for TEAK - 10/12/2001
Assembly for TI MSP430 - 02/18/2003
Assembly for MSP4301 - 7/24/2003
Assembly for V850 - 10/12/2001
Assembly for x86 - 10/12/2001
Assembly for x86 (GNU) - 12/31/2001
Assembly for Z80 - 08/24/99
Assembly for z/OS - 7/24/2003
Assembly (High Level) - 12/31/2001
AutoIT - 10/12/2001
AutoIT 2.61 - 12/31/2001
AutoIT 2.64 - 7/24/2003
AutoIT 3.00 - NEW - 04/14/2004
AutoLev - 12/31/2001
AutoLISP - NEW - 04/14/2004
Automate 5.04 - NEW - 04/14/2004
Avenue - 03/28/2000
AVISynth - 7/24/2003
AWK - 06/02/99
Baan C - 05/30/2000
BaanERP - 05/30/2000
Baan 3 / 4GL - 01/21/99
Bash - 08/24/99
Batch - 12/01/2000
BibTex - 06/02/99
Blitz Basic 3D - 10/12/2001
Blitz Basic v1.73 - 08/02/2002
Blitz+ v1.35 - 7/24/2003
BM Scripts - 03/28/2000
BMC Patrol Scripting - 7/24/2003
Bourne & Korn Shell - 08/24/99
Broadvision JavaScript - 10/12/2001
Bullant - 10/12/2001
C/C++ - 03/18/99
C/C++ for Amiga - 7/24/2003
CA Visual Objects - 10/12/2001
ChordPro - 7/24/2003
C++ Header - 12/01/2000
C++ Source - 12/01/2000
C# - 7/24/2003
C for C167 - 08/02/2002
CA OpenROAD 4.01 - 10/26/98
CA Realizer 2.0 - 2/24/98
Coq - 02/18/2003
Cascading Style Sheets 2.0 - 10/12/2001
Cascading Style Sheets for IE 6 - 08/02/2002
Ch - NEW - 04/14/2004
Cisco IOS Config - 10/12/2001
Clarion - 12/01/2000
Clarion-Template - 12/01/2000
ClearBasic - 10/12/2001
Clipper - 03/02/99
CLIPS - 6/25/98
Cobol - 03/28/2000
Cold Fusion 4.31 - 2/24/98
Cold Fusion 4.5/5.0 - 08/02/2002
Comau PDL - NEW - 04/14/2004
Config Files - 03/28/2000
Corba - 06/02/99
Cron Scripts - 10/12/2001
CSound csd - 10/12/2001
CSound orchestra - 10/12/2001
CSound score - 10/12/2001
Cue Sheets - 03/02/99
Cup 1 - 08/02/2002
CUPL - 08/02/2002
C-Win API - 01/21/99
Dataflex - 03/02/99
DB4Web - 03/28/2000
DB/C - 03/28/2000
DCAL - 03/28/2000
Digital Command Language - 10/12/2001
Delphi 4 - 03/28/2000
Dial-Up Scripting - 7/24/2003
Direct X Mesh - 12/31/2001
Directives - 01/21/99
Divx Player 2.0 - 10/31/2003
docBook - 7/24/2003
DOS Batch - 10/12/2001
DOS/NT Batch - 08/02/2002
DSSSL - 7/24/2003
DTD (XML) - 10/31/2003
DTML (Zope) - 08/02/2002
Dial-Up Scripting - 7/24/2003
DXL - 12/01/2000
e Scripts - 02/18/2003
Eiffel - 03/28/2000
EPLD - 03/28/2000
EScript 88 - 05/30/2000
EScript 92 - 10/12/2001
Esprit post processor language - 11/17/97
ESRI Avenue(DBa 2.1) - 10/12/2001
Euphoria - 05/30/2000
EXAPTplus - 08/02/2002
Fame - 03/28/2000
FlagShip (Clipper/dBASE) - 11/17/97
Flash ActionScript v5 - 10/12/2001
Flash ActionScript - JavaScript - 10/12/2001
Flash MX ActionScript 3 - 08/02/2002
Flash MX ActionScript 2004 - 10/31/2003
FLISP - 08/24/99
Focus - 03/28/2000
Formida - 10/12/2001
Fortran 90 - 05/30/2000
FoxPro 2.6 - 12/01/2000
Visual FoxPro 6.0 - 12/01/2000
Frame-/ElmScript - 01/21/99
Gauss - 10/31/2003
General Algebraic Modeling System - 08/02/2002
GDL Scripts - 03/28/2000
GED2HTML - 03/28/2000
Gedcom - 03/02/99
Gembase - 08/02/2002
Genexus - 7/24/2003
Geopak - 10/31/2003
Ghost Installer - 7/24/2003
GNU Makefiles - 08/02/2002
Hamster Scripts - 03/28/2000
Hamster Scripts - NEW - 04/14/2004
Hamster Mail Filter - NEW - 04/14/2004
Haskell - 08/24/99
HTML 4.01 - 10/12/2001
HTML/PHP/SQL - 12/01/2000
Hugo - 03/28/2000
IBM Bookmaster - 04/14/99
IBM DirectTalk - 10/12/2001
IBM Net.Data - 08/24/99
IDL - 10/12/2001
Inform - 03/28/2000
Inform 6 - 03/28/2000
Inger - 7/24/2003
INI Files - 03/28/2000
Informix 4GL - 08/02/2002
Informix Forms - 08/02/2002
Install Shield - 10/31/2003
Interbase SQL - 5/18/98
JamagicScript - 10/12/2001
Jasmin - 12/01/2000
Java 1.1.7/Swing - 03/28/2000
Java 1.2.2 - 08/24/99
Java 1.2 with FAME TimeIQ - 03/28/2000
Java 1.3 - 10/12/2001
Java 1.4 - 08/02/2002
Java 1.4 with JSP - 08/02/2002
JavaScript - 08/02/2002
JavaScript 2.0 - 10/12/2001
JavaScript/WMLS - 05/30/2000
Jess 6.1 - 10/31/2003
JHTML - 12/01/2000
JScript - 6/25/98
JSP - 03/28/2000
JSTL - 7/24/2003
Karel - 7/24/2003
Kawasaki - 7/24/2003
Kixtart - 10/12/2001
Kixtart v4.11 - 02/18/2003
Kixtart v4.12 - 7/24/2003
Kixtart v4.22 - 10/31/2003
KRL - KUKA Robot Language - NEW - 04/14/2004
LaTex - 03/17/99
TeX/LaTex (ATT98580) - 10/31/2003
LDAP - 03/02/99
LDIF for the Netscape Directory Server - 03/02/99
Lingo - 03/28/2000
Lingo 8.51 - 08/02/2002
Linker 6.0 - 08/02/2002
Linker 7.0 - 08/02/2002
Lisp - 12/01/2000
Litestep - 08/02/2002
LOGIC - 08/24/99
LotusScript - 03/02/99
LotusScript 5 - NEW 04/14/2004
LPC - 12/01/2000
Lotus Script 5 - 7/24/2003
Lua - 08/02/2002
LULL - 10/12/2001
Lumonics GCode - 05/30/2000
Macro Scheduler Script - 02/18/2003
Macro ToolsWorks - 7/24/2003
Makefile - 05/30/2000
Map - 08/02/2002
MapBasic - 6/25/98
Maple - 02/18/2003
Mapserver - 10/12/2001
Mason - 05/30/2000
MathML - 11/3/98
MATLAB 5 - 01/21/99
MATLAB 6 - 10/12/2001
Maxima 5.9.0 - 7/24/2003
MAXScript - 12/01/2000
MDX - NEW - 04/14/2004
Maya Embedded Language (MEL) Script - 10/12/2001
ME10 Macro Language - 10/12/2001
MessageBuilder - 05/30/2000
Microsoft Resource Files - 08/02/2002
MicroStation Basic - 04/14/99
Mill G Code - 04/14/99
MINC DSL - 11/17/97
Miva - 05/30/2000
Modelica - 10/12/2001
Modula 2 - 05/30/2000
Modula 3 - 03/28/2000
MOF - 10/12/2001
Mosel - 7/24/2003
Motive Maps - 04/14/99
Motorola DSP56000 - 11/17/97
MRTG Config - 10/12/2001
MSIL - 02/18/2003
MSSQL 7 - 10/26/98
MSSQL 2000 - 08/02/2002
Mud Master Script - 05/30/2000
Multibase SQL - 10/12/2001
Mumps - 01/21/99
MySQL - 03/28/2000
Navision - 08/02/2002
NC Files - 08/24/99
NC Siemens 840D - 08/02/2002
netCDF CDL - 11/17/97
Neuron (MC3150,3120) Chip Language - 04/14/99
nnCron - 7/24/2003
Notes Formula Language - 03/28/2000
NQC - 08/02/2002
NSIS Installer - 7/24/2003
NT Commands - 03/28/2000
NVIDIA Cg 1.0 - 7/24/2003
OCAML
OEM Setup - NT INF file language - 10/26/98
Omnimark - 08/24/99
OpenROAD - 08/24/99
OPL - 03/02/99
Oracle SQL - 10/12/2001
Palm Pilot Resource Script - 12/01/2000
Paradox
Pascal - 10/12/2001
PASCALFC - 7/24/2003
Passport - 11/3/98
Patrol Scripting - 03/28/2000
Pearl - 6/25/98
PeopleCode 8.14 - 7/24/2003
PeopleSoft SQR - NEW - 04/14/2004
Perl - 03/02/99
Perl/CGI - 10/12/2001
Perl/Tk - 08/02/2002
Portable Game Notation - NEW - 04/14/2004
PHP - 12/01/2000
PHP3 - 03/28/2000
PHP4 - 10/12/2001
Pick Basic - 08/02/2002
Pixar's Renderman Interface - 04/14/99
Pixar's Renderman Shader - 04/14/99
PeopleSoft SQR - 10/31/2003
Pixel Shader 1.4 - 12/31/2001
PL/I - 7/24/2003
PL/I IBM-Visual Age - 02/18/2003
PLM - 05/30/2000
PL/SQL - 10/12/2001
PocoMAIL - NEW - 04/14/2004
PostScript - 08/24/99
PovRay - 10/12/2001
PowerBasic - 08/24/99
PowerBuilder 7 - 03/28/2000
PowerTerm - 10/12/2001
Progress 8.3 - 11/3/98
Progress 9.1 - 10/31/2003
ProvideX - 7/21/97
Python - 05/30/2000
Python 2.0 - 10/12/2001
Python 2.3 - NEW - 04/14/2004
QBasic - 03/28/2000
QBasic 7.1 - 08/02/2002
QNAP - 7/24/2003
Quake Configuration - 03/02/99
Quake 3 Arena Shader - 10/31/2003
R Scripting - 02/18/2003
Rapid Q - 08/02/2002
RealPix - 11/3/98
RealText - 11/3/98
REBOL - 10/12/2001
REXX - 03/28/2000
RTF - 05/30/2000
Ruby - 12/31/2001
S/S+ - 01/21/99
S/390 Assembler Macro Language - 7/24/2003
SACS IV - 03/28/2000
SAP - ABAP/4 - 12/01/2000
SAS - 5/5/98
SBP - 7/24/2003
Scenix - 05/30/2000
Schema - 10/12/2001
Scheme - 08/24/99
Scilab 2.7 - 7/24/2003
SearchScript - 03/28/2000
Standard Delay Format - NEW - 04/14/2004
SDL-PR - 10/12/2001
SGML - 08/24/99
Simulink - 12/31/2001
Sisctus Prolog - 10/12/2001
Small - 12/31/2001
SmartGEN Template - 08/02/2002
SMIL - 11/3/98
Spin - 03/28/2000
SPSS Base - 7/24/2003
SQL/SQC - 08/02/2002
SQL Server Manager - 10/12/2001
SQR - 03/28/2000
Stata 7 - 10/12/2001
Sybase 11.x SQL - 04/14/99
Symbian OS - NEW - 04/14/2004
System Policies - 03/02/99
Tcl/tk - NEW - 04/14/2004
Teradata SQL - 12/01/2000
Tera Term Language - 7/24/2003
Tivoli - 10/12/2001
TSL - NEW - 04/14/2004
Transact SQL - 7/24/2003
True Basic - 7/24/2003
Turbo C - 08/02/2002
Turbo Pascal- 03/02/99
UC - 08/02/2002
UC4 - 7/24/2003
UEMacro - 12/01/2000
UG/APT Source - 05/30/2000
UniBasic 5.2 - 08/02/2002
Unidata - 10/12/2001
Uniface 6 - 03/28/2000
Uniface 7.1 - 03/28/2000
Uniface 7.2 - 03/28/2000
Unisys Linc LDL - 08/02/2002
Universe DATABASIC - 08/02/2002
UNIX Shell - 10/12/2001
UnrealScript - 7/24/2003
VB - 08/24/99
VB.Net - 12/01/2000
VBScript - 12/01/2000
Velocity (Jakarta) - 12/31/2001
Verify- 03/02/99
Verilog - 5/5/98
Verilog 2001 - 10/31/2003
Verity Style - 5/5/98
Verity Topics
Vertex Shader 1.1 - 12/31/2001
VHDL - 08/24/99
VHDL 9.3 - 08/02/2002
VircScript - 2/28/98
Visual Dialog Script - 03/02/99
Visual Objects - 10/12/2001
Visual Pro 5 Basic - 10/12/2001
Voice XML - 10/12/2001
VOS PL/1 - 08/24/99
VRML - 8/21/98
VRML97 - 10/12/2001
VTML - 03/02/99
WAP - 12/01/2000
WAPScript - 12/01/2000
WDL 3.9 - 10/26/98
WebFOCUS - NEW - 04/14/2004
WIL - 03/02/99
WinBatch - 10/12/2001
WinRexx - 03/28/2000
Winrunner - 7/24/2003
WML - 05/30/2000
WML Script - 10/12/2001
Wordfile Editing - 08/02/2002
XBasic - 10/12/2001
XHTML 1.0 - 12/01/2000
XHTML Basic - Mobile Apps - 12/01/2000
XHTML 1.1 - Modular HTML - 12/01/2000
XML - 03/28/2000
XML Schema - 7/24/2003
XSL - 12/01/2000
Zillions of Games - 10/12/2001
zMUD Script - 05/30/2000
* Back to Top

Tag Lists

README.TXT - Adding / Modifying Tag Lists - 10/26/98
ASP Tags - 10/12/2001
CFML Tags - Cold Fusion 4.5 - 10/12/2001
C# Tags - 10/12/2001
EScript Tags - 12/01/2000
HDML Tags - Handheld Device Markup Tags - 10/26/98
HTML Tags - 10/26/98
HTML Upper ASCII Tags - 10/26/98
IMFL Tags - Real Pix Markup Tags - 10/26/98
LaTeX Tags - 10/12/2001
MathML Tags - 03/28/2000
Miva Tags - 12/01/2000
Perl Scripting Tags - 03/02/99
RTF Tags - 12/01/2000
SMIL Tags - Synchronized Media Integrated Language - 10/26/98
VBS Tags - NEW - 08/02/2002
WinBatch Tags - 10/12/2001
WML Tags - 12/01/2000
XML Tags - 10/26/98
XSL Tags - 10/12/2001
ALL TAGS IN ONE FILE
* Back to Top

Macros

C Indent Macro by Oliver Tscherwitschke - 12/01/2000
HTML Strip Macros by Gabe Anguiano - 08/24/99
HTML Macros by D. Richmond - 06/19/2000
HTML Macros by S. Bellone - 6/12/97
Misc Macros by R. Dotson - 6/12/97
Misc Macros by John Goodman - 10/26/98
Spanish Macro by David Dodds - 01/15/2001
* Back to Top

AutoComplete Files

Java AutoComplete - 05/30/2000
C# AutoComplete - 10/12/2001
Perl AutoComplete - 10/12/2001
PHP4 AutoComplete - NEW - 08/02/2002
* Back to Top

Dictionaries Download

The localized spell-checking dictionaries are still available for FTP download. Please click on the dictionary you'd like to download:

NOTE: The Sentry Spelling-Checker Engine and Lexicons (Dictionaries) are Copyright© 1993 by Wintertree Software Inc.

UltraEdit/UltraEdit-32 10.00 Online Manual

This manual is published in PDF format and requires the Adobe Acrobat Reader for access. The Adobe Acrobat Reader is available for free download. If you don't have the Adobe Acrobat Reader click here to go to Adobe's download site.

* Click here to view the manual online. (688k)
* Click here to download the online manual. (514k)

Please note: This manual is currently only available in PDF format. Registered users may print this manual as required.

Replacing Notepad With UltraEdit-32

Some applications automatically call Notepad without offering the user any options as to which utility to use. If you'd like UltraEdit-32 to replace Notepad in these instances please download the following zip file and follow the instructions in the NOTEPAD.TXT file.

* Click here to download the notepad.zip file and follow the instructions in the NOTEPAD.TXT file.

Miscellaneous Downloads

To download an IDM Screensaver please click here.
UltraEdit (16-bit) American English version with dictionary file
UltraEdit (16-bit) American English version

点击此处查看原文 >>

系统分类: 嵌入式   |    用户分类:    |    来源: 无分类

评论(5) | 阅读(14161)
发表于:2006-9-11 8:46:50
标签:无标签

3

基于IP的H.264关键技术

http://www.upsdn.net/html/2004-12/195.html

一、 引言

H.264是ITU-T最新的视频编码标准,被称作ISO/IEC14496-10或MPEG-4 AVC,是由运动图像专家组(MPEG)和ITU的视频编码专家组共同开发的新产品。H.264分两层结构,包括视频编码层和网络适配层。视频编码层处理的是块、宏块和片的数据,并尽量做到与网络层独立,这是视频编码的核心,其中包含许多实现错误恢复的工具;网络适配层处理的是片结构以上的数据,使 H.264能够在基于RTP/UDP/IP、H.323/M、MPEG-2传输和H.320协议的网络中使用。

二、 IP网络对视频压缩的限制

1. H.264的应用场合

在讨论基于IP的H.264之前,有必要先阐述一下H.264与IP网络有关的应用场合及其对传输和编解码器的要求。下面介绍对话应用、下载服务和流媒体应用三种场合。

对话应用,比如像视频电话和视频会议,有严格的时延限制,要求端到端时延小于1s,最好小于 100ms。编解码器的参数能实时调整,错误恢复机制要根据实际网络变化而改变。编解码的复杂度不能很高,比如双向预测的模式就不能被采用。

下载服务,可使用可靠的传输协议如FTP和HTTP将数据全部传输。由于这种应用的非实时性,编码器可以通过优化进行高效编码,而且对时延和错误恢复机制没有要求。

流媒体服务应用,对时延要求介于上面两者之间,初始化时延是10s以内。与实时编码相比对时延要求降低,编码器可以进行优化实现高效编码(比如双向预测)。然而通常流媒体服务使用不可靠的传输协议,所以编码时要进行差错控制并进行信道纠错编码。

本文主要讨论对话应用和流媒体应用,这两种应用基于IP网络。IP网络又可分为三种类型:不可控 IP网络(如 Internet)、可控IP网络(广域网)和无线IP网络(如3G网络)。这三种IP网络有不同的最大传输单元尺寸(MTUsize)、比特出错概率和 TCP使用标记。最大传输单元尺寸是网络层最大的分组长度,H.264编码时要使片的长度小于MTU尺寸,这样可避免在网络层再进行一次数据的分割。两个 IP节点之间的MTU尺寸是动态变化的,通常假定有线IP网络的MTU尺寸是1.5千字节,无线网络的MTU尺寸是100字节。可见要适用于无线网络的 H.264必须采用数据分割技术使得片的长度小于MTU尺寸。TCP传输控制协议能够解决网络拥塞引起的分组丢失问题,而在无线网络中,分组丢失是由于链路层错误引起的,TCP并非很好的解决办法,要采用差错控制协议。

2. H.264使用的协议环境

对话应用和流媒体应用使用同一协议组,下面进行讨论。

网络层协议:使用IP(网际协议)。每个IP分组单独从发方出发,经过一系列的路由器到达收方。 IP将大于 MTU尺寸的分组进行数据分割、重组。每个分组的传输时间都有所不同。IP头20个字节由校验码来保证,但数据没有保护。IP分组最大值为64千字节,但由于MTU尺寸的限制,一般没有这么大。

传输层协议:主要有两个协议,TCP和UDP。TCP提供面向字节的可靠传输服务,以重传和超时等机制作为差错控制的基础。由于对时延的不可预测,并不适用于实时通信传输。UDP提供不可靠的数据报传输业务。UDP头包含的校验数(8字节)可以发现和去掉含有比特错误的分组。UDP允许分组传输过程中出现丢失、复制、改序等。使用UDP协议时,高层必须使用错误恢复协议。

应用层传输协议:使用RTP(实时传输协议)。该协议和IP/UDP结合使用,是面向会话的协议。每个RTP分组包含RTP头标,载荷头标(可选)和载荷本身。RTP头标的内容见图1,基本选项占用12字节,标记位标记有同一时间戳的一组分组的结束。RTP协议使发送方将数据分为大小合理的分组,并将解码方观察到的网络特征反馈给发送方,使发送方可以动态调整比特率和抗误码机制。RTP分组和RTP载荷规范在第四部分讨论。

应用层控制协议:有H.245协议、SIP和SDP,或RTSP。这些协议可以实现流媒体的控制,收发方的协商和控制动态会话层。

三、H.264的错误恢复工具

错误恢复的工具随着视频压缩编码技术的提高在不断改进。旧的标准(H.261、H263、MPEG -2的第二部分)中,使用片和宏块组的划分、帧内编码宏块、帧内编码片和帧内编码图像来防止错误的扩散。之后改进的标准(H.263+、MPEG-4)中,使用多帧参考和数据分割技术来恢复错误。H.264标准在以前的基础上提出了三种关键技术:(1)参数集合,(2)灵活的宏块次序(FMO),(3)冗余片(RS)来进行错误的恢复。

1. 帧内编码

H.264中帧内编码的技术和以前标准一样,值得注意的是:

(1)H.264中的帧内预测编码宏块的参考宏块可以是帧间编码宏块,帧内预测宏块并不像 H.263中的帧内编码一样,而采用预测的帧内编码比非预测的帧内编码有更好的编码效率,但减少了帧内编码的重同步性能,可以通过设置限制帧内预测标记来恢复这一性能。

(2)只包含帧内宏块的片有两种,一种是帧内片(Islice),一种是立即刷新片(IDRslice),立即刷新片必存在于立即刷新图像(IDRpicture)中。与短期参考图像相比,立即刷新图像有更强壮的重同步性能。

在无线IP网络环境下,为了提高帧内图像的重同步性能,要采用率失真优化编码和设置限制帧内预测标记。

2. 图像的分割

H.264支持一幅图像划分成片,片中宏块的数目是任意的。在非FMO模式下,片中的宏块次序是同光栅扫描顺序,FMO模式下比较特殊。片的划分可以适配不同的MTU尺寸,也可以用来交织分组打包。

3. 参考图像选择

参考图像数据选择,不论是基于宏块、基于片,还是基于帧,都是错误恢复的有效工具。对于有反馈的系统,编码器获得传输中丢失图像区域的信息后,参考图像可以选择解码已经正确接收的图像对应的原图像区域作参考。在没有反馈的系统中,将会使用冗余的编码来增加错误恢复性能。

4. 数据的划分

通常情况下,一个宏块的数据是存放在一起而组成片的,数据划分使得一个片中的宏块数据重新组合,把宏块语义相关的数据组成一个划分,由划分来组装片。在H.264中有三种不同的数据划分。

(1)头信息划分:包含片中宏块的类型,量化参数和运动矢量,是片中最重要的信息。

(2)帧内信息划分:包含帧内CBPs和帧内系数,帧内信息可以阻止错误的蔓延。

(3)帧间信息划分:包含帧间CBPs和帧间系数,通常比前两个划分要大得多。

帧内信息划分结合头信息解出帧内宏块,帧间信息划分结合头信息解出帧间宏块。帧间信息划分的重要性最低,对重同步没有贡献。当使用数据划分时,片中的数据根据其类型被保存到不同的缓存,同时片的大小也要调整,使得片中最大的划分小于MTU尺寸。

解码端若获得所有的划分,就可以完整重构片;解码端若发现帧内信息或帧间信息划分丢失,可用的头信息仍然有很好的错误恢复性能。这是因为宏块类型和宏块的运动矢量含有宏块的基本特征。

5. 参数集的使用

序列的参数集(SPS)包括了一个图像序列的所有信息,图像的参数集(PPS)包括了一个图像所有片的信息。多个不同的序列和图像参数集经排序存放在解码器。编码器参考序列参数集设置图像参数集,依据每一个已编码片的片头的存储地址选择合适的图像参数集来使用。对序列的参数和图像的参数进行重点保护才能很好地增强H.264错误恢复性能。

在差错信道中使用参数集的关键是保证参数集及时、可靠地到达解码端。例如,在实时信道中,编码器用可靠控制协议及早将他们以带外传输的方式发送,使控制协议能够在引用新参数的第一个片到达之前把它们发给解码器;另外一个办法就是使用应用层保护,重发多个备份文件,确保至少有一个备份数据到达解码端;第三个办法就是在编解码器的硬件中固化参数集设置。

6. 灵活的宏块次序(FMO)

灵活的宏块次序是H.264的一大特色,通过设置宏块次序映射表(MBAmap)来任意地指配宏块到不同的片组,FMO模式打乱了原宏块顺序,降低了编码效率,增加了时延,但增强了抗误码性能。FMO模式划分图像的模式各种各样,重要的有棋盘模式、矩形模式等。当然FMO模式也可以使一帧中的宏块顺序分割,使得分割后的片的大小小于无线网络的MTU尺寸。经过FMO模式分割后的图像数据分开进行传输,以棋盘模式为例,当一个片组的数据丢失时可用另一个片组的数据(包含丢失宏块的相邻宏块信息)进行错误掩盖。实验数据显示,当丢失率为(视频会议应用时)10%时,经错误掩盖后的图像仍然有很高的质量。

7. 冗余片方法

前边提到了当使用无反馈的系统时,就不能使用参考帧选择的方法来进行错误恢复,应该在编码时增加冗余的片来增强抗误码性能。要注意的是这些冗余片的编码参数与非冗余片的编码参数不同,也就是用一个模糊的冗余片附加在一个清晰的片之后。在解码时先解清晰的片,如果其可用就丢弃冗余片;否则使用冗余模糊片来重构图像。

四、H.264中实时传输协议(RTP)

1. RTP载荷规范

在第二部分已经对H.264的网络协议环境作了阐述,这里要详细讨论RTP的载荷规范和抗误码性能。RTP通过发送冗余信息来减少接收端的丢包率,会增加时延,与冗余片不同的是它增加的冗余信息是个别重点信息的备份,适合于应用层的非等重保护。下边阐述与多媒体传输有关的3个规范。

(1)分组复制多次重发,发送端对最重要的比特信息分组进行复制重发,使得保证接收端能至少正确接收到一次,同时接收端要丢弃已经正确接收的分组的多余备份。

(2)基于分组的前向纠错,对被保护的分组进行异或运算,将运算结果作为冗余信息发送到接收方。由于时延,不用于对话型应用,可用于流媒体。

(3)音频冗余编码,可保护包括视频在内的任何数据流。每个分组由头标、载荷以及前一分组的载荷组成,H.264中可与数据分割一起使用。

2. H.264 NAL单元的概念

H.264 NAL单元对编码数据进行打包,NAL单元由1字节的头,3个定长的字段和一个字节数不定的编码段组成。

头标的语法:NALU类型(5bit)、重要性指示位(2bit)、禁止位(1bit)。

NALU类型:1~12由H.264使用,24~31由H.264以外的应用使用。

重要性指示:标志该NAL单元用于重建时的重要性,值越大,越重要。

禁止位:网络发现NAL单元有比特错误时可设置该比特为1,以便接收方丢掉该单元。

3. 分组打包的规则

(1)额外开销要少,使MTU尺寸在100~64k字节范围都可以;

(2)不用对分组内的数据解码就可以判别该分组的重要性;

(3)载荷规范应当保证不用解码就可识别由于其他的比特丢失而造成的分组不可解码;

(4)支持将NALU分割成多个RTP分组;

(5)支持将多个NALU汇集在一个RTP分组中。

RTP的头标可以是NALU的头标,并可以实现以上的打包规则。

4. 简单打包

一个RTP分组里放入一个NALU,将NALU(包括同时作为载荷头标的NALU头)放入RTP的载荷中,设置 RTP头标值。为了避免IP层对大分组的再一次分割,片分组的大小一般都要小于MTU尺寸。由于包传送的路径不同,解码端要重新对片分组排序,RTP包含的次序信息可以用来解决这一问题。

5. NALU分割

对于预先已经编码的内容,NALU可能大于MTU尺寸的限制。虽然IP层的分割可以使数据块小于 64千字节,但无法在应用层实现保护,从而降低了非等重保护方案的效果。由于UDP数据包小于64千字节,而且一个片的长度对某些应用场合来说太小,所以应用层打包是 RTP打包方案的一部分。

新的讨论方案(IETF)应当符合以下特征:

(1)NALU的分块以按RTP次序号升序传输;

(2)能够标记第一个和最后一个NALU分块;

(3)可以检测丢失的分块。

6. NALU合并

一些NALU如SEI、参数集等非常小,将它们合并在一起有利于减少头标开销。已有两种集合分组:

(1)单一时间集合分组(STAP),按时间戳进行组合;

(2)多时间集合分组(MTAP),不同时间戳也可以组合。

五、结束语

本文重点讲述了在IP网络的限制条件下H.264进行错误恢复的几种有力工具,但在不同的IP网络中要组合使用各种工具才能实现高效率编码和传输。因为目前无线网络对MTU尺寸和时延的限制,所以错误恢复工具可以结合使用图像的分割、数据的划分和RTP分组技术,避免使用冗余信息和反馈来提高错误恢复性能;另外高效率的FMO编码模式可以大大提高编码的抗分组丢失性能。

点击此处查看原文 >>

系统分类: 消费电子   |    用户分类:    |    来源: 无分类

评论(3) | 阅读(2381)
发表于:2006-9-9 12:46:01
标签:无标签

4

中国IC设计业“7+1”产业群全景扫描【转】

中国IC设计业“7+1”产业群全景扫描

自2000年以来,中国集成电路产业快速成长,中国内地七个集成电路设计产业化基地以及香港科技园IC设计企业的建设都取得了不同程度的进展。各基地依托不同地域特点、不同产业环境而各具特色。产业群聚效应日益凸现:长三角、珠三角和京津地区成为中国集成电路产业的主力军;随着英特尔、美光、英飞凌等国际领先半导体公司纷纷落户成都、西安,西部也开始成为另一处潜力发展区域。而香港地区的IC设计公司尽管数量不多,但市场意识很强,其竞争优势也不容小觑。

本篇报道将通过五个故事对中国内地七个集成电路设计产业基地和香港科技园的IC设计公司研发状况与运营方式进行全景扫描,多角度展示中国IC设计产业的研发现状与发展前景。

坐拥产业链优势,沪锡杭打造中国最大的IC设计产业群

作者:王彦

以上海为重心的长三角地区无疑是中国大陆IC设计力量最为集中的地区,在中国确定的七个IC设计产业化基地中,上海、无锡、杭州就占去三个名额。在上海华虹、杭州士兰、上海展讯等先行企业的带动下,该地区的IC设计力量正在迅速壮大,中国最大的IC设计产业群已经浮出水面。而这里的企业所面临的困难和挑战也是整个中国IC设计产业都在面对的问题。专家建议,促进合作与交流,加快制定本土标准,将是提高中国IC设计企业核心竞争力的必由之路。

完备的产业链无疑是沪锡杭三地最大的优势所在。上海展讯总裁武平表示,经过多年的发展,长三角的IC产业链已基本形成,这包括以中芯国际、台积电、上海宏力、苏州和舰等企业为代表的晶圆代工企业,以上海华虹、杭州士兰、上海展讯为代表的IC设计企业,以上海Intel、江苏长电、南通富士通等为代表的封装测试企业。上下游的完备配套为三地的IC设计企业发展创造了得天独厚的条件。

上述产业链优势对于上海地区的IC设计公司来说尤其明显。芯原微电子(上海)有限公司副总经理冯军表示:“存在于上海及周边地区的数家晶圆代工企业使得设计与制造之间的联系更加紧密。这非常重要。众所周知,半导体制造工艺的变化非常快,贴近制造企业使得上海IC产业基地在信息沟通方面的反应要比其他基地更为迅速。”

不仅如此。上海集成电路行业协会副秘书长赵建忠进一步指出,在IC设计产业链上,上海的优势也非常明显。“上海已拥有包括硅知识产权交易中心、IC设计服务公司、IC产品验证机构在内的规模完备的IC设计产业体系。”他说。

上海智多微电子首席技术官周汀以及智芯科技副总裁彭圣钧对上述看法表示认同。另外,他们还认为,上海基地在人才供应方面也具有一定的优势。“这里拥有数量众多的高等院校,”彭圣钧说。周汀则补充说,越来越多的海归人员正在不断涌入上海,此外,政府和媒体的关注也对人才供应起了很重要的推动作用。

上述因素的联动使得该市已经出现IC设计企业扎堆的现象。“在全国400多家IC设计企业中,上海就有130多家。” 赵建忠表示,“群聚效应已经显现。”

然而在促进该地IC设计业蓬勃发展的同时,扎堆现象也同时使相当一部分企业感到头痛。

“一哄而上容易造成盲目性。”周汀指出,“大量企业的进入对激发创造性显然是有利的。但这容易造成资源分散,很多企业规模化程度都不是很高,就长期来说,这对提高竞争力非常不利。”此外,他还认为,上海的研发成本相对其他地区要高一些,但是新企业源源不断的加入又使得许多企业在没有完全建立优势之前就不得不开始面对成本竞争的压力。“我们有很多优势,不过要警惕优势变为劣势的可能。”他说。

竞争还使得企业之间被称之为“挖墙角”的现象非常普遍。尽管每年都有大量的工程师涌入人才市场,但这对于数量众多的上海IC设计企业来说,供应仍然无法满足需求。“尤其是非常缺乏高素质的人才。”彭圣钧说。而周汀则更指出,近年来国外公司不断进入中国设立研发中心,其首选地往往会选择上海,这使得上海企业面临的人才竞争更加激烈。

在上海市集成电路行业协会(SICA)协会的网站上,最新统计数字显示,2005年该市集成电路产业销售额达303亿元。其中集成电路设计14.74亿元,占全国11.86%。很显然,这与上海IC设计企业的绝对数量还不成正比,正如埃派克森微电子(上海)有限公司行政总监杨洁所述:“上海IC产业链较为整齐,但是缺少在销售额上存在较大突破的IC设计公司。”而杭州国芯副总经理张明将这种现象归结为一些非硬件的原因。他指出:“上海整个大环境比较浮躁,因此要静下心来做大做强并不容易。”尽管如此,杨洁还是强调,上海企业的潜力还很大。赵建忠则称:“上海企业的爆发力还没有显现出来,还在后面。”

在不久前于上海举办的半导体市场年会上,张明所在的杭州国芯被评为“2005年度中国最具成长性集成电路设计企业”,并位列第一。事实上,获得这个称号的7家企业中,沪锡杭企业中占据三席,除了杭州国芯之外,还有上海华虹以及上海展讯。这也从另外一个侧面反应了该地区企业的后市潜力。

谈到杭州IC设计产业化基地的优势和劣势,张明指出,杭州是浙商为代表的中国草根经济的中心,因此相比之下政府在IC设计上的投入要小一些。“但这同时也是我们的优势。”他说,“投入少,干预也会少一些。”另外,他指出,与大的政治、经济中心相比,杭州基地的科研人员稳定性更强,工程师更愿意静下心来做一些实质性的开发工作。

如果说上海和杭州都背靠实力强大的高校资源的话,那么无锡在这方面可能要弱一些。美新半导体(无锡)有限公司总经理黄飞明表示,无锡基地高等院校较少,同时海归人员也没有上海多,人才选择上无法和沪杭两地相比。其主要人员都来自华晶以及58所。不过这也带来一个优势——许多人员都具有较丰厚的产业运作背景,能够迅速贴近低端市场,短期销售额上升速度很快。

无锡亿晶董事长廖勇对此表示赞同。不过他同时也认为这是无锡企业的一个劣势。“必须承认,无锡IC设计公司的市场运作能力非常优秀。”他说,“但是无锡IC设计公司的产品基本都集中于消费电子产品市场,产品雷同现象严重。”而无锡华润华晶微电子有限公司总经理赵建坤也有同样的担忧:“无锡基地的企业还是以中低端产品为主。由于档次拉不开,成长不是非常快,市场定位低、产品档次低。”

技术永远是IC设计公司生存的基础。令人欣喜的是,目前一些公司已经掌握了技术领先性。但对于大多数IC设计公司来说,仍然面临着许多技术挑战。比如从事MEMS IC开发的美新半导体公司,产品领域的特殊性使得该公司所面临的技术挑战也与大多数同行有所不同。“美新是做集成电路+传感器的公司,如果需要更高一步精度的控制,那么在零漂移、温漂如何控制方面则是我们面临的挑战。需要在优化传感器制造工艺和信号处理技术两方面展开工作。”该公司总经理黄飞明指出,“我们的做法是通过授让DSP等内核,将模拟信号在数字域中进行处理,使传感器性能得到提高。”

在向更高技术进军的过程当中,一些国际级的竞争对手设置的技术或者专利壁垒也是本土公司必须所面对的。埃派克森微电子的杨洁指出,该公司的做法就是通过创新的解决方法,达到最佳效果,并成功完成研发工作。

除了上述挑战之外,赵建坤指出,缺乏成功的产品定义也是本土企业需要解决的问题。“许多企业还缺乏在产品定义上的经验。”他说,“目前我们还只是在跟随市场,如果要在未来引导市场需求,就必须要在这方面加大力度。”而智多微电子的周汀也对此表示赞同:“如果只是将功能简单罗列起来,这当然非常容易。但是想就此进入特定客户特定市场,恐怕要难的多。”他指出,“系统方面对手机设计有很多要求。要理解要求并将其变成设计需要,设计师需要选择。”

深圳IC设计业:以创新务实磨砺中国IC产业链上游“先锋”

作者:胡萍

尽管是中国第七个被批准的IC设计产业基地,深圳IC设计业经过几年的发展,还是逐步显露锋芒,产值连续3年居各大城市排名首位。据国家集成电路设计深圳产业化基地统计:2004年度,整个深圳市的IC设计产值近25亿元,约占中国IC设计业总产值的25%。目前,深圳共有IC设计企业130家左右,从业人员5,000多人,其中专业IC设计人员超过3,000人。

从企业类型上看,深圳的IC设计企业主要分为国有、民营、海归、外资四类,不同企业各有所长。其中,国企约有10多家,这类公司项目源丰富,承担国家重大项目;海归企业达到20家以上,具有技术优势和先进的研发理念,为深圳IC设计业带来了强劲的冲击力;而深圳土生土长的民营企业队伍最为庞大,这些公司机制灵活,具有深厚的市场积累,市场定位能力强,具有创新力。此外,港澳台厂商独资成立的IC设计公司也是深圳IC设计业的另一道风景,目前有20多家,这些公司与国际联系密切,具有开拓国际市场的优势。

在对深圳的主要IC设计公司的研发状况、经营策略等方面作了调查分析后,我们总结出该地区企业的以下特点:

一, 产品贴近市场,定位明确。

深圳IC设计企业大多从市场起步,对市场需求比较了解,很多产品直接来源于市场。目前深圳共有计算机、程控交换机、彩电、手机厂商1600多家,这为深圳IC设计企业创造了贴近客户市场的独特优势。由于市场定位准确,许多深圳IC设计企业成立不到两三年就开始接到相当数量的订单,在这其中有不少私营企业。例如,剑拓科技的银行汉字终端主控芯片已占据了国内60%以上的市场份额。而芯微技术的指纹识别芯片、芯邦微电子的USB2.0主控芯片、美芯集成的锁相环芯片等数十种具有技术优势、紧贴市场的产品都取得了不错的经济效益。

从市场需求出发,准确定位可以说是深圳IC企业成功的秘笈之一。先功集成电路设计公司的总经理华玉栋认为,中小型IC企业进行产品定义时,要明确自己能做什么不能做什么,要从自身实际出发,不能赶潮流。“有些公司开始投资强度很大,追求先进工艺,结果还没完全盈利就垮掉了。这也是我们定义产品时首要考量的因素。”华玉栋补充说。

二, 设计水平向高端进发。

在高端的技术领域,深圳一些设计企业已具有0.13微米的设计能力,产品应用领域涵盖家电、消费电子、通信等各个方面。例如,国微电子的CPU芯片已应用于国防工业领域,该公司还成功开发出数字电视应用芯片。而华为、中兴、创维等公司的IC设计部门依托丰富的系统设计经验,在中高端IC产品开发方面也取得不小成就。例如,海思半导体有限