西安电子科技大学
参赛队员:刘鹏、申申、王玺钧
指导教师:李兵兵
一、系统概述<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
在应用逐渐广泛的数字电视系统中,监控数字电视服务正成为一种越来越迫切的需要。没有合适的监测仪器,是没有办法诊断或隔离数字化设备的。通常只有当电视屏幕上的图像消失时,我们才知道数字信号系统出了问题。几乎没有任何线索可以用来找到问题的所在或者原因。码流分析仪在这种情况下应运而生。现在在数字电视系统的前端,通过监控了解DVB信号和服务的状况从而及时采取措施比通过观众的反映而采取措施要主动和及时得多。因此,传送流的测试设备可使技术人员分析码流的内部情况,它们将在决定未来服务质量和客户满意度方面扮演更重要的角色。
传统的码流分析仪都是基于PC硬件平台的,价格昂贵,操作不便。便携式工控机也存在设备体积较大和硬件成本昂贵,功能受限于PC硬件和操作系统平台稳定性等问题。即使是市场上已有的手持式测试仪,虽有较好的移动性,但是也无法满足低成本和实时监控的要求。我们所提出的“DVB码流监控系统”正是在充分考虑性能和价格的前提下提出的。
“DVB码流监控系统”基于MPEG一2 ISO/IEC 13818—1 {SYSTERM}标准和DVB ETSITR 101 290{Measurement Guidelines}标准,包括码流采集、码流分析、码流检错和信息显示等功能。本系统对数字电视TS数据流进行采集,并实时检测和分析TS流与相关标准的一致性,显示相关信息,同时实现ASI与SPI两种不同接口的转换。
“DVB码流监控系统”采用软、硬件结合的方式,硬件基于FPGA,完成码流缓存和接口转换,在嵌入式软核Nios上运行程序,完成DMA传送、按键控制、LCD显示以及应用程序对码流的分析与检错。
“DVB码流监控系统”价格低廉,操作方便,与传统码流分析仪相比,具有较高的性价比。
二、功能说明
本系统具有码流分析与检错两大功能,并且同时具备两种工作模式,即实时分析与检错、离线分析与检错。此外,还实现了ASI与SPI两种接口的相互转换。
实时码流分析与检错是对动态接收到的TS流进行实时分析与检错,提取码流基本信息,并对是否符合DvB—C标准作出报告;离线码流分析与检错首先由用户任意选择截取一段TS流暂存于SDRAM上,然后仅对SDRAM进行访问,实现离线分析与检错。
1.码流分析功能
码流的结构显示:显示码流中的PSI信息和节目的组成。
根据DVB的ETR290标准进行错误检查:对ETR290所提及的前两级码流错误进
行检查并统计显示,主要检查同步丢失、同步字节错、PAT错、连续记数错、PMT错、PID错、传输错、CRC校验错、CAT错等。
主要统计参数提取(如码率):对各种信息和每个节目的码率进行统计。
根据ETS300 468和EN50083—9标准对PSI表参数及内容进行分析。
详细语法和语意分析:对码流结构和组成进行详细分析;对传输码流分组(TS包)的结构和组成进行洋细分析。
2.码流检错功能
本系统能够实现两个优先级的检错。
第一优先级检错:
Sync-10ss:同步字节丢失。
Sync-byte-error:同步字节出错。
Par-error:PAT出错。
Continuity-countl-error:连续计数错误。
PMT—error:PMT出错。
PID—error:PID出错。
第二优先级检错:
transport—error:传输错误。
CRC—error:CRC校验错。
PCR-error:PCR出错。
PCR-accuracy-error:PCR精度出错。
PTS-error:PTS出错。
CAT-error:CAl出错。
3.接口转换功能
本系统具备两个DVB标准接口:ASI接口和SPI接口。通过按键选择,可实现SPI入SPI出、SPI入ASI出、ASI入ASI出三种组合。接口转换功能依靠FPGA硬件逻辑实现。
三、性能参数
实现了DVB码流分析仪的全部功能,即提取码流信息,包括PSI(PAI、PMT、CAT、NIT)、PES(Video、Audio)、PID、码率等重要信息。
实现了DVB码流的两级检错——第一优先级与第二优先级检错,未实现第三优先级检错。
实现了实时与离线两种工作模式。
实现了接口转换功能。
通过在PC平台上的模拟发现,无论是实时还是离线工作模式,都具有很高的工作精度。以下给出某一检测码流的实时分析与检错结果及性能。
(1) 码流分析:
(2) 码流检错:
四、系统构成
本系统的构成如图1所示。
五、设计描述
设计描述分硬件和软件两个模块。硬件是码流分析的基础,主要完成高速数据的获取和发送;软件是码流分析的灵魂,是智能分析的实现者。整个设计围绕软、硬件两部分进行。硬件设计主要设计了一块外部扩展板,完成SPI、ASI接口设计及其相互转换,并实现了LVDS与TTL,电平的转换;软件设计主要实现码流分析与检错两大功能,且支持实时与离线两种工作模式。此外,按照作品的功能要求设计了所需要的。PIO口和SDRAM控制器。
整个系统通过Nios处理器控制,SOPC Builder负责添加各种外设、逻辑模块,并分配地址空间、中断优先级,极大地简化了系统设计。
1.硬件模块
硬件模块由外部输入/输出接口模块、信源片上接口、TS流缓存、接口转换等部分组成。
1)外部输入/输出接口模块
SPI接口
从DB25 BNC头输入的SPI接口数据是LVDS电平,而此开发板所用器件
APEX20K200E不支持LVDS电平,因此我们在外加电路板上使用DS90C032、DS90C031分别进行LVDS一TTL、TTL—LVDS电平转换。
ASI部分
我们选用美国CYPRESS公司的端到端通信接收处理芯片来实现DVB一ASI接收和发送的解码、编码过程。在DVB标准中明确地规定了DVB—ASI接收系统的解码规则。它包括时钟同步规则、恢复字节对齐规则、串/并转换规则、8B/10B解码规则。DVB—ASI接收系统接收到的串行输入比特流包括MPEG2传送数据流和特殊控制字符K28.5。接收部分我们使用CY78933来实现。
在输出端我们利用CY78923,主要完成8B/10B编码、K28.5同步字插入以及TTL—PECI电平转换,然后经过1:l的隔离变压器及BNC头接入电缆。
我们在外部开发板上使用PE65508完成了信号的耦合和l:1的隔离变压。
为了进行不同接L]输入/输出的选择,我们使用了74F245作为不同切换间的使能选择。
2)信源片上接口和TS流缓存
由于SPI接口和ASI接口的输入速率与系统时钟的差别,在片上使用FIFO作为数据缓存和速率适配。
对于SPI数据输入,将DATA和CLOCK信号直接连接到FIFO的输入端。
对于ASI数据输入,利用CY78933能够完成DVB—ASI接收系统的解码处理的全部过程,也就是能够完成DVB2ASI的数据编码层的全部处理,同时,CY78933的I/O信号可用于与异步FIFO和时钟FIFO的无缝接口。要对K28.5空字符进行删除处理。 删除填充字节K28.5是一个非常关键的问题。当接收到的不是MPEG2 Ts数据而是K28.5空字符时,可以使用一个外部FIFO与CY789332400进行无缝接口。通过RDY和SC/D来控制FIFO的写使能操作,这样就通过FIFO滤掉了插入的空字符K28.5。FIFO写使能信号的波形如图2所示。
图2 FIFO写使能信号的波形图
我们将FIFO设为自定义的逻辑,将写数据线和写使能线设置在Nios CPU外部,将FIFO的读数据线、读时钟和读使能线分别与Nios CPU的读数据、系统时钟和读允许相连,这样FIFO就很方便地挂接在了Nios CPU总线上,从而很方便地从FIFO读端口获得数据流。具体数据流的方案将在软件模块中介绍。
3)接口转换
接口转换主要是SPI一ASI的转换,如图3所示。其实现方法是:得到SPI接口定义的DATA、PSYNC、DVALID和CL,OCK并行信号:丢弃PSYNC和DVALID信号,将DAT A和CLOCK信号直接连接到FIFO的输入端。外部逻辑控制着FIFO的读,从FIFO读出的数据送给CY7B923芯片。外部逻辑还控制着CY78923进行编码转换,并以270 Mb/s的速率输出串行数据。FIFO的写入时钟即为TS流的字节时钟CLOCK(小于13.5 MHz),而读LH时钟为固定值27 MHz。很显然,读出速度远大于写入速度,因此FIFO会下溢。根据FIF0的下溢标志来控制CY78923插入同步字K28.5,采用不同的FIFO读逻辑。FIFO、FIFO的读写控制逻辑和CY78923的控制逻辑均由FPGA实现。
图3 SPI转换为ASI的实现
2.软件模块
1)码流基本信息
TS流的语法结构
传送流分组长度为188个字节,由分组首部(header)及有效负载(payload)组成。
分组首部(header)以固定的8位字段——同步字节0x47开始,同步字节后面是几个重要
的标志:
transport_error_indicator——传送错误指示;
payload_unit_start_indicator——有效负载起始指示;
transport_priority——传送优先级指示;
PID——分组标号;
transport_scrambling_control——有效负载加密控制;
adaptation_field_control——调整字段控制;
continuity_counter——连续计数器。
有效负载(payload)~以带有原始流分组(PES)数据,或者带有程序特殊信息(PSI)表,或
者带有私用数据。
原始流分组(PES)
原始流分组给出了原始流的类型,由stream_id指示,可以是视频、音频及其他类型信
息(如私用信息)。为了传送的安全可靠,原始流分组可以被加密,加密模式由PES—scrambling_control指示。
程序特殊信(PSI)
传送流中可以含有多道程序,每道程序又由多个原始流组成,每个原始流用惟一的PID
标识。这些信息都在程序特殊信息(PsI)中进行了描述,程序特殊信息不允许加密。
调整字段(adaptation_field)
调整字段含有程序参考时钟PCR等重要信息,通过提取PCR可以求得码率
(transport_rate)。调整字段可有可无,由adaptation_field_control来控制。调整字段长度可变,
由adaptation_field_length决定。
2)错误类型
第一优先级
sync—loss:同步字节丢失(1.1)。
连续两个同步字节}}{错,即为同步字节丢失。
sync—byte—error:同步字节出错(1.2)。
同步字节不等了二0x47。
PAT—error:PAT出错(1.3)。
PAT—error有三种类型:
①相临两个PAT分组的时间间隔>0.5 s(1.3.1)。
②table—id不等于0x00(1.3.3)。
③传送加密控制位(transport—scrambling_contr01)等于00(1.3.3)。
continuity—count—error-连续计数错误(1.4)。
具有相同PID的分组的continuity_counter应该连续,除非满足不连续条件。
PMT—error:PMT出错(1.5)。
PMT—error有三种类型:
①相临两个PMT分组的时问问隔>0.5s(1.5.I)。
②table—id不等于0x02(1.5.2)。
③传送加密控制位(transpor【_scrambling—contr01)~=00(1.5.3)。
PID—error:PDI出错(1.6)。
在用户指定的周期内,PID没有出现。
第二优先级
transport—error:传输错误(2.1)。
传输错误指示位为真(transport_error_indicator=1)时,出错。
CRC—error:CRC校验错(2.2)。
32位CRC校验码出错。
PCR—error:PCR出错(2.3)。
相临PCR问隔超过40 ms。
PCR—accuracy—error:PCR精度出错(2.4)。
PTS—error:PTS出错(2.5)。
CAT.error:CAT出错(2.6)。
Table—id不等于0x01。
3)基本信息提取
码流以字符类型存储,对码流按字节操作,通过与、或等位运算可以获取任意字节信
息,再通过移位运算提取多字节信息,如PID,从而实现了PSI、PES及码率等基本信息的
提取。
4)检错的具体实现
1.1:提取相临分组的同步字节,若均不等于0x47,即位同步丢失。
1.2:提取分组的同步字节,若不等于0x47,即位同步字节出错。
1.3.2,1.5.2,2.6:指针指向table—id所在的字节,查看该字节是否与相应分组相适应。
2.1:指针指向分组苗‘部第二个字节,将该字节与0x80相与,再右移位7位,即得transport
—error_indicator值。
1.3.3,1.5.3:指针指向分组首部第4个字节,将该字节与0xC0相与,可得transport
—scrambling—control字段。
1.3.1,1.5.1,2.3:在码率(transport—rate)已知时,很容易求得两个分组的时间间隔,再
与规定的最大间隔比较,判断是否出错。
2.2:CRC校验检错。
5)软件的实现流程
软件的实现流程如图4所示。
六、系统特点
国外码流分析仪的研究工作开展比较早,在MPEG一2标准制定的同时,就有码流分析仪问世,惠普、WG、RS和泰克等公司都推出了各自的码流分析仪。这几家公司的产品各有特点,而其核心都是基于PC硬件平台的。虽然这些产品性能较稳定,但产品价格均比较昂贵,操作不便。随着应用范围和规模的扩大,在一个应用场合下,可能会需要对较多的测试点进行长时间的实时码流分析、监控、系统信息采集和报警管理工作,昂贵的基于Pc的测试设备显然无法满足这种要求。
为了解决这一问题,国内外主要生产厂商都转向并选择在便携式工控机上开发码流分析仪。虽然便携式工控机没有复杂的外设连线,但是也存在设备体积较大和硬件成本昂贵,功能受限于PC硬件和操作系统平台稳定性等问题。另外,市场上还有一种手持式的测试仪,有较好的移动性,但是也无法满足以较低的成本完成实时监控的要求。我们提出以通用的FPGA为基础、基于嵌入式硬件平台的设计方法,该模块具有很好的性价比,可以在现实生产中广泛采用。
本系统实现对TS码流定时采集、分析,以及基本信息和错误信息的保存和显示,满足了一般场合下基于MPEG2一DVB标准的码流监控。
在整个系统的设计中,设计前期较好地对软、硬件模块进行了划分,使得两个部分可以并行工作,分别测试。我们使用了。Nios中已有的针对开发板器件的IP核,并根据所用的SDRAM自定义了Nios中的SDRAM控制器。Nios中提供的自定义逻辑器件方便地帮助我们将FIFO与总线挂接、访问,用作DMA的从设备。利用SOPC的设计思想,整个系统可以在单芯片上设计,整个设计基于嵌入式软核Nios,从而大大简化了设计方法,降低了生产成本。
七、总结
两个月的竞赛,是一个对SOPC开发、学习和应用的过程,是对Nios嵌入式设计逐渐熟悉的过程。我们作为此开发设计技术的使用者,对这项技术也有了更加深刻的认识。
(1)清晰良好的设计环境。在两个月的时间完成开发软、硬件基础的学习,进行系统设计、实现及验证,这对我们是一场挑战。包含在Quaitus II开发工具中的SOPC Builder-提供了一种基于表格的录入系统,以及配套的完整的软件开发包,非常方便地满足了我们短期目标的实现,大大减化了我们学习的进程。
(2)软件、硬件协同设计和验证。软、硬件并行设计是嵌入式系统设计的一项关键任务。在设计过程中的主要问题是软、硬件设计的同步与集成。系统的周密设计,软、硬件的合理划分,SOPC Builder。我们能相对独立地进行软、硬件的实现,各自独立的功能验证也缩短了开发周期。
(3)方便的外设设计。SOPC Builder系统组件库中所列出的每一个组件,都提供一个以一些表格来描述该组件的文件,以及另一个用来描述接口信号及数据传输要求的文件。根据这些信息,SOPC Builder’自动生成一个包含所有译码逻辑、仲裁逻辑、中断控制、等待状态控制以及用于连接处理器与外设的数据通道匹配逻辑的网络。SOPc Builder库组件可以是非常简单的模块子系统。对于大多数处理器接口而言,只需通过将处理器信号类型与Avalon对等信号类型匹配,外部存储器接口即可以简单连线形式与FPGA及Avalon总线连接。我们在系统中还方便地使用自定义外设完成了FIFO与总线的连接。SOPC Builder通过其“接口至用户逻辑向导”完全支持用户白定义组件,该向导导入用户的设汁文件来读取端口列表,用户只需将模块信号名映射到对等的Avalon信号类型上。
(4)简化多主处理器设计。我们通过增加DMA控制器使外部数据流的仔储变得更简单。
SOPC:Buildel‘提供一张显示系统内所有处理器、外设以及哪些处理器访问哪些外设的表格。外设共享控制简单得只需轻按按钮。当需要进行调整时,没计工程师只需重新访问该表格,进行相应的改变,然后再按一下按钮,即可生成一个新的解决方案。
(5)对应用软件的支持。许多SOPC Buildei’组件都含有用来训练外设的软件驱动器及采样应用程序。SOPCBuildei‘将这些软件复制到目录中以便使用。SOPCBuilder还为提供有存储器映射及寄存器声明的系统中的每一个处理器生成一个标准的C头文件。SOPC Builder每生成一个系统,这些文件都被更新一次。我们用C语言完成了码流传输仔储以及码流分析检测的全部算法。Nios平台的调试工具使用并不十分方便,因此我们还是大多应用PC机完成软件调试。Nios对高级语言的支持较好,PC机调试的软件可以较为方便向处理器移植。
(6)系统的改进。非常遗憾,我们使用的Nios开发板配备APEX20K200E器件,I/O并不支持LVDS电平,我们专门设计了外部扩展板完成LVDS电平到TTL电平的转换。如果我们的系统使用ALTERA推出的低成本Cyclone系列芯片,并且使用一螳IP Core,可以完全用FPGA完成外部扩展板的功能并且可以降低系统成本,加快系统开发过程。
文章评论(0条评论)
登录后参与讨论