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