电话通信系统中信号音的产生及其实现.doc

电话通信系统中信号音的产生及其实现.doc

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
电话通信系统中信号音的产生及其实现 设计目的 1.掌握CPLD可编程器件的编程和下载方法。 2.熟悉用CPLD可编程器件产生程控交换中信令信号的方法。 3.从设计中掌握一些基本技巧,提高自己的动手能力以及发现问题解决问题的能力。 设计要求 利用可编程器件CPLD对系统的全局时钟信号进行分频,产生程控交换系统中电话交换的4种信号音: 拨号音:连续发送的500Hz信号。 回铃音:1秒通,4秒断的5秒断续的500Hz信号。 忙音:0.35秒通,0.35秒断的0.7秒断续的500Hz信号。 振铃信号(铃流):以0.2秒通,0.2秒断,以0.2秒通,0.6秒断的1.2秒断续方式发送。 通过软件编程及仿真,正确实现以上四种信号音的发生,最终下载,并用示波器观察波形,验证程序及产生信号音的正确性。 设计原理 设计中我们用到的开发系统主频为50MHz,因设计要求产生500Hz及25Hz的信号音,故我们首先考虑把50MHz的主频进行分频。那么首先我们将50MHz的主频信号分频为500Hz,再将信号再次分频为25Hz。至此我们就可以容易地得到连续发送的500Hz的拨号音信号。那么要得到1s通4s断的5s断续的500Hz回铃音,首先我们要产生一个1s通4s断的矩形波,再将产生的信号与500Hz方波信号进行相与运算,那么得到的信号就是1s通4s断的5s断续的500Hz信号了。同理,要产生0.35s通,0.35s断的0.7s断续的500Hz忙音信号,就要首先产生一个0.35s通,0.35s断的方波信号,将之与500Hz方波信号相与就能实现;要产生1s通,4s断的5s断续方式发送的振铃音信号,那么首先需要将已产生的500Hz方波信号分频成10Hz,再将其与0.2s通,0.2s断,0.2s通,0.6s断的矩形波进行与运算,这样就能产生所需要的振铃音了。总而言之,此设计的要点就是如何把主频50MHz分频为500Hz,20Hz,10Hz,1Hz的方波及1s通,4s断的矩形波。只要将以上不同频率不同占空比的方波从主频分频产生,那么这个设计就能成功地实现。 调试及下载 有了设计方案,那么我们利用Quartus II这个软件设计平台,对设计方案进行程序设计,首先我们要产生一个500Hz的方波信号,因开发板的主频为50MHz,根据计算我们需对开发板主频进行100000分频,那么我们就可以得到500Hz方波了,再对所得方波进行25分频就很容得到20Hz的方波,再对500Hz方波进行50分频得到10Hz的方波,并对500Hz方波进行500分频得到1Hz的方波,再对所得1Hz信号进行计数翻转,便能得到1s通4s断的断续信号,对所得10Hz信号进行计数翻转,便能得到0.2秒送,0.2秒断,0.2秒送,0.6秒断的1.2秒不等间隔断续的信号,对所得20Hz信号进行计数翻转,便能得到0.35秒送,0.35秒断的0.7秒断续的信号,至此所有所需信号都已产生,再将对应信号相与并赋给相应输出信号,那么我们就可以从示波器上观察到设计要求中的4个信号音了。 程序设计如下: 1、分频程序: PROCESS(CLK)--500HZ (50MHZ主频分频为500HZ) VARIABLE COUNT1:INTEGER RANGE 0 TO 99999:=0; BEGIN IF RISING_EDGE(CLK)THEN IF COUNT1=99999 THEN CLK500HZ=1;COUNT1:=0; ELSIF COUNT150000 THEN CLK500HZ=0;COUNT1:=COUNT1+1; ELSIF COUNT199999 THEN CLK500HZ=1;COUNT1:=COUNT1+1; END IF; END IF; END PROCESS; PROCESS(CLK500HZ)--20HZ (500HZ继续分频为20HZ) VARIABLE COUNT2:INTEGER RANGE 0 TO 24:=0; BEGIN IF RISING_EDGE(CLK500HZ)THEN IF COUNT2=24 THEN CLK20HZ=1;COUNT2:=0; ELSIF COUNT213 THEN CLK20HZ=0;COUNT2:=COUNT2+1; ELSIF COUNT224 THEN CLK20HZ=1;COUNT2:=COUNT2+1; END IF; END IF; END PROCESS; PROCESS(CLK500HZ)--10HZ (500HZ继续分频为10HZ) VARIABLE COUNT3:INTEGER RANGE 0 TO 49:=0; BEGIN IF RISING_E

文档评论(0)

annylsq + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档