課程設(shè)計(jì)總結(jié)報(bào)告模版
課程設(shè)計(jì)總結(jié)報(bào)告
課程名稱:學(xué)生姓名:學(xué)生學(xué)號(hào):系別:班級(jí):指導(dǎo)教師:
電子技術(shù)課程設(shè)計(jì)(一)
物理與電子學(xué)院電子科學(xué)與技術(shù)080~~柳建國李春來
201*年7月5日音頻放大器的設(shè)計(jì)題目(三號(hào),黑體,居中)
(空一行)
一、設(shè)計(jì)任務(wù)與要求(標(biāo)題均為小三號(hào),宋體)
1、。。。。。。;(正文均為小四號(hào),宋體,行距1.5倍)2、。。。。。。;
二、方案設(shè)計(jì)與論證
(首段,對(duì)設(shè)計(jì)要求的總體分析)方案一、。。。。。。要畫系統(tǒng)原理框圖。。。。。。方案二、。。。。。。要畫系統(tǒng)原理框圖。。。。。。
三、單元電路設(shè)計(jì)與參數(shù)計(jì)算
。。。。。。(要畫單元電路圖)
四、仿真過程與仿真結(jié)果
Protel99SE仿真。。。。。。
五、總原理圖及元器件清單
1、總原理圖
(含元件標(biāo)號(hào)與型號(hào))2、元件清單元件序號(hào)R1C1。。。型號(hào)主要參數(shù)數(shù)量備注五、安裝與調(diào)試
(一般分靜態(tài)調(diào)試與動(dòng)態(tài)調(diào)試兩大內(nèi)容)
LA4102中各引腳的靜態(tài)工作點(diǎn)電壓:其中Vcc=9V管腳電壓(V)12345678910111213
六、性能測試與分析
(要圍繞設(shè)計(jì)要求中的各項(xiàng)指標(biāo)進(jìn)行)1.測量最大不失真輸出功率和效率功率測量:其中Vcc=9V測試條件:ViPP=mVVf=1KHzRL=8歐輸出電壓電流IE(mA)VOPP22輸出功率PO(W)電源功率PE(W)VOPP(V)VO效率η
2VOPORLPEVCCIE
PO100%PE2.測量頻率響應(yīng)
頻率響應(yīng)測量:輸入正弦信號(hào):ViPP=20mV頻率20Hz40Hz60Hz100Hz1KHz10KHz15KHz18KHz20KHzVOPP(V)七、結(jié)論與心得
八、參考文獻(xiàn)(不少于3篇)
1、。。。。。。(五號(hào),宋體)
2、。。。。。。
致謝
*教材與參考書
1、教材
謝自美主編.《電子線路實(shí)驗(yàn).設(shè)計(jì).測試》第三版.武漢:華中科技大學(xué)出版社,201*.7。2、參考書
(1)高吉祥主編:《電子技術(shù)基礎(chǔ)實(shí)驗(yàn)與課程設(shè)計(jì)》電子工業(yè)出版社,201*。(2)彭介華主編:《電子技術(shù)課程設(shè)計(jì)指導(dǎo)》,高教出版社,201*年出版。
(3)陳大欽主編:《電子技術(shù)基礎(chǔ)實(shí)驗(yàn)-電子電路實(shí)驗(yàn)、設(shè)計(jì)、仿真》,高教出版社,201*。
目錄
一、設(shè)計(jì)任務(wù)書(設(shè)計(jì)課題、給定的主要器件、功能要求)二、實(shí)驗(yàn)儀器三、設(shè)計(jì)框圖及整體概述四、各單元電路的設(shè)計(jì)方案及原理說明五、調(diào)試過程及結(jié)果分析六、設(shè)計(jì)、安裝及調(diào)試中的體會(huì)七、對(duì)本次課程設(shè)計(jì)的意見及建議八、參考文獻(xiàn)九、附錄(包括:整機(jī)邏輯電路圖和元器件清單)[正文的排版:(此頁不裝訂。┩ㄟ^“視圖文檔結(jié)構(gòu)圖”顯示文檔層次結(jié)構(gòu)1.第一級(jí)標(biāo)題用小三號(hào)黑體2.第二級(jí)標(biāo)題用四黑體3.第三級(jí)標(biāo)題用小四號(hào)黑體
4.正文小四號(hào)字體,行距為固定值20磅
5.圖題及表題用5號(hào)黑體,居中;圖、表中文字用5號(hào)宋體(英文采用TimeNewRoman)6.參考文獻(xiàn)采用一級(jí)標(biāo)題,參考文獻(xiàn)正文為五號(hào)宋體(英文用5號(hào)TimeNewRoman),正文中引用的文獻(xiàn)依次編號(hào)并用方括號(hào)括起,如[1],[2],置于右上角;
7.正文中對(duì)于圖表的引用說明一般采用:“如圖×.×所示為××××”或“×××如圖×.×所示“;一般不采用“×××如下:”,也即文中沒有對(duì)于圖表序號(hào)的顯式引用;8.所有標(biāo)題一律采用標(biāo)準(zhǔn)WORD格式設(shè)置(以便自動(dòng)生成目錄);有關(guān)報(bào)告排版的其它說明:
1.紙張大小及版心:統(tǒng)一用A4紙(21×29.7)打印,邊距設(shè)為:上3cm,下2.6cm,左2.6cm,右2.4cm。行距為固定值20磅。
2.注意文中代表變量的英文字母必須用斜體,其它用正體。微分號(hào)d、圓周率π、自然底數(shù)e、矩陣轉(zhuǎn)置T等均應(yīng)為正體。
3.文章中的英文均用TimesNewRoman字體。4.提交文本的電子版為Word文件。
擴(kuò)展閱讀:課程設(shè)計(jì)總結(jié)報(bào)告模板
東北林業(yè)大學(xué)
單片機(jī)原理實(shí)驗(yàn)課程設(shè)計(jì)二號(hào)黑體居中間距約3cm距上約5cm
總結(jié)報(bào)告
6cm間距約
字號(hào):初號(hào),黑體居中
小三號(hào)黑體小三號(hào)楷體
設(shè)計(jì)項(xiàng)目:基于Fusion單芯片的電話錄音系統(tǒng)的設(shè)計(jì)項(xiàng)目完成人:張小海、趙大海、王曉明指導(dǎo)教師:王明教授學(xué)院:信息與計(jì)算機(jī)工程學(xué)院專業(yè):電子信息工程201*級(jí)1班
小三號(hào)黑體,本頁最后一行指導(dǎo)教師一欄填寫指導(dǎo)教師姓名、職稱年月日
綜合電子課程設(shè)計(jì)任務(wù)書
學(xué)生姓名學(xué)生姓名設(shè)計(jì)項(xiàng)目學(xué)號(hào)學(xué)號(hào)專業(yè)(班級(jí))專業(yè)(班級(jí))設(shè)計(jì)內(nèi)容主要技術(shù)指標(biāo)和要求設(shè)計(jì)所用儀器設(shè)備工作計(jì)劃參考資料指導(dǎo)教師簽字
基于Fusion單芯片的電話錄音系統(tǒng)的設(shè)計(jì)
摘要
三號(hào)黑體摘要前必須有題目,小二黑體,居中放置
本設(shè)計(jì)主要研究一種基于數(shù)字通信的電話錄音系統(tǒng)的設(shè)計(jì)方案。目前在國內(nèi)已有現(xiàn)成的USB電話錄音盒的產(chǎn)品,技術(shù)已經(jīng)相當(dāng)成熟,它是專門為小公司而設(shè)計(jì)開發(fā)的,具有經(jīng)濟(jì)、穩(wěn)定、高效的特點(diǎn)。USB接口安裝安裝方便,即插即用,不需要其他配件就可以對(duì)電話進(jìn)行錄音。但是采用的都是專用解碼芯片,為了提高運(yùn)用PFGA的能力,本設(shè)計(jì)采用FPGA進(jìn)行FSK來電顯示解碼,語音采集以及進(jìn)行核心控制,實(shí)現(xiàn)單芯片系統(tǒng)的設(shè)計(jì)。
電話錄音系統(tǒng)主要由上位機(jī)和下位機(jī)兩部分組成。下位機(jī)由Actel公司的Fusion系列FPGA實(shí)現(xiàn),主要負(fù)責(zé)來電號(hào)碼識(shí)別,去電號(hào)碼識(shí)別以及語音采樣。來電的號(hào)碼識(shí)別通過FPGA對(duì)FSK信號(hào)進(jìn)行解碼來完成,去電號(hào)碼識(shí)別通過專用DTMF解碼芯片MT8870完成,語音采樣則由FPGA內(nèi)部集成的ADC完成。上位機(jī)由VC6.0編寫,程序用ODBC(開放數(shù)據(jù)庫互連)連接了Excel作為數(shù)據(jù)庫。通話的號(hào)碼、時(shí)間、類型等信息都會(huì)被存儲(chǔ)到數(shù)據(jù)庫當(dāng)中,通話的語音則以WAV文件的形式保存。上位機(jī)與下位機(jī)通過RS232接口通信。
本系統(tǒng)完成的功能是在有來電時(shí),上位機(jī)軟件能夠從最小托盤處彈出,并顯示來電號(hào)碼,若此號(hào)碼在數(shù)據(jù)庫中有對(duì)應(yīng)的聯(lián)系人,將顯示此聯(lián)系人的姓名。若摘機(jī),軟件同樣會(huì)自動(dòng)彈出,顯示去電號(hào)碼,若有對(duì)應(yīng)聯(lián)系人,將顯示姓名。并將所有通話記錄以及通話語音進(jìn)行存儲(chǔ),便于用戶查詢。
小四宋體,中文
關(guān)鍵詞:Fusion;FPGA;來電顯示;FSK解碼;DTMF
摘要字?jǐn)?shù)400左右
小四宋體加黑
DesignfortelephonerecordingbasedonFusionsingle-chip
Abstract英文題目,小二號(hào)TimesNewRoman加黑ThisdesignmainlystudiesthepreceptofdigitalcommunicationbasedonthetelephoneTimesNewRomanrecording.Atpresent,thereareready-madeinChinaUSBtelephonerecordingboxofproducts,三號(hào)加黑andthetechnologyisalreadyquitematurewhichisspecificallydesignedforsmallcompaniestodevelop,economically,stable,high-performancecharacteristics.USBinterfaceiseasytoinstall,plugandplay,nootheraccessoriescanberecordedonthephone.Butthechipsusedarealldedicateddecoderchips,inordertoenhancetheabilitytousePFGA,thedesignusesFPGAtodecodeFSKcallerID,voicecapture,aswellasthecoreofcontrol,toachievesingle-chipsolution.
Telephonerecordingsystemismainlygroupedwiththeupperandlowerplane.Subordinatemachine,implementedbyActel"sFusionfamilyFPGA,ismainlyresponsibleforCID,toidentifydialednumber,aswellasvoicesample.CIDsachievementisthroughtheFSKsdecodingbyFPGA.TheidentificationofdialednumbersiscompletedbyadedicatedDTMFdecoderchipMT8870.VoicesamplingiscompletedbytheinternalFPGAintegratedADC.PCisdevelopedbyVC6.0,proceduresuseODBC(opendatabaseconnectivity)toconnecttheExcelasadatabase.Callingnumber,timing,typeandotherinformationwillbestoredtothedatabase,thevoiceofcallsaretopreservetheformofWAVfiles.PositionmachineiscommunicatedwithSubordinatemachinethroughtheRS232interface.
Thefunctionofthefunctionofthesystemisinacall,thehostcomputersoftwaretoOffice,fromthesmallestpop-uptrayanddisplayscallerID,ifthenumberinthedatabasehascorrespondingcontacts,willshowthenameofthiscontact.Iftheremovableisdrived,thesoftwarewillautomaticallypopup,indicatingtothepowernumbers,ifthecorrespondingcontact,thenamewillbedisplayed.Allcallswillberecorded,aswellasvoicecallsforstorage.Keywords:Fusion;FPGA;CID;FSKDecoder;DTMF
TimesNewRoman小四,英文采用1.5倍行距TimesNewRoman小四,加黑
目錄
一級(jí)題序用小四宋體加黑
三號(hào)黑體
摘要AbstractTimesNewRoman小四號(hào)加黑,中、英文摘要不編頁碼。1.1課題研究的背景和意義...........................................................................................................11緒論...........................................................................................................................................11.2本設(shè)計(jì)的主要要求...................................................................................................................11.2.1基本要求...............................................................................................................................11.2.2擴(kuò)展功能要求.......................................................................................................................12
系統(tǒng)方案選擇...........................................................................................................................22.1系統(tǒng)方案實(shí)現(xiàn)...........................................................................................................................22.2下位機(jī)核心控制.......................................................................................................................22.2.1器件選擇...............................................................................................................................2二級(jí)以下(包括二2.2.2控制方案選擇.......................................................................................................................32.3來電號(hào)碼識(shí)別...........................................................................................................................32.3.1來電數(shù)據(jù)的格式...................................................................................................................32.3.2來電數(shù)據(jù)的傳輸制式...........................................................................................................32.3.3來電數(shù)據(jù)的解調(diào)解碼...........................................................................................................42.4去電號(hào)碼識(shí)別...........................................................................................................................42.5語音記錄方式...........................................................................................................................52.5.1WAV格式簡介.....................................................................................................................52.5.2WAV文件頭.........................................................................................................................62.6通信協(xié)議定義...........................................................................................................................63
硬件設(shè)計(jì)...................................................................................................................................8小四宋體加黑
級(jí)題序)用小四宋體3.1系統(tǒng)硬件設(shè)計(jì)框圖...................................................................................................................83.2電源設(shè)計(jì)...................................................................................................................................8
3.3FPGA最小系統(tǒng)設(shè)計(jì)...............................................................................................................93.3.1時(shí)鐘和復(fù)位電路...................................................................................................................93.3.2FPGA電源和接地................................................................................................................9
3.3.3FPGA數(shù)字和模擬IO分配...............................................................................................103.3.4JTAG下載電路..................................................................................................................113.4UART發(fā)送模塊.....................................................................................................................113.5FSK前置提取電路設(shè)計(jì)........................................................................................................123.6DTMF解碼電路的設(shè)計(jì)........................................................................................................123.7語音提取電路的設(shè)計(jì).............................................................................................................133.8摘機(jī)檢測電路的設(shè)計(jì).............................................................................................................134
FPGA程序設(shè)計(jì).....................................................................................................................14
4.1總體結(jié)構(gòu)設(shè)計(jì).........................................................................................................................144.2核心控制模塊設(shè)計(jì).................................................................................................................144.2.1端口介紹.............................................................................................................................144.2.2工作原理.............................................................................................................................154.3通道選擇模塊設(shè)計(jì).................................................................................................................164.3.1端口介紹.............................................................................................................................164.3.2工作原理.............................................................................................................................174.4UART發(fā)送模塊.....................................................................................................................184.5FSK解碼模塊設(shè)計(jì)................................................................................................................184.5.1端口介紹.............................................................................................................................184.5.2工作原理.............................................................................................................................194.6DTMF解碼模塊設(shè)計(jì)............................................................................................................194.7A/D采樣模塊設(shè)計(jì).................................................................................................................194.7.1端口介紹.............................................................................................................................194.7.2模塊結(jié)構(gòu).............................................................................................................................205
上位機(jī)軟件設(shè)計(jì).....................................................................................................................21
5.1功能概述.................................................................................................................................215.1.1主界面.................................................................................................................................215.1.2通話記錄界面.....................................................................................................................215.1.3電話簿界面.........................................................................................................................225.2程序結(jié)構(gòu)框圖.........................................................................................................................22
5.3數(shù)據(jù)接收和信息記錄.............................................................................................................235.3.1引導(dǎo)字符的識(shí)別.................................................................................................................235.3.2來電信息記錄.....................................................................................................................245.3.3去電信息記錄.....................................................................................................................255.3.4語音信息記錄.....................................................................................................................265.3.5數(shù)據(jù)庫操作.........................................................................................................................275.4其他.........................................................................................................................................276
系統(tǒng)調(diào)試.................................................................................................................................28
6.1測試方案設(shè)計(jì).........................................................................................................................286.2系統(tǒng)典型故障與分析.............................................................................................................286.2.1下位機(jī)上電復(fù)位.................................................................................................................296.2.2FSK解碼.............................................................................................................................296.2.3上位機(jī)程序異常退出.........................................................................................................296.2.4上位機(jī)程序引導(dǎo)字符識(shí)別錯(cuò)誤.........................................................................................297
結(jié)論.........................................................................................................................................30
參考文獻(xiàn)附錄
參考文獻(xiàn)、附錄、致謝均不編頁碼
東北林業(yè)大學(xué)課程設(shè)計(jì)
基于Fusion單芯片的電話錄音系統(tǒng)的設(shè)計(jì)1緒論1.1課題研究的背景和意義來電顯示,是近年來電信部門推出的一種新的業(yè)務(wù):顯示被叫方的電話號(hào)碼和呼叫時(shí)在論文正文前,應(yīng)闡述本課題研究間等信息。來電顯示電話機(jī)和來電顯示器產(chǎn)品應(yīng)用已十分廣泛,其技術(shù)也相當(dāng)成熟。但傳的目的、意義、對(duì)本研究國內(nèi)外研究現(xiàn)正文二級(jí)標(biāo)題統(tǒng)的來電顯示信息電話僅將數(shù)據(jù)顯示在自身的話機(jī)內(nèi),無法將數(shù)據(jù)提供給計(jì)算機(jī)或其他設(shè)狀有針對(duì)性的簡要綜合評(píng)述和本論文用小三號(hào)宋體字,與備。因此開發(fā)來電顯示電話與計(jì)算機(jī)的接口和相關(guān)的數(shù)據(jù)采集系統(tǒng)是十分必要的,也是有所要解決的問題等。三號(hào)宋體。論文標(biāo)下文單倍行距實(shí)用價(jià)值的。題及第一層次題序距下文空一行.來電顯示助手通過送入電腦的來電顯示,結(jié)合客戶信息數(shù)據(jù)庫,將傳統(tǒng)的電話來電顯示功能進(jìn)行擴(kuò)展,使得客戶在來電時(shí)通過來電號(hào)碼在客戶數(shù)據(jù)中查詢相關(guān)的信息,顯示在電腦上,使得我們?cè)诘谝粫r(shí)間獲知客戶端基本信息、業(yè)務(wù)發(fā)生情況,占據(jù)業(yè)務(wù)的先機(jī),把握談話的主動(dòng)性,拉近員工與客戶之間的距離、提升企業(yè)形象、提高工作效率。而電話錄音功能又可以讓員工對(duì)客戶提出的問題以及我們當(dāng)時(shí)提出的系統(tǒng)的設(shè)計(jì)進(jìn)行進(jìn)一步的記錄,有助于我們總結(jié)問題,以便于員工對(duì)客戶進(jìn)行更好的服務(wù)。
小二號(hào)黑體居中放置。論文標(biāo)題及第一層次題序距上下文空一行1.2本設(shè)計(jì)的主要要求
1.2.1基本要求
(1)解碼FSK制式來電顯示;(2)能記錄語音信息;小四宋體(3)使用FusionFPGA實(shí)現(xiàn)設(shè)計(jì)方案;1.2.2擴(kuò)展功能要求
(1)通過串口將來電號(hào)碼送往PC并做記錄;(2)通過串口將語音信息傳到PC并做記錄;(3)能記錄去電號(hào)碼及語音信息;
1頁面上邊距2.5cm,下邊距2cm,左邊距2.5cm,右邊距2cm,裝訂線位置選擇左側(cè)。東北林業(yè)大學(xué)課程設(shè)計(jì)2系統(tǒng)方案選擇頁眉為:東北林業(yè)大學(xué)課程設(shè)計(jì),字體設(shè)置為小五號(hào)宋體居中,頁眉以通檔橫線與正文間隔2.1系統(tǒng)方案實(shí)現(xiàn)系統(tǒng)主要由硬件和軟件兩大部分構(gòu)成,其中硬件又由前端電路,F(xiàn)PGA以及隔離模塊三大部分構(gòu)成,其中前端電路將電話線上的信號(hào)進(jìn)行并行處理并接入FPGA的內(nèi)部進(jìn)行進(jìn)一步的處理,通過檢測到的忙音信號(hào),振鈴信號(hào),摘機(jī)信號(hào)進(jìn)行判斷當(dāng)前狀態(tài)并對(duì)通道選擇模塊進(jìn)行控制,將FSK解碼,DTMF解碼以及AD采樣中的某一路與串口隔離模塊相連,最后通過串口隔離模塊后與PC機(jī)相連。
軟件部分是由VC6.0編寫的一個(gè)小型應(yīng)用軟件,具有良好的人機(jī)界面,便于使用。
前端電路忙音檢測忙音檢測忙音信號(hào)振鈴信號(hào)振鈴檢測核心控制摘機(jī)信號(hào)電話信號(hào)摘機(jī)檢測串口隔離RS232接口FusionFPGA隔離模塊FSK提取FSK解碼通道選擇串口發(fā)送串口轉(zhuǎn)USBPC機(jī)DTMF解碼DTMF解碼語音提取AD采樣USB接口圖21系統(tǒng)框圖
2.2下位機(jī)核心控制2.2.1器件選擇由于本系統(tǒng)要對(duì)語音信號(hào)進(jìn)行采樣,因此我們選擇了Actel公司的Fusion系列FPGA作為核心控制器,針對(duì)本系統(tǒng)該系列FPGA提供了以下特點(diǎn):
(1)片內(nèi)集成了采樣精度最高12位,采樣頻率最高600kps的ADC
2正文三級(jí)標(biāo)題用四號(hào)宋體字東北林業(yè)大學(xué)課程設(shè)計(jì)
(2)片內(nèi)集成了1.5V電壓調(diào)整器,可以實(shí)現(xiàn)低功耗的睡眠模式(3)基于Flash架構(gòu),配置數(shù)據(jù)掉電不丟失
基于以上的特點(diǎn),我們選擇了Fusion系列FPGA中AFS250來實(shí)現(xiàn)我們系統(tǒng),不僅簡化了外圍電路的設(shè)計(jì),同時(shí)還減小了PCB面積,有效實(shí)現(xiàn)了單芯片系統(tǒng)[1]。
2.2.2控制方案選擇
下位機(jī)有兩種控制方案可供選擇,分別是使用狀態(tài)機(jī)和使用MCU軟核。狀態(tài)機(jī)占用的資源較少,運(yùn)行也很穩(wěn)定,然而當(dāng)需要實(shí)現(xiàn)復(fù)雜的通信協(xié)議時(shí),狀態(tài)機(jī)的設(shè)計(jì)會(huì)變得異常復(fù)雜,需要花費(fèi)大量的時(shí)間和精力才能完成。MCU軟核則正好相反,它可以運(yùn)行常規(guī)的C程序,從而能夠高效的處理人機(jī)界面和進(jìn)行協(xié)議轉(zhuǎn)發(fā),然而為了獲得強(qiáng)大的功能,軟核通常需要以占用大量的邏輯資源為代價(jià),在一些小型設(shè)計(jì)中顯得得不償失。
本系統(tǒng)下位機(jī)的主要任務(wù)是對(duì)來電、去電信息進(jìn)行解碼并對(duì)語音信號(hào)進(jìn)行采樣,然后將這些數(shù)據(jù)上傳給上位機(jī),狀態(tài)非常簡單,其中并未涉及復(fù)雜的拆包、打包過程以及握手協(xié)議,因此我們使用了狀態(tài)機(jī)來完成核心的控制。
2.3來電號(hào)碼識(shí)別
2.3.1來電數(shù)據(jù)的格式
目前我國的來電顯示主要有復(fù)合數(shù)據(jù)格式和單數(shù)據(jù)格式兩種,復(fù)消息數(shù)據(jù)格式如表21所示。表中值定義一欄的M、N、O表示該字節(jié)的值不確定,表示該串字節(jié)的值不確定[2]。
表21復(fù)合數(shù)據(jù)格式字段位置01234~12131415~15+N15+N+1
功能描述復(fù)合數(shù)據(jù)格式標(biāo)識(shí)字符值定義80H表例子:“表2-1復(fù)合數(shù)據(jù)格從該字節(jié)之后到BCC字節(jié)之間的數(shù)據(jù)長度式”位于表的上方居中,M五號(hào)呼叫時(shí)間消息類型標(biāo)識(shí)01H表格內(nèi)中文用小五宋體加黑,呼叫時(shí)間消息長度08H英文或其文字用小五號(hào)宋體,以ASCLL碼表示的呼叫時(shí)間號(hào)TimesNewRoman字體。主叫號(hào)碼消息類型標(biāo)識(shí)主叫號(hào)碼消息長度
以ASCLL碼表示的主叫號(hào)碼BCC校驗(yàn)字
02HNˉO
單數(shù)據(jù)格式的標(biāo)識(shí)字符為04H,相對(duì)于復(fù)合數(shù)據(jù)格式,它省去了呼叫時(shí)間消息長度和
主叫號(hào)碼消息長度兩個(gè)參數(shù),其它參數(shù)的定義與復(fù)合數(shù)據(jù)格式相同,在此不再贅述。
2.3.2來電數(shù)據(jù)的傳輸制式
電話交換機(jī)是通過FSK調(diào)制波將來電信息發(fā)送給電話終端的,具體的調(diào)制特性如下所示:
(1)調(diào)制方式:BFSK(相位連續(xù)二進(jìn)制移頻鍵控)(2)邏輯1:1200Hz
頁腳為頁碼,頁碼格式為阿拉(3)邏輯0:2200Hz
伯?dāng)?shù)字,字體設(shè)置為小五號(hào)(4)傳輸速率:1200bps
TimesNewRoman字體居中(5)數(shù)據(jù)傳送方式:二進(jìn)制異步串行方式在掛機(jī)狀態(tài)時(shí),電話線上是50V左右的直流電平,當(dāng)有電話呼入時(shí),會(huì)有峰峰值為90V的振鈴信號(hào)疊加到50V的直流電平上。承載著來電信息的FSK調(diào)制波會(huì)在第一聲振東北林業(yè)大學(xué)課程設(shè)計(jì)
鈴和第二聲振鈴之間發(fā)送給電話終端,具體波形如圖22所示[3]。
空閑時(shí)50V來電時(shí)50VFSK信號(hào)振鈴信號(hào)振鈴信號(hào)振鈴信號(hào)通話時(shí)語音信號(hào)5V坐標(biāo)圖例子:橫縱坐標(biāo)必須標(biāo)注量、單位,坐標(biāo)名置于圖的下方居中,五號(hào)宋體加黑圖22不同狀態(tài)下的電話信號(hào)波形
2.3.3來電數(shù)據(jù)的解調(diào)解碼
對(duì)于FSK調(diào)制波,有很多種成熟的解調(diào)方案,如使用模擬或數(shù)字濾波器,或使用鎖相環(huán),然而這些方案在具體實(shí)現(xiàn)時(shí)都比較復(fù)雜。在本系統(tǒng)中,考慮到來電數(shù)據(jù)的傳輸速率較慢而且是單位傳輸,同時(shí)數(shù)據(jù)傳輸速率與載波頻率的對(duì)應(yīng)關(guān)系也較為單一,因此我們沒有用傳統(tǒng)的解調(diào)方案,而是將FSK調(diào)制波整形成矩形波后直接送入了FPGA,然后由FPGA根據(jù)波形的特性進(jìn)行0、1判斷,完成解調(diào)過程。
來電信息是用UART的方式以1200bps發(fā)送的,因此在數(shù)據(jù)解調(diào)完畢后幾乎不需要額外的解碼處理,解調(diào)模塊可直接將輸出通過RS232接口發(fā)送給上位機(jī)。
2.4去電號(hào)碼識(shí)別
電話終端是以DTMF(雙音多頻)的方式將呼叫號(hào)碼發(fā)送給電話交換機(jī)的,為了獲知用戶撥出的號(hào)碼,下位機(jī)需要完成DTMF解碼。DTMF解碼過程中需要完成對(duì)多種頻率的識(shí)別,并將這些頻率的組合方式譯碼成有效的數(shù)據(jù),這一過程的實(shí)現(xiàn)非常復(fù)雜,因此在本系統(tǒng)中我們選用了專用的解碼芯片MT8870[4]。
MT8870能將DTMF信號(hào)譯為四位二進(jìn)制碼,表22是該芯片的譯碼表。其中Digit為實(shí)際的按鍵,TOE是輸出使能信號(hào),Q1-Q4為4位數(shù)字輸出,每當(dāng)解碼芯片檢測到有效載波時(shí),就會(huì)進(jìn)行解碼,解碼完成后Q4~Q1的值會(huì)立即被更新,同時(shí)STD輸出一個(gè)高電平信號(hào),下位機(jī)可以根據(jù)STD的狀態(tài)判斷是否有按鍵,當(dāng)檢測到有按鍵按下時(shí),通過讀取Q4~Q1的值即可獲得按鍵代碼,從而識(shí)別用戶撥出的電話號(hào)碼。
東北林業(yè)大學(xué)課程設(shè)計(jì)
表22MT8870譯碼表
DigitANY1234567890*#ABCDABCD
TOELHHHHHHHHHHHHHHHHHHHH
INHXXXXXXXXXXXXXLLLLHHHH
STDHHHHHHHHHHHHHHHHHLLLL
Q4Z0000000111111110
沒有檢測到按鍵時(shí)Q4~Q1保持不變STD返回低電平
Q3Z0001111000011110
Q2Z0110011001100110
Q1Z1010101010101010
2.5語音記錄方式
本系統(tǒng)的語音采集工作,由下位機(jī)通過FPGA內(nèi)部集成的ADC完成,下位機(jī)采樣到的語音數(shù)據(jù)通過RS232接口發(fā)送給上位機(jī),然后由上位機(jī)保存成WAV格式。
2.5.1WAV格式簡介
WAV格式是微軟公司開發(fā)的一種聲音文件格式,也叫波形聲音文件,是最早的數(shù)字音頻格式,被Windows平臺(tái)及其應(yīng)用程序廣泛支持。WAV格式支持許多壓縮算法,支持多種音頻位數(shù)、采樣頻率和聲道,采用44.1kHz的采樣頻率,16位量化位數(shù),因此WAV的音質(zhì)與CD相差無幾,但WAV格式對(duì)存儲(chǔ)空間需求太大不便于交流和傳播[5]。
WAV來源于對(duì)聲音模擬波形的采樣。用不同的采樣頻率對(duì)聲音的模擬波形進(jìn)行采樣可以得到一系列離散的采樣點(diǎn),以不同的量化位數(shù)(8位或16位)把這些采樣點(diǎn)的值轉(zhuǎn)換成二進(jìn)制數(shù),然后存入磁盤,這就產(chǎn)生了聲音的WAV文件,即波形文件。該格式記錄聲音的波形,故只要采樣率高、采樣字節(jié)長、機(jī)器速度快,利用該格式記錄的聲音文件能夠和原聲基本一致,質(zhì)量非常高,但這樣做的代價(jià)就是文件太大。但電腦的存儲(chǔ)空間很大,而且文件可以隨時(shí)進(jìn)行清理與刪除,對(duì)于本設(shè)計(jì)文件大并不是問題,我們還可以進(jìn)行進(jìn)一步的改進(jìn),如將WAV文件進(jìn)行壓縮后再保存等。
由于只需要對(duì)聲音進(jìn)行采樣,即將模擬信號(hào)送入FPGA的內(nèi)部進(jìn)行A/D采樣后再經(jīng)串口傳給計(jì)算機(jī),并以WAV格式進(jìn)行保存,以這種方式我們就能將語音信號(hào)保存并進(jìn)行播放,因此語音記錄方式采用的是WAV格式文件。
東北林業(yè)大學(xué)課程設(shè)計(jì)
2.5.2WAV文件頭
為了創(chuàng)建標(biāo)準(zhǔn)的WAV文件,上位機(jī)程序用結(jié)構(gòu)體定義了一個(gè)WAV文件頭,程序如下。
typedefstruct{
charRIFFID[4];
DWORDFileSize;charWAVEfmt[8];
DWORDsizeofPCM;
WORDWAVE_FORMAT;WORDChanel;
DWORDSamPerSec;DWORDDatPerSec;WORDALian;
WORDSamBitL;WORDSamBitH;charfactID[4];
WORDfactSizeL;WORDfactSizeH;WORDfactDataL;WORDfactDataH;chardataID[4];
WORDdataSizeL;WORDdataSizeH;
}WaveHead;
文件頭中包含了文件大小、采樣速率、通道數(shù)等信息,其中有些成員的值是固定的,如采樣速率SamPerSec和通道數(shù)SamPerSec,而有些成員的值則需要在程序運(yùn)行過程中動(dòng)態(tài)計(jì)算,如文件大小FileSize。關(guān)于WAV文件頭中各個(gè)成員的進(jìn)一步介紹,在此不再贅述。
2.6通信協(xié)議定義
本系統(tǒng)的程序主要有下位機(jī)和上位機(jī)程序兩大部分組成,下位機(jī)負(fù)責(zé)來電和去電信息的解碼以及語音的采樣,而上位機(jī)則負(fù)責(zé)對(duì)這些數(shù)據(jù)進(jìn)行記錄和管理。在系統(tǒng)的運(yùn)行過程
東北林業(yè)大學(xué)課程設(shè)計(jì)
中,下位機(jī)共有三種類型的數(shù)據(jù)需要上傳,分別是來電信息數(shù)據(jù),去電信息數(shù)據(jù)和語音數(shù)據(jù),為了讓上位機(jī)能夠?qū)⑦@些數(shù)據(jù)區(qū)分開來,需要定義一組簡單的通信協(xié)議[6]。
下位對(duì)引導(dǎo)字符的發(fā)送和上位機(jī)對(duì)引導(dǎo)字符的識(shí)別是本系統(tǒng)通信協(xié)議的核心,具體的實(shí)現(xiàn)機(jī)制是,當(dāng)下位機(jī)有數(shù)據(jù)需要上傳時(shí),首先要向上位機(jī)發(fā)送一段引導(dǎo)字符,上位機(jī)識(shí)別到引導(dǎo)字符后要根據(jù)引導(dǎo)字符的類型進(jìn)入相應(yīng)的數(shù)據(jù)接收準(zhǔn)備狀態(tài)。引導(dǎo)字符的定義如表33所示。表33引導(dǎo)字符定義引導(dǎo)字符類型1024個(gè)AAH1024個(gè)BBH1024個(gè)CCH
功能描述撥號(hào)信息前導(dǎo),指示上位機(jī)準(zhǔn)備接收撥號(hào)信息數(shù)據(jù)來電信息前導(dǎo),指示上位機(jī)準(zhǔn)備接收來電信息數(shù)據(jù)語音數(shù)據(jù)前導(dǎo),指示上位機(jī)準(zhǔn)備接收語音數(shù)據(jù)
由表33可以看出,下位機(jī)與上位機(jī)的通信過程非常簡單,上位機(jī)只需要接收下位機(jī)發(fā)送的引導(dǎo)字符,然后根據(jù)引導(dǎo)字符的類型進(jìn)入相應(yīng)的狀態(tài)并等待下位機(jī)上傳的數(shù)據(jù)即可。協(xié)議中數(shù)據(jù)傳輸?shù)慕Y(jié)束是通過等待超時(shí)來實(shí)現(xiàn)的,當(dāng)上位機(jī)在超過了規(guī)定的時(shí)間后還未接收到數(shù)據(jù)時(shí)則認(rèn)為傳輸結(jié)束,然后會(huì)返回到空閑狀態(tài)。
東北林業(yè)大學(xué)課程設(shè)計(jì)
3硬件設(shè)計(jì)
3.1系統(tǒng)硬件設(shè)計(jì)框圖
如圖3所示,整個(gè)系統(tǒng)由FusionFPGA和外圍電路兩大部分組成,其中外圍電路又分為摘機(jī)檢測電路、FSK提取電路、DTMF解碼電路和語音提取電路四個(gè)單元。
摘機(jī)檢測電路用于檢測話機(jī)的狀態(tài),掛機(jī)時(shí)檢測電路會(huì)輸出高電平,摘機(jī)時(shí)檢測電路會(huì)輸出低電平。振鈴檢測及FSK提取電路用于提取振鈴信號(hào)以及電話交換機(jī)發(fā)送的FSK來電信息,并將其處理為規(guī)則的矩形波信號(hào),然后送由FPGA解碼處理。DTMF解碼電路用于解碼用戶的撥號(hào)的信息,當(dāng)電路檢測到有效的載波時(shí),會(huì)自動(dòng)對(duì)載波進(jìn)行解碼,并后將解碼得到的數(shù)據(jù)通過一個(gè)四位總線并行輸出。語音提取電路用于提取和處理通話過程中的語音信號(hào),經(jīng)過處理后的信號(hào)會(huì)被直接送至FPGA的ADC輸入端口進(jìn)行采樣。
FusionFPGA是整個(gè)系統(tǒng)的核心,它對(duì)外圍電路的輸入信號(hào)進(jìn)行邏輯判斷,然后執(zhí)行對(duì)應(yīng)的操作并完成所需的功能。
由于電話系統(tǒng)與PC機(jī)是共地的,因此當(dāng)上位機(jī)與下位機(jī)通過RS232接口直接相連時(shí),上位機(jī)會(huì)對(duì)下位機(jī)產(chǎn)生很大的干擾,如圖31中的串口隔離模塊用于實(shí)現(xiàn)上位機(jī)與下位機(jī)的電氣隔離,從而有效避免干擾。
圖31系統(tǒng)硬件框圖
3.2電源設(shè)計(jì)
系統(tǒng)的電源電路如圖3所示。外接電源通過線性穩(wěn)壓器7805和SPX1117-3.3后得到VCC_5和VCC_33兩路電源,VCC_5用于對(duì)外圍模擬電路供電,VCC_33則用于對(duì)FPGA的數(shù)字IO等供電。VCC_5通過DC-DC模塊BS0505S隔離后得到UART_VCC,該路電源用于對(duì)UART發(fā)送模塊供電。
Fusion系列FPGA內(nèi)部集成了一個(gè)1.5V的電壓調(diào)整器,通過它可以給FPGA的內(nèi)核以及其它1.5V外設(shè)供電。集成電壓調(diào)整器最大可以輸出20mA的電流,為了使其具有足夠的驅(qū)動(dòng)能力,需要用一個(gè)三極管進(jìn)行電流放大。在圖32中,Q1的基極和發(fā)射極分別連接到了FPGA的PTBASE和PTEM引腳,電壓調(diào)整器會(huì)根據(jù)PTEM反饋的電壓自動(dòng)調(diào)整PTBASE電壓,從而在Q1的發(fā)射極得到穩(wěn)定的1.5V輸出。
東北林業(yè)大學(xué)課程設(shè)計(jì)
VCC_15經(jīng)過由R17、C14、C15組成的阻容濾波網(wǎng)絡(luò)后生成PVCC,此路電源用于對(duì)FPGA內(nèi)部的PLL供電。AGND、GND、PGND分別是系統(tǒng)的模擬地、數(shù)字地以及PLL地,為減少數(shù)字地對(duì)模擬地和PLL地的干擾,電路中用0Ω電阻對(duì)它們進(jìn)行了隔離。
圖32電源電路
3.3FPGA最小系統(tǒng)設(shè)計(jì)
3.3.1時(shí)鐘和復(fù)位電路
系統(tǒng)時(shí)鐘采用的是48MHz的有源晶振,為了使時(shí)鐘電路能夠輸出穩(wěn)定的電壓波形,必須保證供電電壓的穩(wěn)定,因此在時(shí)鐘電路的前端添加了LC濾波電路,如圖33所示,電阻R6的作用是抑制高次諧波和實(shí)現(xiàn)阻抗匹配。
圖3中的C8和R5組成了上電自動(dòng)復(fù)位電路,在上電瞬間C8的充電電流會(huì)將RST拉高,從而對(duì)系統(tǒng)進(jìn)行復(fù)位。
圖33時(shí)鐘和復(fù)位電路
3.3.2FPGA電源和接地
Fusion系列FPGA內(nèi)部集成了ADC模塊,是一個(gè)模數(shù)混合的系統(tǒng),因此需要恰當(dāng)?shù)奶幚硇酒碾娫春徒拥亍H鐖D34所示,電路中為每個(gè)電源引腳都添加了去耦電容,同時(shí)遵循了將模擬電路與數(shù)字電路分開接地的原則。
東北林業(yè)大學(xué)課程設(shè)計(jì)
圖34FPGA的電源和接地
3.3.3FPGA數(shù)字和模擬IO分配
FPGA擁有豐富的IO資源,在本系統(tǒng)中我們只用到了少數(shù)幾個(gè)。如圖3所示,其中CLK和RST是時(shí)鐘和復(fù)位信號(hào),它們需要連接到芯片的全局網(wǎng)絡(luò)上,144引腳和142引腳位于芯片東邊的時(shí)鐘調(diào)整電路上,可以通過多路選擇邏輯連接到全局網(wǎng)絡(luò),符合我們的需求。SOUND_IO是語音信號(hào)輸入信號(hào),可以分配到AV0~AV5中的任意一個(gè),在此我們使用了AV0。圖35中的其它信號(hào)均為來自外圍電路數(shù)字信號(hào),對(duì)IO分配沒有特殊要求,在此是根據(jù)PCB布線情況分配的。
圖35數(shù)字和模擬IO分配
東北林業(yè)大學(xué)課程設(shè)計(jì)
3.3.4JTAG下載電路
如圖3所示,JP1即為JTAG插座,JTAG下載電路非常簡單,只需要將對(duì)應(yīng)引腳與下載插座相連即可。Fusion芯片內(nèi)部集成的電壓調(diào)整器是通過電荷泵工作的,因此需要外接電容C16。圖36中的JP3是雙排插針,它左邊的端口直接與FPGA相連,右邊的端口則與外圍電路相連,左右兩邊的端口可以通過跳線連接起來,這樣設(shè)計(jì)的好處是容易隔離故障,方便調(diào)試。
圖36JTAG下載電路
3.4UART發(fā)送模塊
UART發(fā)送模塊的電路如圖37所示,電路中用SP3232E完成TTL電平到RS232電平的轉(zhuǎn)換,由高速光耦6N137實(shí)現(xiàn)電氣隔離。
圖37UART發(fā)送模塊
東北林業(yè)大學(xué)課程設(shè)計(jì)
3.5FSK前置提取電路設(shè)計(jì)
FSK前置電路如圖38所示,電感L2、L3用于濾除電話信號(hào)上高頻噪聲,電容C42、C44用于隔直通交,三極管Q2與其外圍的電阻構(gòu)成了一個(gè)共射極放大電路。由于FSK信號(hào)是在第一聲振鈴和第二聲振鈴之間進(jìn)行發(fā)送的,而且振鈴信號(hào)的幅值比FSK信號(hào)的幅值高出很多倍,因此需要對(duì)振鈴信號(hào)進(jìn)行一定程度的衰減,圖38中的C45,R25,C43,R26構(gòu)成了一個(gè)簡單的阻容帶通濾波器,它一方面可以有效的衰減振鈴信號(hào)的幅值,另一方面還可濾除電話信號(hào)中的噪聲。比較器U7用于將電路提取得到的FSK波形整形成矩形波,它的輸出會(huì)被直接送入FPGA的數(shù)字I/O進(jìn)行解調(diào)和解碼處理。電位器W1用于調(diào)整比較器的參考電壓,從而調(diào)整輸出信號(hào)高電平的寬度,在干擾較大的環(huán)境下可以將比較電壓調(diào)節(jié)的稍高一些,這樣可以有效濾除干擾信號(hào)。
圖38FSK前置摘取電路
3.6DTMF解碼電路的設(shè)計(jì)
DTMF解碼的實(shí)現(xiàn)比較復(fù)雜,在此我們直接使用專用解碼芯片MT8870來完成。如圖39所示,BG_OUT是電話線上的信號(hào)經(jīng)過整流橋反極后得到的,可直接通過隔直電容耦合到MT8870當(dāng)中,在檢測到有效載波后,MT8870會(huì)將解碼得到的數(shù)據(jù)并行輸出到Q1~Q4上,然后置高StD信號(hào),F(xiàn)PGA檢測到StD信號(hào)的上升沿后即可從Q1~Q4上讀取到有效的數(shù)據(jù)。MT8870的工作電壓為5V,而FPGA端口的工作電平為3.3V,R9、R11~R14的作用是限制當(dāng)Std或Q1~Q4為高電平時(shí)灌入FPGA端口的電流,從而保護(hù)FPGA的IO不被損壞。
圖39DTMF解碼電路
東北林業(yè)大學(xué)課程設(shè)計(jì)
3.7語音提取電路的設(shè)計(jì)
語音信號(hào)是直接在電話線上傳輸?shù),因此語音提取電路的結(jié)構(gòu)非常簡單,如圖310所示,電話信號(hào)通過整流橋反極后被送到Q3的發(fā)射極,電路中的Q3和Q4組成了一個(gè)達(dá)林頓型三極管,當(dāng)CTRL為低電平電時(shí),光耦導(dǎo)通,達(dá)林頓三極管飽和,語音信號(hào)被耦合到下一級(jí)電路,當(dāng)CTRL為高電平時(shí),光耦截止,達(dá)林頓三極管截止,此時(shí)電話線上信號(hào)被切斷。CTRL信號(hào)由FPGA控制,只有在啟動(dòng)錄音時(shí),該信號(hào)才會(huì)變?yōu)榈碗娖,空閑狀態(tài)下該信號(hào)為高電平。這樣做一方面可以降低系統(tǒng)負(fù)載對(duì)電話線的影響,另一方面可有效防止高壓振鈴信號(hào)損壞后級(jí)電路。
圖310中,D4、D5的作用是對(duì)SOUND信號(hào)進(jìn)行鉗位。當(dāng)由于系統(tǒng)異常導(dǎo)致振鈴信號(hào)在CTRL為低電平時(shí)進(jìn)入時(shí),90V的振鈴信號(hào)會(huì)直接耦合到FPGA的模擬IO端口,這有可能會(huì)對(duì)系統(tǒng)造成致命的損壞。電路中的鉗位二極管會(huì)將SOUND的電平鉗在-0.7V~+5.7V之間,可有效避免因振鈴信號(hào)異常進(jìn)入而導(dǎo)致的FPGA損壞。
圖310語音提取電路
3.8摘機(jī)檢測電路的設(shè)計(jì)
在掛機(jī)情況下,電話線上的電壓為50V左右,在摘機(jī)情況下電壓會(huì)降低到6V左右,因此用電阻分壓的方式即可實(shí)現(xiàn)摘機(jī)和掛機(jī)的檢測,如圖311所示,電路中二極管D6和D7的作用也是進(jìn)行電壓鉗位,從而保護(hù)后級(jí)電路。
圖311摘機(jī)檢測電路
東北林業(yè)大學(xué)課程設(shè)計(jì)
4FPGA程序設(shè)計(jì)
4.1總體結(jié)構(gòu)設(shè)計(jì)
FPGA程序的總體結(jié)構(gòu)框圖如圖41所示,核心控制邏輯通過檢測振鈴和摘機(jī)信號(hào)來控制通道選擇模塊選擇相應(yīng)的傳輸通道,其中摘機(jī)信號(hào)由摘機(jī)檢測電路產(chǎn)生,振鈴信號(hào)由FSK解碼模塊產(chǎn)生。FSK解碼模塊、ADC采樣模塊和DTMF解碼模塊的數(shù)據(jù)輸出時(shí)序與UART發(fā)送模塊相匹配,它們通過通道選擇模塊相連。UART發(fā)送模塊以115200b/s的波特率發(fā)送數(shù)據(jù),它的輸入數(shù)據(jù)來自通道選擇模塊,通道選擇選擇模塊則在核心控制模塊的控制下將UART發(fā)送模塊與FSK解碼模塊、ADC采樣模塊或DTMF解碼模塊接通。
核心控制振鈴信號(hào)FSK解碼AD采樣DTMF解碼通道選擇UART發(fā)送
圖41總體結(jié)構(gòu)框圖
4.2核心控制模塊設(shè)計(jì)
4.2.1端口介紹
圖42核心控制模塊端口結(jié)構(gòu)圖
核心控制模塊的端口結(jié)構(gòu)如圖42所示,左邊是輸入端口,右邊是輸出端口,關(guān)于各個(gè)端口的功能描述請(qǐng)參見表41。
東北林業(yè)大學(xué)課程設(shè)計(jì)
表41核心控制模塊端口描述名稱clk_48mresetringholdstdCSfsk_overadc_overdtmf_overctrl
方向輸入輸入輸入輸入輸入輸出輸出輸出輸出輸出
寬度1111131111
功能描述48MHz時(shí)鐘信號(hào)高電平有效的復(fù)位信號(hào)
振鈴信號(hào),當(dāng)有振鈴時(shí)該信號(hào)為變?yōu)楦唠娖?/p>
摘機(jī)信號(hào),摘機(jī)時(shí)該信號(hào)低電平,掛機(jī)時(shí)該信號(hào)為高電平DTMF有效信號(hào),解碼芯片有數(shù)據(jù)輸出時(shí),該信號(hào)會(huì)被置高通道選擇信號(hào),每個(gè)位對(duì)應(yīng)著一個(gè)數(shù)據(jù)通道用于結(jié)束FSK通道的標(biāo)志信號(hào)用于結(jié)束ADC通道的標(biāo)志信號(hào)用于結(jié)束DTMF通道的標(biāo)志信號(hào)語音提取電路的選通信號(hào)
4.2.2工作原理
核心控制模塊是一個(gè)米利型狀態(tài)機(jī),它根據(jù)hold、ring和std信號(hào)進(jìn)行狀態(tài)跳轉(zhuǎn)并對(duì)CS、fsk_over等輸出信號(hào)進(jìn)行控制,核心控制模塊的狀態(tài)轉(zhuǎn)移圖如圖43所示,關(guān)于各個(gè)狀態(tài)的詳細(xì)描述請(qǐng)參見表42所示。狀態(tài)所對(duì)應(yīng)的輸出列中未描述的信號(hào)表示該信號(hào)的值與前一個(gè)狀態(tài)相同。
圖43核心控制模塊狀態(tài)轉(zhuǎn)移圖
東北林業(yè)大學(xué)課程設(shè)計(jì)
表42核心控制模塊狀態(tài)描述狀態(tài)描述循環(huán)檢測hold_valid和ring信號(hào),當(dāng)發(fā)現(xiàn)hold_valid為0時(shí)則
IDLE
表明用戶摘機(jī)撥號(hào),狀態(tài)跳轉(zhuǎn)到DTMF,當(dāng)發(fā)現(xiàn)ring信號(hào)為1時(shí),則表明有電話呼入,狀態(tài)跳轉(zhuǎn)到FSK。
啟動(dòng)wait_cnt計(jì)數(shù),用戶的每次撥號(hào)都會(huì)使wait_cnt清零,當(dāng)
DTMF
wait_cnt超過某值后則表明用戶撥號(hào)結(jié)束,狀態(tài)跳轉(zhuǎn)到DTMF_idle
DTMF_idleDTMF_over
該狀態(tài)用于使輸出信號(hào)dtmf_over產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘周期的高電平信號(hào)
該狀態(tài)用于使輸出信號(hào)dtmf_over產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘周期的高電平信號(hào),狀態(tài)跳轉(zhuǎn)到ADC
啟動(dòng)fsk_wait計(jì)數(shù)并檢測hold_valid,fsk_wait超過某值后則表
FSK
明主叫方放棄呼叫,狀態(tài)跳轉(zhuǎn)到FSK_out,hold_valid為0表明用戶摘機(jī)接聽電話,狀態(tài)跳轉(zhuǎn)到ADC。
FSK_outFSK_overADCADC_over
該狀態(tài)用于使輸出信號(hào)fsk_over產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘周期的高電平信號(hào)
該狀態(tài)用于使輸入信號(hào)fsk_over產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘周期的高電平信號(hào),狀態(tài)跳轉(zhuǎn)到ADC。
檢測hold_valid信號(hào),若為1則表明用戶掛機(jī),狀態(tài)跳轉(zhuǎn)到ADC_over
該狀態(tài)用于使輸出信號(hào)adc_over產(chǎn)生一個(gè)寬度為一個(gè)時(shí)鐘周期的高電平信號(hào)
CS=2ctrl=0adc_over=1;fsk_over=1fsk_over=1CS=1dtmf_over=1dtmf_over=1輸出fsk_over=0dtmf_over=0adc_over=0ctrl=1CS=0CS=4
4.3通道選擇模塊設(shè)計(jì)
4.3.1端口介紹
圖4-4通道選擇模塊端口結(jié)構(gòu)圖
通道選擇模塊的端口結(jié)構(gòu)如圖44所示,詳細(xì)描述了各個(gè)端口的屬性和功能。
東北林業(yè)大學(xué)課程設(shè)計(jì)
表43通道選擇模塊端口描述
名稱clk_48mresettxd_busyfsk_overadc_overdtmf_overCSFSK_dataADC_data
方向輸入輸入輸入輸入輸入輸入輸入輸入輸入
寬度111111388811118
功能描述48MHz時(shí)鐘信號(hào)高電平有效的復(fù)位信號(hào)
UART發(fā)送忙信號(hào),高電平時(shí)表示UART模塊正在發(fā)送數(shù)據(jù)用于結(jié)束FSK通道的標(biāo)志信號(hào)用于結(jié)束ADC通道的標(biāo)志信號(hào)用于結(jié)束DTMF通道的標(biāo)志信號(hào)
通道選擇信號(hào),每個(gè)位對(duì)應(yīng)著一個(gè)數(shù)據(jù)通道來自FSK解碼模塊的8位并行數(shù)據(jù)來自AD采樣模塊的8位并行數(shù)據(jù)來自DTMF解碼模塊的8位并行數(shù)據(jù)
當(dāng)FSK_data上的數(shù)據(jù)有效時(shí),該端口上會(huì)產(chǎn)生一個(gè)上升沿觸發(fā)UART發(fā)送模塊將數(shù)據(jù)發(fā)出
當(dāng)ADC_data上的數(shù)據(jù)有效時(shí),該端口會(huì)產(chǎn)生一個(gè)上升沿觸發(fā)UART發(fā)送模塊將數(shù)據(jù)發(fā)出
當(dāng)ADC_data上的數(shù)據(jù)有效時(shí),該端口會(huì)產(chǎn)生一個(gè)上升沿觸發(fā)UART發(fā)送模塊將數(shù)據(jù)發(fā)出
該端口直接與UART發(fā)送模塊相連,當(dāng)系統(tǒng)工作時(shí)它會(huì)被選擇連接到FSK_tirg、ADC_trig或DTMF_trig上
該端口直接與UART發(fā)送模塊相連,當(dāng)系統(tǒng)工作時(shí)它會(huì)被選擇連接到FSK_data、ADC_data或DTMF_data上
DTMF_data輸入FSK_trigADC_trigDTMF_trigtxd_trigtxd_data
輸入輸入輸入輸出輸出
4.3.2工作原理
通道選擇模塊也是一個(gè)米利型的狀態(tài)機(jī),它的狀態(tài)轉(zhuǎn)移圖如圖45所示。表中“”表示該狀態(tài)下的輸出不是確定電平狀態(tài),而是一串序列。
圖45通道選擇模塊狀態(tài)轉(zhuǎn)移圖
東北林業(yè)大學(xué)課程設(shè)計(jì)
表44通道選擇模塊狀態(tài)描述狀態(tài)IDLEPre_FSKFSKPre_ADCADCPre_DTMFDTMF
描述該狀態(tài)循環(huán)檢測CS的值,當(dāng)CS為1時(shí)跳轉(zhuǎn)到Pre_FSK,該狀態(tài)發(fā)送1024個(gè)CCH前導(dǎo),發(fā)送完成后跳轉(zhuǎn)到FSK該狀態(tài)將輸出與FSK解碼模塊相連,當(dāng)檢測fsk_over信號(hào)為1時(shí)跳轉(zhuǎn)到IDLE
該狀態(tài)發(fā)送1024個(gè)BBH前導(dǎo),發(fā)送完成后跳轉(zhuǎn)到ADC該狀態(tài)將輸出與AD采樣模塊相連,當(dāng)檢測到adc_over信號(hào)為1時(shí)跳轉(zhuǎn)到IDLE
該狀態(tài)發(fā)送1024個(gè)AAH前導(dǎo),發(fā)送完成后跳轉(zhuǎn)到DTMF狀態(tài)
該狀態(tài)將輸出與DTMF解碼模塊相連,當(dāng)檢測到dtmf_over信號(hào)為1時(shí)跳轉(zhuǎn)到End_DTMF。
輸出txd_trig東北林業(yè)大學(xué)課程設(shè)計(jì)
表45FSK解碼模塊端口描述名稱fre_inclkresetdecode_outring_outdecode_cr
方向輸入輸入輸入輸出輸出輸出
寬度111111
功能描述FSK信號(hào)輸入端口,該端口直接與FSK前置提取電路的輸出相連系統(tǒng)時(shí)鐘輸入端口
高電平有效的復(fù)位信號(hào)輸入端口
數(shù)據(jù)輸出端口,格式為1200bps,8N1,UART振鈴輸出端口,當(dāng)有振鈴時(shí)該端口輸出高電平
數(shù)據(jù)有效端口,當(dāng)模塊解碼到數(shù)據(jù)時(shí),該端口輸出高電平
4.5.2工作原理
FSK解碼模塊首先對(duì)輸入信號(hào)進(jìn)行濾波,因?yàn)殡娫捑上的信號(hào)難免會(huì)有一些干擾,我們首先要將這些毛刺濾除干凈,否則會(huì)對(duì)后端的信號(hào)判斷產(chǎn)生影響,因?yàn)樵诮獯a程序中我們都是在檢測信號(hào)的邊沿,然后通過窗口信號(hào)來檢測信號(hào)的頻率,從而判斷是振鈴信號(hào)還是FSK信號(hào),如果是振鈴信號(hào),則將ring_out置1,并且一直檢測后面是否有FSK信號(hào);如果是FSK信號(hào)(通過判斷是否有連續(xù)的175個(gè)1),則在連續(xù)的“1”之后同步1200hz的窗口信號(hào),在此波特率下檢測信號(hào)的邊沿,若有4個(gè)邊沿,則輸出0,若有2個(gè)沿則輸出1,若有三個(gè)沿,則計(jì)第一個(gè)沿到第三個(gè)沿之間的頻率,如果在1200hz左右則輸出1,若在2200hz左右則輸出0,這樣就將FSK信號(hào)解碼輸出了。沒有信號(hào)的時(shí)候,輸出高電平,因?yàn)樵诖谕ㄐ胖懈唠娖绞钦J(rèn)為沒有數(shù)據(jù)的。
4.6DTMF解碼模塊設(shè)計(jì)
DTMF解碼模塊的端口結(jié)構(gòu)如圖48所示,由于在外圍電路中使用了專用的解碼芯片MT8870,因此該模塊僅僅需要完成接口邏輯的轉(zhuǎn)換即可。圖4中的q和std端口直接與解碼芯片的對(duì)應(yīng)管腳相連,當(dāng)解碼芯片捕獲到有效數(shù)據(jù)時(shí),會(huì)在std管腳產(chǎn)生一個(gè)上升沿,解碼模塊檢測到該上升沿后會(huì)將q端口上的數(shù)據(jù)讀取到dtmf_data端口上,同時(shí)在dtmf_trig端口上產(chǎn)生一個(gè)正脈沖,后級(jí)的串口發(fā)送模塊在該脈沖的觸發(fā)下會(huì)將dtmf_data上的數(shù)據(jù)串行發(fā)送出去。
圖48DTMF解碼模塊端口結(jié)構(gòu)
4.7A/D采樣模塊設(shè)計(jì)
4.7.1端口介紹
A/D采樣模塊的頂層端口結(jié)構(gòu)如圖49所示,vol_in是模擬信號(hào)輸入端口,它直接與外圍語音提取電路相連,vref是參考電壓輸入輸出端口,由于在本系統(tǒng)中我們使用了芯片內(nèi)部的2.56V參考電壓,因此vref為2.56V的輸出端口。ADC_data端口是A/D模塊采樣得到的8位并行數(shù)據(jù),ADC_trig端口用于輸出觸發(fā)信號(hào),在每完成一次采樣后,該端口會(huì)輸出一個(gè)正脈沖觸發(fā)UART發(fā)送模塊將ADC_data上的數(shù)據(jù)串行輸出。
東北林業(yè)大學(xué)課程設(shè)計(jì)
圖49ADC采樣模塊頂層端口結(jié)構(gòu)
4.7.2模塊結(jié)構(gòu)
如圖410所示,A/D采樣模塊由flash模塊,ADC模塊、PLL模塊和接口邏輯四部分組成。flash模塊中存儲(chǔ)著ADC模塊的配置數(shù)據(jù),每次上電時(shí)它會(huì)自動(dòng)將配置數(shù)據(jù)寫入ADC模塊中,PLL模塊用于生成配置時(shí)鐘。在配置完成后,ADC模塊會(huì)以固定的采樣頻率對(duì)vol_in端口上的信號(hào)進(jìn)行采樣。接口邏輯的作用是連續(xù)對(duì)ADC的采樣數(shù)據(jù)進(jìn)行抽樣,在每次抽樣完成后它會(huì)將抽樣得到的數(shù)據(jù)寫到ADC_data,并在ADC_trig上生成一個(gè)正脈沖。
vol_inADC模塊flash模塊clk_48mPLL模塊接口邏輯ADC_trigADC_data[7:0]
圖410AD采樣模塊結(jié)構(gòu)圖
圖410中的flash模塊、ADC模塊和PLL模塊均為Fusion系列FPGA的集成外設(shè),在Libero集成開發(fā)環(huán)境下可以通過向?qū),其中的配置邏輯也是由開發(fā)環(huán)境自動(dòng)生成的,在應(yīng)用時(shí)不需要考慮其實(shí)現(xiàn)細(xì)節(jié)。在Libero開發(fā)環(huán)境下,ADC模塊的采樣頻是根據(jù)系統(tǒng)時(shí)鐘自動(dòng)計(jì)算的,不可以手動(dòng)設(shè)置。在本系統(tǒng)中,軟件計(jì)算的ADC的采樣頻率為83.9KHz,而我們需要的采樣頻率為8KHz,為了滿足需求,接口邏輯需要以10為步長對(duì)ADC的采樣結(jié)果進(jìn)行間隔抽樣;谶@種思路,實(shí)際獲得的語音采樣頻率為8.39KHz,實(shí)測證明該采樣頻率下的語音采集效果良好。
東北林業(yè)大學(xué)課程設(shè)計(jì)
5上位機(jī)軟件設(shè)計(jì)
5.1功能概述
本系統(tǒng)的上位機(jī)軟件由VC6.0編寫,可以實(shí)現(xiàn)通話錄音和來電顯示等功能,程序還通過ODBC連接了Excel數(shù)據(jù)庫,能夠方便的實(shí)現(xiàn)對(duì)對(duì)電話簿和通話記錄的管理。上位機(jī)軟件共有三個(gè)界面,下面分別介紹。
5.1.1主界面
圖51是程序運(yùn)行時(shí)的主界面,通過最小化到托盤按鈕可以將程序隱藏在后臺(tái)運(yùn)行,當(dāng)有電話呼入或用戶摘機(jī)撥號(hào)時(shí),程序界面會(huì)自動(dòng)彈出。電話交換機(jī)是在第一聲振鈴后發(fā)送來電信息的,當(dāng)上位機(jī)程序接收到來電信息后,會(huì)將來電號(hào)碼提取出來并在數(shù)據(jù)庫中查找對(duì)應(yīng)的姓名,然后將姓名和號(hào)碼分別顯示到姓名欄和號(hào)碼欄。用戶摘機(jī)撥號(hào)時(shí),上位機(jī)會(huì)將撥出的號(hào)碼逐個(gè)捕獲并顯示在號(hào)碼欄中,撥號(hào)完成后上位機(jī)根據(jù)撥出的號(hào)碼從數(shù)據(jù)庫中查詢姓名并將其顯示在姓名欄中,如果姓名未查到則顯示未知。在程序的整個(gè)運(yùn)行過程中,電話圖標(biāo)的狀態(tài)會(huì)始終與系統(tǒng)的當(dāng)前狀態(tài)保持同步。
圖51主界面
5.1.2通話記錄界面
通話記錄界面如圖52所示,程序運(yùn)行過程中的所有來電和去電信息都會(huì)被記錄在列表框中。通過查詢選項(xiàng)可以對(duì)通話記錄進(jìn)行查詢,如查詢某人某時(shí)段的通話記錄或查詢某時(shí)段所有人的通話記錄,也可以對(duì)通話類型進(jìn)行篩選。程序的查詢操作在后臺(tái)是通過SQL語句實(shí)現(xiàn)的,查詢通配符為“_”,如查詢201*年4月的所有通話記錄,可以在日期欄中輸入“201*-04-__”,然后點(diǎn)擊查詢按鈕即可。
通話的語音信息被記錄在WAV文件中,雙擊某條通話記錄或選中記錄后點(diǎn)擊播放按鍵即可播放對(duì)應(yīng)的WAV聲音文件。選中某一條或多條通話記錄然后點(diǎn)擊刪除按鈕,即可將其刪除。
東北林業(yè)大學(xué)課程設(shè)計(jì)
圖52通話記錄界面
5.1.3電話簿界面
電話簿界面如圖53所示,在該界面下可以對(duì)電話簿進(jìn)行添加、刪除、查找和修改操作。它的操作方法非常簡單,在此不再贅述。
圖53電話簿界面
5.2程序結(jié)構(gòu)框圖
上位機(jī)程序的結(jié)構(gòu)框架如圖54所示,其中的通話記錄窗口、電話簿窗口和主界面窗口都是作為子窗口依托于應(yīng)用程序存在的。
東北林業(yè)大學(xué)課程設(shè)計(jì)
ODBC電話簿窗口MSC控件通話記錄窗口應(yīng)用程序后臺(tái)數(shù)據(jù)庫下位機(jī)主界面窗口
圖54程序結(jié)構(gòu)框架圖
通話記錄窗口在整個(gè)程序中的作用最為關(guān)鍵,它通過MSComm控件直接接收下位機(jī)發(fā)送的數(shù)據(jù)并根據(jù)數(shù)據(jù)類型將其記錄到數(shù)據(jù)庫中或存儲(chǔ)為WAV聲音文件。電話簿窗口的功能較為獨(dú)立,它只對(duì)后臺(tái)數(shù)據(jù)庫的電話簿進(jìn)行管理,不與程序的其它部分交互。主界面窗口需要顯示來電姓名、號(hào)碼以及系統(tǒng)的當(dāng)前狀態(tài),而這些信息產(chǎn)生在通話記錄窗口,主界面窗口由通話記錄窗口間接控制。為了實(shí)現(xiàn)跨窗口的信息傳遞,通話記錄窗口需要首先向父窗口發(fā)送消息,父窗口響應(yīng)消息會(huì)通過主窗口對(duì)象調(diào)用其中對(duì)應(yīng)的成員函數(shù)完成特定操作。
5.3數(shù)據(jù)接收和信息記錄
數(shù)據(jù)接收和信息記錄工作是在通話記錄窗口中完成的,具體流程如圖55所示,空閑狀態(tài)下MSC控件的RThreshold屬性被設(shè)置為1024,也就是說上位機(jī)每接收到1024個(gè)字節(jié)的數(shù)據(jù)后才會(huì)產(chǎn)生MSC事件,當(dāng)查詢到MSC事件后,即表明有數(shù)據(jù)數(shù)據(jù)上傳,上位機(jī)程序首先根據(jù)引導(dǎo)字符的類型設(shè)置狀態(tài)標(biāo)志,在隨后的MSC事件中,程序會(huì)根據(jù)狀態(tài)標(biāo)志選擇數(shù)據(jù)記錄方式。數(shù)據(jù)接收完成后,狀態(tài)標(biāo)志會(huì)被設(shè)置為空閑,程序進(jìn)入等待下次數(shù)據(jù)上傳的狀態(tài)。
MCS事件N狀態(tài)為空閑Y識(shí)別引導(dǎo)字符設(shè)置狀態(tài)標(biāo)志狀態(tài)為FSKY來電信息記錄N狀態(tài)為DTMFY去電信息記錄N狀態(tài)為語音Y語音信息記錄結(jié)束狀態(tài)復(fù)位
圖55數(shù)據(jù)接收流程圖
5.3.1引導(dǎo)字符的識(shí)別
本系統(tǒng)定義的引導(dǎo)字符是1024個(gè)字節(jié)的0xAA、0xBB或0xCC,它的識(shí)別方式如下
東北林業(yè)大學(xué)課程設(shè)計(jì)
所示,MSC事件響應(yīng)后,上位機(jī)程序接收到的數(shù)據(jù)被會(huì)被存儲(chǔ)在數(shù)組rxdata中,為了提高識(shí)別效率,程序以32為步長抽樣判斷接收到的數(shù)據(jù)是否為有效引導(dǎo)字符,若接收到的數(shù)據(jù)中包含有非0xAA、0xBB或0xCC的字節(jié),則表明系統(tǒng)出現(xiàn)了異常,程序會(huì)彈出“引導(dǎo)字符識(shí)別錯(cuò)誤”對(duì)話框。引導(dǎo)字符識(shí)別成功后,狀態(tài)標(biāo)志state的值會(huì)被設(shè)置成引導(dǎo)字符的值,在隨后的MSC事件中,程序會(huì)根據(jù)state的值來選擇數(shù)據(jù)記錄的方式。state為0xAA表示DTMF數(shù)據(jù),state為0xBB表示語音數(shù)據(jù),state為0xCC表示FSK數(shù)據(jù),state為0表示空閑,只有state為0程序才會(huì)對(duì)引導(dǎo)字符進(jìn)行識(shí)別。
if(state==0){}
for(k=10;k東北林業(yè)大學(xué)課程設(shè)計(jì)
FSK狀態(tài)FSK超時(shí)定時(shí)器超時(shí)振鈴超時(shí)定時(shí)器超時(shí)第一聲振鈴Y彈出用戶界面通過消息向主界面窗口發(fā)送等待接聽動(dòng)畫N接收FSK數(shù)據(jù)設(shè)置FSK超時(shí)定時(shí)器設(shè)置振鈴超時(shí)定時(shí)器提取來電號(hào)碼提取來電號(hào)碼查詢來電者姓名查詢來電者姓名識(shí)別語音向?qū)ㄟ^消息將號(hào)碼和姓名發(fā)送給主界面窗口將來電信息導(dǎo)入數(shù)據(jù)庫,并將類型標(biāo)示為未接N發(fā)現(xiàn)語音前導(dǎo)Y狀態(tài)標(biāo)示為語音結(jié)束結(jié)束結(jié)束
圖56來電信息記錄流程圖
在接收到FSK數(shù)據(jù)后,程序會(huì)設(shè)置一個(gè)FSK超時(shí)定時(shí)器和振鈴超時(shí)定時(shí)器,F(xiàn)SK的超時(shí)表明下位機(jī)的FSK數(shù)據(jù)已經(jīng)發(fā)送完畢,超時(shí)函數(shù)會(huì)從接收到的數(shù)據(jù)中提取出來電號(hào)碼并從數(shù)據(jù)庫中查詢姓名,然后發(fā)送給主界面窗口顯示。振鈴的超時(shí)表明主叫方在呼叫無人接聽的情況下終止了呼叫,超時(shí)函數(shù)根據(jù)來電號(hào)碼查詢出來電姓名,然后將來電信息記錄到數(shù)據(jù)庫中,同時(shí)會(huì)將號(hào)碼和姓名發(fā)送給主界面窗口,并將主界面窗口狀態(tài)標(biāo)志為“未接來電”。
下位機(jī)在用戶接聽電話后會(huì)發(fā)送語音前導(dǎo),以指示上位機(jī)開始錄音,因此上位機(jī)在接收FSK的數(shù)據(jù)的過程中同時(shí)要檢測語音前導(dǎo),語音前導(dǎo)是1024個(gè)0xBB,然而此時(shí)MSC控件的RThreshold屬性為1,因此在事件響應(yīng)時(shí)不可能將1024個(gè)0xBB全部接收到,我們的實(shí)現(xiàn)方法是只要檢測到5個(gè)連續(xù)的0xBB即會(huì)將狀態(tài)標(biāo)志為語音,在下次MSC事件中便會(huì)啟動(dòng)錄音。
5.3.3去電信息記錄
去電信息的記錄是在DTMF狀態(tài)下完成的,該狀態(tài)下的程序流程如圖57所示。DTMF狀態(tài)初次進(jìn)入時(shí),上位機(jī)程序的界面會(huì)自動(dòng)彈出,同時(shí)MSC控件的RThreshold屬性會(huì)被設(shè)置為1,以便逐個(gè)接收用戶撥出的號(hào)碼,此后用戶的每次撥號(hào)都會(huì)產(chǎn)生一個(gè)MSC事件,事件被響應(yīng)后,程序會(huì)設(shè)置撥號(hào)超時(shí)定時(shí)器并將號(hào)碼逐個(gè)發(fā)送給主界面窗口,撥號(hào)超時(shí)后程序則認(rèn)為撥號(hào)結(jié)束,撥號(hào)超時(shí)函數(shù)被執(zhí)行。在撥號(hào)超時(shí)函數(shù)中程序會(huì)根據(jù)撥出的號(hào)碼從數(shù)據(jù)庫中查詢出姓名并將其發(fā)送給主界面窗口顯示,然后程序復(fù)位到初始狀態(tài)。
程序復(fù)位到初始狀態(tài)后,會(huì)不斷的檢測引導(dǎo)字符,若檢測到0xBB語音前導(dǎo),則開始
東北林業(yè)大學(xué)課程設(shè)計(jì)
錄音。理想的處理情況是下位機(jī)在檢測到對(duì)方接聽電話后便向上位機(jī)發(fā)送語音前導(dǎo),指示上位機(jī)開始錄音,然而受電話業(yè)務(wù)的局限,對(duì)方的摘機(jī)信號(hào)并不會(huì)發(fā)送給主叫用戶端,因此下位機(jī)只能通過撥號(hào)超時(shí)機(jī)制來向上位機(jī)發(fā)送語音前導(dǎo)的,這樣做的壞處是可能會(huì)錄到一些回鈴音或彩鈴音。
如果用戶在撥號(hào)超時(shí)前就掛機(jī)停止撥號(hào),下位機(jī)會(huì)向上位機(jī)發(fā)送一個(gè)0xDD結(jié)束標(biāo)志,上位機(jī)在檢測到該字節(jié)后也會(huì)復(fù)位到初始狀態(tài)。
DTMF狀態(tài)首次進(jìn)入Y彈出用戶界面發(fā)送正在撥號(hào)動(dòng)畫Rthreshold屬性設(shè)為1N撥號(hào)超時(shí)設(shè)置撥號(hào)超時(shí)定時(shí)器接收號(hào)碼查詢姓名將姓名發(fā)送給主界面有結(jié)束標(biāo)志N將號(hào)碼發(fā)送給主界面窗口Y系統(tǒng)復(fù)位到初始狀態(tài)系統(tǒng)復(fù)位到初始狀態(tài)結(jié)束結(jié)束
圖57去電信息記錄流程圖
5.3.4語音信息記錄
語音信息的記錄流程如圖58所示,首次進(jìn)入語音狀態(tài)時(shí),程序會(huì)以系統(tǒng)的當(dāng)前日期和時(shí)間為名稱創(chuàng)建一個(gè)文件,文件名的的格式為“XXXX_XX_XXXX_XX_XX.wav”。此時(shí)MSC控件的RThreshold屬性為1024,也就是說程序每接收1024個(gè)字節(jié)的數(shù)據(jù)才會(huì)產(chǎn)生一次MSC事件,每次事件響應(yīng)后,程序都會(huì)將接收到的數(shù)據(jù)添加文件的末尾。當(dāng)用戶掛機(jī)后,下位機(jī)即會(huì)停止向上位機(jī)發(fā)送數(shù)據(jù),上位機(jī)等待超時(shí)后會(huì)執(zhí)行語音超時(shí)函數(shù),在該函數(shù)中程序會(huì)根據(jù)接收到的數(shù)據(jù)長度和當(dāng)前系統(tǒng)時(shí)間計(jì)算WAV文件頭和通話時(shí)長,并將相應(yīng)信息寫入到數(shù)據(jù)庫中。
東北林業(yè)大學(xué)課程設(shè)計(jì)
語音狀態(tài)語音定時(shí)器超時(shí)首次進(jìn)入Y向主界面窗口發(fā)送正在錄音動(dòng)畫N計(jì)算WAV文件頭并將其寫入文件接收語音數(shù)據(jù)并將其存入文件獲取系統(tǒng)時(shí)間并計(jì)算時(shí)長來電信息寫入根據(jù)系統(tǒng)時(shí)間計(jì)算文件名并創(chuàng)建文件設(shè)置語言超時(shí)定時(shí)器系統(tǒng)復(fù)位到初始狀態(tài)結(jié)束數(shù)據(jù)庫結(jié)束
圖58語音信息記錄流程圖
5.3.5數(shù)據(jù)庫操作
為了方便對(duì)通話記錄和電話簿進(jìn)行管理,程序用ODBC(OpenDatabaseConnectivity,開放數(shù)據(jù)庫互連)連接了Execl數(shù)據(jù)庫。ODBC是微軟公司開放服務(wù)結(jié)構(gòu)中有關(guān)數(shù)據(jù)庫的一個(gè)組成部分,它建立了一組規(guī)范,并提供了一組對(duì)數(shù)據(jù)庫訪問的標(biāo)準(zhǔn)API函數(shù),這些API利用SQL來完成其大部分的任務(wù),同時(shí)ODBC也保留了對(duì)SQL語言的的支持,用戶可以直接將SQL語句傳遞給ODBC。
程序中關(guān)于數(shù)據(jù)庫的基本操作如記錄的添加、刪除和查找等在后臺(tái)都是由SQL語句通過ODBC實(shí)現(xiàn)的,關(guān)于數(shù)據(jù)庫編程不是本系統(tǒng)的重點(diǎn),在此不再贅述。
5.4其他
為了提供友好的用戶界面,上位機(jī)程序添加了GIF動(dòng)畫顯示的功能,該功能由免費(fèi)的CPictureEx類實(shí)現(xiàn),程序還用SkinMagicToolkit美化了界面的皮膚。
東北林業(yè)大學(xué)課程設(shè)計(jì)
6系統(tǒng)調(diào)試
6.1測試方案設(shè)計(jì)
系統(tǒng)的調(diào)試分為硬件調(diào)試和軟件調(diào)試。硬件調(diào)試是系統(tǒng)調(diào)試的關(guān)鍵,即使硬件出現(xiàn)一個(gè)小小的問題,都會(huì)對(duì)以后的軟件調(diào)試產(chǎn)生很大的影響。常見的硬件故障主要有:
(1)焊接工藝不善,虛焊造成焊點(diǎn)接觸不良,由于系統(tǒng)大量采用貼片元件,而且還有一片很大的FPGA,增加了焊接的難度,虛焊的問題更為常見。
(2)元件管腳與焊盤不對(duì)應(yīng)。焊接時(shí),貼片元件管腳與焊點(diǎn)不對(duì)應(yīng),直插元件插接錯(cuò)誤都會(huì)使電路不能工作,甚至導(dǎo)致元件永久損壞。
(3)電路連接錯(cuò)誤。在電路原理圖繪制過程中可能會(huì)出現(xiàn)連線錯(cuò)誤,而導(dǎo)致電路不能工作。
(4)電路設(shè)計(jì)錯(cuò)誤或不完善。電路設(shè)計(jì)的原理性錯(cuò)誤或不完善會(huì)導(dǎo)致電路不能工作或不能達(dá)到預(yù)期功能。
(5)元器件未經(jīng)檢查或篩選不嚴(yán)格,造成元器件失效。
(6)電路布局不合理。常見的有對(duì)電源地的處理,如果處理不當(dāng),電源地會(huì)出現(xiàn)回路等問題,導(dǎo)致電路工作不穩(wěn)定;一些高頻信號(hào)的走線,若設(shè)計(jì)不符合規(guī)定對(duì)其它電路產(chǎn)生高頻干擾;信號(hào)線之間的屏蔽問題,若走線不當(dāng),相互之間會(huì)產(chǎn)生串?dāng)_。
根據(jù)個(gè)人經(jīng)驗(yàn)體會(huì),硬件調(diào)試的一般方法有:
(1)在焊接電路時(shí),確認(rèn)元件沒有損壞,對(duì)元件進(jìn)行篩選,焊接時(shí)與焊盤對(duì)應(yīng),焊接完一個(gè)元件后用萬用表測試一下焊點(diǎn),保證焊接正確。(2)在插芯片時(shí),保證插接正確,防止元件損壞。
(3)如果碰到電路連接錯(cuò)誤,常用方法就是用跳線進(jìn)行更正。
(4)若電路設(shè)計(jì)錯(cuò)誤或不完善,假如電路更改較容易實(shí)現(xiàn)的話就對(duì)電路進(jìn)行改正,否則應(yīng)該重新設(shè)計(jì)。
(5)電路布局不當(dāng)出現(xiàn)的問題較不易發(fā)現(xiàn),而解決此問題的方法也不容易。避免這些問題的最好方法是在設(shè)計(jì)之初時(shí)慎重考慮電路板布局。
軟件調(diào)試是系統(tǒng)調(diào)試中最艱巨的任務(wù)了,調(diào)試開始時(shí),軟件開發(fā)者僅僅面對(duì)著錯(cuò)誤的征兆,然而在問題的外部現(xiàn)象和內(nèi)在原因之間往往并沒有明顯的聯(lián)系,在組成程序的密密麻麻的元素中,每一個(gè)都可能是錯(cuò)誤的根源。然而使用正確的高級(jí)的調(diào)試工具會(huì)使調(diào)試過程變的簡單,從而加快開發(fā)速度。在調(diào)試FPGA程序時(shí)使用邏輯分析儀,可以很快定位錯(cuò)誤出現(xiàn)在哪一個(gè)信號(hào),首先通過軟件的探針設(shè)置可以將任何一個(gè)內(nèi)部信號(hào)引到外部IO,這樣將邏輯分析儀的引線與FPGA的IO一一對(duì)應(yīng)連接,在程序開始運(yùn)行之后,通過一個(gè)信號(hào)觸發(fā)邏輯分析儀開始工作,她可以將所有信號(hào)捕捉并存儲(chǔ),通過上位機(jī)軟件我們可以清楚的觀察到在任意時(shí)刻信號(hào)的變化情況,是否正常,從而迅速定位錯(cuò)誤并進(jìn)行修正,然后進(jìn)行驗(yàn)證。
6.2系統(tǒng)典型故障與分析
雖然系統(tǒng)的硬件電路不是很復(fù)雜,但是由于涉及到前端模擬電路,F(xiàn)PGA以及上位機(jī)軟件三大部分,任何一個(gè)環(huán)節(jié)出現(xiàn)問題都會(huì)導(dǎo)致工作不正常,所以在調(diào)試過程中出現(xiàn)了很多故障,在這里對(duì)出現(xiàn)的典型故障進(jìn)行解釋說明,希望對(duì)以后的學(xué)習(xí)與教學(xué)實(shí)驗(yàn)有一定幫助。
東北林業(yè)大學(xué)課程設(shè)計(jì)
6.2.1下位機(jī)上電復(fù)位
我們的上電復(fù)位電路是模仿單片機(jī)設(shè)計(jì)的,實(shí)踐證明這種復(fù)位方式在FPGA中效果很不好。通常FPGA中的各個(gè)子模塊之間都互相牽扯,因此要求有特定的復(fù)位時(shí)序,如果復(fù)位時(shí)序處理不好,就會(huì)使某些狀態(tài)機(jī)在上電后處于非空閑狀態(tài),從而導(dǎo)致下位機(jī)向上位機(jī)發(fā)送錯(cuò)誤的數(shù)據(jù)。針對(duì)此問題,一方面要合理的設(shè)計(jì)外圍復(fù)位電路,另一方面要設(shè)計(jì)專門的模塊處理FPGA內(nèi)各個(gè)模塊之間的復(fù)位時(shí)序。
6.2.2FSK解碼
下位機(jī)對(duì)FSK信號(hào)的解碼偶爾會(huì)出現(xiàn)錯(cuò)誤,這與FSK提取電路的設(shè)計(jì)有很大關(guān)系,我們的FSK提取電路在將正弦波整形為矩形波時(shí)沒有使用滯回比較器,這就導(dǎo)致了在波形的邊沿有很多毛刺,為了正確的解碼FPGA不得不對(duì)波形濾波后再做解碼處理。如果毛刺持續(xù)的時(shí)間較長,那么濾波過程中波形參數(shù)的改變必然會(huì)超過解碼模塊所能承受的容限,從而導(dǎo)致解碼錯(cuò)誤,這一問題可以通過使用滯回比較器來解決。
6.2.3上位機(jī)程序異常退出
上位機(jī)程序由C++編寫,其中大量的使用了指針,指針是C++一把雙刃劍,它的優(yōu)點(diǎn)是靈活,可以巧妙的完成許多操作。缺點(diǎn)是它是直接操作內(nèi)存的,不恰當(dāng)?shù)倪\(yùn)用很容易造成內(nèi)存錯(cuò)誤,從而導(dǎo)致程序異常退出。
6.2.4上位機(jī)程序引導(dǎo)字符識(shí)別錯(cuò)誤
所有的數(shù)據(jù)數(shù)據(jù)傳輸都通過1024個(gè)前導(dǎo)字符識(shí)別,而對(duì)前導(dǎo)字符的識(shí)別發(fā)生在上位機(jī)的空閑狀態(tài),如果在上位機(jī)在空閑狀態(tài)時(shí)下位機(jī)發(fā)送的不是引導(dǎo)字符而是有效數(shù)據(jù),也就是說下位機(jī)與上位機(jī)失去了同步,此時(shí)就會(huì)出現(xiàn)引導(dǎo)字符識(shí)別錯(cuò)誤的情況。這一問題可以通過完善通信協(xié)議來解決,比如將數(shù)據(jù)分包,這樣上位機(jī)每接到一個(gè)數(shù)據(jù)包都可以與下位機(jī)進(jìn)行一次同步。另外,當(dāng)使用USB通信,偶爾也會(huì)出現(xiàn)引導(dǎo)字符識(shí)別錯(cuò)誤的情況,通過用串口助手調(diào)試發(fā)現(xiàn)是通信本身出現(xiàn)了問題。我們的USB轉(zhuǎn)UART電路是后期手工焊接的,不是很穩(wěn)定,很容易因外界干擾而出現(xiàn)通信錯(cuò)誤。
東北林業(yè)大學(xué)課程設(shè)計(jì)
7結(jié)論
結(jié)論應(yīng)該明確、精煉、完整、準(zhǔn)確。是最終的、總體的結(jié)論,不是正文中各段小結(jié)的簡
單重復(fù)。應(yīng)認(rèn)真闡述自己的創(chuàng)造性工作在本本設(shè)計(jì)采用FPGA技術(shù)實(shí)現(xiàn)了基于Fusion單芯片的電話錄音系統(tǒng)的設(shè)計(jì),主要解碼領(lǐng)域中的地位和作用,自己的新見解的意義,F(xiàn)SK制式來電顯示以及對(duì)通話過程進(jìn)行錄音。系統(tǒng)能夠長期穩(wěn)定的工作,它主要由上位也可以在結(jié)論中提出建議、研究設(shè)想、改進(jìn)機(jī)和下位機(jī)兩大部分組成。下位機(jī)又主要包括前端模擬電路和FPGA兩大部分,其中FPGA意見、尚待解決的問題等。字號(hào):三號(hào)宋體。根據(jù)前端處理后的振鈴信號(hào),忙音信號(hào),摘機(jī)信號(hào)等進(jìn)行處理后由核心控制模塊來判斷當(dāng)前的狀態(tài),然后控制通道選擇模塊選通FSK解碼,DTMF解碼或者語音提取中的一路與串口發(fā)送模塊相連,從而將信號(hào)以串口通信的模式發(fā)送至上位機(jī),進(jìn)行下一步的處理。
在有來電時(shí),上位機(jī)軟件能夠從最小托盤處彈出,并顯示來電號(hào)碼,若此號(hào)碼在數(shù)據(jù)庫中有對(duì)應(yīng)的聯(lián)系人,將顯示此聯(lián)系人的姓名。若摘機(jī),軟件同樣會(huì)自動(dòng)彈出,顯示去電號(hào)碼,若有對(duì)應(yīng)聯(lián)系人,將顯示姓名。并將所有通話記錄以及通話語音進(jìn)行存儲(chǔ),可以進(jìn)行查詢、播放、刪除等操作。
系統(tǒng)成功實(shí)現(xiàn)了所要求的所有的功能,解碼來電號(hào)碼以及去電號(hào)碼,對(duì)通話過程進(jìn)行錄音。為了滿足沒有串口的用戶的使用要求,在下位機(jī)中擴(kuò)展了USB通信的功能,上位機(jī)中擴(kuò)展了用數(shù)據(jù)庫管理通話記錄及通話語音的功能。受時(shí)間、精力和能力的限制,系統(tǒng)中還存在著一些不足,如通信協(xié)議的定義過于簡單,沒有任何的握手機(jī)制,不夠優(yōu)化;FSK的解碼不夠穩(wěn)定,解碼機(jī)制存在一定的缺陷,偶爾會(huì)出現(xiàn)解碼錯(cuò)誤。
若有機(jī)會(huì)將對(duì)系統(tǒng)做進(jìn)一步的改進(jìn):例如制定一套完整的通信協(xié)議,帶有握手機(jī)制,使用包協(xié)議,這樣可以在一定程度上避免通信錯(cuò)誤;前端模擬電路的FSK解碼電路中使用滯回比較器,這樣可以濾除一些毛刺,減輕后端濾除毛刺的負(fù)擔(dān);對(duì)解碼程序進(jìn)行優(yōu)化,使之穩(wěn)定解碼。
東北林業(yè)大學(xué)課程設(shè)計(jì)
參考文獻(xiàn)
普通圖書引用例子參考文獻(xiàn)標(biāo)題[1]周立功,ActelFPGA原理與應(yīng)用基于Fusion系列[M],廣州致遠(yuǎn)電子有限公司,201*.用四號(hào)宋體,正文[2]樊昌信,詹道庸,徐炳祥,等,通信原理(第4版)[M],北京:國防工業(yè)出版社,1995.
用五號(hào)宋體[3]中國來電顯示標(biāo)準(zhǔn).郵電部,1997[S].[4]七位編碼字符集[S],GB198889[5]芯片技術(shù)手冊(cè)[Z]
[6]ZhaoWanlun,Giannakis.Georgios.B.,Delic,Hakan..Space-timefrequency-shiftkeying[J],TransactionsonComunications.201*,pp346-349.
[7]王觀坤.多功能電話檢修手冊(cè)[M],浙江科學(xué)技術(shù)出版社,1998,117~126.[8]張彪,電話機(jī)原理與維修[M],電子工業(yè)出版社,201*,84~127.
[9]WeiXueye,WangXishi,&DingZhengting.,TheDesignofFrequency-ShiftTrackCircuitTestSystem[J],JournaloftheChinaRailwaySociety.1996,pp.63-68.
[10]孫肖子.模擬電子技術(shù)基礎(chǔ)[M].西安電子科技大學(xué)出版社,201*,224~231.
[11]周立功,ActelFPGA實(shí)驗(yàn)教程基于FusionStartKit開發(fā)板[M],廣州致遠(yuǎn)電子有限公司,201*.[12]黃建偉,VisualC++/TurboC串口通信編程實(shí)踐(第二版)[M],電子工業(yè)出版社,201*,63~105.[13]XieDanfeng,WeiXueye.,DesignoftheDetectionSystemofSubwayFrequencyShiftSignal[J],ComputerMeasurement&Control.201*,pp.782-791
[14]吳繼華,王誠.AlteraFPGA/CPLD設(shè)計(jì)(高級(jí)篇)[M].北京:人民郵電出版社,201*.
[15]XingXiaoyi,ZhongXinli.,AHighResolutionApproachforDetectingFSKSignals,JournalofEastChinaJiaotongUniversity,201*,pp.47-51
[16]Vitetta,G.m.M.,Mengali,U.,Taylor,D.P.,ErrorprobabilityofFSKincoherentdiversityreceptionwithfastricefading,InternationalJournalofWirelessinformationnetworks,1999,pp.107-118[17]陶仁驥.密碼學(xué)與數(shù)學(xué)[J].自然雜志,1984,7(7):527.
連續(xù)出版物引用例子
附錄A
FSK提取電路原理圖UART電路原理圖
DTMF解碼電路原理圖
對(duì)于一些不宜放入正文中、但作為畢業(yè)設(shè)計(jì)(論文)又不可缺少的組成部分,或有主要參考價(jià)值的內(nèi)容,可編入畢業(yè)設(shè)計(jì)(論文)的附錄中,例如,圖紙、翻譯外文資料、公式的推演、編寫的算法、語言程序等!案戒洝比(hào)宋體,正文小四宋體。
摘機(jī)檢測電路原理圖
語音提取電路原理圖
電源電路原理圖
時(shí)鐘及復(fù)位電路原理圖
367890012345102423121210241216321887654321132457567891234221221141134365872391001211121414131615218171201*121922212423181FPGA電路原理圖主板PCB圖217212121631154145132119171513116975311222201*1614121078642118431092152361121233221041102211112201*
附錄B
FPGA程序
/*============================================File:analog.v
Function:以8.3Kbps采樣vol_in上的語音信號(hào),并通過ADC_data端口輸出=============================================*/
moduleanalog(clk_48m,reset,vol_in,vref,ADC_trig,ADC_data);
inputclk_48m;//系統(tǒng)輸入時(shí)鐘48Minputreset;//異步復(fù)位信號(hào)
inputvol_in;//模擬語音信號(hào)輸入outputvref;//參考電壓輸出
outputADC_trig;//在此信號(hào)的上升沿,輸出數(shù)據(jù)output[7:0]ADC_data;//采樣后的8位并行數(shù)據(jù)
regirq;//在此信號(hào)的上升沿輸出數(shù)據(jù)reg[3:0]samp_div;//數(shù)據(jù)抽樣步長寄存器reg[7:0]ADC_out;//ADC抽樣輸出reg[7:0]ADC_temp;//ADC輸出寄存regedge_detect1,edge_detect2;//邊沿檢測寄存器
wire[11:0]ADC_result;//ADC輸出
wire[8:0]init_data;//ADC初始化數(shù)據(jù)總線wire[8:0]init_addr;//ADC初始化地址總線wire[4:0]chanel;//ADC的采樣通道號(hào)
wireassc_done;//ADC在此信號(hào)上升沿輸出有效采樣數(shù)據(jù)wireedge_found;//標(biāo)識(shí)assc_done的上升沿assignADC_data=ADC_out;assignADC_trig=irq;
//*****************************************************************************//模塊名稱:邊沿檢測
//功能描述:檢測assc_done信號(hào)的上升沿
//*****************************************************************************assignedge_found=edge_detect1&&(~edge_detect2);always@(posedgeclk_48morposedgereset)begin
if(reset)begin
edge_detect1
endend
//*****************************************************************************//模塊名稱:ADC抽樣輸出
//功能描述:以10為步長抽樣輸出ADC的采樣結(jié)果
//*****************************************************************************always@(posedgeclk_48morposedgereset)begin
if(reset)begin
samp_div
(.SYS_CLK(clk_48m),.SYS_RESET(~reset),.VAREF(vref),
.DATAVALID(datavalid),.in_vol(vol_in),
.ASSC_DONE(assc_done),.ASSC_WAIT(),.ASSC_CHSAT(),.ASSC_CHLATD(),.INIT_ADDR(init_addr),.INIT_DATA(init_data),
.INIT_ACM_WEN(init_acm_wen),.INIT_ASSC_WEN(init_assc_wen),.INIT_EV_WEN(init_ev_wen),.INIT_TR_WEN(init_tr_wen),.INIT_DONE(init_done),
.ADC_RESULT(ADC_result),.ADC_CHNUMBER(chanel),.ACMCLK(acm_clk));
//*****************************************************************************//模塊名稱:pll_fusion_0
//功能描述:給AD采樣模塊提供2M的配置時(shí)鐘
//*****************************************************************************pll_fusionpll_fusion_0(
.POWERDOWN(1"b1),.CLKA(clk_48m),.LOCK(),.GLA(),
.GLB(acm_clk),.OADIVRST(1"b0));
endmodule
/*============================================File:top.v
Function:電話錄音系統(tǒng)頂層模塊,用于將各個(gè)子模塊連接起來=============================================*
moduletop(
reset/*synthesissyn_noclockbuf=1*/,clk_48m,vol_in,hold,q,std,
fsk_in,vref,pub,
phonesnd,vr_ok,txd,ctrl);
inputreset;//48MHz時(shí)鐘信號(hào)inputclk_48m;//異步復(fù)位信號(hào)inputvol_in;//語音輸入inputhold;//摘機(jī)信號(hào)
input[3:0]q;//MT8870解碼輸出
inputstd;//MT8870數(shù)據(jù)有效標(biāo)識(shí)inputfsk_in;//fsk信號(hào)輸入outputvref;//參考電壓inputpub;//VR喚醒輸入inputphonesnd;//忙音輸入
outputvr_ok;//VR初始化完畢標(biāo)識(shí)outputtxd;//UART發(fā)送線
outputctrl;//外部語音提取電路選通控制
wire[7:0]ADC_data;//ADC采樣模塊數(shù)據(jù)輸出wireADC_trig;//ADC采樣模塊發(fā)送觸發(fā)wire[3:0]dtmf_data;//DTMF解碼模塊數(shù)據(jù)輸出wiredtmf_trig;//DTMF解碼模塊發(fā)送觸發(fā)wire[7:0]fsk_data;//FSK解碼模塊數(shù)據(jù)輸出wirefsk_trig;//FSK解碼模塊發(fā)送觸發(fā)wire[7:0]txd_data;//UART發(fā)送模塊數(shù)據(jù)輸出wire[7:0]Dataout;//UART接收模塊數(shù)據(jù)輸出wire[2:0]CS;//通道選擇控制信號(hào)
wiredecode_out;//FSK解碼模塊bit流輸出wirering_out;//振鈴信號(hào)
wirefsk_over;//FSK通道結(jié)束信號(hào)wiredtmf_over;//DTMF通道結(jié)束信號(hào)wireadc_over;//ADC通道結(jié)束信號(hào)wirebusy_snd;//忙音信號(hào)
//*****************************************************************************//模塊名稱:analog_0//功能描述:ADC采樣
//*****************************************************************************analoganalog_0(
.reset(reset),//高電平有效的異步復(fù)位信號(hào).clk_48m(clk_48m),//48M時(shí)鐘.vol_in(vol_in),//語音輸入
.vref(vref),//參考電壓輸出.ADC_data(ADC_data),//AD采樣輸出.ADC_trig(ADC_trig)//發(fā)送觸發(fā));
//*****************************************************************************//模塊名稱:uart_txd_0//功能描述:UART發(fā)送
//*****************************************************************************uart_txd_0(.clk_48m(clk_48m),//48MHz時(shí)鐘.reset(reset),//復(fù)位,高有效.txd_start(txd_trig),//發(fā)送開始信號(hào),上升沿有效.txd_data(txd_data),//將要發(fā)送的的數(shù)據(jù),字節(jié)
uart_txd
.txd(txd),//發(fā)送線.txd_busy(txd_busy)//表示沒有發(fā)送完畢,發(fā)送忙);
//*****************************************************************************//模塊名稱:Chan_Select_0
//功能描述:處理通信協(xié)議,選擇數(shù)據(jù)通道
//*****************************************************************************Chan_SelectChan_Select_0(
.clk_48m(clk_48m),//48M時(shí)鐘輸入.reset(reset),//高電平有效的異步復(fù)位信號(hào).txd_busy(txd_busy),//發(fā)送忙標(biāo)志
.fsk_over(fsk_over),//FSK通道結(jié)束信號(hào).adc_over(adc_over),//ADC通道結(jié)束信號(hào).dtmf_over(dtmf_over),//DTMF通道結(jié)束信號(hào).CS(CS),//通道選擇信號(hào).FSK_data(fsk_data),//FSK解碼數(shù)據(jù).ADC_data(ADC_data),//AD采樣數(shù)據(jù).DTMF_data({4"b0,dtmf_data}),//DTMF解碼數(shù)據(jù).FSK_trig(fsk_trig),//FSK數(shù)據(jù)發(fā)送觸發(fā).ADC_trig(ADC_trig),//AD采樣數(shù)據(jù)發(fā)送觸發(fā).DTMF_trig(dtmf_trig),//DTMF數(shù)據(jù)發(fā)送觸發(fā).txd_trig(txd_trig),//UART發(fā)送觸發(fā)
.txd_data(txd_data)//UART待發(fā)送8位并行數(shù)據(jù));
//*****************************************************************************//模塊名稱:MT8870_0
//功能描述:DTMF解碼模塊
//*****************************************************************************MT8870MT8870_0(
.clk_48m(clk_48m),//48M時(shí)鐘
.reset(reset),//高電平有效的異步復(fù)位.q(q),//MT8870解碼輸出.std(std),//解碼有效標(biāo)識(shí)信號(hào).dtmf_data(dtmf_data),//解碼模塊數(shù)據(jù)輸出.dtmf_trig(dtmf_trig)//數(shù)據(jù)發(fā)送觸發(fā));
//*****************************************************************************//模塊名稱:decoder_0//功能描述:FSK解碼模塊
//*****************************************************************************decoder_0(
.fre_in(fsk_in),//FSK信號(hào)輸入.clk(clk_48m),//48M時(shí)鐘
.reset(reset),//高電平有效的異步復(fù)位信號(hào).decode_out(decode_out),//解碼輸出.ring_out(ring_out),//振鈴信號(hào).decode_cr(),//數(shù)據(jù)有效標(biāo)識(shí).ring_up()//振鈴邊沿);
//*****************************************************************************//模塊名稱:uart_rxd_0
decoder
//功能描述:UART接收模塊,用于將FSK解碼模塊的數(shù)據(jù)輸出速率由1200改為115200
//******************************************************************************uart_rxduart_rxd_0(
.reset(reset),//高電平有效的異步復(fù)位信號(hào).clk(clk_48m),//48M時(shí)鐘輸入.Dataout(Dataout),//8位數(shù)據(jù)輸出.RXD(decode_out),//數(shù)據(jù)串行輸入
.trig(trig)//標(biāo)識(shí)一個(gè)字節(jié)接收完畢);
//*****************************************************************************//模塊名稱:core_ctrl_0
//功能描述:控制Chan_Select_0選擇不同的數(shù)據(jù)通道
//*****************************************************************************core_ctrlcore_ctrl_0(
.clk_48m(clk_48m),//48M時(shí)鐘輸入
.reset(reset),//高電平有效的異步復(fù)位.ring(ring_out),//振鈴信號(hào).hold(hold),//摘機(jī)信號(hào).std(dtmf_trig),//指示有撥號(hào).CS(CS),//通道選擇信號(hào)
.fsk_over(fsk_over),//FSK通道結(jié)束信號(hào).adc_over(adc_over),//ADC通道結(jié)束信號(hào).dtmf_over(dtmf_over),//DTMF通道結(jié)束信號(hào).ctrl(ctrl),//語音采集電路選通信號(hào).busy_snd(busy_snd)//忙音信號(hào));
//*****************************************************************************//模塊名稱:vr_15_0
//功能描述:產(chǎn)生1.5V的內(nèi)核電壓
//*****************************************************************************vr_15vr_15_0(
.PUB(pub),//喚醒信號(hào).VRPU(1"b0),//使能信號(hào)
.FPGAGOOD(vr_ok),//VR初始化完畢標(biāo)識(shí).PUCORE());
//*****************************************************************************//模塊名稱:ring_send_0
//功能描述:標(biāo)識(shí)有振鈴到來
//*****************************************************************************ring_sendring_send_0(
.clk_48m(clk_48m),//48M時(shí)鐘輸入
.reset(reset),//高電平有效的異步復(fù)位信號(hào).ring(ring_out),//振鈴信號(hào).trig(trig),//發(fā)送觸發(fā)信號(hào).data(Dataout),//8位并行數(shù)據(jù)
.fsk_data(fsk_data),//FSK解碼數(shù)據(jù)輸出.fsk_trig(fsk_trig)//FSK數(shù)據(jù)發(fā)送觸發(fā));
//*****************************************************************************
//模塊名稱:busy_snd_0//功能描述:檢測忙音
//*****************************************************************************busy_soundbusy_snd_0(
.clk(clk_48m),//48M時(shí)鐘輸入
.reset(reset),//高電平有效的異步復(fù)位信號(hào).phonesnd(phonesnd),//忙音輸入.busy_snd(busy_snd)//檢測輸出);
Endmodule
/*============================================File:uart_rxd.v
Function:uart的接收模塊,接收采樣率為波特率的16倍=============================================*
moduleuart_rxd(reset,clk,Dataout,RXD,trig);inputclk,RXD;//時(shí)鐘與數(shù)據(jù)輸入inputreset;outputtrig;//數(shù)據(jù)有效標(biāo)志output[7:0]Dataout;//并行數(shù)據(jù)輸出regStartF;//開始與接收中斷標(biāo)志reg[9:0]UartBuff;//接收緩存區(qū)reg[3:0]count,count_bit;//位接收計(jì)數(shù)器reg[15:0]cnt;//時(shí)鐘節(jié)拍計(jì)數(shù)器reg[2:0]bit_collect;//采集數(shù)據(jù)緩存區(qū)regedge_detect1,edge_detect2;regRI;
wireclk_equ,bit1,bit2,bit3,bit4;//連線
parametercout=2500;//時(shí)鐘是48M所以16*1200的分頻數(shù)為2500,這里取整數(shù)assigntrig=edge_detect1&&(~edge_detect2);always@(posedgeclkorposedgereset)begin
if(reset==1"b1)begin
edge_detect1
begin
if(clk_equ)
cnt
endelseif(count_bit>4"d9)beginRI
友情提示:本文中關(guān)于《課程設(shè)計(jì)總結(jié)報(bào)告模版》給出的范例僅供您參考拓展思維使用,課程設(shè)計(jì)總結(jié)報(bào)告模版:該篇文章建議您自主創(chuàng)作。
來源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問題,請(qǐng)聯(lián)系我們及時(shí)刪除。