新聞中心

        EEPW首頁 > 手機與無線通信 > 設計應用 > 基于廣播數據系統的城市公交廣告信息傳輸

        基于廣播數據系統的城市公交廣告信息傳輸

        作者: 時間:2009-04-29 來源:網絡 收藏

        在世界上已經開始運營的RDS中,沒有一個完全實現了RDS能夠擁有的所有功能,而是根據當地的具體情況有選擇地加以實現。同樣,在RDS接收機的設計過程中,性價比以及實用性的考慮,也是有針對性地實現RDS的部分功能。

        本文引用地址:http://www.104case.com/article/158077.htm


        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]??梢杂枚囗検降男问奖硎舅鼈冎g的關系為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位數據流中運算出數據塊偏移量的幾率是比較大的,所以必須進行進一步的檢測。



        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 民和| 扎兰屯市| 宿州市| 栾川县| 泰安市| 鸡泽县| 安阳市| 镇平县| 安化县| 滕州市| 卢氏县| 大石桥市| 鞍山市| 尤溪县| 辽阳县| 曲麻莱县| 吴川市| 杭锦后旗| 白玉县| 高阳县| 惠州市| 山阳县| 竹山县| 绿春县| 大洼县| 诸城市| 澄江县| 鄯善县| 吕梁市| 桓台县| 老河口市| 垫江县| 勐海县| 江北区| 临武县| 绥芬河市| 涡阳县| 长春市| 芒康县| 颍上县| 西丰县|