基于广播数据系统的城市公交广告信息传输
扫描二维码
随时随地手机看文章
摘 要:广播数据系统(RDS)是一种利用调频多工技术对现有的调频广播系统进行改造,使用调频广播的剩余频带实现数据广播的方案。通过分析RDS的基本数据结构,介绍了将传统的循环冗余校验(CRC)运算转化为三字节递推算法并采用查表法进行快速计算,在有限的运算速度和资源的前提下实现RDS数据组同步运算的方法和程序流程,以及如何利用RDS透明数据通道进行城市公交广告信息的传输等内容。
关键词:广播数据系统;数据结构;数据组同步;透明数据通道;信息传输
0 引 言
广播数据系统(Radio Data System,RDS)利用调频多工技术对现有调频广播系统进行改造,使用频率范围在87.5~108 MHz的调频立体声或单声道广播的57 kHz副载波来传输数据信息,其发射与接收装置与现有的调频广播系统完全兼容。RDS信号占用的带宽较窄,数据传输率只有1 187.5 b/s,非常适合传输对数据率要求不高的实时文字信息。这里设计的“城市公交广告信息显示屏”正是利用RDS的透明数据通道实现了文字广告信息的传输。
1 系统的组成与工作原理
“基于RDS的城市公交广告信息显示屏”的组成如图1所示。
在RDS信号接收的设计中,选用日本三洋公司的可编程锁相环频率合成器LC72131M和收音芯片LAl844M为主体构成的电路来接收FM广播信号。
LAl844M芯片中鉴频器输出的立体声复合信号送入RDS解码电路S1A0905XOl进行分离,提取出RDS基带信号直接输入PICl6F74单片机,采用软件方式进行数据同步处理,然后将相应的广告和文字信息显示在公交车前方的条形LED显示屏上。
2 RDS数据组的结构
图2所示为RDS基带信号的基本数据结构,结构中的最大元素被称之为数据组(Group),由104位组成。每个组由4个分别为26位的数据块(Block)组成。每个数据块都由信息码和校验码组成,其中信息码为16位,校验码为10位,图中的偏移量代表每一个数据块在数据组中的位置。
RDS数据结构的主要特点可以归纳如下:
(1)每个RDS数据组的第一个数据块必定包含节目识别码(Programme Identifleation,PI码),PI码的建立是为了判定在不同地区甚至不同国家间播出的同一节目。它并不是为了达到显示节目信息的目的,而是某一个特定节目的身份证,使得该节目有别于其他节目。PI码的一个重要应用是在当前频率点接收效果较差时,RDS接收机能够自动调谐到正在播送同一节目的其他频率点,以保证收听质量。这一功能在车辆或移动式接收设备上显得尤为重要。
(2)交通节目标志码(Traffic Programine Identifi—cation,TP码)和节目类型码(Programine Type,PTY码)总是出现在每个RDS数据组第二个数据块的固定位置,而不论数据组的版本如何。
TP码是一个开关标志,它用于指示现在调谐到的频率点播出的电台节目中是否包含交通信息,这里包括正在播出以及即将播出的交通信息。
PTY码的作用是以字符的形式告知收听者正在接收的是何种类型的节目,例如体育节目、娱乐节目等。
(3)每个RDS数据组的第二个数据块的开始4位为数据组类型标志。在RDS规范中,数据组根据4位标志的不同被分为O~15共16类,每类中又根据第5位值的不同被分为A和B两种版本。
在RDS规范中,RDS数据组类型多达16类两个版本共32种,分别针对不同的数据特点和功能。需要特别指出的是,这些不同的类型的数据组根据所承载信息的重要程度以及信息类型的差别以不同的频度得以发送。[!--empirenews.page--]
在世界上已经开始运营的RDS系统中,没有一个完全实现了RDS系统能够拥有的所有功能,而是根据当地的具体情况有选择地加以实现。同样,在RDS接收机的设计过程中,基于性价比以及实用性的考虑,也是有针对性地实现RDS的部分功能。
3 RDS数据组同步的获取
在RDS数据块中,采用的是标准CRC校验的一种变形,其生成多项式为:
将16位的信息字对g(x)进行模2除法,所得到的余式再使用模2加法加上数据块的偏移量即构成所发送的10位校验字。
由于RDS数据组、数据块之间采用连续发送,没有任何间隔,要完成RDS数据组的同步操作,必须要在每接收到一个新的数据位后,都对新组成的26位数据流进行CRC校验运算。为了保证数据处理的连续性,运算必须在下一个数据位到来前完成,也就是说,必须要在842μs(即一个RDS码元周期)内完成运算。
由于RDS中CRC校验的生成多项式G(x)在单片机运算中占据两个字节,根据CRC校验的原理,其在8位单片机中的运算其实就是一种三字节序列递推运算,每次运算所得的余式加入下一个三字节序列进行模二除法。依次类推,每一次递推运算都是对一个三字节序列的计算,因此,如何简单快捷地对三字节进行运算是算法的关键。
提到简单快捷,人们自然会想到查表法,即事先将三字节序列的所有余式计算出来,置于一个称之为余式表的表格中供随时读取。不过这样的表格太大,需要224个16位单元,即占用225个字节的存储空间,这对单片机来说是无法接受的,因此,要设法尽量减少表格所占用的存储空间。
设一个三字节序列Tabc=[a b c],一个三字节序列Ta00=[a O O]和一个二字节序列Tbc=[b c]。可以用多项式的形式表示它们之间的关系为Tabc(x)=Ta00(x)+Tbc(x),因此,对Ta00来说:
其中,Qa00(x)是整数,与余式无关;而Ra00(x)和Tbc都是二字节序列,因而,它们的和(模2加法,即异或运算)仍然是二字节序列,因此,它就是Tabc的余式Rabc,即:
这样就可以把三字节序列Tabc=[a b c]的运算分解成两个步骤来完成:
(1)通过查余式表,读取Ta00=[a O 0]的余式Ra00=[ha00 laO0];
(2)将Ra00与[b c]进行异或运算,从而得到[a b c]的余式Rabc=[habc labc]。
由于[a 0 0]只有一个字节不为零,因此,余式表只需要256个单元即512 B的存储空间。
在RDS接收机的设计过程中采用的是PIC16F74单片机,其ROM空间仅有16 KB,还要完成显示控制、电子调谐控制等许多其他功能,存储空间非常紧张,所以还需要对余式表进行压缩。
将Ta00=[a o o]分解为Ta00=[e O O]和Tf00=[f 0 O],并使字节e的上半字节内容与a的上半字节相同但下半字节为零,同时使字节f的下半字节内容与a的下半字节内容相同但上半字节内容为零,然后用Ta00和Tf00的生成余式表来代替Ta00的余式表。由于Ta00和Tf00中只有半个字节内容不为零,所以每个余式表只需16个单元,即32个字节,两个余式表共占用64个字节,可以满足PIC16F74单片机对于存储空间的要求。
实现CRC校验的快速算法只是获取RDS数据信号同步的前提条件之一。由于RDS数据信号的同步信息是包含在每个26位数据块的结尾处,必须采用先接收数据,再进行同步运算的办法。在PICl6F74单片机的通用寄存器中专门为接收数据设置了4个字节的缓冲区,每接收到1位数据,就按照先入先出(FIFO)的原则对数据缓冲区进行移位操作,然后对最近接收到的26位数据进行CRC校验运算,将运算结果与RDS数据块偏移量A,B,C,D进行比较,如果发现与其中之一相同,则认为进入准同步状态。由于接收数据的随机性,在单独一个26位数据流中运算出数据块偏移量的几率是比较大的,所以必须进行进一步的检测。[!--empirenews.page--]
进入准同步状态后,准同步计数器开始对接收的数据位进行计数,当又接收到一组26位数据后,再进行一次CRC校验运算,如果运算结果为RDS数据块偏移量A,B,C,D其中之一,并且与上次检测到的RDS数据块偏移量成顺序关系,就可以认为已经获取了RDS数据信号的同步。
在获取同步后,就不必每接收1位数据进行一次CRC校验了,而只用在接收到一个完整的26位数据后进行一次校验运算,以检测数据是否传输错误并得到数据块的偏移量。
4 文字信息在RDS透明数据通道中的传输
由于这里所涉及的RDS接收机主要用于公交广告显示屏的文字信号传输,所以重点讨论RDS中适合于文字信息传输的两种数据类型,即开放数据应用和透明数据通道。
开放数据应用(Open Data Application,ODA)是RDS数据类型中的一项重要内容,它赋予了RDS系统实现各种特定功能的极大的灵活性。开放数据应用只是规定了数据组的格式,但对其中的内容没有作出具体的规定。由于FM广播具有地域性的特点,各个不同的地方可以根据各自不同的需要对于开放数据应用的内容作出具体规定。当然,接收端也必须能够理解这些具体规定。在实际应用中,开放数据结构常用来进行特殊目的数据广播,例如无线寻呼、股市信息等。在RDS的相关标准中,规定开放数据应用应该向标准制定部门进行登记。
与开放数据应用相比,透明数据通道(Transparent Data Channels,TDC)则使RDS的功能实现更加灵活。之所以称之为透明,是指通过它几乎可以传输任意长度以及任意格式的数据。图3所示为透明数据通道的数据组结构。
图3中的地址编码是指透明数据通道的子通道号,共有5位二进制数构成,也就是说,透明数据通道最多可容纳32路数据同时传输。
鉴于透明数据通道在功能实现上的灵活性和可扩展性,设计的“基于RDS的城市公交广告信息显示屏”采用透明数据通道进行数据传输,由于可最多容纳32路数据传输,这也意味着广告运营商可以在一个FM频道上同时传输多套信息,不仅有利于减小运营成本。也可以根据广告客户的需求,有针对性地在特定公交线路上显示出特定的广告信息内容,提高了广告信息投放的灵活性。
RDS规范中并未规定透明数据通道中传输数据的格式和长度,因此可以根据实际需要进行数据传输协议的设计。由于系统传输的为数字、英文、标点符号等ASCII码(小于80H)和汉字字符编码,对于16位的汉字字符编码,需要一个透明数据段的16位进行传输,对于ASCII码字符,只需要一个透明数据段的低8位进行传输,而高8位留作备用。由于汉字编码每一字节的数据从OAlH开始,并不会与小于80H的ASCII码字符混淆。
为方便信号处理,在每一条文字信息开始设置起始标志7EH,对应ASCII码字符“~”;在每一条文字信息结束时设置结束标志ODH,对应ASCII码的回车符。
一条完整的文字信息接收的主要流程如图4所示。
5 结 语
在“基于RDS的城市公交广告信息显示屏”的设计过程中,通过对RDS数据结构的仔细分析,在有限的处理速度和计算资源的前提下,成功解决了RDS数据组同步运算的实时性问题,实现了文字信息在RDS透明数据通道中的传输,并在实际运行过程中取得了令人满意的效果。
RDS作为一种依托于传统媒体而开发出的数据传输方式,其自身也在不断地完善和发展之中。随着更多新的技术手段应用于RDS系统,RDS的内涵也在不断扩充,其应用领域也会不断扩大。