公文素材库 首页

课程设计总结报告模版

时间:2019-05-29 11:24:10 网站:公文素材库

课程设计总结报告模版

课程设计总结报告

课程名称:学生姓名:学生学号:系别:班级:指导教师:

电子技术课程设计(一)

物理与电子学院电子科学与技术080~~柳建国李春来

201*年7月5日音频放大器的设计题目(三号,黑体,居中)

(空一行)

一、设计任务与要求(标题均为小三号,宋体)

1、。。。。。。;(正文均为小四号,宋体,行距1.5倍)2、。。。。。。;

二、方案设计与论证

(首段,对设计要求的总体分析)方案一、。。。。。。要画系统原理框图。。。。。。方案二、。。。。。。要画系统原理框图。。。。。。

三、单元电路设计与参数计算

。。。。。。(要画单元电路图)

四、仿真过程与仿真结果

Protel99SE仿真。。。。。。

五、总原理图及元器件清单

1、总原理图

(含元件标号与型号)2、元件清单元件序号R1C1。。。型号主要参数数量备注五、安装与调试

(一般分静态调试与动态调试两大内容)

LA4102中各引脚的静态工作点电压:其中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)七、结论与心得

八、参考文献(不少于3篇)

1、。。。。。。(五号,宋体)

2、。。。。。。

致谢

*教材与参考书

1、教材

谢自美主编.《电子线路实验.设计.测试》第三版.武汉:华中科技大学出版社,201*.7。2、参考书

(1)高吉祥主编:《电子技术基础实验与课程设计》电子工业出版社,201*。(2)彭介华主编:《电子技术课程设计指导》,高教出版社,201*年出版。

(3)陈大钦主编:《电子技术基础实验-电子电路实验、设计、仿真》,高教出版社,201*。

目录

一、设计任务书(设计课题、给定的主要器件、功能要求)二、实验仪器三、设计框图及整体概述四、各单元电路的设计方案及原理说明五、调试过程及结果分析六、设计、安装及调试中的体会七、对本次课程设计的意见及建议八、参考文献九、附录(包括:整机逻辑电路图和元器件清单)[正文的排版:(此页不装订!)通过“视图文档结构图”显示文档层次结构1.第一级标题用小三号黑体2.第二级标题用四黑体3.第三级标题用小四号黑体

4.正文小四号字体,行距为固定值20磅

5.图题及表题用5号黑体,居中;图、表中文字用5号宋体(英文采用TimeNewRoman)6.参考文献采用一级标题,参考文献正文为五号宋体(英文用5号TimeNewRoman),正文中引用的文献依次编号并用方括号括起,如[1],[2],置于右上角;

7.正文中对于图表的引用说明一般采用:“如图×.×所示为××××”或“×××如图×.×所示“;一般不采用“×××如下:”,也即文中没有对于图表序号的显式引用;8.所有标题一律采用标准WORD格式设置(以便自动生成目录);有关报告排版的其它说明:

1.纸张大小及版心:统一用A4纸(21×29.7)打印,边距设为:上3cm,下2.6cm,左2.6cm,右2.4cm。行距为固定值20磅。

2.注意文中代表变量的英文字母必须用斜体,其它用正体。微分号d、圆周率π、自然底数e、矩阵转置T等均应为正体。

3.文章中的英文均用TimesNewRoman字体。4.提交文本的电子版为Word文件。

扩展阅读:课程设计总结报告模板

东北林业大学

单片机原理实验课程设计二号黑体居中间距约3cm距上约5cm

总结报告

6cm间距约

字号:初号,黑体居中

小三号黑体小三号楷体

设计项目:基于Fusion单芯片的电话录音系统的设计项目完成人:张小海、赵大海、王晓明指导教师:王明教授学院:信息与计算机工程学院专业:电子信息工程201*级1班

小三号黑体,本页最后一行指导教师一栏填写指导教师姓名、职称年月日

综合电子课程设计任务书

学生姓名学生姓名设计项目学号学号专业(班级)专业(班级)设计内容主要技术指标和要求设计所用仪器设备工作计划参考资料指导教师签字

基于Fusion单芯片的电话录音系统的设计

摘要

三号黑体摘要前必须有题目,小二黑体,居中放置

本设计主要研究一种基于数字通信的电话录音系统的设计方案。目前在国内已有现成的USB电话录音盒的产品,技术已经相当成熟,它是专门为小公司而设计开发的,具有经济、稳定、高效的特点。USB接口安装安装方便,即插即用,不需要其他配件就可以对电话进行录音。但是采用的都是专用解码芯片,为了提高运用PFGA的能力,本设计采用FPGA进行FSK来电显示解码,语音采集以及进行核心控制,实现单芯片系统的设计。

电话录音系统主要由上位机和下位机两部分组成。下位机由Actel公司的Fusion系列FPGA实现,主要负责来电号码识别,去电号码识别以及语音采样。来电的号码识别通过FPGA对FSK信号进行解码来完成,去电号码识别通过专用DTMF解码芯片MT8870完成,语音采样则由FPGA内部集成的ADC完成。上位机由VC6.0编写,程序用ODBC(开放数据库互连)连接了Excel作为数据库。通话的号码、时间、类型等信息都会被存储到数据库当中,通话的语音则以WAV文件的形式保存。上位机与下位机通过RS232接口通信。

本系统完成的功能是在有来电时,上位机软件能够从最小托盘处弹出,并显示来电号码,若此号码在数据库中有对应的联系人,将显示此联系人的姓名。若摘机,软件同样会自动弹出,显示去电号码,若有对应联系人,将显示姓名。并将所有通话记录以及通话语音进行存储,便于用户查询。

小四宋体,中文

关键词:Fusion;FPGA;来电显示;FSK解码;DTMF

摘要字数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

系统方案选择...........................................................................................................................22.1系统方案实现...........................................................................................................................22.2下位机核心控制.......................................................................................................................22.2.1器件选择...............................................................................................................................2二级以下(包括二2.2.2控制方案选择.......................................................................................................................32.3来电号码识别...........................................................................................................................32.3.1来电数据的格式...................................................................................................................32.3.2来电数据的传输制式...........................................................................................................32.3.3来电数据的解调解码...........................................................................................................42.4去电号码识别...........................................................................................................................42.5语音记录方式...........................................................................................................................52.5.1WAV格式简介.....................................................................................................................52.5.2WAV文件头.........................................................................................................................62.6通信协议定义...........................................................................................................................63

硬件设计...................................................................................................................................8小四宋体加黑

级题序)用小四宋体3.1系统硬件设计框图...................................................................................................................83.2电源设计...................................................................................................................................8

3.3FPGA最小系统设计...............................................................................................................93.3.1时钟和复位电路...................................................................................................................93.3.2FPGA电源和接地................................................................................................................9

3.3.3FPGA数字和模拟IO分配...............................................................................................103.3.4JTAG下载电路..................................................................................................................113.4UART发送模块.....................................................................................................................113.5FSK前置提取电路设计........................................................................................................123.6DTMF解码电路的设计........................................................................................................123.7语音提取电路的设计.............................................................................................................133.8摘机检测电路的设计.............................................................................................................134

FPGA程序设计.....................................................................................................................14

4.1总体结构设计.........................................................................................................................144.2核心控制模块设计.................................................................................................................144.2.1端口介绍.............................................................................................................................144.2.2工作原理.............................................................................................................................154.3通道选择模块设计.................................................................................................................164.3.1端口介绍.............................................................................................................................164.3.2工作原理.............................................................................................................................174.4UART发送模块.....................................................................................................................184.5FSK解码模块设计................................................................................................................184.5.1端口介绍.............................................................................................................................184.5.2工作原理.............................................................................................................................194.6DTMF解码模块设计............................................................................................................194.7A/D采样模块设计.................................................................................................................194.7.1端口介绍.............................................................................................................................194.7.2模块结构.............................................................................................................................205

上位机软件设计.....................................................................................................................21

5.1功能概述.................................................................................................................................215.1.1主界面.................................................................................................................................215.1.2通话记录界面.....................................................................................................................215.1.3电话簿界面.........................................................................................................................225.2程序结构框图.........................................................................................................................22

5.3数据接收和信息记录.............................................................................................................235.3.1引导字符的识别.................................................................................................................235.3.2来电信息记录.....................................................................................................................245.3.3去电信息记录.....................................................................................................................255.3.4语音信息记录.....................................................................................................................265.3.5数据库操作.........................................................................................................................275.4其他.........................................................................................................................................276

系统调试.................................................................................................................................28

6.1测试方案设计.........................................................................................................................286.2系统典型故障与分析.............................................................................................................286.2.1下位机上电复位.................................................................................................................296.2.2FSK解码.............................................................................................................................296.2.3上位机程序异常退出.........................................................................................................296.2.4上位机程序引导字符识别错误.........................................................................................297

结论.........................................................................................................................................30

参考文献附录

参考文献、附录、致谢均不编页码

东北林业大学课程设计

基于Fusion单芯片的电话录音系统的设计1绪论1.1课题研究的背景和意义来电显示,是近年来电信部门推出的一种新的业务:显示被叫方的电话号码和呼叫时在论文正文前,应阐述本课题研究间等信息。来电显示电话机和来电显示器产品应用已十分广泛,其技术也相当成熟。但传的目的、意义、对本研究国内外研究现正文二级标题统的来电显示信息电话仅将数据显示在自身的话机内,无法将数据提供给计算机或其他设状有针对性的简要综合评述和本论文用小三号宋体字,与备。因此开发来电显示电话与计算机的接口和相关的数据采集系统是十分必要的,也是有所要解决的问题等。三号宋体。论文标下文单倍行距实用价值的。题及第一层次题序距下文空一行.来电显示助手通过送入电脑的来电显示,结合客户信息数据库,将传统的电话来电显示功能进行扩展,使得客户在来电时通过来电号码在客户数据中查询相关的信息,显示在电脑上,使得我们在第一时间获知客户端基本信息、业务发生情况,占据业务的先机,把握谈话的主动性,拉近员工与客户之间的距离、提升企业形象、提高工作效率。而电话录音功能又可以让员工对客户提出的问题以及我们当时提出的系统的设计进行进一步的记录,有助于我们总结问题,以便于员工对客户进行更好的服务。

小二号黑体居中放置。论文标题及第一层次题序距上下文空一行1.2本设计的主要要求

1.2.1基本要求

(1)解码FSK制式来电显示;(2)能记录语音信息;小四宋体(3)使用FusionFPGA实现设计方案;1.2.2扩展功能要求

(1)通过串口将来电号码送往PC并做记录;(2)通过串口将语音信息传到PC并做记录;(3)能记录去电号码及语音信息;

1

页面上边距2.5cm,下边距2cm,左边距2.5cm,右边距2cm,装订线位置选择左侧。东北林业大学课程设计2系统方案选择页眉为:东北林业大学课程设计,字体设置为小五号宋体居中,页眉以通档横线与正文间隔2.1系统方案实现系统主要由硬件和软件两大部分构成,其中硬件又由前端电路,FPGA以及隔离模块三大部分构成,其中前端电路将电话线上的信号进行并行处理并接入FPGA的内部进行进一步的处理,通过检测到的忙音信号,振铃信号,摘机信号进行判断当前状态并对通道选择模块进行控制,将FSK解码,DTMF解码以及AD采样中的某一路与串口隔离模块相连,最后通过串口隔离模块后与PC机相连。

软件部分是由VC6.0编写的一个小型应用软件,具有良好的人机界面,便于使用。

前端电路忙音检测忙音检测忙音信号振铃信号振铃检测核心控制摘机信号电话信号摘机检测串口隔离RS232接口FusionFPGA隔离模块FSK提取FSK解码通道选择串口发送串口转USBPC机DTMF解码DTMF解码语音提取AD采样USB接口图21系统框图

2.2下位机核心控制2.2.1器件选择由于本系统要对语音信号进行采样,因此我们选择了Actel公司的Fusion系列FPGA作为核心控制器,针对本系统该系列FPGA提供了以下特点:

(1)片内集成了采样精度最高12位,采样频率最高600kps的ADC

2

正文三级标题用四号宋体字东北林业大学课程设计

(2)片内集成了1.5V电压调整器,可以实现低功耗的睡眠模式(3)基于Flash架构,配置数据掉电不丢失

基于以上的特点,我们选择了Fusion系列FPGA中AFS250来实现我们系统,不仅简化了外围电路的设计,同时还减小了PCB面积,有效实现了单芯片系统[1]。

2.2.2控制方案选择

下位机有两种控制方案可供选择,分别是使用状态机和使用MCU软核。状态机占用的资源较少,运行也很稳定,然而当需要实现复杂的通信协议时,状态机的设计会变得异常复杂,需要花费大量的时间和精力才能完成。MCU软核则正好相反,它可以运行常规的C程序,从而能够高效的处理人机界面和进行协议转发,然而为了获得强大的功能,软核通常需要以占用大量的逻辑资源为代价,在一些小型设计中显得得不偿失。

本系统下位机的主要任务是对来电、去电信息进行解码并对语音信号进行采样,然后将这些数据上传给上位机,状态非常简单,其中并未涉及复杂的拆包、打包过程以及握手协议,因此我们使用了状态机来完成核心的控制。

2.3来电号码识别

2.3.1来电数据的格式

目前我国的来电显示主要有复合数据格式和单数据格式两种,复消息数据格式如表21所示。表中值定义一栏的M、N、O表示该字节的值不确定,表示该串字节的值不确定[2]。

表21复合数据格式字段位置01234~12131415~15+N15+N+1

功能描述复合数据格式标识字符值定义80H表例子:“表2-1复合数据格从该字节之后到BCC字节之间的数据长度式”位于表的上方居中,M五号呼叫时间消息类型标识01H表格内中文用小五宋体加黑,呼叫时间消息长度08H英文或其文字用小五号宋体,以ASCLL码表示的呼叫时间号TimesNewRoman字体。主叫号码消息类型标识主叫号码消息长度

以ASCLL码表示的主叫号码BCC校验字

02HNˉO

单数据格式的标识字符为04H,相对于复合数据格式,它省去了呼叫时间消息长度和

主叫号码消息长度两个参数,其它参数的定义与复合数据格式相同,在此不再赘述。

2.3.2来电数据的传输制式

电话交换机是通过FSK调制波将来电信息发送给电话终端的,具体的调制特性如下所示:

(1)调制方式:BFSK(相位连续二进制移频键控)(2)逻辑1:1200Hz

页脚为页码,页码格式为阿拉(3)逻辑0:2200Hz

伯数字,字体设置为小五号(4)传输速率:1200bps

TimesNewRoman字体居中(5)数据传送方式:二进制异步串行方式在挂机状态时,电话线上是50V左右的直流电平,当有电话呼入时,会有峰峰值为90V的振铃信号叠加到50V的直流电平上。承载着来电信息的FSK调制波会在第一声振东北林业大学课程设计

铃和第二声振铃之间发送给电话终端,具体波形如图22所示[3]。

空闲时50V来电时50VFSK信号振铃信号振铃信号振铃信号通话时语音信号5V坐标图例子:横纵坐标必须标注量、单位,坐标名置于图的下方居中,五号宋体加黑图22不同状态下的电话信号波形

2.3.3来电数据的解调解码

对于FSK调制波,有很多种成熟的解调方案,如使用模拟或数字滤波器,或使用锁相环,然而这些方案在具体实现时都比较复杂。在本系统中,考虑到来电数据的传输速率较慢而且是单位传输,同时数据传输速率与载波频率的对应关系也较为单一,因此我们没有用传统的解调方案,而是将FSK调制波整形成矩形波后直接送入了FPGA,然后由FPGA根据波形的特性进行0、1判断,完成解调过程。

来电信息是用UART的方式以1200bps发送的,因此在数据解调完毕后几乎不需要额外的解码处理,解调模块可直接将输出通过RS232接口发送给上位机。

2.4去电号码识别

电话终端是以DTMF(双音多频)的方式将呼叫号码发送给电话交换机的,为了获知用户拨出的号码,下位机需要完成DTMF解码。DTMF解码过程中需要完成对多种频率的识别,并将这些频率的组合方式译码成有效的数据,这一过程的实现非常复杂,因此在本系统中我们选用了专用的解码芯片MT8870[4]。

MT8870能将DTMF信号译为四位二进制码,表22是该芯片的译码表。其中Digit为实际的按键,TOE是输出使能信号,Q1-Q4为4位数字输出,每当解码芯片检测到有效载波时,就会进行解码,解码完成后Q4~Q1的值会立即被更新,同时STD输出一个高电平信号,下位机可以根据STD的状态判断是否有按键,当检测到有按键按下时,通过读取Q4~Q1的值即可获得按键代码,从而识别用户拨出的电话号码。

东北林业大学课程设计

表22MT8870译码表

DigitANY1234567890*#ABCDABCD

TOELHHHHHHHHHHHHHHHHHHHH

INHXXXXXXXXXXXXXLLLLHHHH

STDHHHHHHHHHHHHHHHHHLLLL

Q4Z0000000111111110

没有检测到按键时Q4~Q1保持不变STD返回低电平

Q3Z0001111000011110

Q2Z0110011001100110

Q1Z1010101010101010

2.5语音记录方式

本系统的语音采集工作,由下位机通过FPGA内部集成的ADC完成,下位机采样到的语音数据通过RS232接口发送给上位机,然后由上位机保存成WAV格式。

2.5.1WAV格式简介

WAV格式是微软公司开发的一种声音文件格式,也叫波形声音文件,是最早的数字音频格式,被Windows平台及其应用程序广泛支持。WAV格式支持许多压缩算法,支持多种音频位数、采样频率和声道,采用44.1kHz的采样频率,16位量化位数,因此WAV的音质与CD相差无几,但WAV格式对存储空间需求太大不便于交流和传播[5]。

WAV来源于对声音模拟波形的采样。用不同的采样频率对声音的模拟波形进行采样可以得到一系列离散的采样点,以不同的量化位数(8位或16位)把这些采样点的值转换成二进制数,然后存入磁盘,这就产生了声音的WAV文件,即波形文件。该格式记录声音的波形,故只要采样率高、采样字节长、机器速度快,利用该格式记录的声音文件能够和原声基本一致,质量非常高,但这样做的代价就是文件太大。但电脑的存储空间很大,而且文件可以随时进行清理与删除,对于本设计文件大并不是问题,我们还可以进行进一步的改进,如将WAV文件进行压缩后再保存等。

由于只需要对声音进行采样,即将模拟信号送入FPGA的内部进行A/D采样后再经串口传给计算机,并以WAV格式进行保存,以这种方式我们就能将语音信号保存并进行播放,因此语音记录方式采用的是WAV格式文件。

东北林业大学课程设计

2.5.2WAV文件头

为了创建标准的WAV文件,上位机程序用结构体定义了一个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;

文件头中包含了文件大小、采样速率、通道数等信息,其中有些成员的值是固定的,如采样速率SamPerSec和通道数SamPerSec,而有些成员的值则需要在程序运行过程中动态计算,如文件大小FileSize。关于WAV文件头中各个成员的进一步介绍,在此不再赘述。

2.6通信协议定义

本系统的程序主要有下位机和上位机程序两大部分组成,下位机负责来电和去电信息的解码以及语音的采样,而上位机则负责对这些数据进行记录和管理。在系统的运行过程

东北林业大学课程设计

中,下位机共有三种类型的数据需要上传,分别是来电信息数据,去电信息数据和语音数据,为了让上位机能够将这些数据区分开来,需要定义一组简单的通信协议[6]。

下位对引导字符的发送和上位机对引导字符的识别是本系统通信协议的核心,具体的实现机制是,当下位机有数据需要上传时,首先要向上位机发送一段引导字符,上位机识别到引导字符后要根据引导字符的类型进入相应的数据接收准备状态。引导字符的定义如表33所示。表33引导字符定义引导字符类型1024个AAH1024个BBH1024个CCH

功能描述拨号信息前导,指示上位机准备接收拨号信息数据来电信息前导,指示上位机准备接收来电信息数据语音数据前导,指示上位机准备接收语音数据

由表33可以看出,下位机与上位机的通信过程非常简单,上位机只需要接收下位机发送的引导字符,然后根据引导字符的类型进入相应的状态并等待下位机上传的数据即可。协议中数据传输的结束是通过等待超时来实现的,当上位机在超过了规定的时间后还未接收到数据时则认为传输结束,然后会返回到空闲状态。

东北林业大学课程设计

3硬件设计

3.1系统硬件设计框图

如图3所示,整个系统由FusionFPGA和外围电路两大部分组成,其中外围电路又分为摘机检测电路、FSK提取电路、DTMF解码电路和语音提取电路四个单元。

摘机检测电路用于检测话机的状态,挂机时检测电路会输出高电平,摘机时检测电路会输出低电平。振铃检测及FSK提取电路用于提取振铃信号以及电话交换机发送的FSK来电信息,并将其处理为规则的矩形波信号,然后送由FPGA解码处理。DTMF解码电路用于解码用户的拨号的信息,当电路检测到有效的载波时,会自动对载波进行解码,并后将解码得到的数据通过一个四位总线并行输出。语音提取电路用于提取和处理通话过程中的语音信号,经过处理后的信号会被直接送至FPGA的ADC输入端口进行采样。

FusionFPGA是整个系统的核心,它对外围电路的输入信号进行逻辑判断,然后执行对应的操作并完成所需的功能。

由于电话系统与PC机是共地的,因此当上位机与下位机通过RS232接口直接相连时,上位机会对下位机产生很大的干扰,如图31中的串口隔离模块用于实现上位机与下位机的电气隔离,从而有效避免干扰。

图31系统硬件框图

3.2电源设计

系统的电源电路如图3所示。外接电源通过线性稳压器7805和SPX1117-3.3后得到VCC_5和VCC_33两路电源,VCC_5用于对外围模拟电路供电,VCC_33则用于对FPGA的数字IO等供电。VCC_5通过DC-DC模块BS0505S隔离后得到UART_VCC,该路电源用于对UART发送模块供电。

Fusion系列FPGA内部集成了一个1.5V的电压调整器,通过它可以给FPGA的内核以及其它1.5V外设供电。集成电压调整器最大可以输出20mA的电流,为了使其具有足够的驱动能力,需要用一个三极管进行电流放大。在图32中,Q1的基极和发射极分别连接到了FPGA的PTBASE和PTEM引脚,电压调整器会根据PTEM反馈的电压自动调整PTBASE电压,从而在Q1的发射极得到稳定的1.5V输出。

东北林业大学课程设计

VCC_15经过由R17、C14、C15组成的阻容滤波网络后生成PVCC,此路电源用于对FPGA内部的PLL供电。AGND、GND、PGND分别是系统的模拟地、数字地以及PLL地,为减少数字地对模拟地和PLL地的干扰,电路中用0Ω电阻对它们进行了隔离。

图32电源电路

3.3FPGA最小系统设计

3.3.1时钟和复位电路

系统时钟采用的是48MHz的有源晶振,为了使时钟电路能够输出稳定的电压波形,必须保证供电电压的稳定,因此在时钟电路的前端添加了LC滤波电路,如图33所示,电阻R6的作用是抑制高次谐波和实现阻抗匹配。

图3中的C8和R5组成了上电自动复位电路,在上电瞬间C8的充电电流会将RST拉高,从而对系统进行复位。

图33时钟和复位电路

3.3.2FPGA电源和接地

Fusion系列FPGA内部集成了ADC模块,是一个模数混合的系统,因此需要恰当的处理芯片的电源和接地。如图34所示,电路中为每个电源引脚都添加了去耦电容,同时遵循了将模拟电路与数字电路分开接地的原则。

东北林业大学课程设计

图34FPGA的电源和接地

3.3.3FPGA数字和模拟IO分配

FPGA拥有丰富的IO资源,在本系统中我们只用到了少数几个。如图3所示,其中CLK和RST是时钟和复位信号,它们需要连接到芯片的全局网络上,144引脚和142引脚位于芯片东边的时钟调整电路上,可以通过多路选择逻辑连接到全局网络,符合我们的需求。SOUND_IO是语音信号输入信号,可以分配到AV0~AV5中的任意一个,在此我们使用了AV0。图35中的其它信号均为来自外围电路数字信号,对IO分配没有特殊要求,在此是根据PCB布线情况分配的。

图35数字和模拟IO分配

东北林业大学课程设计

3.3.4JTAG下载电路

如图3所示,JP1即为JTAG插座,JTAG下载电路非常简单,只需要将对应引脚与下载插座相连即可。Fusion芯片内部集成的电压调整器是通过电荷泵工作的,因此需要外接电容C16。图36中的JP3是双排插针,它左边的端口直接与FPGA相连,右边的端口则与外围电路相连,左右两边的端口可以通过跳线连接起来,这样设计的好处是容易隔离故障,方便调试。

图36JTAG下载电路

3.4UART发送模块

UART发送模块的电路如图37所示,电路中用SP3232E完成TTL电平到RS232电平的转换,由高速光耦6N137实现电气隔离。

图37UART发送模块

东北林业大学课程设计

3.5FSK前置提取电路设计

FSK前置电路如图38所示,电感L2、L3用于滤除电话信号上高频噪声,电容C42、C44用于隔直通交,三极管Q2与其外围的电阻构成了一个共射极放大电路。由于FSK信号是在第一声振铃和第二声振铃之间进行发送的,而且振铃信号的幅值比FSK信号的幅值高出很多倍,因此需要对振铃信号进行一定程度的衰减,图38中的C45,R25,C43,R26构成了一个简单的阻容带通滤波器,它一方面可以有效的衰减振铃信号的幅值,另一方面还可滤除电话信号中的噪声。比较器U7用于将电路提取得到的FSK波形整形成矩形波,它的输出会被直接送入FPGA的数字I/O进行解调和解码处理。电位器W1用于调整比较器的参考电压,从而调整输出信号高电平的宽度,在干扰较大的环境下可以将比较电压调节的稍高一些,这样可以有效滤除干扰信号。

图38FSK前置摘取电路

3.6DTMF解码电路的设计

DTMF解码的实现比较复杂,在此我们直接使用专用解码芯片MT8870来完成。如图39所示,BG_OUT是电话线上的信号经过整流桥反极后得到的,可直接通过隔直电容耦合到MT8870当中,在检测到有效载波后,MT8870会将解码得到的数据并行输出到Q1~Q4上,然后置高StD信号,FPGA检测到StD信号的上升沿后即可从Q1~Q4上读取到有效的数据。MT8870的工作电压为5V,而FPGA端口的工作电平为3.3V,R9、R11~R14的作用是限制当Std或Q1~Q4为高电平时灌入FPGA端口的电流,从而保护FPGA的IO不被损坏。

图39DTMF解码电路

东北林业大学课程设计

3.7语音提取电路的设计

语音信号是直接在电话线上传输的,因此语音提取电路的结构非常简单,如图310所示,电话信号通过整流桥反极后被送到Q3的发射极,电路中的Q3和Q4组成了一个达林顿型三极管,当CTRL为低电平电时,光耦导通,达林顿三极管饱和,语音信号被耦合到下一级电路,当CTRL为高电平时,光耦截止,达林顿三极管截止,此时电话线上信号被切断。CTRL信号由FPGA控制,只有在启动录音时,该信号才会变为低电平,空闲状态下该信号为高电平。这样做一方面可以降低系统负载对电话线的影响,另一方面可有效防止高压振铃信号损坏后级电路。

图310中,D4、D5的作用是对SOUND信号进行钳位。当由于系统异常导致振铃信号在CTRL为低电平时进入时,90V的振铃信号会直接耦合到FPGA的模拟IO端口,这有可能会对系统造成致命的损坏。电路中的钳位二极管会将SOUND的电平钳在-0.7V~+5.7V之间,可有效避免因振铃信号异常进入而导致的FPGA损坏。

图310语音提取电路

3.8摘机检测电路的设计

在挂机情况下,电话线上的电压为50V左右,在摘机情况下电压会降低到6V左右,因此用电阻分压的方式即可实现摘机和挂机的检测,如图311所示,电路中二极管D6和D7的作用也是进行电压钳位,从而保护后级电路。

图311摘机检测电路

东北林业大学课程设计

4FPGA程序设计

4.1总体结构设计

FPGA程序的总体结构框图如图41所示,核心控制逻辑通过检测振铃和摘机信号来控制通道选择模块选择相应的传输通道,其中摘机信号由摘机检测电路产生,振铃信号由FSK解码模块产生。FSK解码模块、ADC采样模块和DTMF解码模块的数据输出时序与UART发送模块相匹配,它们通过通道选择模块相连。UART发送模块以115200b/s的波特率发送数据,它的输入数据来自通道选择模块,通道选择选择模块则在核心控制模块的控制下将UART发送模块与FSK解码模块、ADC采样模块或DTMF解码模块接通。

核心控制振铃信号FSK解码AD采样DTMF解码通道选择UART发送

图41总体结构框图

4.2核心控制模块设计

4.2.1端口介绍

图42核心控制模块端口结构图

核心控制模块的端口结构如图42所示,左边是输入端口,右边是输出端口,关于各个端口的功能描述请参见表41。

东北林业大学课程设计

表41核心控制模块端口描述名称clk_48mresetringholdstdCSfsk_overadc_overdtmf_overctrl

方向输入输入输入输入输入输出输出输出输出输出

宽度1111131111

功能描述48MHz时钟信号高电平有效的复位信号

振铃信号,当有振铃时该信号为变为高电平

摘机信号,摘机时该信号低电平,挂机时该信号为高电平DTMF有效信号,解码芯片有数据输出时,该信号会被置高通道选择信号,每个位对应着一个数据通道用于结束FSK通道的标志信号用于结束ADC通道的标志信号用于结束DTMF通道的标志信号语音提取电路的选通信号

4.2.2工作原理

核心控制模块是一个米利型状态机,它根据hold、ring和std信号进行状态跳转并对CS、fsk_over等输出信号进行控制,核心控制模块的状态转移图如图43所示,关于各个状态的详细描述请参见表42所示。状态所对应的输出列中未描述的信号表示该信号的值与前一个状态相同。

图43核心控制模块状态转移图

东北林业大学课程设计

表42核心控制模块状态描述状态描述循环检测hold_valid和ring信号,当发现hold_valid为0时则

IDLE

表明用户摘机拨号,状态跳转到DTMF,当发现ring信号为1时,则表明有电话呼入,状态跳转到FSK。

启动wait_cnt计数,用户的每次拨号都会使wait_cnt清零,当

DTMF

wait_cnt超过某值后则表明用户拨号结束,状态跳转到DTMF_idle

DTMF_idleDTMF_over

该状态用于使输出信号dtmf_over产生一个宽度为一个时钟周期的高电平信号

该状态用于使输出信号dtmf_over产生一个宽度为一个时钟周期的高电平信号,状态跳转到ADC

启动fsk_wait计数并检测hold_valid,fsk_wait超过某值后则表

FSK

明主叫方放弃呼叫,状态跳转到FSK_out,hold_valid为0表明用户摘机接听电话,状态跳转到ADC。

FSK_outFSK_overADCADC_over

该状态用于使输出信号fsk_over产生一个宽度为一个时钟周期的高电平信号

该状态用于使输入信号fsk_over产生一个宽度为一个时钟周期的高电平信号,状态跳转到ADC。

检测hold_valid信号,若为1则表明用户挂机,状态跳转到ADC_over

该状态用于使输出信号adc_over产生一个宽度为一个时钟周期的高电平信号

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通道选择模块端口结构图

通道选择模块的端口结构如图44所示,详细描述了各个端口的属性和功能。

东北林业大学课程设计

表43通道选择模块端口描述

名称clk_48mresettxd_busyfsk_overadc_overdtmf_overCSFSK_dataADC_data

方向输入输入输入输入输入输入输入输入输入

宽度111111388811118

功能描述48MHz时钟信号高电平有效的复位信号

UART发送忙信号,高电平时表示UART模块正在发送数据用于结束FSK通道的标志信号用于结束ADC通道的标志信号用于结束DTMF通道的标志信号

通道选择信号,每个位对应着一个数据通道来自FSK解码模块的8位并行数据来自AD采样模块的8位并行数据来自DTMF解码模块的8位并行数据

当FSK_data上的数据有效时,该端口上会产生一个上升沿触发UART发送模块将数据发出

当ADC_data上的数据有效时,该端口会产生一个上升沿触发UART发送模块将数据发出

当ADC_data上的数据有效时,该端口会产生一个上升沿触发UART发送模块将数据发出

该端口直接与UART发送模块相连,当系统工作时它会被选择连接到FSK_tirg、ADC_trig或DTMF_trig上

该端口直接与UART发送模块相连,当系统工作时它会被选择连接到FSK_data、ADC_data或DTMF_data上

DTMF_data输入FSK_trigADC_trigDTMF_trigtxd_trigtxd_data

输入输入输入输出输出

4.3.2工作原理

通道选择模块也是一个米利型的状态机,它的状态转移图如图45所示。表中“”表示该状态下的输出不是确定电平状态,而是一串序列。

图45通道选择模块状态转移图

东北林业大学课程设计

表44通道选择模块状态描述状态IDLEPre_FSKFSKPre_ADCADCPre_DTMFDTMF

描述该状态循环检测CS的值,当CS为1时跳转到Pre_FSK,该状态发送1024个CCH前导,发送完成后跳转到FSK该状态将输出与FSK解码模块相连,当检测fsk_over信号为1时跳转到IDLE

该状态发送1024个BBH前导,发送完成后跳转到ADC该状态将输出与AD采样模块相连,当检测到adc_over信号为1时跳转到IDLE

该状态发送1024个AAH前导,发送完成后跳转到DTMF状态

该状态将输出与DTMF解码模块相连,当检测到dtmf_over信号为1时跳转到End_DTMF。

输出txd_trig东北林业大学课程设计

表45FSK解码模块端口描述名称fre_inclkresetdecode_outring_outdecode_cr

方向输入输入输入输出输出输出

宽度111111

功能描述FSK信号输入端口,该端口直接与FSK前置提取电路的输出相连系统时钟输入端口

高电平有效的复位信号输入端口

数据输出端口,格式为1200bps,8N1,UART振铃输出端口,当有振铃时该端口输出高电平

数据有效端口,当模块解码到数据时,该端口输出高电平

4.5.2工作原理

FSK解码模块首先对输入信号进行滤波,因为电话线上的信号难免会有一些干扰,我们首先要将这些毛刺滤除干净,否则会对后端的信号判断产生影响,因为在解码程序中我们都是在检测信号的边沿,然后通过窗口信号来检测信号的频率,从而判断是振铃信号还是FSK信号,如果是振铃信号,则将ring_out置1,并且一直检测后面是否有FSK信号;如果是FSK信号(通过判断是否有连续的175个1),则在连续的“1”之后同步1200hz的窗口信号,在此波特率下检测信号的边沿,若有4个边沿,则输出0,若有2个沿则输出1,若有三个沿,则计第一个沿到第三个沿之间的频率,如果在1200hz左右则输出1,若在2200hz左右则输出0,这样就将FSK信号解码输出了。没有信号的时候,输出高电平,因为在串口通信中高电平是认为没有数据的。

4.6DTMF解码模块设计

DTMF解码模块的端口结构如图48所示,由于在外围电路中使用了专用的解码芯片MT8870,因此该模块仅仅需要完成接口逻辑的转换即可。图4中的q和std端口直接与解码芯片的对应管脚相连,当解码芯片捕获到有效数据时,会在std管脚产生一个上升沿,解码模块检测到该上升沿后会将q端口上的数据读取到dtmf_data端口上,同时在dtmf_trig端口上产生一个正脉冲,后级的串口发送模块在该脉冲的触发下会将dtmf_data上的数据串行发送出去。

图48DTMF解码模块端口结构

4.7A/D采样模块设计

4.7.1端口介绍

A/D采样模块的顶层端口结构如图49所示,vol_in是模拟信号输入端口,它直接与外围语音提取电路相连,vref是参考电压输入输出端口,由于在本系统中我们使用了芯片内部的2.56V参考电压,因此vref为2.56V的输出端口。ADC_data端口是A/D模块采样得到的8位并行数据,ADC_trig端口用于输出触发信号,在每完成一次采样后,该端口会输出一个正脉冲触发UART发送模块将ADC_data上的数据串行输出。

东北林业大学课程设计

图49ADC采样模块顶层端口结构

4.7.2模块结构

如图410所示,A/D采样模块由flash模块,ADC模块、PLL模块和接口逻辑四部分组成。flash模块中存储着ADC模块的配置数据,每次上电时它会自动将配置数据写入ADC模块中,PLL模块用于生成配置时钟。在配置完成后,ADC模块会以固定的采样频率对vol_in端口上的信号进行采样。接口逻辑的作用是连续对ADC的采样数据进行抽样,在每次抽样完成后它会将抽样得到的数据写到ADC_data,并在ADC_trig上生成一个正脉冲。

vol_inADC模块flash模块clk_48mPLL模块接口逻辑ADC_trigADC_data[7:0]

图410AD采样模块结构图

图410中的flash模块、ADC模块和PLL模块均为Fusion系列FPGA的集成外设,在Libero集成开发环境下可以通过向导生成,其中的配置逻辑也是由开发环境自动生成的,在应用时不需要考虑其实现细节。在Libero开发环境下,ADC模块的采样频是根据系统时钟自动计算的,不可以手动设置。在本系统中,软件计算的ADC的采样频率为83.9KHz,而我们需要的采样频率为8KHz,为了满足需求,接口逻辑需要以10为步长对ADC的采样结果进行间隔抽样。基于这种思路,实际获得的语音采样频率为8.39KHz,实测证明该采样频率下的语音采集效果良好。

东北林业大学课程设计

5上位机软件设计

5.1功能概述

本系统的上位机软件由VC6.0编写,可以实现通话录音和来电显示等功能,程序还通过ODBC连接了Excel数据库,能够方便的实现对对电话簿和通话记录的管理。上位机软件共有三个界面,下面分别介绍。

5.1.1主界面

图51是程序运行时的主界面,通过最小化到托盘按钮可以将程序隐藏在后台运行,当有电话呼入或用户摘机拨号时,程序界面会自动弹出。电话交换机是在第一声振铃后发送来电信息的,当上位机程序接收到来电信息后,会将来电号码提取出来并在数据库中查找对应的姓名,然后将姓名和号码分别显示到姓名栏和号码栏。用户摘机拨号时,上位机会将拨出的号码逐个捕获并显示在号码栏中,拨号完成后上位机根据拨出的号码从数据库中查询姓名并将其显示在姓名栏中,如果姓名未查到则显示未知。在程序的整个运行过程中,电话图标的状态会始终与系统的当前状态保持同步。

图51主界面

5.1.2通话记录界面

通话记录界面如图52所示,程序运行过程中的所有来电和去电信息都会被记录在列表框中。通过查询选项可以对通话记录进行查询,如查询某人某时段的通话记录或查询某时段所有人的通话记录,也可以对通话类型进行筛选。程序的查询操作在后台是通过SQL语句实现的,查询通配符为“_”,如查询201*年4月的所有通话记录,可以在日期栏中输入“201*-04-__”,然后点击查询按钮即可。

通话的语音信息被记录在WAV文件中,双击某条通话记录或选中记录后点击播放按键即可播放对应的WAV声音文件。选中某一条或多条通话记录然后点击删除按钮,即可将其删除。

东北林业大学课程设计

图52通话记录界面

5.1.3电话簿界面

电话簿界面如图53所示,在该界面下可以对电话簿进行添加、删除、查找和修改操作。它的操作方法非常简单,在此不再赘述。

图53电话簿界面

5.2程序结构框图

上位机程序的结构框架如图54所示,其中的通话记录窗口、电话簿窗口和主界面窗口都是作为子窗口依托于应用程序存在的。

东北林业大学课程设计

ODBC电话簿窗口MSC控件通话记录窗口应用程序后台数据库下位机主界面窗口

图54程序结构框架图

通话记录窗口在整个程序中的作用最为关键,它通过MSComm控件直接接收下位机发送的数据并根据数据类型将其记录到数据库中或存储为WAV声音文件。电话簿窗口的功能较为独立,它只对后台数据库的电话簿进行管理,不与程序的其它部分交互。主界面窗口需要显示来电姓名、号码以及系统的当前状态,而这些信息产生在通话记录窗口,主界面窗口由通话记录窗口间接控制。为了实现跨窗口的信息传递,通话记录窗口需要首先向父窗口发送消息,父窗口响应消息会通过主窗口对象调用其中对应的成员函数完成特定操作。

5.3数据接收和信息记录

数据接收和信息记录工作是在通话记录窗口中完成的,具体流程如图55所示,空闲状态下MSC控件的RThreshold属性被设置为1024,也就是说上位机每接收到1024个字节的数据后才会产生MSC事件,当查询到MSC事件后,即表明有数据数据上传,上位机程序首先根据引导字符的类型设置状态标志,在随后的MSC事件中,程序会根据状态标志选择数据记录方式。数据接收完成后,状态标志会被设置为空闲,程序进入等待下次数据上传的状态。

MCS事件N状态为空闲Y识别引导字符设置状态标志状态为FSKY来电信息记录N状态为DTMFY去电信息记录N状态为语音Y语音信息记录结束状态复位

图55数据接收流程图

5.3.1引导字符的识别

本系统定义的引导字符是1024个字节的0xAA、0xBB或0xCC,它的识别方式如下

东北林业大学课程设计

所示,MSC事件响应后,上位机程序接收到的数据被会被存储在数组rxdata中,为了提高识别效率,程序以32为步长抽样判断接收到的数据是否为有效引导字符,若接收到的数据中包含有非0xAA、0xBB或0xCC的字节,则表明系统出现了异常,程序会弹出“引导字符识别错误”对话框。引导字符识别成功后,状态标志state的值会被设置成引导字符的值,在随后的MSC事件中,程序会根据state的值来选择数据记录的方式。state为0xAA表示DTMF数据,state为0xBB表示语音数据,state为0xCC表示FSK数据,state为0表示空闲,只有state为0程序才会对引导字符进行识别。

if(state==0){}

for(k=10;k东北林业大学课程设计

FSK状态FSK超时定时器超时振铃超时定时器超时第一声振铃Y弹出用户界面通过消息向主界面窗口发送等待接听动画N接收FSK数据设置FSK超时定时器设置振铃超时定时器提取来电号码提取来电号码查询来电者姓名查询来电者姓名识别语音向导通过消息将号码和姓名发送给主界面窗口将来电信息导入数据库,并将类型标示为未接N发现语音前导Y状态标示为语音结束结束结束

图56来电信息记录流程图

在接收到FSK数据后,程序会设置一个FSK超时定时器和振铃超时定时器,FSK的超时表明下位机的FSK数据已经发送完毕,超时函数会从接收到的数据中提取出来电号码并从数据库中查询姓名,然后发送给主界面窗口显示。振铃的超时表明主叫方在呼叫无人接听的情况下终止了呼叫,超时函数根据来电号码查询出来电姓名,然后将来电信息记录到数据库中,同时会将号码和姓名发送给主界面窗口,并将主界面窗口状态标志为“未接来电”。

下位机在用户接听电话后会发送语音前导,以指示上位机开始录音,因此上位机在接收FSK的数据的过程中同时要检测语音前导,语音前导是1024个0xBB,然而此时MSC控件的RThreshold属性为1,因此在事件响应时不可能将1024个0xBB全部接收到,我们的实现方法是只要检测到5个连续的0xBB即会将状态标志为语音,在下次MSC事件中便会启动录音。

5.3.3去电信息记录

去电信息的记录是在DTMF状态下完成的,该状态下的程序流程如图57所示。DTMF状态初次进入时,上位机程序的界面会自动弹出,同时MSC控件的RThreshold属性会被设置为1,以便逐个接收用户拨出的号码,此后用户的每次拨号都会产生一个MSC事件,事件被响应后,程序会设置拨号超时定时器并将号码逐个发送给主界面窗口,拨号超时后程序则认为拨号结束,拨号超时函数被执行。在拨号超时函数中程序会根据拨出的号码从数据库中查询出姓名并将其发送给主界面窗口显示,然后程序复位到初始状态。

程序复位到初始状态后,会不断的检测引导字符,若检测到0xBB语音前导,则开始

东北林业大学课程设计

录音。理想的处理情况是下位机在检测到对方接听电话后便向上位机发送语音前导,指示上位机开始录音,然而受电话业务的局限,对方的摘机信号并不会发送给主叫用户端,因此下位机只能通过拨号超时机制来向上位机发送语音前导的,这样做的坏处是可能会录到一些回铃音或彩铃音。

如果用户在拨号超时前就挂机停止拨号,下位机会向上位机发送一个0xDD结束标志,上位机在检测到该字节后也会复位到初始状态。

DTMF状态首次进入Y弹出用户界面发送正在拨号动画Rthreshold属性设为1N拨号超时设置拨号超时定时器接收号码查询姓名将姓名发送给主界面有结束标志N将号码发送给主界面窗口Y系统复位到初始状态系统复位到初始状态结束结束

图57去电信息记录流程图

5.3.4语音信息记录

语音信息的记录流程如图58所示,首次进入语音状态时,程序会以系统的当前日期和时间为名称创建一个文件,文件名的的格式为“XXXX_XX_XXXX_XX_XX.wav”。此时MSC控件的RThreshold属性为1024,也就是说程序每接收1024个字节的数据才会产生一次MSC事件,每次事件响应后,程序都会将接收到的数据添加文件的末尾。当用户挂机后,下位机即会停止向上位机发送数据,上位机等待超时后会执行语音超时函数,在该函数中程序会根据接收到的数据长度和当前系统时间计算WAV文件头和通话时长,并将相应信息写入到数据库中。

东北林业大学课程设计

语音状态语音定时器超时首次进入Y向主界面窗口发送正在录音动画N计算WAV文件头并将其写入文件接收语音数据并将其存入文件获取系统时间并计算时长来电信息写入根据系统时间计算文件名并创建文件设置语言超时定时器系统复位到初始状态结束数据库结束

图58语音信息记录流程图

5.3.5数据库操作

为了方便对通话记录和电话簿进行管理,程序用ODBC(OpenDatabaseConnectivity,开放数据库互连)连接了Execl数据库。ODBC是微软公司开放服务结构中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的标准API函数,这些API利用SQL来完成其大部分的任务,同时ODBC也保留了对SQL语言的的支持,用户可以直接将SQL语句传递给ODBC。

程序中关于数据库的基本操作如记录的添加、删除和查找等在后台都是由SQL语句通过ODBC实现的,关于数据库编程不是本系统的重点,在此不再赘述。

5.4其他

为了提供友好的用户界面,上位机程序添加了GIF动画显示的功能,该功能由免费的CPictureEx类实现,程序还用SkinMagicToolkit美化了界面的皮肤。

东北林业大学课程设计

6系统调试

6.1测试方案设计

系统的调试分为硬件调试和软件调试。硬件调试是系统调试的关键,即使硬件出现一个小小的问题,都会对以后的软件调试产生很大的影响。常见的硬件故障主要有:

(1)焊接工艺不善,虚焊造成焊点接触不良,由于系统大量采用贴片元件,而且还有一片很大的FPGA,增加了焊接的难度,虚焊的问题更为常见。

(2)元件管脚与焊盘不对应。焊接时,贴片元件管脚与焊点不对应,直插元件插接错误都会使电路不能工作,甚至导致元件永久损坏。

(3)电路连接错误。在电路原理图绘制过程中可能会出现连线错误,而导致电路不能工作。

(4)电路设计错误或不完善。电路设计的原理性错误或不完善会导致电路不能工作或不能达到预期功能。

(5)元器件未经检查或筛选不严格,造成元器件失效。

(6)电路布局不合理。常见的有对电源地的处理,如果处理不当,电源地会出现回路等问题,导致电路工作不稳定;一些高频信号的走线,若设计不符合规定对其它电路产生高频干扰;信号线之间的屏蔽问题,若走线不当,相互之间会产生串扰。

根据个人经验体会,硬件调试的一般方法有:

(1)在焊接电路时,确认元件没有损坏,对元件进行筛选,焊接时与焊盘对应,焊接完一个元件后用万用表测试一下焊点,保证焊接正确。(2)在插芯片时,保证插接正确,防止元件损坏。

(3)如果碰到电路连接错误,常用方法就是用跳线进行更正。

(4)若电路设计错误或不完善,假如电路更改较容易实现的话就对电路进行改正,否则应该重新设计。

(5)电路布局不当出现的问题较不易发现,而解决此问题的方法也不容易。避免这些问题的最好方法是在设计之初时慎重考虑电路板布局。

软件调试是系统调试中最艰巨的任务了,调试开始时,软件开发者仅仅面对着错误的征兆,然而在问题的外部现象和内在原因之间往往并没有明显的联系,在组成程序的密密麻麻的元素中,每一个都可能是错误的根源。然而使用正确的高级的调试工具会使调试过程变的简单,从而加快开发速度。在调试FPGA程序时使用逻辑分析仪,可以很快定位错误出现在哪一个信号,首先通过软件的探针设置可以将任何一个内部信号引到外部IO,这样将逻辑分析仪的引线与FPGA的IO一一对应连接,在程序开始运行之后,通过一个信号触发逻辑分析仪开始工作,她可以将所有信号捕捉并存储,通过上位机软件我们可以清楚的观察到在任意时刻信号的变化情况,是否正常,从而迅速定位错误并进行修正,然后进行验证。

6.2系统典型故障与分析

虽然系统的硬件电路不是很复杂,但是由于涉及到前端模拟电路,FPGA以及上位机软件三大部分,任何一个环节出现问题都会导致工作不正常,所以在调试过程中出现了很多故障,在这里对出现的典型故障进行解释说明,希望对以后的学习与教学实验有一定帮助。

东北林业大学课程设计

6.2.1下位机上电复位

我们的上电复位电路是模仿单片机设计的,实践证明这种复位方式在FPGA中效果很不好。通常FPGA中的各个子模块之间都互相牵扯,因此要求有特定的复位时序,如果复位时序处理不好,就会使某些状态机在上电后处于非空闲状态,从而导致下位机向上位机发送错误的数据。针对此问题,一方面要合理的设计外围复位电路,另一方面要设计专门的模块处理FPGA内各个模块之间的复位时序。

6.2.2FSK解码

下位机对FSK信号的解码偶尔会出现错误,这与FSK提取电路的设计有很大关系,我们的FSK提取电路在将正弦波整形为矩形波时没有使用滞回比较器,这就导致了在波形的边沿有很多毛刺,为了正确的解码FPGA不得不对波形滤波后再做解码处理。如果毛刺持续的时间较长,那么滤波过程中波形参数的改变必然会超过解码模块所能承受的容限,从而导致解码错误,这一问题可以通过使用滞回比较器来解决。

6.2.3上位机程序异常退出

上位机程序由C++编写,其中大量的使用了指针,指针是C++一把双刃剑,它的优点是灵活,可以巧妙的完成许多操作。缺点是它是直接操作内存的,不恰当的运用很容易造成内存错误,从而导致程序异常退出。

6.2.4上位机程序引导字符识别错误

所有的数据数据传输都通过1024个前导字符识别,而对前导字符的识别发生在上位机的空闲状态,如果在上位机在空闲状态时下位机发送的不是引导字符而是有效数据,也就是说下位机与上位机失去了同步,此时就会出现引导字符识别错误的情况。这一问题可以通过完善通信协议来解决,比如将数据分包,这样上位机每接到一个数据包都可以与下位机进行一次同步。另外,当使用USB通信,偶尔也会出现引导字符识别错误的情况,通过用串口助手调试发现是通信本身出现了问题。我们的USB转UART电路是后期手工焊接的,不是很稳定,很容易因外界干扰而出现通信错误。

东北林业大学课程设计

7结论

结论应该明确、精炼、完整、准确。是最终的、总体的结论,不是正文中各段小结的简

单重复。应认真阐述自己的创造性工作在本本设计采用FPGA技术实现了基于Fusion单芯片的电话录音系统的设计,主要解码领域中的地位和作用,自己的新见解的意义,FSK制式来电显示以及对通话过程进行录音。系统能够长期稳定的工作,它主要由上位也可以在结论中提出建议、研究设想、改进机和下位机两大部分组成。下位机又主要包括前端模拟电路和FPGA两大部分,其中FPGA意见、尚待解决的问题等。字号:三号宋体。根据前端处理后的振铃信号,忙音信号,摘机信号等进行处理后由核心控制模块来判断当前的状态,然后控制通道选择模块选通FSK解码,DTMF解码或者语音提取中的一路与串口发送模块相连,从而将信号以串口通信的模式发送至上位机,进行下一步的处理。

在有来电时,上位机软件能够从最小托盘处弹出,并显示来电号码,若此号码在数据库中有对应的联系人,将显示此联系人的姓名。若摘机,软件同样会自动弹出,显示去电号码,若有对应联系人,将显示姓名。并将所有通话记录以及通话语音进行存储,可以进行查询、播放、删除等操作。

系统成功实现了所要求的所有的功能,解码来电号码以及去电号码,对通话过程进行录音。为了满足没有串口的用户的使用要求,在下位机中扩展了USB通信的功能,上位机中扩展了用数据库管理通话记录及通话语音的功能。受时间、精力和能力的限制,系统中还存在着一些不足,如通信协议的定义过于简单,没有任何的握手机制,不够优化;FSK的解码不够稳定,解码机制存在一定的缺陷,偶尔会出现解码错误。

若有机会将对系统做进一步的改进:例如制定一套完整的通信协议,带有握手机制,使用包协议,这样可以在一定程度上避免通信错误;前端模拟电路的FSK解码电路中使用滞回比较器,这样可以滤除一些毛刺,减轻后端滤除毛刺的负担;对解码程序进行优化,使之稳定解码。

东北林业大学课程设计

参考文献

普通图书引用例子参考文献标题[1]周立功,ActelFPGA原理与应用基于Fusion系列[M],广州致远电子有限公司,201*.用四号宋体,正文[2]樊昌信,詹道庸,徐炳祥,等,通信原理(第4版)[M],北京:国防工业出版社,1995.

用五号宋体[3]中国来电显示标准.邮电部,1997[S].[4]七位编码字符集[S],GB198889[5]芯片技术手册[Z]

[6]ZhaoWanlun,Giannakis.Georgios.B.,Delic,Hakan..Space-timefrequency-shiftkeying[J],TransactionsonComunications.201*,pp346-349.

[7]王观坤.多功能电话检修手册[M],浙江科学技术出版社,1998,117~126.[8]张彪,电话机原理与维修[M],电子工业出版社,201*,84~127.

[9]WeiXueye,WangXishi,&DingZhengting.,TheDesignofFrequency-ShiftTrackCircuitTestSystem[J],JournaloftheChinaRailwaySociety.1996,pp.63-68.

[10]孙肖子.模拟电子技术基础[M].西安电子科技大学出版社,201*,224~231.

[11]周立功,ActelFPGA实验教程基于FusionStartKit开发板[M],广州致远电子有限公司,201*.[12]黄建伟,VisualC++/TurboC串口通信编程实践(第二版)[M],电子工业出版社,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]陶仁骥.密码学与数学[J].自然杂志,1984,7(7):527.

连续出版物引用例子

附录A

FSK提取电路原理图UART电路原理图

DTMF解码电路原理图

对于一些不宜放入正文中、但作为毕业设计(论文)又不可缺少的组成部分,或有主要参考价值的内容,可编入毕业设计(论文)的附录中,例如,图纸、翻译外文资料、公式的推演、编写的算法、语言程序等。“附录”三号宋体,正文小四宋体。

摘机检测电路原理图

语音提取电路原理图

电源电路原理图

时钟及复位电路原理图

3

67890012345102423121210241216321887654321132457567891234221221141134365872391001211121414131615218171201*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;//系统输入时钟48Minputreset;//异步复位信号

inputvol_in;//模拟语音信号输入outputvref;//参考电压输出

outputADC_trig;//在此信号的上升沿,输出数据output[7:0]ADC_data;//采样后的8位并行数据

regirq;//在此信号的上升沿输出数据reg[3:0]samp_div;//数据抽样步长寄存器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初始化数据总线wire[8:0]init_addr;//ADC初始化地址总线wire[4:0]chanel;//ADC的采样通道号

wireassc_done;//ADC在此信号上升沿输出有效采样数据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的采样结果

//*****************************************************************************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:电话录音系统顶层模块,用于将各个子模块连接起来=============================================*

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数据有效标识inputfsk_in;//fsk信号输入outputvref;//参考电压inputpub;//VR唤醒输入inputphonesnd;//忙音输入

outputvr_ok;//VR初始化完毕标识outputtxd;//UART发送线

outputctrl;//外部语音提取电路选通控制

wire[7:0]ADC_data;//ADC采样模块数据输出wireADC_trig;//ADC采样模块发送触发wire[3:0]dtmf_data;//DTMF解码模块数据输出wiredtmf_trig;//DTMF解码模块发送触发wire[7:0]fsk_data;//FSK解码模块数据输出wirefsk_trig;//FSK解码模块发送触发wire[7:0]txd_data;//UART发送模块数据输出wire[7:0]Dataout;//UART接收模块数据输出wire[2:0]CS;//通道选择控制信号

wiredecode_out;//FSK解码模块bit流输出wirering_out;//振铃信号

wirefsk_over;//FSK通道结束信号wiredtmf_over;//DTMF通道结束信号wireadc_over;//ADC通道结束信号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)//发送触发);

//*****************************************************************************//模块名称:uart_txd_0//功能描述:UART发送

//*****************************************************************************uart_txd_0(.clk_48m(clk_48m),//48MHz时钟.reset(reset),//复位,高有效.txd_start(txd_trig),//发送开始信号,上升沿有效.txd_data(txd_data),//将要发送的的数据,字节

uart_txd

.txd(txd),//发送线.txd_busy(txd_busy)//表示没有发送完毕,发送忙);

//*****************************************************************************//模块名称:Chan_Select_0

//功能描述:处理通信协议,选择数据通道

//*****************************************************************************Chan_SelectChan_Select_0(

.clk_48m(clk_48m),//48M时钟输入.reset(reset),//高电平有效的异步复位信号.txd_busy(txd_busy),//发送忙标志

.fsk_over(fsk_over),//FSK通道结束信号.adc_over(adc_over),//ADC通道结束信号.dtmf_over(dtmf_over),//DTMF通道结束信号.CS(CS),//通道选择信号.FSK_data(fsk_data),//FSK解码数据.ADC_data(ADC_data),//AD采样数据.DTMF_data({4"b0,dtmf_data}),//DTMF解码数据.FSK_trig(fsk_trig),//FSK数据发送触发.ADC_trig(ADC_trig),//AD采样数据发送触发.DTMF_trig(dtmf_trig),//DTMF数据发送触发.txd_trig(txd_trig),//UART发送触发

.txd_data(txd_data)//UART待发送8位并行数据);

//*****************************************************************************//模块名称:MT8870_0

//功能描述:DTMF解码模块

//*****************************************************************************MT8870MT8870_0(

.clk_48m(clk_48m),//48M时钟

.reset(reset),//高电平有效的异步复位.q(q),//MT8870解码输出.std(std),//解码有效标识信号.dtmf_data(dtmf_data),//解码模块数据输出.dtmf_trig(dtmf_trig)//数据发送触发);

//*****************************************************************************//模块名称: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(),//数据有效标识.ring_up()//振铃边沿);

//*****************************************************************************//模块名称:uart_rxd_0

decoder

//功能描述:UART接收模块,用于将FSK解码模块的数据输出速率由1200改为115200

//******************************************************************************uart_rxduart_rxd_0(

.reset(reset),//高电平有效的异步复位信号.clk(clk_48m),//48M时钟输入.Dataout(Dataout),//8位数据输出.RXD(decode_out),//数据串行输入

.trig(trig)//标识一个字节接收完毕);

//*****************************************************************************//模块名称:core_ctrl_0

//功能描述:控制Chan_Select_0选择不同的数据通道

//*****************************************************************************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通道结束信号.adc_over(adc_over),//ADC通道结束信号.dtmf_over(dtmf_over),//DTMF通道结束信号.ctrl(ctrl),//语音采集电路选通信号.busy_snd(busy_snd)//忙音信号);

//*****************************************************************************//模块名称:vr_15_0

//功能描述:产生1.5V的内核电压

//*****************************************************************************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),//发送触发信号.data(Dataout),//8位并行数据

.fsk_data(fsk_data),//FSK解码数据输出.fsk_trig(fsk_trig)//FSK数据发送触发);

//*****************************************************************************

//模块名称: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;//时钟与数据输入inputreset;outputtrig;//数据有效标志output[7:0]Dataout;//并行数据输出regStartF;//开始与接收中断标志reg[9:0]UartBuff;//接收缓存区reg[3:0]count,count_bit;//位接收计数器reg[15:0]cnt;//时钟节拍计数器reg[2:0]bit_collect;//采集数据缓存区regedge_detect1,edge_detect2;regRI;

wireclk_equ,bit1,bit2,bit3,bit4;//连线

parametercout=2500;//时钟是48M所以16*1200的分频数为2500,这里取整数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

友情提示:本文中关于《课程设计总结报告模版》给出的范例仅供您参考拓展思维使用,课程设计总结报告模版:该篇文章建议您自主创作。

  来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。


课程设计总结报告模版
由互联网用户整理提供,转载分享请保留原作者信息,谢谢!
http://m.bsmz.net/gongwen/693828.html
相关阅读
最近更新
推荐专题