基于Nios的IP網絡電話終端設計
基于Nios的IP網絡電話終端設計
楊玉峰,黃煒
(電子科技大學 通信與信息工程學院,四川 成都 610054)
摘 要:本文介紹了如何在Altera開發(fā)平臺上應用Quartus Ⅱ軟件平臺的SOPC Builder 設計工具,把Nios 軟核處理器、以太網芯片控制電路、其它外圍器件的控制電路及用戶邏輯電路都集成在了一片FPGA可編程邏輯芯片上。在這個系統(tǒng)硬件平臺上運行uc/OS 嵌入式操作系統(tǒng)、TCP/IP 網絡通信協議和應用軟件,實現了基于Nios的IP網絡電話功能。
關鍵詞: FPGA IP電話 TCP/IP協議 可編程片上系統(tǒng) Nios
Design of LAN IP Telephone Based on Nios
Yang yufeng, Huang wei
(College of Communication & Information Enginnering,University of Electronic Science & Technology of China,Chengdu Sichuan 610054,China)
Abstract:This paper introduced how to integrate Nios soft MCU core、Ethernet MAC/PHY IC controller and other peripheral equipment`s controllers in FPGA by using Quartus Ⅱ and SOPC Builder.Based on the hardware platform,we can run uc/OS embedded system、TCP/IP network protocol and some applications. Thereby,we realized LAN IP Telephone based on Nios.
Key words:FPGA IP telephon TCP/IP protocol SOPC Nios
一.系統(tǒng)概述
隨著因特網技術的快速發(fā)展,IP網絡電話已經得到廣泛使用。所謂IP網絡電話是指利用因特網以分組數據包形式傳輸語音/傳真等的新型電信業(yè)務,簡稱VoIP(Voice over IP:IP網絡承載語音業(yè)務)。它以低廉的價格,靈活的應用使傳統(tǒng)電信業(yè)務受到極大的挑戰(zhàn),截止目前,已經超過長途業(yè)務量的50%。當然,這包括各大電信運營商推廣IP電話卡形式的IP電話長途業(yè)務,其特點是接入部分使用傳統(tǒng)電信終端(如電話機、手機),以特殊號碼形式識別(179XX),在主干線上以分組數據包的形式在因特網上傳輸話音。目前專家普遍認為VOIP將代表電話未來的發(fā)展方向,甚至有這樣一句話:every thing is over IP(一切都將基于IP)。許多人相信IP電話時代即將到來,Frost&Sullivan調研公司的報告中預計,到2007年VOIP的通話量將占全部通話量的75%,甚至更高一些。因此,在未來的幾年內,IP電話必將在電信市場占到舉足輕重的地位,對以太網電話終端的研究是符合市場需求并具有巨大的市場潛力和發(fā)展前景。
Nios是Altera 公司開發(fā)的一種采用流水線技術軟核處理器,專門針對可編程邏輯器件進行了優(yōu)化,因此是一種可配置的通用RSIC微處理器,可以與用戶自定義邏輯結合。構成完整、功能強大的SOC系統(tǒng),在嵌入式系統(tǒng)設計中已成為趨勢。應用SOPC 技術把Nios 配置進FPGA 芯片后,網絡電話終端設備不再需要外部處理器,用單一FPGA 芯片就可以實現以前需要FPGA + MCU 才能完成的功能。
嵌入式操作系統(tǒng)是嵌入式系統(tǒng)的靈魂,可以顯著提高軟件操作效率并進行軟件復用。針對當前日益復雜的系統(tǒng)開發(fā),應用操作系統(tǒng)是保證產品上市時間的關鍵。嵌入式uc/OS操作系統(tǒng)是一種性能優(yōu)良、源碼公開的免費操作系統(tǒng),具有高度靈活性。為此我們自行移植了uc/OS操作系統(tǒng)的Nios CPU版本,繼而在操作系統(tǒng)上完成了IP電話的設計。
二.系統(tǒng)功能說明
基于Nios的IP電話分為接受方和呼叫方,發(fā)起通話請求的一端稱為呼叫方,另一端為接受方。根據不同的應用場景,呼叫方和接受方可以調換角色,也就是說任意一方都可以發(fā)起通話請求。
呼叫方發(fā)起通話請求,輸入接受方IP地址,兩方通過網絡連接成功后,利用麥克風和聽筒,就可以進行談話了。
本設計的實現分為硬件和軟件兩個部分。
硬件部分由帶Nios 軟核CPU 的FPGA芯片、外部數據存儲器Flash RAM 和SRAM、帶AD 和DA 變換的PCM語音編解碼芯片電路、RS232 串行通信電路、以太網網絡模塊及RJ45接口、JTAG配置接口電路組成,此外還有電源電路等。
軟件實現主要包含以下幾個步驟:
1. 將嵌入式操作系統(tǒng)uc/OS移植到NIOS處理器上;
2. 開發(fā)語音采集編解碼芯片的接口驅動程序;
3. 開發(fā)操作系統(tǒng)下的應用程序,實現IP電話功能。分別為呼叫方和接受方的應用程序,提供IP電話的電話呼叫和等待通話功能。
三.性能參數
支持頻率范圍在300到3400HZ的單聲道模擬語音信號通話;
系統(tǒng)將20ms的PCM語音數據直接打成語音數據包封裝傳輸到因特網;
工作電壓低,具有低功耗的特性。
四.系統(tǒng)構成
系統(tǒng)主要以內嵌Nios軟核處理器的FPGA為核心處理單元,輔以以太網MAC/PHY控制器和PCM語音編解碼芯片完成整個系統(tǒng)中的信號處理工作。其主要工作是完成模擬語音信號到PCM語音信號的編解碼,以太網數據的接收和發(fā)送,協議處理,談話的呼叫建立和釋放等。
本系統(tǒng)的硬件結構框圖如圖4.1所示:
系統(tǒng)軟件體系結構如圖4.2所示:
呼叫方應用程序 |
被叫方應用程序 | |
SOPC Build自動生成驅動程序庫 |
PCM語音編解碼芯片驅動程序 | |
uc/OS操作系統(tǒng)內核 | ||
圖4.2 系統(tǒng)軟件體系結構圖
五.設計描述
本系統(tǒng)的設計分為硬件和軟件兩個部分。硬件設計由于借助Altera的Stratix開發(fā)板,所以主要任務是擴展一塊語音板,用來實現語音信號的數模變換和PCM語音編解碼功能;軟件部分移植uc/OS操作系統(tǒng),編寫驅動程序和上層應用程序的開發(fā)。
1. 硬件部分
1.1 語音板電路設計
該部分采用OKI公司的A律PCM語音信號編/解碼芯片MSM7702-3完成模擬語音到PCM信號的轉換。該芯片支持頻率范圍在300到3400HZ的單聲道模擬語音信號到PCM語音信號信號相互轉換。該芯片具有如下特點:
1.工作電壓低(2. 7-3. 8V ),低功耗的特性。
2.支持64/128/256/512/1024/2048 kHz等頻率的串行數據輸出。
3.內置PLL電路,低電壓運算放大器,具有可調的輸出增益。
4.芯片模擬信號輸出引腳能直接驅動1.2k的負載。
這部分的原理圖如圖5.1所示,該部分的輸入增益可調是通過調節(jié)圖中的電阻R4和R3的值來實現的。其增益的具體運算公式如式(5.1)所示。該增益的最大的增益值不能超過l0。
增益:Gain=1-1-R4/R3 …………… 式(5. 1)
圖5.1 MSM7702-3原理圖
FPGA接收和發(fā)送PCM語音數據時,按照MSM7702-3的接口時序進行。MSM7702-3提供了發(fā)送PCM信號接口(BCLK,XSYNC和PCMOUT引腳)和接收PCM信號接口(BCLK, RSYNC和PCMIN引腳),其時序如圖5.2和圖5.3所示。
BCLK:接收和發(fā)送數據的時鐘,頻率為64KHz。
XSYNC:用于同步PCMOUT引腳的數據輸出的同步信號。
PCMOUT:為輸出的串行PCM語音數據引腳。
RSYNC:用于同步PCMIN引腳的數據輸入的同步信號。
PCMIN:為輸入的串行PCM語音數據引腳。
圖5.2 發(fā)送PCM數據時序
圖5.3 接收PCM數據時序
根據MSM7702-3芯片數據收發(fā)時序,設計FPGA和MSM7702-3的接口電路結構如圖5.4所示。
1.2 用SOPC Builder設計系統(tǒng)模塊硬件
用SOPC Builder可以進行系統(tǒng)模塊硬件設計和底層軟件生成。進行硬件模塊設計時,SOPC Builder提供圖形化配置界面,備有一些常用外設的IP ( Intellectual Property) 模塊,如SRAM、Flash RAM、UART、Ethernet Interface、Interval timer 、Parallel I/ O 等。這些已開發(fā)好并已經引入到SOPC Builder 環(huán)境中的功能模塊被稱為部件(Component) ,打開SOPC Builder 的圖形界面時可以在左邊模塊池中看到這些功能部件。用戶還可以用“Interface to User Logic”加入自己的外設設計文件,或直接加外設接口??梢圆捎玫耐庠O設計文件是用輸入的電路原理圖或HDL描述語言寫的. vhd 或. v 文件。對于本設計來說,就是將在前面提到的MSM7702-3 接口以用戶自定義接口的方式添加進來,SOPC Builder 可以進行系統(tǒng)配置以及生成,系統(tǒng)配置除了對外設設置外還包括啟動程序、中斷向量表、系統(tǒng)啟動地址等的設置。具體如圖5.5所示:
圖5.5 系統(tǒng)硬件模塊
2.軟件部分
軟件設計包括嵌入式操作系統(tǒng)的移植、網絡協議棧、驅動設計及應用級代碼編寫等部分,下面就對這幾部分作簡單介紹。
2.1 uc/OS 操作系統(tǒng)移植
uc/OS 操作系統(tǒng)是美國人Jean Labrosse 于1992 年開始編寫的,它是一種適合于小型、微控制器的可剝奪實時操作系統(tǒng)。uc/OS 的內核除了沒有網絡協議棧之外,也沒有文件系統(tǒng),但是本設計中并不需要對語音數據按文件方式保存,因而使用uc/OS 可以滿足需要。
uc/OS 在設計時就充分考慮到在不同平臺上移植的需求,將同平臺相關的部分局限在一個很小的范圍內,對于不同的平臺只需對下面一些函數和宏進行重寫。
◆ OS_ENTER_CRITICAL 和OS_EXIT_CRITICAL :這是兩個宏,用來進行臨界段保護。在本設計中使用匯編代碼開關中斷來實現。
◆ OS_TASK_SW :這是一個用于進行任務切換的宏。本設計中利用C P U 的軟件中斷方式實現。也就是說調用此宏產生軟件中斷,然后由相應的中斷處理程序來具體實現任務上下文保護和任務切換。
◆ OSIntCtxSw:實現中斷級任務切換,用純匯編實現。
◆ OSCtxSw:實現用戶級上下文切換,用純匯編實現。
◆ OSTickISR:為系統(tǒng)定時器中斷的處理函數,用純匯編實現。
◆ OSTaskStkInit:用來在創(chuàng)建任務時,對任務堆棧進行初始化。
OS_CFG.H 用來配置內核,用戶根據需要對內核進行定制,設置系統(tǒng)的基本情況;INCLUDES.H 為系統(tǒng)頭文件,包括了整個實時系統(tǒng)所需要的內核以及用戶的頭文件。
2.2 網絡協議棧
本系統(tǒng)采用的是SOPC Builder 中包含針對Nios 的網絡協議棧,該棧以名為Plugs 的函數庫的形式提供給設計者,該庫向軟件編寫者隱藏了底層硬件細節(jié),以類似于unix 套接字的方式實現了一個精簡的網絡協議棧。它支持以下一些網絡協議:IP、ARP、ICMP 、UDP 、TCP 。
使用該庫在硬件上有四個要求:必須使用Nios CPU,需要20KB 的代碼存儲空間,需要4KB 的數據存儲空間,系統(tǒng)中需要有一個專供其使用的定時器。
2.3 驅動及應用級代碼編寫設計
語音板驅動程序設計主要由以下幾個部分組成:讀緩沖區(qū)內容、寫入緩沖區(qū)數據、產生中斷信號等。
另外應用級程序中的呼叫連接處理部分是系統(tǒng)中非常重要的部分,它主要完成通話前的呼叫建立過程及通話結束后的釋放過程。下面對其進行詳細描述,圖5.5是呼叫連接處理部分的狀態(tài)轉換圖。
系統(tǒng)上電復位后,處于IDLE狀態(tài):如果檢測到用戶輸入的IP地址,系統(tǒng)進入MASTER CALL狀態(tài);如果此時系統(tǒng)接收到一個CALL消息后,系統(tǒng)產生一個Informuse信號,使指示燈工作亮,通知用戶有電話打進來,用戶拿起話筒時,系統(tǒng)將置Informuse信號無效,指示燈熄滅停止工作,系統(tǒng)進入SLAVE CONNECT狀態(tài)。
系統(tǒng)處于MASTER CALL狀態(tài):系統(tǒng)產生一個發(fā)送CALL消息使能信號xmitC.allMessageEn,控制發(fā)送部分發(fā)送一個CALL呼叫信號,當發(fā)送模塊發(fā)送完該信號后,產生一個SendMessageOk信號,系統(tǒng)檢測到該信號后,進入WAIT CONNECT狀態(tài)。
系統(tǒng)處于WAIT CONNECT狀態(tài):系統(tǒng)等待接收CONNECT消息,同時設置一個定時器(最大值為4000)。定時接收CONNECT消息。該定時器是一個時鐘頻率8KHz計數器,當計數到最大值后,產生超時信號用于控制接收CONNECT消息是否超時。如果在規(guī)定時間內正確收到CONNECT消息,系統(tǒng)發(fā)送一確認消息ACK,然后進入TALK狀態(tài),開始通話。如果系統(tǒng)超時未接收到CONNECT消息,系統(tǒng)置重發(fā)呼叫CALL信號寄存器有效,返回MASTER CALL狀態(tài),重新發(fā)送呼叫請求CALL信號,同時將呼叫次數寄存器(calltimes)加1。一旦系統(tǒng)檢測到呼叫次數寄存器(calltimes)值大于3,即系統(tǒng)連續(xù)3次發(fā)送呼叫請求,都沒有完成,則本次呼叫連接過程失敗,系統(tǒng)返回IDLE狀態(tài)。如果系統(tǒng)沒收到CONNECT消息,收到被呼叫方發(fā)來的BUSY消息(說明被呼叫方正在通話),系統(tǒng)無法建立呼叫連接,系統(tǒng)返回IDLE狀態(tài)。
系統(tǒng)處于TALK狀態(tài):系統(tǒng)內部的一個指示通話進行的狀態(tài)寄存器(StartTalk)的值為1表示系統(tǒng)處于通話。系統(tǒng)檢測用戶是否掛機,一旦檢測到用戶掛機,表示通話結束,系統(tǒng)將通話狀態(tài)寄存器((StartTalk)置為0,系統(tǒng)進入RELEAS COMPLETE狀態(tài)。系統(tǒng)如果檢測到呼叫方發(fā)來的release complete消息后,寄存器(StartTalk)置為0,同時系統(tǒng)進入IDLE狀態(tài)。如果系統(tǒng)收到另一呼叫方所發(fā)的CALL消息,系統(tǒng)由于已經在和一個用戶在通話,不能接收另一個用戶的呼叫請求,系統(tǒng)進入BUSY狀態(tài)。
系統(tǒng)處于RELEASE COMPLETE狀態(tài):系統(tǒng)發(fā)送一個release complete消息,該消息發(fā)送完畢后,系統(tǒng)進入IDLE狀態(tài)。
系統(tǒng)處于SLAVE CONNECT狀態(tài):系統(tǒng)發(fā)送一個CONNECT消自,該消息發(fā)送完畢后,系統(tǒng)進入WAIT ACK狀態(tài)。
系統(tǒng)處于WAIT ACK狀態(tài):系統(tǒng)等待接收ACK消息,同時啟動定時器工作(最大值為4000),當計數到最大值后,產生超時信號用于控制接收ACK消息是否超時。如果系統(tǒng)超時未收到ACK消息,系統(tǒng)則重發(fā)呼叫CALL信號寄存器有效,返回SLAVE CONNECT狀態(tài),重新發(fā)送CONNECT信號,同時將呼叫次數寄存器 (calltimes)加1。一旦系統(tǒng)檢測到呼叫次數寄存器(calltimes)值大于3,即系統(tǒng)連續(xù)3次發(fā)送呼叫連接請求,都沒有收到確認ACK消息,則本次呼叫連接過程失敗,系統(tǒng)返回IDLE狀態(tài)。如果系統(tǒng)正確收到確認ACK消息,系統(tǒng)進入TALK狀態(tài),可以開始通話。
系統(tǒng)處于BUSY狀態(tài):該BUSY狀態(tài)是指,當前系統(tǒng)正在通話階段,同時接收到另一呼叫方發(fā)來的呼叫請求CALL消息時所處的狀態(tài)。系統(tǒng)在此狀態(tài)時,發(fā)送一個BUSY消息給該呼叫方,拒絕本次呼叫請求。完畢后,系統(tǒng)返回TALK狀態(tài)。
2.4 數據的協議處理
需要說明的是,在本系統(tǒng)中呼叫信息和語音信息采用不同的協議處理方式。呼叫消息用TCP報文封裝傳送,以確保呼叫信息傳輸的可靠性;語音消息用UDP報文封裝傳送。呼叫前后的協議處理流程如圖5.6所示。
通話狀態(tài)時語音數據處理流程如圖5.7所示
在本設計中沒有采用語音數據包沒有進行壓縮后傳輸,而是直接對G. 711標準的PCM語音信號直接打包,故圖中語音壓縮編/解碼未用到。
六. 系統(tǒng)特點
1. 在目前數字系統(tǒng)開發(fā)中,傳統(tǒng)的MCU+FPGA的方式成本較高。本系統(tǒng)采用嵌入Nios軟核的FPGA芯片,并通過Avalon總線接口,將系統(tǒng)最大限度地集成在一塊芯片中實現,提高了穩(wěn)定性,同時簡化了系統(tǒng)軟硬件設計。
2. uc/OS 操作系統(tǒng)的移植。uc/OS 操作系統(tǒng)源代碼公開,便于自行開發(fā)各種應用軟件程序,因此,進行Nios CPU的移植具有極其重要的意義和價值。
3. 編寫操作系統(tǒng)下的語音板的驅動程序。在嵌入式系統(tǒng)設計中,常需要根據數據或處理任務進行外設定制,從而提高整個系統(tǒng)性能,這也是SOPC Build的長處所在。只有為這些自定制的外設進行驅動程序開發(fā),才能完成操作系統(tǒng)下的應用程序開發(fā)。
4. 完成uc/OS 下的應用程序。分別為呼叫方和接收方應用程序提供IP電話的呼叫和等待通話功能。
5. 由于SOPC Builder 開發(fā)環(huán)境的完備功能, 可以把注意力集中在系統(tǒng)整體構架和功能上來,而無需過多的考慮細節(jié)性的電路設計,縮短了產品面市周期;同時由于FPGA和Nios的靈活性,為系統(tǒng)的功能升級帶來方便。
七.總結
基于Nios 進行嵌入式IP電話系統(tǒng)設計有兩個突出優(yōu)點。首先,硬件設計快速靈活,可擴展性強。SOPC Builder 降低了硬件設計的難度,縮短了硬件開發(fā)周期,提高了設計的可靠性。CPU 本身是以軟核的方式實現,其功能可根據需要進行定制。其次,軟件開發(fā)容易。SOPC Builder 不但在硬件設計上提供了支持,在軟件上也為設計者提供了較好的支持,方便驅動程序和上層應用軟件的編寫,并提供了現成的網絡協議棧。
由于本系統(tǒng)中是直接對PCM語音信號打包發(fā)送,因而要求的帶寬較大。系統(tǒng)的功能也相對簡單,下一步的工作可以將語音數據壓縮編/解碼引入到FPGA中,減小系統(tǒng)要求的帶寬。同時還可以將基于H. 263實時圖象傳輸系統(tǒng)引入FPGA中,構建局域網IP可視電話。
參考文獻
[1] William E.Witowsky.IP Telephone Design and Imeplementation Issue,1998.7.
[2] Nios II Software Developer's Handbook (ver 1.2, Dec 2004)
[3] 潘松、黃繼業(yè)等著. SOPC技術實用教程. 清華大學出版社 2004.6
[4] 謝兵森. 基于嵌入式系統(tǒng)的指揮調度終端試驗研究 . 上海船舶運輸科學研究所碩士論文, 2004.
[5] Jean J . Labrosse 著,邵貝貝譯.μC/ OS Ⅱ—源碼公開的實時嵌入式操作系統(tǒng). 中國電力出版社,2003.
[6] 夏宇聞著. Verilog數字系統(tǒng)設計教程. 北京航空航天大學出版社. 2004.7
原創(chuàng)性聲明
本人聲明所呈交的論文是本人在導師指導下進行的研究工作及取得的研究成果。據我所知,除了文中特別加以標注和致謝的地方外,論文中不包含其他人己經發(fā)表或撰寫過的研究成果。
楊玉峰
2006.03.18
作者簡介:楊玉峰(1983- ),男,江蘇鹽城人,電子科技大學在讀碩士研究生,主要研究方向為嵌入式系統(tǒng)開發(fā)應用;黃煒(1952- ),男,湖南寧鄉(xiāng)人,電子科技大學副教授,碩士生導師,主要研究方向為現代通信中的信號處理、音頻及視頻數據通信、嵌入式系統(tǒng)開發(fā)應用。
作者聯系方式:
楊玉峰:地址:電子科技大學通信與信息工程學院2004201050班
郵編:610054
E-mail:happyyangyufeng@163.com
電話:(028)83200335 (028)83208880
tcp/ip相關文章:tcp/ip是什么
評論