摘要:設(shè)計基于FPGA的IP-BX電話應(yīng)用系統(tǒng),,用于傳統(tǒng)的電話網(wǎng)絡(luò)(PSTN)與PC機之間的接口連接。USB2.0接口器件EZ-USB FX2 CY7C68013A-56工作在slave FIFO模式,,為基于FPGA的嵌入式系統(tǒng)與PC機之間提供數(shù)據(jù)和命令通道,從而可滿足PC機與FPGA之間數(shù)據(jù)與命令的高速傳輸,,實現(xiàn)PSTN與PC機之間的電話通信,。硬件調(diào)試結(jié)果表明系統(tǒng)工作穩(wěn)定,通話質(zhì)量滿足要求,。
通用串行總線USB(Universal Serial Bus)是應(yīng)用于PC領(lǐng)域的接口技術(shù),,已得到廣泛應(yīng)用。USB2.0已成為目前電腦中的標準擴展接口。本系統(tǒng)設(shè)計的目的在于為公共交換電話網(wǎng)絡(luò)(PSTN)和PC機之間提供一個數(shù)字接口,,設(shè)計中PC機是主機,,基于FPGA的嵌入式系統(tǒng)是USB設(shè)備。該系統(tǒng)是IP-PBX的簡化系統(tǒng),,大量工作由PC的服務(wù)器完成,,而這里重點介紹以FPGA為控制核心的USB接口設(shè)計。
1 系統(tǒng)結(jié)構(gòu)設(shè)計
該系統(tǒng)通過TRM(Telephone Response Module)和PC服務(wù)器實現(xiàn)PSTN網(wǎng)絡(luò)和Internet網(wǎng)絡(luò)之間自由,、高效通話,。圖l為整個系統(tǒng)結(jié)構(gòu)示意圖。
系統(tǒng)工作過程:當有來電時,,DAA向FPGA申請中斷,。FPGA收到中斷后,使用USB的中斷傳輸向主機報告有外接來電,,則PC的應(yīng)用軟件會提示用戶選擇摘機或拒絕,。摘機后,F(xiàn)PGA在接收到命令后就會接通電話,,然后語音數(shù)據(jù)通過USB的同步傳輸進行雙向傳送,。當用戶向外撥號時,其過程與來電時的情況是相同的,。
2 系統(tǒng)硬件模塊設(shè)計
2.1系統(tǒng)硬件框圖
本設(shè)計采用FPGA作為核心控制器件,,其控制對象是USB2.0接口器件EZ-USB FX2 CY7C68013A-56。圖2為EZ-USB器件工作在Slave FIFO模式下時FX2 USB和FPGA的典型電路連接圖,。
2.2 FPGA和USB簡介
設(shè)計中的核心控制器件FPGA選用Ahrea公司的EP2C8Q208C8,,而USB設(shè)備器件則選用Cypress公司的CY7C68013A-56。EP2C8Q208C8是Ahera Cyclone II系列器件中的一種,,Cyclone II FPGA是基于Stratix II的90 nm工藝生產(chǎn)的低成本FPGA,。Cyclone II FPGA的應(yīng)用主要定位在終端市場,如消費類電子,、計算機,、工業(yè)和汽車等領(lǐng)域。EP2C8Q208C8內(nèi)部有2個鎖相環(huán)(PLL)和8個全局時鐘網(wǎng)絡(luò),,8 256個邏輯單元(LE)個,,36個M4K RAM,18個乘法器模塊,,可用I/O數(shù)138個,。EP2C8Q208C8具有低成本、高性能,、低功耗和對IP-PBX系統(tǒng)的可擴展性(足夠多的I/O接口)的優(yōu)點,,因此這里選擇該器件作為系統(tǒng)的控制器件,。
CY7C68013A-56器件是第1個包含USB2.0的集成微控制器,其內(nèi)部集成有1個增強型的8051,,1個智能USB串行接口引擎(SIE),,1個USB數(shù)據(jù)收發(fā)器,3個8位,。I/O,、16位地址線、8.5 KB RAM和4 KB的FIFO等,。增強型8051內(nèi)核完全與標準805l兼容,,而性能可達到標準805l的3倍以上。圖3為CY7C68013A-56的結(jié)構(gòu)框圖,。
CY7C68013A器件在數(shù)據(jù)傳輸時利用4 KB的FIFO,,包含7個端點:EPOIN/OUT,EPlIN,,EPlOUT,,EP2,EP4,,EP6,,EP8。其中EPO,、EPIIN和EPlOUT是3個64 B的緩沖端點,,只能被固件訪問,EP0是默認的數(shù)據(jù)輸入輸出端口緩存,,默認工作于控制傳輸,,EPlIN和EPlOUT是獨立的64 B緩存,可以配置成塊傳輸,、中斷傳輸或同步傳輸,。端點2、4,、6,、8是大容量高寬帶的數(shù)據(jù)傳輸端點,可配置為各種帶寬以滿足實際需求,。端點2,、6能配置成每幀成512 B或l 024 B,并可配置為2,、3,、4級,則EP2,,EP6最大能被配置為4 KB的緩存,;端點4、8則能配置為每幀512 B的緩存,。
3 系統(tǒng)軟件設(shè)計
3.1 USB Firmware設(shè)計
由于設(shè)計中使用FPGA控制USB設(shè)備進行語音電話通信,,所以在USB部分使用3種USB傳輸模式:控制傳輸、中斷傳輸,、等時傳輸,。控制傳輸用于實現(xiàn)設(shè)備枚舉主機的標準請求以及廠商自定義請求,;中斷傳輸用于實現(xiàn)設(shè)備對主機的喚醒,,是唯一的設(shè)備主動向主機發(fā)送數(shù)據(jù)的傳輸方式;等時傳輸用于實現(xiàn)語音數(shù)據(jù)的雙向同步傳輸,。USB Firmware設(shè)計重點是語音的通信段,。
CY7C68013A具有PORTS、Slave FIFO,、GPlF共3種工作模式,。PORTS模式是最基本的數(shù)據(jù)傳輸方式,其數(shù)據(jù)傳輸需CPU直接參與,,適于傳輸速率要求不高的場合,;GPIF模式是主機方式,內(nèi)部主機控制端點FIFO,;Slave FIFO模式是從機方式,,外部控制器,如FPGA,、DSP,。應(yīng)用中使用異步FIFO方式,采用內(nèi)部48 MHz時鐘,,自動方式,,而固件程序的編寫則以Cypress公司提供的固件程序框架為基礎(chǔ),在其初始化函數(shù)中添加自己的配置代碼,。
在整個系統(tǒng)中,,CY7C68013A的固件主要完成以下工作:初始化USB器件;作為USB接口與主機通信并傳輸數(shù)據(jù),;利用CY7C68013A器件的Slave FlFO接口控制USB器件和外部控制器之間的數(shù)據(jù)傳輸,。因此同件主程序比較復(fù)雜,除了上面的TD_lnit()初始化外,,還需要大量函數(shù),,但基本結(jié)構(gòu)相對簡單,包括3個過程:USB控制器的初始化,;主函數(shù),,包括處理標準設(shè)備請求的代碼,;中斷處理,包括處理各種中斷的程序代碼,。圖4為同件主程序流程,。
3.2 USB驅(qū)動程序
USB系統(tǒng)軟件由主機中的軟件和設(shè)備同件構(gòu)成。USB主機中的軟件主要包括USB設(shè)備驅(qū)動(USBDD),、USB總線驅(qū)動(USBD)和USB主控制器驅(qū)動(HCD),。
USB設(shè)備驅(qū)動程序(或客戶驅(qū)動程序)處于最頂層,它支持特定設(shè)備類的驅(qū)動,,負責(zé)與其對應(yīng)的USB設(shè)備進行通信和讀寫控制,,實現(xiàn)各個USB設(shè)備特殊的功能應(yīng)用。連接USB設(shè)備的每種類型的功能單元都必須具有客戶驅(qū)動程序,??蛻趄?qū)動程序把USB設(shè)備看作是一個可被訪問的端點的集合。USB設(shè)備可以被控制并與其功能單元通信,。USB設(shè)備驅(qū)動程序通過I/O請求包(IRP)向USB總線驅(qū)動程序發(fā)送請求,。這些請求包將一個給定的傳輸初始化。這種傳輸可以來自于一個USB目標設(shè)備或發(fā)送到USB設(shè)備,。
USB總線驅(qū)動(USBD)是在主機控制器驅(qū)動和USB設(shè)備驅(qū)動之間的模塊,,它對應(yīng)USB協(xié)議的USBD,在Windows系統(tǒng)中由USBD.SYS模塊提供,。它是在某一操作系統(tǒng)上對USB總線和協(xié)議提供支持的軟件,,獨立于USB設(shè)備和USB設(shè)備驅(qū)動,并對它們進行控制和提供統(tǒng)一編程接口,。
USB主控制器驅(qū)動程序(HCD)處于最底層,,它負責(zé)對主機控制器進行抽象和對USB提供低級支持。
3.3 PC端的軟件設(shè)計
PC端的軟件設(shè)計采用面向?qū)ο蟪绦蛟O(shè)計,,分為核心類(包括Provider,,Data,Net)和應(yīng)用類(包括UI,,Call,,Record)。其中核心類提供對硬件,、操作系統(tǒng)和網(wǎng)絡(luò)環(huán)境的支持,,應(yīng)用類在核心類的基礎(chǔ)上提供對用戶操作的支持。Provider類定義對USB設(shè)備的讀寫操作,,提供讀取數(shù)據(jù)方法(readusb())和寫數(shù)據(jù)方法(writeusb()),;Data類包括地址數(shù)據(jù)(Address)、音頻數(shù)據(jù)(Audio)和控制數(shù)據(jù)(Command)的定義,,并提供數(shù)據(jù)的分解方法(Decompose())和組合方法(Compose()),;Net類提供對網(wǎng)絡(luò)的支持,,包括網(wǎng)絡(luò)協(xié)議的選擇和數(shù)據(jù)的接收與發(fā)送。UI類提供對用戶界面的支持,,包括窗口,、對話框等,,實現(xiàn)基本用戶框架與應(yīng)用入口,;Call類提供通話功能;Record類則提供電話錄音功能,;根據(jù)不同應(yīng)用要求,,可擴展其他應(yīng)用類。具體結(jié)構(gòu)如圖5所示,。
4 結(jié)束語
USB靈活的接口和可編程特性可簡化外部硬件的設(shè)計,,提高系統(tǒng)可靠性。而USB2.O控制器CY7C68013A也廣泛應(yīng)用于許多數(shù)據(jù)傳輸領(lǐng)域,。FPGA已成為通信,、計算機、消費類電子產(chǎn)品等領(lǐng)域的基礎(chǔ)器件,。這里所介紹的USB設(shè)備就是一個基于FPGA的嵌入式系統(tǒng),,該系統(tǒng)軟硬件都具有模塊化的特性,易于改造成其他應(yīng)用場合的語音控制系統(tǒng)(DAA除外),。該設(shè)計的應(yīng)用可節(jié)省大量的人力,、物力。具有較大的推廣意義和使用價值,。