<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA實(shí)現(xiàn)復(fù)接與分接系統(tǒng)

          FPGA實(shí)現(xiàn)復(fù)接與分接系統(tǒng)

          作者: 時(shí)間:2011-08-18 來源:網(wǎng)絡(luò) 收藏

          引言

          本文引用地址:http://www.ex-cimer.com/article/150334.htm

            近年來可編程器件的應(yīng)用日益廣泛,使用較多的是現(xiàn)場(chǎng)可編程門陣列()和復(fù)雜可編程邏輯器件(CPLD)。器件性能優(yōu)越,使用方便,成本低廉,投資風(fēng)險(xiǎn)小,使用設(shè)計(jì)可以完全根據(jù)設(shè)計(jì)者需要開發(fā)ASIC芯片,可方便地反復(fù)編寫和修改程序,即使制成PCB后仍能進(jìn)行功能修改。本文將著重介紹運(yùn)用FPGA技術(shù)基群與二次群之間復(fù)接與分接的總體設(shè)計(jì)方案。

            數(shù)字復(fù)接基本原理及構(gòu)成

            二次群幀結(jié)構(gòu)及其復(fù)接子幀結(jié)構(gòu)按ITU-TG.742協(xié)議,工作在8448kbit/s的采用正碼速調(diào)整的二次群復(fù)接設(shè)備幀結(jié)構(gòu)如圖1所示,一幀共有848bit,前12位幀碼組包括幀同步碼10位,碼型為1111010000;失步對(duì)告碼,同步為“0”,失步為“1”;國(guó)內(nèi)通信備用碼。Cj1、Cj2、Cj3(j=1,2,3,4)為插入標(biāo)志碼,Vj(j=1,2,3,4)為碼速調(diào)整插入比特,其作用是調(diào)整基群碼速。二次群由四支路的子幀構(gòu)成,子幀結(jié)構(gòu)如圖2所示,一子幀有212bit,1、2、3位碼為幀碼組,記Fj;插入標(biāo)志碼用Cj表示;碼速調(diào)整插入比特用Vj表示。

             二次群幀結(jié)構(gòu)

            復(fù)接構(gòu)成

            復(fù)接系統(tǒng)構(gòu)成的框圖如圖3。復(fù)接時(shí)序信號(hào)發(fā)生器產(chǎn)生碼速調(diào)整需要的時(shí)序信號(hào),四路基群信號(hào)先各自經(jīng)正碼速調(diào)整,變?yōu)?.112Mbit/s的同步碼流。合路器順序循環(huán)讀取四路碼流,并在每幀開頭插入幀定位信號(hào),輸出8.448Mbit/s的標(biāo)準(zhǔn)二次群。

          復(fù)接系統(tǒng)構(gòu)成框圖

            在接收端,合路碼流先進(jìn)行幀定位捕獲,判定系統(tǒng)處于同步態(tài)、失步態(tài)還是過渡態(tài)。一旦捕獲到幀定位信號(hào),便驅(qū)動(dòng)分接時(shí)序信號(hào)發(fā)生器工作,產(chǎn)生分路和碼速恢復(fù)需要的時(shí)序信號(hào),同時(shí)分路器工作,把幀定位信號(hào)拋掉,順序循環(huán)分別送入4個(gè)碼速恢復(fù)單元,扣除插入碼元,恢復(fù)成四路2.048Mbit/s的基群信號(hào)。

            數(shù)字復(fù)接系統(tǒng)的FPGA設(shè)計(jì)

            本次FPGA設(shè)計(jì)采用分層設(shè)計(jì),頂層為整個(gè)系統(tǒng)的原理框圖(見圖3),用一些符號(hào)表示功能塊,然后把每個(gè)功能塊分成若干子模塊,各模塊獨(dú)立設(shè)計(jì)。下面就各模塊的設(shè)計(jì)思想進(jìn)行詳細(xì)介紹。

            復(fù)接電路設(shè)計(jì)

            復(fù)接電路如圖4所示,它由復(fù)接時(shí)序發(fā)生器、緩存器、碼速調(diào)整控制電路、插入碼控制電路、幀定位信號(hào)發(fā)生器和合路器6個(gè)模塊構(gòu)成。圖中只畫了第一條支路參與復(fù)接的過程,因?yàn)樗臈l支路的過程完全相同,因而略去其余3個(gè)支路的電路。

           復(fù)接電路框圖

            (1)復(fù)接時(shí)序發(fā)生器模塊

            輸入為2.112MHz頻率的均勻時(shí)鐘,通過該模塊產(chǎn)生插入碼控制電路所需的插入標(biāo)志時(shí)隙脈沖SZ、調(diào)整插入時(shí)隙脈沖SV、頻率為2.112MHz的非均勻時(shí)鐘f(從輸入的均勻時(shí)鐘扣除了時(shí)隙SZ和SF)和幀定位信號(hào)發(fā)生器所需的時(shí)隙脈沖SF。

            (2)緩存器模塊

            基群信號(hào)以2.048MHz的均勻時(shí)鐘clk_wr寫入緩存器,同時(shí)以2.112MHz的非均勻時(shí)鐘clk_rd讀出,clk_rd由插入碼控制電路產(chǎn)生。該模塊還需輸出每次寫入和讀出一幀數(shù)據(jù)時(shí)第一個(gè)clk_wr脈沖P1和clk_rd脈沖P2,送給碼速調(diào)整控制電路模塊。在該模塊的設(shè)計(jì)中,應(yīng)注意每一幀信息碼的位數(shù)不是固定的,必須通過碼速調(diào)整控制電路模塊的反饋信號(hào)Fn來確定,當(dāng)反饋信號(hào)表明本幀需要調(diào)整,則位數(shù)為205;反之,位數(shù)為206。

            (3)碼速調(diào)整控制電路模塊

            緩存器的寫入脈沖超前于讀出脈沖的時(shí)間量稱為讀寫時(shí)差,讀寫時(shí)差的大小總隨時(shí)間不斷變化著。該電路中緩存器的寫入速率低于讀出速率,隨著時(shí)間的推移,緩存器中所存信息碼數(shù)目越來越少,最后導(dǎo)致“取空”而造成錯(cuò)誤的數(shù)據(jù)傳輸。因此,我們必須設(shè)定一門限,當(dāng)信碼數(shù)降到門限值時(shí),就進(jìn)行碼速調(diào)整。

            通過對(duì)各時(shí)刻讀寫時(shí)差的聯(lián)系以及趨向最終狀態(tài)變化的分析得出,讀寫時(shí)差的最低點(diǎn)總是發(fā)生在一幀末尾,而在幀首通過兩脈沖相位差就能判斷本幀是否需要碼速調(diào)整。具體地說,P1和P2輸入進(jìn)行鑒相判決得到幀首的讀寫時(shí)差T0,與調(diào)整門限值TS進(jìn)行比較,若T0>TS則本幀不需要調(diào)整,反之若T0≤TS,則需要調(diào)整。這時(shí)模塊輸出反饋信號(hào)Fn給緩存器,和調(diào)整控制負(fù)脈沖Gate給輸入碼控制電路模塊。

          (4)插入碼控制電路模塊

            該模塊的功能是對(duì)緩存器的讀出信息進(jìn)行插入碼控制,輸出2.112MHz的非均勻時(shí)鐘clk_rd和參與合路的支路碼流。為了標(biāo)志是否在時(shí)隙SZ有插入調(diào)整比特,就必須引入插入標(biāo)志碼。通常在一幀中規(guī)定一個(gè)特定時(shí)隙SV,提供一次碼速調(diào)整的機(jī)會(huì)。如果某支路需要進(jìn)行調(diào)整,就在該時(shí)隙插入一比特脈沖,如不需要調(diào)整則該時(shí)隙仍傳支路信息。為確??煽啃?,通常采用3位碼作為插入標(biāo)志碼。如果某支路有插入調(diào)整,用標(biāo)志碼為111來表示,否則用000表示。


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();