《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 通信與網(wǎng)絡(luò) > 業(yè)界動(dòng)態(tài) > 基于TM1300 DSP系統(tǒng)的以太網(wǎng)通信接口的設(shè)計(jì)與實(shí)現(xiàn)

基于TM1300 DSP系統(tǒng)的以太網(wǎng)通信接口的設(shè)計(jì)與實(shí)現(xiàn)

2009-08-10
作者:梅啟斌
關(guān)鍵詞: I/O 接口芯片 片上 通信接口 TCP/IP

  摘? 要: TM1300 DSP的特點(diǎn),詳細(xì)介紹了通過TM1300的PCI接口驅(qū)動(dòng)以太網(wǎng)芯片實(shí)現(xiàn)以太網(wǎng)通信接口的軟件和硬件設(shè)計(jì)要點(diǎn),給出了模擬數(shù)據(jù)和實(shí)際視頻壓縮碼流的傳送實(shí)驗(yàn)結(jié)果。

??? 關(guān)鍵詞: PCI總線? TM1300? 以太網(wǎng)通信接口? pSOS內(nèi)核

?

  TM1300是Philips公司推出的新一代高性能多媒體數(shù)字信號(hào)處理器芯片。基于TM1300的DSP應(yīng)用系統(tǒng)適合于實(shí)時(shí)的聲音、圖像處理,可廣泛應(yīng)用于會(huì)議電視、可視電話、數(shù)字電視等,具有廣闊的應(yīng)用前景。TM1300具有強(qiáng)大的處理能力和非常友好的音頻和視頻以及SSI、PCI等I/O接口,可以根據(jù)需要靈活地構(gòu)造各種視頻通信系統(tǒng)。鑒于目前計(jì)算機(jī)網(wǎng)絡(luò)的普及和網(wǎng)上視頻業(yè)務(wù)的發(fā)展,很有必要為TM1300視頻編碼系統(tǒng)開發(fā)一個(gè)以太網(wǎng)接口。開發(fā)以太網(wǎng)接口可以利用TM1300集成的PCI接口驅(qū)動(dòng)專用的以太網(wǎng)接口芯片。目前多數(shù)以太網(wǎng)接口芯片(如Realtek8029、Realtek8139等)都是PCI接口的,可以用PCI總線將數(shù)據(jù)從TM1300傳輸?shù)竭@些專用的以太網(wǎng)接口芯片,然后由接口芯片發(fā)送數(shù)據(jù)。由于TM1300可以運(yùn)行嵌入式操作系統(tǒng)pSOS,且pSOS帶有TCP/IP協(xié)議棧,因此可以方便地完成編碼碼流的TCP/IP封裝。

  下面將從硬件和軟件二方面對(duì)設(shè)計(jì)要點(diǎn)進(jìn)行詳細(xì)介紹。

1 TM1300及PCI總線接口

  基于TM1300 DSP系統(tǒng)的以太網(wǎng)通信接口的硬件系統(tǒng)結(jié)構(gòu)如圖1所示。

?

  在該系統(tǒng)中硬件設(shè)計(jì)的重點(diǎn)是PCI總線接口。PCI總線的數(shù)據(jù)位寬度有32位和64位二種,64位的數(shù)據(jù)線對(duì)32位是兼容的。PC中常見的是32位PCI總線,它的有用引腳總數(shù)是110個(gè),可以分成3組。第1組是基本功能信號(hào)線,包括32位共享數(shù)據(jù)地址線AD[00..31]、接口控制線、仲裁線、時(shí)鐘線、系統(tǒng)復(fù)位線、中斷線;第2組是附加功能信號(hào)線,包括錯(cuò)誤報(bào)告線、Cache功能支持線、JTAG邊界掃描線;第3組是電源線,包括設(shè)備耗電量標(biāo)示線、3.3V電源線(12根)、5V電源線(13根)和地線(22根)。

  由于8029不具備PCI附加功能信號(hào)線支持的Cache功能和JTAG邊界掃描功能,且Realtek8029的奇偶校驗(yàn)錯(cuò)誤報(bào)告功能引腳可以懸空不用,因此只需要考慮第1組功能信號(hào)線的連接。

  PCI接口的設(shè)計(jì)要點(diǎn)如下。

  (1)PCI總線仲裁

  PCI總線是多設(shè)備共享的,由于PC中有多個(gè)PCI設(shè)備,所以需要使用仲裁器。PCI設(shè)備有主設(shè)備和從設(shè)備之分,主設(shè)備可以發(fā)起PCI數(shù)據(jù)的傳送,從設(shè)備只能被動(dòng)地響應(yīng)主設(shè)備發(fā)出的讀操作和寫操作命令。PCI的仲裁引腳是請(qǐng)求線REQ#和授權(quán)線GNT#,只有PCI主設(shè)備有這2個(gè)引腳。REQ#和GNT#成對(duì)地連到仲裁器。各設(shè)備之間的REQ#和GNT#互不相連。

  PCI總線的仲裁過程:PCI主設(shè)備把REQ#電平拉低,表示向仲裁器請(qǐng)求占用總線。經(jīng)仲裁獲準(zhǔn)后,仲裁器把該設(shè)備的GNT#電平拉低,表示請(qǐng)求獲準(zhǔn),該設(shè)備就可以使用總線了。當(dāng)它不再使用總線時(shí),使REQ#信號(hào)變?yōu)楦唠娖?仲裁器就不再給它分配總線資源。在本系統(tǒng)中,TM1300是PCI主設(shè)備,Realtek8029是從設(shè)備,不存在共享總線的問題,所以不需要仲裁器,可以簡(jiǎn)單地把REQ#和GNT#短接,相當(dāng)于TM1300自己給自己授權(quán)。

  (2)PCI_IDSEL信號(hào)線

  PCI有一種特殊的讀寫周期,稱為配置讀寫,它是指在系統(tǒng)引導(dǎo)時(shí),還沒有給設(shè)備配置I/O或內(nèi)存地址,軟件只能通過配置讀寫訪問設(shè)備。配置讀寫有2種:0型和1型,采用哪一種取決于總線的硬件連接。當(dāng)配置讀寫操作不經(jīng)過PCI橋時(shí),使用0型;當(dāng)要經(jīng)過PCI橋時(shí)使用1型。0型直接讀寫總線上的地址,而1型讀寫的地址則要經(jīng)過PCI橋的譯碼才能成為總線地址。本設(shè)計(jì)中,TM1300和Realtek8029是用PCI總線直連的,所以使用了0型配置讀寫。

  AD[00..31]是PCI總線的共享地址和數(shù)據(jù)線。PCI的每次傳送都分為地址周期和數(shù)據(jù)周期。在地址周期,0型讀寫的內(nèi)容如下:AD[00]和AD[01]總為“00”,因?yàn)榕渲米x寫是以雙字為單位的;AD[02]~AD[07]是要讀寫的PCI配置空間的寄存器號(hào);AD[08]~AD[10]是設(shè)備的功能號(hào),用于區(qū)分1塊PCI卡上的多個(gè)功能設(shè)備,當(dāng)Realtek8029是單功能設(shè)備時(shí),這幾位全為0;AD[11]~AD[31]是設(shè)備選擇位,其中必須有且僅有一位為“1”,物理上表現(xiàn)為總線的某一根為高電平。如果輸出高電平的這根線與某塊PCI卡的PCI_IDSEL引腳相連,則該卡會(huì)被激活,在隨后的數(shù)據(jù)周期,它就會(huì)將其PCI配置空間相應(yīng)寄存器的內(nèi)容放到總線上供讀取。

  (3)PCI的引腳處理

  PCI_FRAME#、PCI_DEVSEL#、PCI_IRDY#、PCI_TRDY#這4個(gè)引腳均是低電平有效,需要接上拉電阻,保證在設(shè)備未驅(qū)動(dòng)該引腳時(shí)處于穩(wěn)定的無效狀態(tài)。上拉電阻的阻值為1kΩ~10kΩ,阻值越小則芯片將該信號(hào)驅(qū)動(dòng)為有效的時(shí)間越短。但是阻值太小會(huì)導(dǎo)致電流過大,因此需要權(quán)衡考慮。本設(shè)計(jì)選用4.7kΩ。

  上述3點(diǎn)對(duì)脫機(jī)情況下PCI設(shè)備的互連具有較普遍的參考意義。此外,本系統(tǒng)的設(shè)計(jì)還有以下特點(diǎn):

??? ①TM1300的PCI_INTA#引腳配置為輸入,以接收Realtek8029的中斷。

??? ②PCI時(shí)鐘由TM1300提供。

??? ③Realtek8029的復(fù)位信號(hào)也就是TM1300的復(fù)位信號(hào),由外部電路提供。

??? ④TM1300的PCI_STOP#、PCI_SERR#引腳懸空,因?yàn)镽ealtek8029不具備相應(yīng)的附加功能。

 ?、軹M1300的PCI_INTB#、PCI_INTC#、PCI_INTD#引腳可以用作用戶中斷。

2?軟件設(shè)計(jì)

  軟件的結(jié)構(gòu)框圖如圖2所示。其中,TM1300運(yùn)行pSOS。pSOS是一個(gè)簡(jiǎn)單的實(shí)時(shí)多任務(wù)嵌入式操作系統(tǒng),帶有pNA網(wǎng)絡(luò)組件。pNA相當(dāng)于TCP/IP協(xié)議棧的擴(kuò)展,向上為應(yīng)用程序提供Socket接口,向下定義了與網(wǎng)絡(luò)接口層交互的接口,包括8個(gè)函數(shù),分別是:ni_init(接口芯片初始化)、ni_broad-cast(發(fā)送廣播分組)、ni_send(發(fā)送普通分組)、ni_getpkb(申請(qǐng)發(fā)送緩沖區(qū))、ni_retpkb(歸還接收緩沖區(qū))、ni_ioctl(I/O控制操作)、ni_pool(統(tǒng)計(jì)量查詢)、Announce(網(wǎng)絡(luò)接口驅(qū)動(dòng)調(diào)用它,把接收到的數(shù)據(jù)包提交給pSOS)。網(wǎng)絡(luò)接口層在本應(yīng)用中就是Realtek8029的驅(qū)動(dòng)程序,它通過硬件抽象層來驅(qū)動(dòng)Realtek8029。硬件抽象層是PCI總線的配置讀寫和I/O讀寫指令集的總稱。

?

  軟件執(zhí)行的流程是:系統(tǒng)首先啟動(dòng)pSOS,由pSOS加載網(wǎng)絡(luò)接口驅(qū)動(dòng)程序,然后調(diào)用驅(qū)動(dòng)程序的ni_init函數(shù),初始化Realtek8029的PCI配置空間并設(shè)置其工作參數(shù),啟動(dòng)用戶任務(wù)。在這里,用戶任務(wù)是H.263編碼進(jìn)程。它對(duì)Vi口讀入的源圖像進(jìn)行壓縮編碼后,調(diào)用Socket的接口函數(shù)sendto(UDP套接口專用的發(fā)送函數(shù))把碼流發(fā)送給pSOS。pSOS根據(jù)UDP協(xié)議進(jìn)行封裝后,調(diào)用函數(shù)ni_send。ni_send完成數(shù)據(jù)包從系統(tǒng)主內(nèi)存到Realtek8029片上RAM的拷貝,并啟動(dòng)8029發(fā)送數(shù)據(jù)。在接收情況下,8029收到完整的數(shù)據(jù)包后,用中斷通知CPU。CPU則執(zhí)行中斷服務(wù)程序,將數(shù)據(jù)包從8029片上RAM中拷貝到系統(tǒng)的主內(nèi)存,然后調(diào)用函數(shù)Announce,把數(shù)據(jù)塊的指針、數(shù)據(jù)長度和其他信息提交給pSOS。pSOS將數(shù)據(jù)包沿協(xié)議棧一層層上傳,作出相應(yīng)處理。

  PCI配置空間有64B,其片內(nèi)都集成了寄存器,用于存儲(chǔ)該芯片的廠商號(hào)、設(shè)備號(hào)、設(shè)備類型等重要代碼。此外,還包括控制其總線行為的命令寄存器、基地址寄存器等。

  對(duì)8029PCI空間的配置需要3個(gè)步驟:

  (1)掃描總線,以找到8029的配置地址,即PCI_IDSEL引腳和哪根AD線相連。掃描總線時(shí),要對(duì)AD[11]~AD[31]每根線進(jìn)行掃描。如果這根AD線連接了1個(gè)PCI設(shè)備的PCI_IDSEL引腳,則用配置讀函數(shù)讀取PCI配置空間的0號(hào)寄存器時(shí),將返回該設(shè)備的設(shè)備號(hào)和廠商代碼。如果這根線實(shí)際未連接設(shè)備,則返回值是0。

  (2)用配置寫函數(shù)使能I/O讀寫,即在Command寄存器寫入“0x1”。

  (3)用配置寫函數(shù)配置I/O地址,即在I/OBaseAdddress寄存器寫入分配給該設(shè)備的I/O地址,例如“0xe400”。

3?調(diào)試結(jié)果

  在TM1300視頻編碼硬件系統(tǒng)上加入PCI接口后對(duì)pSOS下8029的驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)傳送測(cè)試。為進(jìn)行發(fā)送速率測(cè)試,先向網(wǎng)絡(luò)上的1臺(tái)PC發(fā)送UDP數(shù)據(jù)包(數(shù)據(jù)包是變長的)。該P(yáng)C接收并對(duì)丟包數(shù)進(jìn)行統(tǒng)計(jì)。實(shí)驗(yàn)表明,在用網(wǎng)線直連的各種測(cè)試速率情況下都沒有出錯(cuò),當(dāng)接入局域網(wǎng)后在發(fā)送速率為4.5Mbps時(shí)有突發(fā)的少量錯(cuò)誤。由于UDP是不可靠的傳輸方式,因此這種錯(cuò)誤是正常的。測(cè)試中UDP發(fā)送的最高速率可達(dá)5Mbps,這與硬件的最高速率(10Mbps)相比還有一定差距,主要原因是數(shù)據(jù)從系統(tǒng)主內(nèi)存到8029片上RAM的拷貝過程未采用DMA方式,這是需要改進(jìn)的地方。

  在進(jìn)行了發(fā)送速率測(cè)試后,可以進(jìn)行編碼和傳送的聯(lián)合測(cè)試。編碼任務(wù)執(zhí)行H.263數(shù)據(jù)壓縮,把碼流從以太網(wǎng)接口發(fā)出。網(wǎng)絡(luò)上的另一臺(tái)PC接收該碼流并進(jìn)行解碼播放。通過調(diào)整編碼器的量化步長可以控制編碼的輸出碼率。在實(shí)驗(yàn)環(huán)境下發(fā)現(xiàn),在量化步長≥5、碼率在700Kbps以下時(shí),基本不會(huì)丟包,解碼得到的圖像比較穩(wěn)定;當(dāng)量化步長進(jìn)一步減小、碼率接近1Mbps時(shí),出現(xiàn)丟包現(xiàn)象,解碼的圖像出現(xiàn)彩色方塊。出現(xiàn)這種現(xiàn)象是因?yàn)镠.263編碼器對(duì)CPU資源的消耗很大,而且數(shù)據(jù)在主內(nèi)存和8029片上RAM之間的復(fù)制采用的是I/O讀寫方式,也需要一定的CPU資源。當(dāng)量化步長<5時(shí),處理復(fù)雜度超過了CPU的能力,從而產(chǎn)生了一定的誤碼。解決問題的途徑一方面是改進(jìn)數(shù)據(jù)的傳送方式(采用DMA),另一方面需要對(duì)編碼任務(wù)進(jìn)行優(yōu)化。

?

參考文獻(xiàn)

1? Philips Semiconductors Inc.TM1300 Preliminary Data Book,1999

2? Integrated Systems Inc pSOSystem Programmer′s?Reference,1997

3? 李鵬.計(jì)算機(jī)通信技術(shù)及其程序設(shè)計(jì).西安:西安電子科技大學(xué)出版社,1998

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。