多媒體網(wǎng)關(guān)系統(tǒng)中模擬電話語音卡的設(shè)計(jì)
電話語音卡是構(gòu)筑各種CTI應(yīng)用系統(tǒng)的基礎(chǔ),它是一種用于電腦并能夠?qū)崿F(xiàn)語音處理的電腦插件。電話語音卡(簡稱語音卡)的主要功能是:通過計(jì)算機(jī)與電信網(wǎng)相連,提供撥號、振鈴檢測與控制摘掛機(jī)、信令檢測、轉(zhuǎn)接內(nèi)線、監(jiān)控錄音、傳真、數(shù)據(jù)傳輸、主叫號偵測等服務(wù)功能。作為實(shí)現(xiàn)語音處理的功能部件,語音卡一般都有與電話網(wǎng)的接口。與電話網(wǎng)不同的接口類型,可分為模擬語音卡和數(shù)字語音卡。
以下將介紹一個基于TMS320VC5402處理器(簡稱DSP5402)、AM79R79(SLIC)用戶線路接口芯片和AM79Q02(SLAC)用戶音頻處理芯片及PCI9052 PCI橋接芯片所構(gòu)成的模擬電話語音卡設(shè)計(jì)。
1 系統(tǒng)總體方案
在設(shè)計(jì)中,電話語音卡實(shí)現(xiàn)了16路話音的接續(xù)控制和成幀功能。系統(tǒng)通過PCI總線與DSP5402交互,對單板進(jìn)行維護(hù)和管理;語音業(yè)務(wù)通過TDM(時分多路復(fù)用)總線連接;單板內(nèi)部則由DSP5402完成對語音的接續(xù)控制和成幀功能??傮w設(shè)計(jì)框圖如圖1所示。
2 硬件電路的設(shè)計(jì)
2.1 DSP5402簡介
DSP5402是TI公司的54X系列16bit定點(diǎn)DSP,具有低功耗、高性價比的特點(diǎn)。具體特點(diǎn)如下:擴(kuò)展地址模式最大可尋址到1M×16bit外部程序空間,4K×16bit片上ROM,16K×16bit片上雙口RAM;指令集支持單指令循環(huán)和塊循環(huán),存儲塊移動指令提供高效的程序和數(shù)據(jù)存儲器管理;片上硬件資源包括軟件可編程等待狀態(tài)發(fā)生器和可編程存儲單元轉(zhuǎn)換,連接內(nèi)部振蕩器或外部時鐘源的鎖相環(huán)(PLL)時鐘發(fā)生器,兩個多通道緩沖串口(McBPs),增強(qiáng)型8bit并行主機(jī)接口(HPI8),兩個16bit定時器,6通道直接存儲器訪問(DMA)控制器;工作電源有3.3V和1.8V(內(nèi)核);在3.3V供電(1.8V核心電壓)下單周期定點(diǎn)指令的執(zhí)行周期可達(dá)10ns(100MIPS)。
設(shè)計(jì)中DSP5402一方面通過PCI總線完成與主機(jī)的通信、數(shù)據(jù)交換,另一方面完成對語音的接續(xù)與成幀功能的控制,以及語音信號和信令處理功能。
因此DSP5402外圍設(shè)計(jì)分兩部分:
(1)DSP5402與PCI9052的硬件接口
完成DSP5402的HPI總線與PCI9052 LOCAL本地總線連接,主機(jī)從而可以通過PCI總線與DSP5402進(jìn)行通信。首先通過HPI對DSP5402進(jìn)行程序加載并啟動,然后完成對語音板的監(jiān)控操作。
當(dāng)DSP5402與主機(jī)(HOST)交換信息時,HPI是主機(jī)的一個外圍設(shè)備。它有如下特點(diǎn):可訪問所有片內(nèi)RAM空間、HOST訪問總是與DSP5402時鐘同步、HOST和DSP5402均可訪問片內(nèi)RAM。
PLX公司的PCI總線控制芯片PCI9052完成PCI總線高速信號與LOCAL 側(cè)本地設(shè)備資源的信息交互。它提供了本地總線與PCI總線的接口,避免用戶直接面對復(fù)雜的PCI總線協(xié)議,提供高性能的從目標(biāo)PCI接口板卡與PCI總線的連接;支持寬速率范圍的本地總線,最高可達(dá)132 Mbps的傳輸速率;對PCI9052編程可實(shí)現(xiàn)復(fù)用/非復(fù)用的8位、16位、32位的本地總線接口。
設(shè)計(jì)中PCI9052本地總線采用非復(fù)用8位模式與HPI8總線匹配,CPLD完成PCI本地總線與DSP5402的HPI總線互連,如圖2所示。其中具體信號定義如下:PCI本地側(cè)地址信號(LA27、LA0、LA[1:2]),配合PCI本地側(cè)讀寫信號LW/R#、地址使能信號ADS#及BLAST傳輸模式使能信號編碼生成HPI控制信號(如片選信號HCS#、數(shù)據(jù)字高低字節(jié)選擇信號HBIL、功能寄存器選擇信號HCNTL[0:1]及讀寫信號HRD#、HWR#);HPI準(zhǔn)備就緒信號HRDY產(chǎn)生PCI本地側(cè)就緒信號READY#,可根據(jù)需要插入等待周期,達(dá)到實(shí)際時序要求;HPI中斷信號HINT#觸發(fā)PCI本地中斷信號LINT#;HPI數(shù)據(jù)總線HD[0:7]通過CPLD電平匹配與PCI本地側(cè)數(shù)據(jù)總線LD[0:7]連接。
(2)DSP5402與AM79Q02(SLAC)的硬件接口
選用AMD公司SLIC用戶線路接口芯片AM79R79(簡稱SLIC)實(shí)現(xiàn)電話的接續(xù)各狀態(tài)的轉(zhuǎn)換,監(jiān)視電話線的負(fù)載變化,實(shí)現(xiàn)摘機(jī)檢測、饋電供給及振鈴傳送;與其實(shí)現(xiàn)無縫接口的SLAC用戶音頻處理芯片AM79Q02(簡稱SLAC)實(shí)現(xiàn)話音的A/D轉(zhuǎn)換,并成幀到PCM碼流中。SLAC提供的SPI MCU總線接口簡化了與MCU的硬線連接,并且SLAC(提供完全的SLIC的控制總線)與SLIC可實(shí)現(xiàn)無縫連接,因此對SLIC的控制可完全簡化為直接控制SLAC來間接完成,簡化了硬件電路的設(shè)計(jì),節(jié)省了用戶的開發(fā)成本。
SPI接口包括時鐘DCLK、片選及數(shù)據(jù)線DI/O,而沒有讀寫方向控制線,對讀寫方向的控制則通過寫單字節(jié)的讀寫命令字的bit0完成;讀寫命令字的bit7-bit1包含控制寄存器的地址信息,這樣就可以完成對SLAC的寄存器操作。
另外,設(shè)計(jì)SLAC的SPI接口時序需特別注意:每次讀寫操作低使能有效至少維持8個DCLK周期,即完成一個字節(jié)的讀寫操作;當(dāng)低使能有效少于8個DCLK周期時,則該讀寫忽略;當(dāng)低使能有效在8~15個DCLK周期,則取倒數(shù)的8個DCLK周期為有效讀寫周期;當(dāng)低使能有效大于15個DCLK周期,則會引起硬件復(fù)位。
圖3是SLAC的MCU接口SPI總線時序圖。
DSP5402有兩個多通道緩沖串口(McBPs),McBPs有多種配置模式,可根據(jù)需要配置成高速主從SPI接口,考慮到以后功能擴(kuò)展需要,設(shè)計(jì)中保留了McBPs;采取由軟件讀寫通用I/O,模擬SPI時序并配合CPLD實(shí)現(xiàn)SPI接口,從而完成DSP5402與SLAC的硬件接口,并實(shí)現(xiàn)DSP5402對SLAC/SLIC單元的狀態(tài)監(jiān)視與控制。
2.2 PCI9052
PCI9052是PLX公司推出的一種PCI總線從設(shè)備接口芯片。它提供了方便的本地總線與PCI總線的接口,避免用戶直接面對復(fù)雜的PCI總線協(xié)議。
2.3 AM79Q02與AM79R79
選用AMD公司SLIC/SLAC用戶線路接口與音頻處理、成幀電路。SLIC實(shí)現(xiàn)電話的接續(xù)各狀態(tài)的轉(zhuǎn)換,監(jiān)視電話線的負(fù)載變化,實(shí)現(xiàn)摘機(jī)檢測、饋電供給及振鈴傳送的功能;而SLAC實(shí)現(xiàn)話音的A/D轉(zhuǎn)換,并成幀到8Mbps的PCM碼流中。它還有如下特點(diǎn):軟配置SLIC輸入阻抗、收發(fā)增益、回路損耗等線路參數(shù); A/μ率編碼或線性編碼可選;PCM碼流時隙再分配;單雙8Mbps的PCM通道可選;支持四路SLIC控制與語音處理,縮小了電路板的尺寸、降低了成本;其中內(nèi)部環(huán)回、音頻發(fā)生電路,方便了電路的故障診斷與測試。
SLAC用戶線路音頻處理電路,如圖4所示。
另外SLAC與MCU通信提供SPI接口,簡化了與MCU的硬件連接;而且SLAC提供與SLIC無縫連接的SLIC控制與音頻接口,因此直接控制SLAC以間接完成對SLIC的控制,簡化了硬件電路和軟件編程。
3 軟件設(shè)計(jì)
軟件設(shè)計(jì)分為如下兩部分:目標(biāo)板內(nèi)驅(qū)動程序設(shè)計(jì)與主機(jī)程序設(shè)計(jì)(其中包括PCI驅(qū)動程序及主機(jī)應(yīng)用程序開發(fā))。
3.1 目標(biāo)板內(nèi)驅(qū)動程序設(shè)計(jì)
目標(biāo)板內(nèi)驅(qū)動程序可根據(jù)功能模塊劃分:系統(tǒng)自檢、測試模塊; SLAC/SLIC的控制模塊,實(shí)現(xiàn)包括線路激活、振鈴、待機(jī)和斷線狀態(tài),摘掛機(jī)檢測及檢測門限可編程;與主機(jī)通信模塊,實(shí)現(xiàn)主機(jī)對目標(biāo)板的實(shí)時監(jiān)控。
3.2 主機(jī)程序設(shè)計(jì)
這里將主機(jī)程序設(shè)計(jì)分為PCI驅(qū)動程序開發(fā)和主機(jī)應(yīng)用程序開發(fā)兩部分。
PCI驅(qū)動程序使用Jungo公司的驅(qū)動程序生成軟件KernelDriver,使用十分方便。利用KernelDriver中的驅(qū)動程式生成向?qū)?根據(jù)需要生成驅(qū)動程序代碼;在MS-VC++編譯環(huán)境編譯剛剛生成的驅(qū)動CPP代碼,調(diào)試沒問題了,PCI驅(qū)動程序開發(fā)也就完成了。
主機(jī)應(yīng)用程序則是在PCI驅(qū)動程序之上,調(diào)用相關(guān)的API函數(shù)對PCI設(shè)備進(jìn)行操作,完成主機(jī)對目標(biāo)板的程序加載及對其狀態(tài)進(jìn)行實(shí)時監(jiān)控操作。
本方案設(shè)計(jì)中,CPU選用了性價比很高的TMS320VC5402,其CCS開發(fā)環(huán)境配合JTAG調(diào)試,開發(fā)方便;選擇可無縫連接使用的用戶線路接口芯片AM79R79、用戶音頻處理芯片AM79Q02以及靈活配置的PCI橋接芯片PCI9052,大大降低了軟硬件開發(fā)難度,加快了開發(fā)進(jìn)度,達(dá)到了降低開發(fā)成本的最終目的。