- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实验五上——基于FIR IP 核的双音多频信号的检测系统
本实验在前面实验的基础上增加信号检测模块,对FIR IP核滤波后的高低频信号进行检测。
检测准则如下:
1、需要判断信号的有效性,也就是要知道被检测的是否为双音多频信号。
2、高频信号之间的辨别与低频信号之间的辨别,包括需要能够准确的识别出是哪一行(低频信号)哪一列信号(高频信号)。
具体实现如下:
我们就以低频检测为例
1)正弦波计数模块:
我们对滤波后的信号进行处理,通过一个计数模块,来记下有效的正弦波信号个数(不包括静音段的),该模块实现如下:
仿真效果:
通过该模块就在每一个正弦波过后发出一个脉冲,以这个脉冲来驱动一个计数器进行计数,计数器的复位端用滤波后使能信号控制,滤波后的使能信号,该信号为滤波器产生,只要有信号滤出均产生一个高电平(包括双音多频中的静音段)
因此在没有信号产生的情况下也即没有按键按下的情况就会复位,计数归零。
我们将这个模块做成一个子模块放在系统当中,执行的功能就是对正弦波进行计数并且在静音段保持计数的个数,经过估计,在一个周期的双音多频信号中,其个数不会超过947*0.05=47个,这有助于我们将位宽设定在符合要求的范围内。此处位宽设定为6位或者7位即可。
2)状态机检测模块
输出的正弦波计数个数需要经过判断,然后输出相应的行频或者列频。这里我们用一个状态机来实现,同时该模块还完成一个信号有效性的判断。
FSM(有限状态机)模块即DSP Builder下的State Machine Table
位于State_Machine_Functions下
图8 State Machine Table模块
使用时将模块加入到设计文件中,并为此模块命名。注意:必须将状态机模块的默认名改为其它合法的名字后才能定义该状态机的各种输入信号、状态以及转换条件。我们将该模块命名为Lp_detector。
双击该模块,出现如下图的对话框
该对话框是进行状态机设计的一个主要界面。Inputs页面给出了状态机模块的输入变量,States页面给出了状态机工作时的状态列表,Conditional Statements给出了状态机进行状态转换、保持等动作的条件。Design Rule Check主要是对设计的状态机进行检查是否满足如下规则:
至少定义了两种状态;
至少定义了一个状态转换条件;
所有状态的名字必须是唯一的;
只存在一个reset状态;
存在reset输入端口;
所有当前状态和次态必须有效,如必须是State页面进行了定义的状态;
所有转换语句的语法必须正确。
必须注意的是各种状态进行转换时,在Conditional Statements页面的各项转换条件存在优先级别,即处于上方的优先级别大于处于下方的优先级别。因此在某种情况下若同时满足两项状态转换条件,则根据该页列表的顺序由上而下进行跳转。
此处该状态机设定如下:
分析如下:
定义5种状态以及3种输入,输入信号LPCNT为计数器输出,用于检测双音多频信号的有效性,即至少经过一个周期。RowKey为进来的正弦波个数,四种低频各有其范围,符合要求即输出该行。
外围电路如下图:
状态机输出的结果即为第几行的信号。
高频信号部分与低频一样设计
状态机部分:
在系统中将这几个模块连接到一起就构成了信号检测模型
然后再Simulink下进行系统仿真,观察检测效果,如有误检,则需要重新回到设计部分,查找原因。
系统仿真图,DTMF为941+1336
将整个正确的双音多频产生与检测模型转化为硬件模块,放入到原来的硬件工程中。
在Quartus下我们做一个按键显示模块,来对行频与列频信号进行翻译为相应的按键。通过7段数码管将实际按键与检测出的按键进行显示。
该模块也可放到DSPBuilder中完成,大家可以试着去做一下,结果能输出按键信息。
管脚分配:
SignalTap信号如下:
按键模块:
用4*4键盘替换掉原来的拨码开关与按键组合的模块,将键盘接在开发板的扩展管脚上,如图:
J15
在Quartus下需要用buttom.v模块替换掉原来的keyboard.v模块,由于buttom.v输出为16位宽的总线端口,因此需要在mdl文件中将键盘的输入端口也改用总线的形式,然后采用比特抽取的方法来获取每一位电平。
buttom.v的管脚连接情况
输入按键的显示信息:通过第一个数码管来显示,因此需要根据按键的输出情况来确定数码管的显示。
文档评论(0)