0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

FPGA学习系列:38. 电子琴的设计

FPGA学习交流 2018-09-26 12:51 次阅读

设计背景:

FPGA的学习也算是是一种日积月累才能有成就的过程,前面我们学习了各个模块,各个芯片的配置等等,之后笔者通过两个简单的例子来让大家去系统的学习和认识FPGA。所学习的电子琴设计也算是一次简单的各个模块的联系调用的一个过程,对以后工作中的学习有很好的帮助。

设计原理:

本次的设计主要是通过控制ps2键盘来使蜂鸣器发出哆来咪法嗦拉西7种音来,音符主要又高低音等等,本设计只选择发出高音的多来咪发嗦啦西。本设计中还用到了VGA的设计,通过VGA来在显示屏上画出如下图的黑白的电子琴键:


当按下多来咪发嗦啦西时,对应的键值变颜色表示按下,不变色表示不按下,颜色自己可以调节,但是琴的按键必须为黑白色来显示出来。

当按下按键的时候,蜂鸣器来鸣响对应时间的音符,本设计蜂鸣器响的时间为0.25S一个音符持续的时间。

本次设计用到的PS2和VGA的设计原理笔者在这里就不过多的介绍了,不明白的可以翻看前面发的文档内容。

在本设计中介绍蜂鸣器的使用和各音符发声的频率大小。本设计用的是无源蜂鸣器,原理图如下:

image.png

由于FPGA的驱动能力不够,我们添加了一个三极管来驱动这个无源蜂鸣器,而无源蜂鸣器的主要特点是内部不带振荡源,所以如果使用直流信号是无法使无源蜂鸣器鸣叫的,必须使用方波去驱动它。

现在我们明白了,只要往蜂鸣器发送一定频率的方波,就可以使得蜂鸣器发出声音,然后现在的问题是,我们究竟要往蜂鸣器发送什么频率的方波信号呢?具体的频率可以查看下图:

现在我们知道了如何让蜂鸣器响起,又知道发送什么频率可以让蜂鸣器响起什么的声音,所以我相信我们已经有能力让蜂鸣器响起我们需要的音乐了。

image.png


设计架构图:

image.png

设计代码:

顶层模块

0modulemusic_ps2(clk,rst_n,hs,vs,r_g_b,ps2_clk,ps2_data,beep);

1

2 inputclk;

3 inputrst_n;

4

5 outpuths;

6 outputvs;

7 output[7:0]r_g_b;

8 outputbeep;

9

10 inputps2_clk;

11 inputps2_data;

12

13 wireflag;

14 wire[7:0]data,data_n;

15 wireclk_1M;

16

17

18 frenp frep_dut(

19 .clk(clk),

20 .rst_n(rst_n),

21 .clk_1M(clk_1M)

22 );

23

24 ps2_rec rec_dut(

25 .clk(clk_1M),

26 .rst_n(rst_n),

27 .ps2_clk(ps2_clk),

28 .ps2_data(ps2_data),

29 .flag(flag),

30 .data(data)

31 );

32

33 decode decode_dut(

34 .clk(clk_1M),

35 .rst_n(rst_n),

36 .flag(flag),

37 .data(data),

38 .data_n(data_n)

39 );

40

41 music music_dut(

42 .clk(clk_1M),

43 .rst_n(rst_n),

44 .data_n(data_n),

45 .beep(beep)

46 );

47

48 vga vga_dut(

49 .clk(clk),

50 .rst_n(rst_n),

51 .hs(hs),

52 .vs(vs),

53 .r_g_b(r_g_b),

54 .data_n(data_n)

55 );

56

57endmodule

蜂鸣器模块

0modulemusic(clk,rst_n,data_n,beep);端口列表

1

2 inputclk;

3 inputrst_n;

4 input[7:0]data_n;//输入的键值

5 outputregbeep;//蜂鸣器

6

7 reg[10:0]music_data;

8 wire[10:0]data;

9

10 always@(posedgeclk)

11 if(!rst_n)

12 begin

13 music_data <=0;

14 end

15 else

16 case(data_n)

17 1 : music_data <=478;//蜂鸣器的高音1

18 2 : music_data <=425; //蜂鸣器的高音2

19 3 : music_data <=379; //蜂鸣器的高音3

20 4 : music_data <=358;//蜂鸣器的高音4

21

22 5 : music_data <=319; //蜂鸣器的高音5

23 6 : music_data <=284; //蜂鸣器的高音6

24 7 : music_data <=253; //蜂鸣器的高音7

25 default:music_data <=0;

26 endcase

27

28

29 reg[20:0]count,cnt;

30

31 always@(posedgeclk)

32 if(!rst_n &&!data_n)

33 begin

34 count <=0;

35 end

36 else

37 if(count <250_000-1)

38 begin

39 count <=count +1;

40 end

41 else

42 begin

43 count <=0;

44 end

45

46 //计数0.25S的时间

47 assigndata =(count ==250_000-1)?music_data :data;

48

49 always@(posedgeclk)

50 if(!rst_n)

51 begin

52 cnt <=1;

53 beep <=0;

54 end

55 else

56 if(data ==0)//控制蜂鸣器不响

57 begin

58 cnt <=1;

59 beep <=0;

60 end

61 elseif(cnt <data)//计数对应的频率

62 begin

63 cnt <=cnt +1;

64 end

65 else

66 begin

67 cnt <=1;//蜂鸣器响

68 beep <=~beep;

69 end

70

71

72

73endmodule

代码验证正确无误,笔者在这边就不过多的验证,大家可以自主的补全代码,后续代码会在论坛中发出来供大家参考个学习。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1629

    文章

    21729

    浏览量

    603019
收藏 人收藏

    评论

    相关推荐

    FPGA加速深度学习模型的案例

    FPGA(现场可编程门阵列)加速深度学习模型是当前硬件加速领域的一个热门研究方向。以下是一些FPGA加速深度学习模型的案例: 一、基于FPGA
    的头像 发表于 10-25 09:22 215次阅读

    UCC38C42系列高速BiCMOS电流模式PWM控制器

    电子发烧友网站提供《UCC38C42系列高速BiCMOS电流模式PWM控制器.pdf》资料免费下载
    发表于 10-22 10:30 0次下载
    UCC<b class='flag-5'>38</b>C42<b class='flag-5'>系列</b>高速BiCMOS电流模式PWM控制器

    九芯电子电子琴语音芯片的无限可能——N930X-S16 MP3解码芯片

    随着科技的不断进步,电子琴已经成为了音乐爱好者和专业音乐家们的重要乐器之一。而九芯电子推出的N930X-S16MP3解码芯片,更是将这一传统乐器推向了智能与个性化的新高度。语音方案:电子琴实现音乐
    的头像 发表于 10-13 08:01 265次阅读
    九芯<b class='flag-5'>电子</b><b class='flag-5'>电子琴</b>语音芯片的无限可能——N930X-S16 MP3解码芯片

    雅马哈电子琴PSR-E213维修手册

    雅马哈电子琴PSR-E213维修手册
    发表于 09-29 10:22 2次下载

    雅马哈电子琴PSR-280/PSR-282维修手册

    电子发烧友网站提供《雅马哈电子琴PSR-280/PSR-282维修手册.pdf》资料免费下载
    发表于 09-29 10:20 0次下载

    TJ-56-653激光电子琴说明书

    TJ-56-653激光电子琴说明书
    发表于 07-05 10:54 0次下载

    基于51单片机矩阵键盘音乐电子琴电路图proteus仿真及程序

    本资源内容概要:       这是基于51单片机矩阵键盘音乐电子琴电路图proteus仿真及程序设计包含了电路图源文件(Altiumdesigner软件打开)、C语言程序源代码(keil软件打开
    发表于 06-21 14:32 3次下载

    labview显示错误声卡驱动或声卡不支持该配置

    各位大佬好 我想做一个基于labview的简易36键电子琴,除了高音6.5,其它的按键都可以发声。显示错误是:声卡驱动不支持。各位大佬有没有解决的办法,在此谢谢各位大佬!
    发表于 06-13 13:53

    N9300-S16音乐MP3芯片:电子琴的革命性突破

    在数字音乐技术的浪潮中,N9300-S16音乐MP3芯片以其卓越的性能和广泛的应用领域,成为了电子琴领域的一次革命性突破。那么,N9300-S16究竟是何方神圣?它的优势又在哪里?它在电子琴上又能
    的头像 发表于 05-09 08:06 665次阅读
    N9300-S16音乐MP3芯片:<b class='flag-5'>电子琴</b>的革命性突破

    fpga芯片系列介绍

    FPGA芯片系列众多,不同厂商会推出各具特色的产品系列以满足不同的应用需求。以下是一些主要的FPGA芯片系列
    的头像 发表于 03-14 16:15 1264次阅读

    fpga学习需要具备哪些课程

    FPGA(Field Programmable Gate Array)学习需要具备一系列的课程知识和实践技能
    的头像 发表于 03-14 15:51 1186次阅读

    FPGA图书分享系列-2024.01.31

    。 综合性学习资源:不仅适合想要学习FPGA基础的学生,也适合希望深入了解FPGA在金融领域应用的研究生、博士生以及专业人士。 跨学科知识:由于FP
    发表于 01-31 21:14

    基于单片机的电子琴设计

    电子发烧友网站提供《基于单片机的电子琴设计.rar》资料免费下载
    发表于 01-12 09:45 16次下载

    学习FPGA必须知道的社区

    学习FPGA必须知道的社区
    的头像 发表于 01-03 17:51 391次阅读
    <b class='flag-5'>学习</b><b class='flag-5'>FPGA</b>必须知道的社区

    基于单片机的电子琴设计

    电子发烧友网站提供《基于单片机的电子琴设计.rar》资料免费下载
    发表于 01-03 11:06 2次下载