在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            基于μClinux的IP電話

            ——
            作者:邱衛(wèi)東、諶勇輝、盧德良 時(shí)間:2005-08-12 來源: 收藏

            基于μClinux的IP電話
            復(fù)旦大學(xué)
            參賽隊(duì)員:邱衛(wèi)東、諶勇輝、盧德良
            指導(dǎo)老師:彭澄廉
            一、系統(tǒng)概述
            IP是國(guó)際互聯(lián)網(wǎng)協(xié)議(Internet Protocol)的簡(jiǎn)稱,IP 電話是按照國(guó)際互聯(lián)網(wǎng)協(xié)議規(guī)定的網(wǎng)絡(luò)技術(shù)開通的電話業(yè)務(wù),它通過發(fā)送IP包來傳輸話音業(yè)務(wù),其基本原理是:通過語(yǔ)音壓縮算法對(duì)話音進(jìn)行壓縮編碼處理,然后把這些語(yǔ)音數(shù)據(jù)按IP等相關(guān)協(xié)議進(jìn)行打包,經(jīng)過IP網(wǎng)絡(luò)把數(shù)據(jù)包傳輸?shù)侥康牡?,再把這些語(yǔ)音數(shù)據(jù)包連接起來,經(jīng)過解碼、解壓縮處理后,恢復(fù)成原來的語(yǔ)音信號(hào),從而達(dá)到由IP網(wǎng)絡(luò)傳送話音的目的。
            Internet話音業(yè)務(wù)正在獲得飛速發(fā)展,其主要原因有以下兩點(diǎn):首先是價(jià)格低廉,相同的通話時(shí)間,通過Internet話音服務(wù)的費(fèi)用僅僅為通過傳統(tǒng)話音服務(wù)費(fèi)用的幾分之一,甚至幾十分之一;其次,隨著技術(shù)的發(fā)展,IP電話的話音質(zhì)量有了很大的提高,克服了以往話音質(zhì)量低劣、延遲長(zhǎng)、經(jīng)常掉線等缺陷。
            目前專家普遍認(rèn)為VoIP將代表電話技術(shù)未來的發(fā)展方向,甚至有這樣的一句話:everything is over IP(一切都將基于IP)。許多人相信IP電話時(shí)代即將到來,F(xiàn)rost & Sullivan調(diào)研公司的報(bào)告中預(yù)計(jì),到2007年VoIP的通話量將占全部通話量的75%,甚至更高一些。
            Nios CPU 是一種采用流水線技術(shù)、單指令流的RISC處理器,又是一種軟核CPU,專門針對(duì)可編程邏輯器件進(jìn)行了優(yōu)化,因此是一種可配置的通用RISC處理器,可以與用戶自定義邏輯結(jié)合,構(gòu)成完整、功能強(qiáng)大的SOC系統(tǒng),在系統(tǒng)的設(shè)計(jì)中已成為趨勢(shì)。
            操作系統(tǒng)是系統(tǒng)的靈魂,可以顯著提高軟件開發(fā)效率和進(jìn)行軟件復(fù)用。針對(duì)當(dāng)前日益復(fù)雜的嵌入式系統(tǒng)開發(fā),應(yīng)用操作系統(tǒng)是保證產(chǎn)品面市時(shí)間的關(guān)鍵。嵌入式μClinux操作系統(tǒng)是一種性能優(yōu)良、源碼公開且被廣泛應(yīng)用的的免費(fèi)嵌入式操作系統(tǒng),具有高度靈活的可定制內(nèi)核。
            目前尚無Nios CPU的免費(fèi)移植版本,為了完成參賽作品,我們自行移植了μClinux操作系統(tǒng)的Nios CPU版本,繼而在μClinux操作系統(tǒng)上完成了IP電話的設(shè)計(jì)開發(fā)。

            本文引用地址:http://www.biyoush.com/article/7575.htm


            二、功能說明
            基于μClinux的IP電話分為服務(wù)端(接受方)和客戶端(呼叫方)。發(fā)起通話請(qǐng)求的一端稱為客戶端,另一端則為服務(wù)端。根據(jù)不同應(yīng)用場(chǎng)景,服務(wù)端和客戶端可以調(diào)換角色,也就是說,任意一端都可以發(fā)起通話請(qǐng)求。
            客戶端發(fā)起通話請(qǐng)求,輸入服務(wù)端IP地址,兩端通過網(wǎng)絡(luò)連接成功后,利用麥克風(fēng)和聽筒,就可以進(jìn)行通話了。
            本作品的實(shí)現(xiàn)分為硬件和軟件兩個(gè)部分。
            硬件部分進(jìn)行A/D、D/A板的開發(fā)設(shè)計(jì),以實(shí)現(xiàn)電話語(yǔ)音的數(shù)/模和模/數(shù)轉(zhuǎn)換功能。采用AD7811、AD7305等芯片,實(shí)現(xiàn)了A/D,D/A的控制時(shí)序邏輯以及采樣率的設(shè)置等功能。
            軟件實(shí)現(xiàn)主要包含以下四個(gè)步驟:
            第一,將嵌入式操作系統(tǒng)μClinux移植到Nios處理器上。
            第二,移植μClinux下的smc lan9111c1網(wǎng)卡驅(qū)動(dòng)程序,實(shí)現(xiàn)IP連接。
            第三,開發(fā)μClinux下語(yǔ)音板(自行開發(fā)設(shè)計(jì))的驅(qū)動(dòng)程序。
            第四開發(fā)μClinux下的應(yīng)用程序,實(shí)現(xiàn)IP電話功能,分別為服務(wù)端和客戶端應(yīng)用程序,提供IP電話的電話呼叫和等待通話功能。
            三、性能參數(shù)
            語(yǔ)音板AD7811采用的是Analog公司的一款A(yù)/D轉(zhuǎn)換器,它具有如下一些關(guān)鍵特性:
            * 4個(gè)模擬輸入通道;
            * 1個(gè)數(shù)字輸出通道;
            * 分辨率為10位;
            * 串行接口;
            * 2.5 V內(nèi)部參考電壓;
            * 外部參考電壓范圍為1.2 V_VDD;
            * 模擬輸入范圍為0_Vref;
            * 可通過控制寄存器進(jìn)行軟件控制;
            * 電源供電范圍為2.7_5 V。
            在本系統(tǒng)中用到2個(gè)模擬輸入通道,分辨率采用10位中的8位。
            AD7305是Analog公司的一款D/A轉(zhuǎn)換器,它具有如下一些關(guān)鍵特性:
            * 4個(gè)模擬輸出通道;
            * 8個(gè)數(shù)字輸入通道;
            * 分辨率為8位;
            * 并行接口;
            * 外部參考電壓范圍為VSS_VDD;
            * 模擬輸出范圍為VSS_VDD;
            * 電源供電范圍為2.7_5 V。
            四、系統(tǒng)構(gòu)成
            本作品的體系結(jié)構(gòu)框架如圖1所示,軟件流程圖如圖2所示。
            服務(wù)端應(yīng)用程序
            客戶端應(yīng)用程序
            網(wǎng)卡驅(qū)動(dòng)程序
            A/D D/A驅(qū)動(dòng)程序
            μClinux內(nèi)核
            Altera Stratix 1S10
            Nios CPU A/D D/A的接口邏輯
            語(yǔ)音板

            圖1  體系結(jié)構(gòu)

            圖2  軟件流程圖
            五、設(shè)計(jì)描述
            本系統(tǒng)的設(shè)計(jì)分為硬件和軟件兩部分,硬件主要是在ALTERA的Stratix板上擴(kuò)充了一塊語(yǔ)音板,用來接受語(yǔ)音的輸入并實(shí)現(xiàn)模/數(shù)的轉(zhuǎn)換;軟件部分是移植μClinux操作系統(tǒng),編寫A/D板的驅(qū)動(dòng)及上層應(yīng)用程序的開發(fā)。
            1.硬件部分
            在實(shí)現(xiàn)語(yǔ)音模/數(shù)轉(zhuǎn)換時(shí)主要應(yīng)控制AD7811、AD7305的時(shí)序,在模擬信號(hào)輸入時(shí)用運(yùn)放調(diào)整電壓至AD7811能接受的范圍。圖3是語(yǔ)音板時(shí)序控制狀態(tài)轉(zhuǎn)換圖。

            圖3  語(yǔ)音板的序控制狀態(tài)轉(zhuǎn)換
            在這里我們用SOPC Builder提供的用戶自定義接口來實(shí)現(xiàn)以下功能:到avalon總線的接口,對(duì)A/D、D/A芯片的控制時(shí)序;按特定采樣率進(jìn)行采樣,利用可讀/寫寄存器任意更改采樣率;采用內(nèi)置緩沖存儲(chǔ)采樣數(shù)據(jù),每采樣32次才發(fā)出一次中斷,從而減少CPU中斷的次數(shù)。
            SOPC Builder設(shè)置如圖4所示。

            圖4  SOPC Builder設(shè)置
            部分接口邏輯如下:
            when read0 =>    -- read left
               if scnt mod 4 = 1 then
                data0(i) <= DOUT;
               end if;
               if scnt=0 then
                state <= set1;
                scnt <= 39;
               else
                scnt <= scnt - 1;
               end if;
              when set1 =>    -- select right
               if scnt=0 then
                state <= wait1;
               else
                scnt <= scnt - 1;
               end if;
            2.軟件部分
            首先成功地移植了操作系統(tǒng),用來管理驅(qū)動(dòng)與上層應(yīng)用程序之間的通信。其次,編寫A/D的驅(qū)動(dòng)以及客戶端和服務(wù)端的應(yīng)用程序,這里系統(tǒng)的兩端都能用作客戶端和服務(wù)端,但要求作為服務(wù)端的應(yīng)用程序應(yīng)先啟動(dòng)偵聽。
            A/D的驅(qū)動(dòng)程序主要由以下幾部分組成:讀緩沖區(qū)內(nèi)容、寫入緩沖區(qū)、產(chǎn)生中斷等。以下是寫緩沖的部分示例:
            if(w_tail+count<8193)  //能一次寫完
                 {
                  PRINTK("count=%dn",count);
                  for(i=0;i<count;i++)
                  {       
                   w++;
                   get_user(temp,buf+i);
                   kbuf_w[w]=temp;
                  }

            }else //分兩次寫完
             {
              if(w+count-8193>w_front)printk("kbuf_w full!*****n");
              PRINTK("two time:count=%dn",count);
              for(i=0;i<8192-w_tail;i++)
                  {       
                   w++;
                   get_user(temp,buf+i);
                   kbuf_w[w]=temp;
                  }
                  for(w=0;i<count;i++)
                  {       
                   w++;
                   get_user(temp,buf+i);
                   kbuf_w[w]=temp;
                 }
            }
            這里緩沖區(qū)的大小是8192個(gè)字節(jié),采用的是環(huán)狀緩沖區(qū)。
            上層應(yīng)用程序分為客戶端和服務(wù)端,在服務(wù)端先啟動(dòng)偵聽,然后運(yùn)行客戶端程序,輸入服務(wù)端IP,建立連接后就能進(jìn)行通信。以下是服務(wù)端程序的部分示例。
            while(1)
            {
            time++;
             if((read_cnt=read(audio,buf_r,512))<0)
             {
              fprintf(stderr,"read from driver error happened or manual quit!n");
              break;
             }
             if(read_cnt==0)continue;
             if((nbytes=read(newfd,buf_w+count,1024))<=0)
            {
              fprintf(stderr,"receive from client Error:%sn",strerror(errno));
              break;   
             }
             count+=nbytes/2;
                
             if(write(newfd,buf_r,read_cnt*2)<0)
            {
              fprintf(stderr,"Write to client Error:%sn",strerror(errno));  
              break;   
             }
                
             if(time==t)
             {
              if((nbytes=write (audio, buf_w, count)) != count)
              {
                perror ("write to adda driver error!n");      
                 break;
              }
             time=0;count=0;
             }
            }
            六、系統(tǒng)特點(diǎn)
            (1)  μClinux的移植。嵌入式μClinux操作系統(tǒng)保持了Linux操作系統(tǒng)幾乎所有的優(yōu)秀特性,比如穩(wěn)定、可剪裁、強(qiáng)大的網(wǎng)絡(luò)功能、出色的文件系統(tǒng)等。嵌入式μClinux具有高度靈活的可定制內(nèi)核。μClinux源代碼公開,便于自行開發(fā)各種應(yīng)用軟件。另外,μClinux移植成功后,可以利用Linux下的大量資源,有許多軟件無需修改或者通過少量修改重新編譯后即可以在μClinux下運(yùn)行,從而提高了開發(fā)效率和軟件重用的比例。因此,進(jìn)行Nios CPU的移植具有極其重要的意義和價(jià)值。
            (2) 移植了μClinux下的網(wǎng)絡(luò)驅(qū)動(dòng)程序。網(wǎng)絡(luò)驅(qū)動(dòng)程序是Linux中自帶的驅(qū)動(dòng)程序,但必須修改核心程序以適應(yīng)具體不同品牌的網(wǎng)絡(luò)芯片和不同的SOPC Builder設(shè)置。
            (3) 編寫了μClinux下的聲卡(自行開發(fā)設(shè)計(jì)的A/D、D/A板)驅(qū)動(dòng)程序。在一個(gè)嵌入式系統(tǒng)的設(shè)計(jì)中,常常需要根據(jù)數(shù)據(jù)或者處理任務(wù)進(jìn)行外設(shè)定制,比如說為一些非標(biāo)準(zhǔn)的外設(shè)提供接口;或者是通過刪除不必要的外設(shè)特性降低外設(shè)使用的邏輯單元數(shù),從而提高整個(gè)系統(tǒng)的性能。這正是SOPC Builder的長(zhǎng)處所在。在SOPC Builder中,可以使用用戶自定義邏輯實(shí)現(xiàn)上述外設(shè)定制。只有為這些用戶自定義的外設(shè)開發(fā)合適的驅(qū)動(dòng)程序,才能完成μClinux下的應(yīng)用程序開發(fā)。
            (4) 完成了μClinux下的應(yīng)用程序:分別為服務(wù)端和客戶端應(yīng)用程序提供IP電話的電話呼叫和等待通話功能。
            七、總結(jié)
            SOPC是一個(gè)軟件工具,是一種基于IP(Intellegent Property)或者說是平臺(tái)的設(shè)計(jì)方法,是進(jìn)行嵌入式系統(tǒng)的原型開發(fā)和研究工作的上佳選擇。多種實(shí)時(shí)操作系統(tǒng)對(duì)Nios CPU的支持更使其如虎添翼,因此它必將獲得更大的成功。
            成功移植μClinux的經(jīng)驗(yàn)增強(qiáng)了我們對(duì)Nios CPU的信心,加深了我們對(duì)SOPC的認(rèn)識(shí):SOPC是一種靈活高效的SOC解決方案,具有硬件可編程的靈活性和IP設(shè)計(jì)的重用性。ALTERA提供了大量基本的IP,使用戶能迅速地搭建一個(gè)簡(jiǎn)單的系統(tǒng),對(duì)于一些高級(jí)用戶,還能自己添加合適的IP,極大地增強(qiáng)了系統(tǒng)的靈活性和用戶的自主性。
             SOPC Builder中用戶自定義邏輯,使得用戶能很方便地編寫用戶增加的外設(shè)時(shí)序和中斷控制,一方面能增強(qiáng)系統(tǒng)的速度,另一方面又方便了驅(qū)動(dòng)程序和上層應(yīng)用程序的編寫。
            -12- Nios(r)軟核心嵌入式處理器設(shè)計(jì)大賽優(yōu)秀作品精選

             基于μClinux的IP電話 -11-



            關(guān)鍵詞: 嵌入式

            評(píng)論


            相關(guān)推薦

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

            關(guān)閉