• 方案介绍
  • 附件下载
  • 相关推荐
申请入驻 产业图谱

基于FPGA的音乐喷泉控制Verilog代码Quartus仿真

07/15 09:25
292
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

2-240202101406244.doc

共1个文件

名称:基于FPGA的音乐喷泉控制Verilog代码Quartus仿真

软件:Quartus

语言:Verilog

代码功能:

基于FPGA的音乐喷泉控制

1、具有启动控制按键,按下后开始。

2、喷泉具有6个喷嘴,可以手动切换三种工作模式。

3、输入的音乐信号分为低音、中音、高音。

4、将输入的音转换为对应的pwm波占空比参数。

5、不同的工作模式下,6个喷嘴对应pwm波的分部不同。

FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com

演示视频:

设计文档:

音乐喷泉

1.程序文件

2.程序运行

3.程序RTL图

4.Testbench

5.仿真图

fountain_out为输出的6喷嘴[5:0],喷嘴输出为不同占空比的PWM

Mode 切换不同模式

Start为高电平时启动

高中低对应的占空比不一样

输出的6个喷嘴,下图中喷嘴5,3,1分别对应高、中、低,4,2,0未打开,不同模式下对应喷嘴不同,启动的喷嘴也不同。

下图中可看到不同模式下喷嘴启动不一样。

状态机

状态图

部分代码展示:

module?Musical_fountain(
input?clk,
input?start,//为高电平时开启
input?[1:0]?mode,//三种模式,00,01,10
input?[2:0]?low_music,//低音,0~7
input?[2:0]?mid_music,//中音,0~7
input?[2:0]?hig_music,//高音,0~7
output?[5:0]?fountain_out?//6个喷嘴输出
);
wire?[7:0]?low_music_zkb;
wire?[7:0]?mid_music_zkb;
wire?[7:0]?hig_music_zkb;
//将输入的音转换为对应的pwm占空比参数
zhankongbi?low_music_zhankongbi(
.?clk(clk),
.?voice(low_music),
.?pwm_zhankongbi(low_music_zkb)
);
//将输入的音转换为对应的pwm占空比参数
zhankongbi?mid_music_zhankongbi(
.?clk(clk),
.?voice(mid_music),
.?pwm_zhankongbi(mid_music_zkb)
);
//将输入的音转换为对应的pwm占空比参数
zhankongbi?hig_music_zhankongbi(
.?clk(clk),
.?voice(hig_music),
.?pwm_zhankongbi(hig_music_zkb)
);
//分频100
reg?[7:0]?pwm_cnt=8'd0;
always@(posedge?clk)
if(pwm_cnt>=8'd100)
pwm_cnt<=8'd0;
else
pwm_cnt<=pwm_cnt+8'd1;
reg?low_music_pwm=0;
reg?mid_music_pwm=0;
reg?hig_music_pwm=0;
always@(posedge?clk)
if(start==0)
low_music_pwm<=0;
else
if(low_music_zkb>pwm_cnt)
low_music_pwm<=1;//产生低音PWM波
else
low_music_pwm<=0;
always@(posedge?clk)
if(start==0)
mid_music_pwm<=0;
else
if(mid_music_zkb>pwm_cnt)
mid_music_pwm<=1;//产生中音PWM波
else
mid_music_pwm<=0;
always@(posedge?clk)
if(start==0)
hig_music_pwm<=0;
else
if(hig_music_zkb>pwm_cnt)
hig_music_pwm<=1;//产生高音PWM波
else
hig_music_pwm<=0;
reg?[5:0]?fountain=6'd0;
parameter?S0=2'b00;
parameter?S1=2'b01;
parameter?S2=2'b10;
reg?[1:0]?state=2'b00;
always@(posedge?clk)
case(state)//mode控制不同模式,即改变喷嘴对应不同的音,可自己组合
S0:
if(mode==2'b01)
state<=S1;
else?if(mode==2'b10)
state<=S2;
else
state<=S0;
S1:
if(mode==2'b00)
state<=S0;
else?if(mode==2'b10)
state<=S2;
else
state<=S1;
S2:
if(mode==2'b00)
state<=S0;
else?if(mode==2'b01)
state<=S1;
else

点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=666

  • 2-240202101406244.doc
    下载

相关推荐