收端執行相反的操作:解復用器從e3流提取4個e2數據流,然后從e2流提取16個e1流,最終將e1流發送到接收端的線路接口芯片。 圖四 這些e1線路接口在發送和接收時都獨立工作,因此2.048mhz的時鐘速率可以有+/- 20ppm的偏差。同樣,因為大多數系統同時發送和接收數據,分立的多路復用器和多路解復用器將提供2個獨立的e3流(發送和接收)。因此,兩個34.368mhz的時鐘可以存在細微的差異。 由于e2流是在芯片上產生的,這些e2多路復用器可以共享同一個8.448mhz時鐘。然而,由于接收的數據速率與我們所設計的板無關(且不能假定所有e2多路復用器使用相同時鐘),所以e2解復用器時鐘必須能工作在略為不同的速率下。 此外,假定設計中需要一個由工作頻率為1mhz的處理器控制的獨立spi(串行外圍接口)總線接口,該接口用于狀態和控制。這樣一來,設計中總共用了32個2.048mhz時鐘,5個8.448mhz時鐘,2個34.368mhz時鐘和一個1mhz時鐘,總共多達40個時鐘。 本設計中最快時鐘是34.368mhz e3時鐘。fpga的
因此adsp-2181還需從第一級fifo中讀入相應數目字節的視頻或音頻數據。對于音頻來說,不需插入pcr信息,只從音頻fifo中讀入184-4 個字節的數據。在向輸出緩存器寫入ts字頭后,再將公共fifo中的數據送入輸出緩存器。對視頻來說,在不考慮pcr信息插入時其操作同音頻一樣。 由于兩pcr之間的時間間隔在mpeg-2視頻編碼器傳送流中要求為100 ms,因此,在dsp軟件中設計了一個計數器,用于對所有已生成的ts包進行計數。由于adsp-2181串口的輸出速率是恒定的(在此是靠外加8.448mhz串口時鐘實現的),因而單位時間內的總的ts包的數目也是一定的。要使pcr之間的時間間隔保持恒定,只需將計數器的預置數目設定為"總的ts包數目/每秒÷25",復用器每生成一個ts包,計數器減1,當計數器計到零時將時間間隔標記置位。adsp-2181在每次輪詢打包ts數據之前,先檢測時間間隔標記是否置位,若未置位則按前述方法處理,若置位則在打包的下一個視頻ts包中插入pcr時間標記,當然這里只是在ts包頭中插入相應的可調字段,而沒有插入真正的pcr時間標記,只是將6字節的pcr位置預留出來。因此,如
則判定系統進入失步態,并關閉分接時序信號發生器,也不再接收數據;一旦捕獲到幀定位信號,便驅動分接時序信號發生器工作,并開始接收數據。這里要求模塊在系統失步后能重新進入同步,如果傳輸中幀同步碼組連續丟失了幾幀,而系統又沒有自恢復能力,那么整個系統將無法再正常工作。 (2)同步時鐘提取模塊 數據流的接收需要與之速率相同的時鐘,這就需要對二次群碼流進行位同步時鐘提取,得到與之速率一致的均勻時鐘給分路器。 (3)分路器模塊 一旦捕獲到幀定位信號,分接器便開始工作,把幀定位信號拋掉,其余在8.448mhz的位同步時鐘下按位順序循環進行同步分離,分別送入4個碼速恢復單元。 (4)分接時序信號發生器模塊 該模塊設計思想基本同于復接時序信號發生器,其基準時鐘由位同步時鐘分頻得到。幀定位捕獲電路驅動它工作,產生幀定位時隙脈沖sf,插入標志時隙脈沖sz,調整插入時隙脈沖sv和2.112mhz的非均勻時鐘f,送給插入碼扣除控制電路。 (5)插入碼扣除控制電路模塊 該模塊的功能是扣除復接時插入碼流的碼字,輸出作為碼速恢復電路的寫入時鐘clk_wr’,在接收端對收到的sz時隙的標志碼進行擇多判決