一、设计要求
- 以FPGA为控制核心,接收语音控制信号和识别控制信息;
- 通过继电器完成对热水器、加湿器、空调等三个家用电器的控制;
- 二次升级要求:使用无线模块完成对热水器、加湿器、空调等三个家用电器的控制
二、硬件选型
- 语音识别模块选用LD3320该模块,选型理由在于,该模块能够自定义语音指令以及指令数据;其次,数据接口比较灵活,有SPI、UART,固定的并行数据接口,具体可参见数据手册以及开发说明书。
- 鉴于手头只有正点原子的FPGA开发板,在这儿就直接使用。
三、架构设计
如下图所示,为本次设计的一个基本的架构,首先由LD3320完成语音信息的采集工作,通过UART接口接收对应的语音指令,FPGA进行指令与控制之间的转换,对应产生控制继电器开关的控制信号即可。
四、系统设计
4.1 整体架构设计
如下图所示,为FPGA的初步架构设计,主要包含如下三个模块。
speech_rec_uart:主要接收语音识别模块的数据指令信息;
function_ctrl:将数据指令进行解析判断,输出对应的控制信号;
pwm_ctrl:产生控制继电器的pwm控制信号;
4.2 speech_rec_uart设计
在做该模块设计之前,我们需要知道语音模块的工作原理,以及使用方法,这个需要自行去研究手册。
- 第一步,我们将语音识别模块进行指令自定义的设置,如下图所示,这是LD3320开发资料里的给的自定义设置平台,我们可以按照自己的需求完成一个寄存的设置。
按照自身的设计要求,在自定义的命令设置中添加:开热水器、关热水器、开加湿器、关加湿器、开空调、关空调这6个指令。
对应的数据指令为:
FE A1 01 EF (开热水器)
FE A1 00 EF (关热水器)
FE A2 01 EF (开加湿器)
FE A2 00 EF (关加湿器)
FE A3 01 EF (打开空调)
FE A3 00 EF (关闭空调)
自定义指令设置时,对应的语音模块的回复信息如下:
在完成以上的设置之后,在设置平台上重新生成LD3320的烧写配置文件,然后通过资料内部提供的上位机软件,对LD3320进行内部的指令信息库的更新即可。
4.3 function_ctrl设计
改模块功能是将LD3320语音指令信息进行对比,完成三种电器的控制信号开、关两种状态的输出控制;具体功能见下文中的仿真即可。
4.4 pwm_ctrl 设计
模块功能为产生对应的电器继电器控制的PWM波,具体设计见下文中的仿真图即可。
五、设计仿真结果
5.1 speech_rec_uart模块仿真
根据实际设计的要求,完成如下图所示的几种指令的模拟发送,
// 开热水器 ---- uart发送指令 FE A1 01 EF;
// 关热水器 ---- uart发送指令 FE A1 00 EF;
// 开加湿器 ---- uart发送指令 FE A2 01 EF;
// 关加湿器 ---- uart发送指令 FE A2 00 EF;
// 打开空调 ---- uart发送指令 FE A3 01 EF;
// 关闭空调 ---- uart发送指令 FE A3 00 EF;
语音模块指令接收仿真图如下图所示,如图可以看到6种指令信息接收正常。其中FE 和 EF 分别表示数据指令数组的头和尾,中间的两个字节:A1表示热水器、A2表示加湿器、A3表示空调,01表示开,00表示关。
5.2 function_ctrl模块仿真
如下图所示,对应的指令产生对应控制信号状态;
// 开热水器 ---- A1 01 ;
// 关热水器 ---- A1 00 ;
// 开加湿器 ---- A2 01 ;
// 关加湿器 ---- A2 00 ;
// 打开空调 ---- A3 01 ;
// 关闭空调 ---- A3 00 ;
5.3 pwm_ctrl 仿真
如图所示,三种电器的厨师状态均为关闭,在接收到打开指令之后,完成对应的开关控制操作,仿真图功能正确无误。
六、总结
本次设计完成了FPGA平台下LD3320语音识别模块的一个控制和信息采集,仿真时序图正确无误,具体的功能需要上硬件环境进行一个进一步验证。后续改进可以将继电器控制改为无线控制,完成系统的功能优化。
fdl04271011@163.com,欢迎各位学者一起讨论学习。