智能多業(yè)務(wù)語音片上系統(tǒng)設(shè)計(jì)
在中國IT行業(yè)快速發(fā)展的背景下,社會(huì)以及用戶需求的多樣性使電信設(shè)備運(yùn)營商、服務(wù)提供商面臨越來越多的競爭壓力。提高競爭力、加快業(yè)務(wù)開發(fā)能力、設(shè)計(jì)符合市場需求的產(chǎn)品和業(yè)務(wù)是關(guān)鍵所在。生存中創(chuàng)新和創(chuàng)新中發(fā)展已經(jīng)成為必須面對(duì)和不得不解決的問題。本文采用SoC設(shè)計(jì)方法在altera中高端FPGA器件實(shí)現(xiàn)可應(yīng)用于電信多業(yè)務(wù)交換平臺(tái)的智能語音處理系統(tǒng)芯片。系統(tǒng)設(shè)計(jì)的關(guān)鍵在于片上系統(tǒng)三總線結(jié)構(gòu)獨(dú)特設(shè)計(jì)、SDRAM(內(nèi)存)控制器設(shè)計(jì)以及與系統(tǒng)主機(jī)之間共享信箱協(xié)議的制定。
1 系統(tǒng)設(shè)計(jì)
智能語音處理系統(tǒng)的設(shè)計(jì)實(shí)現(xiàn)基于Cyclone II EP2C35[12]器件。系統(tǒng)的核心處理功能與幾乎全部系統(tǒng)功能模塊全部通過LogicLock的功能在FPGA內(nèi)實(shí)現(xiàn),嵌入式處理器軟核Nios II作為智能語音處理系統(tǒng)的主處理器,用來管理單板的運(yùn)行,負(fù)責(zé)協(xié)調(diào)系統(tǒng)各模塊之間工作,控制它們的工作狀態(tài)及各外設(shè)的操作;通過通信共享信箱單元,實(shí)現(xiàn)與程控交換機(jī)主機(jī)系統(tǒng)的通信,接受系統(tǒng)的管理和調(diào)度,借助以太網(wǎng)口從系統(tǒng)服務(wù)器下載系統(tǒng)運(yùn)行程序和各種不同的語音數(shù)據(jù)。
Nios II處理器是具有最多的6級(jí)流水線(Fetch,Decode,Execute,Memory,Align,Writeback)的32位改進(jìn)哈佛RISC結(jié)構(gòu)軟核處理器。多達(dá)256條用戶可定制指令可幫助用戶創(chuàng)建一個(gè)最適合他們需求的嵌入式系統(tǒng)。Nios II處理器高速緩存的實(shí)現(xiàn)是采用簡單的直接映射的連續(xù)寫入結(jié)構(gòu),這種結(jié)構(gòu)設(shè)計(jì)能夠用最少的器件資源消耗獲得最高的性能,在Cyclone II器件中可以獲得超過166 DMIPS的性能。
有別于傳統(tǒng)的Harvard體系中雙總線結(jié)構(gòu),本系統(tǒng)設(shè)計(jì)采用三總線結(jié)構(gòu):內(nèi)存(SDRAM)專用高速總線、ROMDISK(Flash)專用總線和與系統(tǒng)主機(jī)之間通信的共享信箱總線。滿足ROMDISK、內(nèi)存和共享信箱總線三者之間大流量的數(shù)據(jù)傳輸,同時(shí)保證系統(tǒng)可以處理更多的任務(wù),這樣的體系結(jié)構(gòu)為系統(tǒng)提供并發(fā)執(zhí)行效率,提高處理器的利用率;多任務(wù)之間數(shù)據(jù)快速交換有效縮減等待時(shí)間,提高多任務(wù)處理得效率。
語音數(shù)據(jù)緩沖區(qū)和G.711/G.726協(xié)議處理器根據(jù)系統(tǒng)的要求向用戶提供包含基本語音、輔導(dǎo)語音、各種特色語音在內(nèi),基于ITU G.711/G.726語音壓縮協(xié)議的數(shù)據(jù)鏈路,為系統(tǒng)提供32路-256路速率16-64kbps語音通道,以1-8條2Mbps的高速PCM鏈路提供給系統(tǒng)使用。UART被用作系統(tǒng)調(diào)試接口,系統(tǒng)功能框圖如圖1所示。
2 業(yè)務(wù)流程
智能語音片上系統(tǒng)的主要工作是,滿足程控交換機(jī)系統(tǒng)和IP交換機(jī)系統(tǒng)的語音業(yè)務(wù)類型和智能語音業(yè)務(wù)需求。基本語音存儲(chǔ)和輔導(dǎo)語音固化在本板的ROMDISK中,操作系統(tǒng)可以在上電初始化、操作系統(tǒng)裝載以及文件系統(tǒng)加載完成后,利用三總線機(jī)構(gòu)將ROMDISK中存儲(chǔ)的各種常用的語音數(shù)據(jù)轉(zhuǎn)存到內(nèi)存中。同時(shí)為了滿足業(yè)務(wù)的多樣性和靈活性,系統(tǒng)能夠從服務(wù)器網(wǎng)絡(luò)接收各種特色語音數(shù)據(jù):如天氣預(yù)報(bào)、廣告數(shù)據(jù)以及用戶的留言信息等。正常語音業(yè)務(wù)工作流程如圖2所示。
3 系統(tǒng)關(guān)鍵部分設(shè)計(jì)
3.1 內(nèi)存控制器
內(nèi)存控制器(SDRAM)實(shí)現(xiàn)Nios II處理器和內(nèi)存之間的操作,為系統(tǒng)實(shí)現(xiàn)多功能業(yè)務(wù)開發(fā),提供可靠、大容量存儲(chǔ)空間。該模塊實(shí)現(xiàn)內(nèi)存的初始化、刷新、數(shù)據(jù)傳輸?shù)裙δ?;支持的?shù)據(jù)端口32位,時(shí)鐘頻率設(shè)置為100MHz,CAS Latency(CL)設(shè)置時(shí)間為2個(gè)時(shí)鐘,突發(fā)長度設(shè)置為1-8。
在正確時(shí)間采用正確的方法采樣并鎖存數(shù)據(jù)是設(shè)計(jì)的難點(diǎn)。當(dāng)內(nèi)存的片選信號(hào)和讀信號(hào)有效時(shí),進(jìn)入讀操作狀態(tài)。列地址有效和寫命令有效兩個(gè)時(shí)鐘后,內(nèi)存芯片輸出數(shù)據(jù)(CL=2)在時(shí)鐘的上升沿將數(shù)據(jù)總線上數(shù)據(jù)采樣鎖存。模塊中設(shè)立一個(gè)數(shù)據(jù)采樣鎖存器,根據(jù)其時(shí)序要求,CL=2,有效數(shù)據(jù)延時(shí)輸出2CLKs,內(nèi)部數(shù)據(jù)采樣鎖存器在數(shù)據(jù)有效時(shí)間內(nèi)時(shí)鐘邊沿時(shí)刻執(zhí)行采樣鎖存,完成從內(nèi)存取得數(shù)據(jù)的過程,Nios II處理器Avalon總線從內(nèi)存控制器中數(shù)據(jù)采樣鎖存器中得到數(shù)據(jù),送外數(shù)據(jù)目的地。讀操作采用自動(dòng)預(yù)充功能讀命令(auto precharge after write burst)。內(nèi)存進(jìn)入自動(dòng)預(yù)充操作后就處于空閑狀態(tài),等待下一個(gè)狀態(tài)的開始。
3.2 共享信箱模塊設(shè)計(jì)
共享信箱是系統(tǒng)信箱數(shù)據(jù)區(qū),定義了本系統(tǒng)和程控交換機(jī)系統(tǒng)或IP交換機(jī)的主處理單元之間通信命令參數(shù)和傳送放音命令及音源編碼。這是與系統(tǒng)可以正常進(jìn)行通信的關(guān)鍵。
共享信箱模塊基于FPGA內(nèi)部的雙端口RAM構(gòu)成,內(nèi)部通過Avalon交換總線與Nios II處理器進(jìn)行通信,外部通過一個(gè)16位端口,以總線的方式與程控交換系統(tǒng)進(jìn)行通信,其容量的大小根據(jù)系統(tǒng)要求和FPGA向系統(tǒng)提供PCM鏈路數(shù)來決定。
系統(tǒng)每次放一部分語音,軟件記錄下狀態(tài)值。下一次從這個(gè)值開始繼續(xù)從存儲(chǔ)區(qū)向語音緩沖空間搬移一部分語音數(shù)據(jù)。寫入的字節(jié)數(shù)根據(jù)語音緩沖空間設(shè)定,數(shù)據(jù)確定后,要在每一個(gè)中斷處理周期(語音緩沖區(qū)A/B區(qū)切換時(shí)間)將一定端口、一定數(shù)量的語音數(shù)據(jù)寫入規(guī)定的RAM空間。句法結(jié)構(gòu)如下:
3.3 語音數(shù)據(jù)緩沖區(qū)設(shè)計(jì)
緩沖區(qū)寫端口側(cè)和系統(tǒng)Avalon總線聯(lián)系,其地址空間按照順寫的方式進(jìn)行,難點(diǎn)在于讀端口側(cè)地址信號(hào)的產(chǎn)生。本文采用雙緩沖區(qū)空間方式,在FPGA內(nèi)部設(shè)置兩塊同樣的存儲(chǔ)區(qū)域,通過地址產(chǎn)生器產(chǎn)生端口地址跳變、鏈路地址跳變和中斷的產(chǎn)生。
Nios II處理器按照程控交換系統(tǒng)主機(jī)的指令將所需的語音數(shù)據(jù)搬到語音數(shù)據(jù)緩沖區(qū)指定的地址空間;緩沖區(qū)可為每一個(gè)語音通道提供7字節(jié)的空間(N為偶數(shù)),CPU可以在每次語音處理中斷中,每路語音通道1次可以寫入N/2字節(jié)的語音數(shù)據(jù)。在一個(gè)系統(tǒng)幀同步信號(hào)FS0周期內(nèi)(125μs),對(duì)單個(gè)語音通道可以完成8位,即一個(gè)字節(jié)數(shù)據(jù)轉(zhuǎn)換,采用AB雙緩沖區(qū)的設(shè)計(jì)模式,N/2字節(jié)的數(shù)據(jù)需要在N/2個(gè)FS0完成,需要的時(shí)間就是125μsN/2,其周期根據(jù)系統(tǒng)響應(yīng)中斷的時(shí)間、處理語音數(shù)據(jù)存取的時(shí)間、系統(tǒng)處理其他數(shù)據(jù)的時(shí)間等綜合考慮來確定,保證系統(tǒng)設(shè)定的中斷周期內(nèi)完成業(yè)務(wù)處理,且不影響系統(tǒng)的整體運(yùn)行效率。
從中斷的處理過程來看,每一次中斷的產(chǎn)生,響應(yīng)和處理,系統(tǒng)總是需要對(duì)系統(tǒng)指針、放音位置等系統(tǒng)重要數(shù)據(jù)進(jìn)行壓棧堆棧和回復(fù)的處理,處理同樣的任務(wù),中斷周期短,系統(tǒng)的任務(wù)量都會(huì)相應(yīng)增加。中斷時(shí)間的長短選擇是設(shè)計(jì)中比較困難和關(guān)鍵的,需要根據(jù)處理器處理能力、完成數(shù)據(jù)轉(zhuǎn)換需要的時(shí)間、中斷任務(wù)的處理時(shí)間、FPGA的RAM容量等因素綜合進(jìn)行選擇,使用Nios II處理器,系統(tǒng)完成全部(128個(gè))語音通道數(shù)據(jù)轉(zhuǎn)換的時(shí)間,也就是中斷任務(wù)的處理時(shí)間為2.83ms。本設(shè)計(jì)中也是根據(jù)這個(gè)前提條件來設(shè)定中斷級(jí)別和中斷周期的。本設(shè)計(jì)設(shè)定N=256,提供128路語音通道數(shù)據(jù),系統(tǒng)需要中斷時(shí)間設(shè)定為16ms。
語音鏈路PCM的處理,按照國際電信聯(lián)盟ITU G.711協(xié)議完成,G.711協(xié)議是ITU規(guī)定的PSTN網(wǎng)中使用語音傳輸?shù)膮f(xié)議,它的數(shù)據(jù)速率為64kbps。G.726是ITU前身CCITT于1990年在G.721和G.723標(biāo)準(zhǔn)的基礎(chǔ)上提出的關(guān)于把64kbps非線性PCM信號(hào)轉(zhuǎn)換為40kbps、32kbps、24kbps、16kbps的ADPCM信號(hào)的標(biāo)準(zhǔn)。G.726標(biāo)準(zhǔn)算法簡單,語音質(zhì)量高,多次轉(zhuǎn)換后語音質(zhì)量有保證,在語音存儲(chǔ)和語音傳輸領(lǐng)域得到廣泛應(yīng)用。
4 結(jié)論
設(shè)計(jì)完成后下載到FPGA后,經(jīng)過現(xiàn)場測試和實(shí)際運(yùn)用,該系統(tǒng)完全達(dá)到設(shè)計(jì)目標(biāo),在每個(gè)局用交換模塊上配置一塊由該芯片控制的語音子處理機(jī),即可滿足一個(gè)交換模塊8192個(gè)用戶對(duì)語音系統(tǒng)的要求,證明該智能多業(yè)務(wù)片上系統(tǒng)設(shè)計(jì)是成功的??梢赃m用于各種電信業(yè)務(wù)系統(tǒng)中和IP網(wǎng)絡(luò)交換系統(tǒng)中,為企業(yè)縮短產(chǎn)品上市時(shí)間、降低開發(fā)風(fēng)險(xiǎn)與成本、提高新業(yè)務(wù)開發(fā)能力提供一個(gè)較為理想的解決方案。
評(píng)論