新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 數話同傳控制器的設計與實現

        數話同傳控制器的設計與實現

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

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

        圖3中CLK_2048K為2048kHz的時鐘信號,CLK1_8K和CLK2_8K均為8kHz的時鐘信號。可以看出,分立元器件較多,時鐘源之間的干擾比較大,電路運行不太穩定。本系統中用一片EPM7128,用VHDL語言編寫時序發生器,大大簡化了電路,提高了系統的穩定性。圖4是在MAXPLUSII上仿真MC145480從AMBE1000話音讀取數據的波形。
          從仿真波形上可以看出,在MC145480的接收幀同步信號FSR的下降沿到來時,開始在接收位時鐘信號BCLKR的作用下采樣從AMBE1000話音傳過來的數據(AMBE1000的tx_do端)。在采樣一個字節后停止采樣,余下的FSR為低電平的時間(一個FSR的周期內)用來給MC45480的DA轉換提供緩沖時間。在下一個FSR的下降沿到來時又周而復始地重復上述操作。
        2.2 話音壓縮數據的處理
          AMBE1000話音輸出數據是以幀為單位[2],每20ms輸出一幀,每幀的大小為34bytes,其中幀頭為10bytes,壓縮語音數據24bytes。數據格式如表1所示。

        如果按全幀發送,1s內必須傳送的數據位數為:
          34bytes × 8bit/bytes × 50 = 13600bit
          而 的最大傳輸速率為9600bps,根本無法進行傳輸,更談不上數據和語音了;另一方面,本系統沒有必要將壓縮語音數據按全幀發送,只需傳送有效語音數據。壓縮速率為2400bps 時,每幀輸出的有效語音數據為:
          2400bps / (50 × 8bit) = 6 bytes
          這樣在幀尾會有18bytes(24bytes-6bytes=18bytes)的無效0數據,全幀傳輸時這些無用的0也參與了傳輸。從節省帶寬方面考慮,必須進行幀頭和幀尾的處理,并重組數據幀。為此,在程序中做了如下處理: 當檢測到有話音數據時,單片機每20ms對AMBE1000話音Codec進行一次讀寫操作,將接收到的一幀數據存入一個緩沖區,去掉不必要的幀頭和幀尾無效的0,得到純語音數據(每幀6字節)。每隔60ms即連續等待三次Codec中斷處理后(共18字節的有效語音數據),將有效的語音數據與外部接收的數據一起打包發給。接收端反之,單片機將解調出來的語音數據,按每6個字節,先進行必要的幀頭設置,再添加上幀尾的0,恢復一幀完整的數據傳給AMBE1000話音Codec進行解壓縮。這樣充分利用了信道資源,并且語音延遲比較小,外部數據傳輸率也比較高。
        2.3 數據的調制和解調
          外部輸入的數據和來自AMBE1000話音Codec的數據被單片機打包成如表2所示的數據格式。

        6 字節的幀頭包括兩字節的位同步、兩字節的幀同步以及兩個自定義的控制字節。這兩個控制字節可用于區分語音數據和外部數據,以及在半包發送時指示數據塊中實際數據的多少。每18個字節作為一個小數據包,數話時,語音數據和外部數據各占一小包。一個字節的幀尾標志一般為0x33。這樣的一幀數據傳給FX909,帶上FEC和CRC位后,最大數據量為:(6+1+30+30+1)×8bit=544bit。在60ms的時間內,Modem有能力完成一幀數據的發送(60ms×9600bps=576bit>544bit)。這從一個側面證明了本系統采用的數話方案的可行性。FX909工作在任務方式下,單片機通過寫任務到FX909的命令寄存器去指示Modem的工作,當FX909完成工作后以中斷的形式通知單片機當前操作已經完成。軟件發送和接收數據的過程如下[5]:發送數據時,設置FX909的工作模式為發送狀態,寫幀頭數據,設置任務=T7H,發7個字節幀頭(FX909內部幀頭帶一個字節的FEC和CRC);然后往FX909 數據緩沖區中寫入18 個字節的數據,設置任務=TDB,發送數據塊;若本幀未結束,繼續發送數據塊,發送結束后再發一個字節的幀結束標志;如此反復直到所有的數據發送結束為止。接收數據時,先設置FX909 的工作模式為接收狀態,檢測到載波信號后,寫幀同步字節至數據緩沖區,設置任務=LFSB,進行比特同步;然后設置任務=SFH,查找幀頭,讀出幀頭控制字節后設置任務=RDB,讀出18個字節的數據;若本幀未結束,繼續讀數據塊,否則查找下一個幀頭;如此反復,直至接收完所有的數據。同時還可以讀出CRC和FEC標志位信息,進行相應的處理。
          本文實現的具有話音延遲短、數據傳輸量大的特點,有效地解決了語音信號延遲比較大和外部數據傳輸量受限問題,能夠滿足絕大多數場合下話音通信和數據傳輸的要求,有著廣泛的應用前景。

        51單片機相關文章:51單片機教程



        上一頁 1 2 下一頁

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 兴和县| 丰台区| 原平市| 额济纳旗| 通榆县| 鹤岗市| 宜阳县| 介休市| 衡南县| 新竹县| 襄樊市| 巴塘县| 陈巴尔虎旗| 浦东新区| 且末县| 娄底市| 敦煌市| 台北县| 新竹市| 拉萨市| 威信县| 黄石市| 新宁县| 卫辉市| 长葛市| 介休市| 凤冈县| 公安县| 徐汇区| 伊通| 东山县| 新晃| 安阳县| 唐海县| 醴陵市| 临沧市| 通河县| 湄潭县| 商洛市| 普陀区| 乐安县|