编曲部分

clk_out是周期为0.5s的时钟信号

M是使能段,当M为1时演奏歌曲

m表示不同音调,1-7对应中音do、ri、mi、fa、so、la、xi  ,8-14对应高音 ,14-21对应低音

state表示状态,一共157个状态,每个状态为0.5s,全歌时长78.5s

module state(
input clk_out,     //周期0.5s的时钟信号
input M,
output reg [4:0] m=0,
output reg [7:0] state=0);always@(posedge clk_out)         if(~M|state>=157)state=0;elsestate=state+1;always@(M,state)               //国际歌乐谱if(M)begincase(state) 0: m=5;                    1: m=8; 2: m=7;3: m=9;     4: m=8;   5: m=5;    6: m=3;7: m=6;   8: m=6;  9: m=4;10: m=0;11: m=6;     12: m=9;13: m=8;14: m=7;     15: m=6;16: m=5;17: m=4;18: m=3;     19: m=3;20: m=3;21: m=5;    22: m=8;  23: m=7;    24: m=9;25: m=8;26: m=5;27: m=3;        28: m=6;     29: m=6;    30: m=4;31: m=6;32: m=9;33: m=8;34: m=7;    35: m=8;36: m=11; 37: m=7;38: m=8;      39: m=8;40: m=8; 41: m=0; 42: m=10;      43: m=9; 44: m=7; 45: m=7;46: m=6;47: m=7;48: m=8;49: m=6;50: m=7;51: m=7; 52: m=5; 53: m=5;      54: m=4; 55: m=5;56: m=6;57: m=6;58: m=9;59: m=8;50: m=7;51: m=7; 52: m=5; 53: m=6;      54: m=4; 55: m=5;56: m=6;57: m=6;58: m=9;59: m=8;60: m=7;61: m=7; 62: m=7; 63: m=0;      64: m=9; 65: m=9;  66: m=7;67: m=5;68: m=5;69: m=4;70: m=5;71: m=10; 72: m=10; 73: m=8;      74: m=6;     75: m=7;     76: m=8;77: m=7;78: m=9;79: m=8;80: m=6;81: m=5; 82: m=5; 83: m=5;      84: m=0;     85: m=10;     86: m=9;87: m=8;88: m=8;89: m=5;90: m=3;    91: m=6; 92: m=6; 93: m=4;      94: m=0;     95: m=9;     96: m=8;97: m=7;98: m=7;99: m=6; 100: m=5;101: m=5; 102: m=5; 103: m=5;      104: m=0;     105: m=5; 106: m=10;    107: m=10;108: m=9;109: m=5;110: m=8;     //61111: m=8; 112: m=7; 113: m=7;114: m=6;     115: m=5;     116: m=6;    117: m=9;118: m=9;119: m=9;120: m=9;     121: m=0; 122: m=10; 123: m=9;124: m=8;     125: m=8;     126: m=5;    127: m=3;128: m=6;129: m=6;130: m=4;     131: m=0; 132: m=9; 133: m=8; 134: m=7;     //71135: m=7;     136: m=6;    137: m=5;138: m=10;139: m=10;140: m=10;     141: m=10; 142: m=12; 143: m=12;      144: m=11;     145: m=10;146: m=9;    147: m=10;148: m=11;149: m=0;     150: m=11; 151: m=10; 152: m=10; 153: m=9;      154: m=9;     155: m=8;     156: m=8;    157: m=8;default: m=0;endcaseendelse if (~M)m=0;endmodule

音调部分

clk是50Mhz时钟

B为无源蜂鸣器,当无源蜂鸣器输入时钟不同时,会发出不同的声音,详情可看代码部分

当输入m为不同的值时,q控制蜂鸣器时钟频率(例如m=1 、q=47773、蜂鸣器时钟频率为50M/(47773×2)=523.3HZ,发出中音do。)

module music(input clk,input [4:0] m,input M,output reg B=0 );integer q=0;integer p=0; always@(posedge clk)begincase(m)1:q=47773; //523.3HZ中do2:q=42567; //587.3HZ 中ri          3:q=37919; //659.3HZ 中mi        4:q=35790; //698.5HZ 中fa5:q=31887; //784HZ 中so      6:q=28409; //880HZ 中la            7:q=25308; //987.8HZ 中xi8:q=23914; //1045.4HZ 高do      9:q=21282; //1174.7HZ 高ri         10:q=18960; //1318.5HZ 高mi11:q=17904; //1396.3HZ 高fa         12:q=15943; //1568HZ 高so           13:q=14204; //1760HZ 高la              14:q=12655; //1975.5HZ 高xi          15:q=95565; //261.6HZ 低do16:q=85120; //293.7HZ 低ri           17:q=75849; //329.6HZ 低mi 18:q=71592; //349.2HZ 低fa               19:q=63775; //392HZ 低so                  20:q=56818; //440HZ 低la              21:q=50617; //493.9HZ 低xi                                   endcase    endalways@(posedge clk)      beginif((p>=q)&M) beginp=0; B=~B;endelse if(M)p=p+1;else B=0;         end endmodule

顶层模块

clk_0_5模块是分频器,输出周期为0.5s的时钟信号(比较简单,就不单独列出了)

state、music为乐曲、音调部分模块,上文已写

led_0是我之前写的显示ip核,可以显示当前播放进度,不影响核心功能,可以删除。

module buz(
input clk,
input M,
output B,
output [7:0] seg,
output [5:0] dig
);wire clk_out;
wire [4:0] m;
wire [7:0] state;clk_0_5s m1(clk,clk_out);
state m2(clk_out,M,m,state);
music m3(clk,m,M,B);
led_0 m4(clk,state/100,(state%100)/10,state%10,30,30,30,seg,dig);endmodule

效果演示

FPGA演奏国际歌

FPGA演奏歌曲(国际歌)相关推荐

  1. 用Python演奏《国际歌》

    文章目录 一.背景与需求 二.必备知识 2.1 Python生成音乐的原理 2.2 十二平均律 2.3 简单乐理知识 三.实现 3.1 对琴谱进行编码 3.2 Music类 3.3 Staff类 3. ...

  2. c语言蜂鸣器放音乐程序,单片机按键蜂鸣器演奏歌曲功能C程序

    BUZZER EQU P2.4 org    0000h        ;主程序起始地址 ajmp    main        ;跳至主程序 org    000bh        ;timer0中 ...

  3. 用计算机演奏歌曲谱子,我要用计算器弹曲子,求亲们发点计算器简谱

    @长之安 2015-07-05 22:13:31 千本樱 是按键,不是简谱 221 221 221 24 221 221 2456 562121 562121 562121 4321 562121 5 ...

  4. 用python演奏歌曲

    一.准备 电脑一台.python. 首先使用pip安装winsound: pip install winsound 接下来,就开始我们的正文.(当然,这篇文章正文会很短) 二.正文 此处,我以< ...

  5. MSP430学习笔记5-利用蜂鸣器演奏音乐

    这个小程序仍然是定时器的运用,比较简单,具体的地方都在注释中注明了,参考注释. /********************************************* 程序功能:MCU控制蜂鸣器 ...

  6. 用matlab演奏周杰伦的《七里香》

    问题描述 前几天在学习matlab的时候,发现了一篇用matlab演奏音乐的文章,不禁感叹matlab居然还能这么玩!于是我就学着用matlab演奏我最喜欢听的一首歌--周杰伦的<七里香> ...

  7. arduino蜂鸣器音乐代码_STM32驱动蜂鸣器演奏音乐“你笑起来真好看”

    有源蜂鸣器与无源蜂鸣器的区别 这里的"源"不是指电源,而是指震荡源. 内部自带震荡源的为有源蜂鸣器,给电就能响,但是响的频率是固定的,即响的声音是固定的. 内部没有震荡源的为无源蜂 ...

  8. 单片机实验四(电子琴自动演奏)

    一.实验设备 PC机一台.实验箱一台. 二.实验内容 实现电子琴功能,自动演奏歌曲<葫芦娃>片段,并设置两个按键来实现歌曲的"暂停"和"开始/停止" ...

  9. 【趣味】用MATLAB演奏《追光者》

    [趣味]用MATLAB演奏<追光者> 看见有很多人用MATLAB演奏歌曲,也忍不住试了一下,以下附上源码 %%%%演奏<追光者>%%%% clear all;clc; fs = ...

最新文章

  1. html手机端适配怎么调试,html5面试常见问题及答案:移动端布局与适配篇
  2. 东北面人李---精品作品展
  3. 设置npm的registry
  4. UVa 11027 - Palindromic Permutation 回文串,组合加搜索
  5. shiro认证与授权:自定义realm
  6. 在vc或mfc中显示IplImage的方法
  7. Java 并发编程之 ConcurrentHashMap,ConcurrentSkipListMap
  8. php禁用exec,php – 警告:出于安全原因,已禁用`exec()`
  9. ubuntu 卸载opencv
  10. (14) 常用管理类软件需求征集 -- 组织机构管理
  11. 地图Web服务API接口——搜索POI(以高德地图为例)
  12. PHP学习笔记:利用gd库给图片打图片水印
  13. 各地的磁倾角_中国各地磁偏角
  14. 华大MCU在IAR下的调试环境搭建及相关补丁包(百度网盘链接)
  15. 二阶带通滤波器电路设计
  16. 安装Windows XP出现0X0000007B的解决方法
  17. ISP模块之色彩增强算法--HSV空间Saturation通道调整
  18. 记录Widows10系统崩溃后安装Widows7系统的心酸历程
  19. 打开浏览器时主页被锁定怎么也改不掉的一个好办法
  20. 6、网关 复杂分支流程

热门文章

  1. redis setnx java_一步步实现单机redis的分布式锁(setnx)
  2. matlab 图标分为两列,excel表格各组数据作图-EXCEL里如何将表示两组数据的两种图形放在同一个表......
  3. 果园种树java_农户院子种果树砌树圈有什么用?为什么果园种树不砌树圈?区别大...
  4. 2023年十大顶级SCRM系统盘点
  5. python输入10个数、找出对称数_Python入门100道习题(7)——找对称数
  6. android 5.1 keyguardhostview,android4.4的Keyguard心得
  7. 【Android 常见控件使用】AlertDialog(对话框)详解
  8. tiobe 2019年1月排行
  9. WSL-Centos8 Sstream 安装Vim
  10. python音频处理库_Python中音频处理库pydub的使用教程