通用音乐播放器蜂鸣器AX301开发板verilog,视频/代码

news2024/11/20 21:17:06

名称:通用音乐播放器代码,蜂鸣器播放音乐

软件:Quartus

语言:Verilog

代码说明:本代码为音乐播放器通用代码,只需修改管脚即可适配其他开发板

代码功能:

       设计一个音乐播放器,使用板子上的蜂鸣器播放歌曲,可以播放三首歌(歌曲任选),通过按键控制切歌,使用led显示音乐节奏。

本代码曲目为:

《两只老虎》

《妈妈的吻》

《让我们荡起双桨》

本代码已在AX301开发板验证,开发板资料:

FPGA 开发板手册.pdf

演示视频:音乐播放器蜂鸣器播放AX301开发板verilog切歌_Verilog/VHDL资源下载

代码下载:音乐播放器蜂鸣器播放AX301开发板verilog切歌_Verilog/VHDL资源下载名称:音乐播放器蜂鸣器播放音乐按键切歌(代码在文末付费下载)软件:Quartus语言:Verilog代码功能: 设计一个音乐播放器,使用板子上的蜂鸣器播放歌曲,可以播放三首歌(歌曲任选),通过按键控制切歌,使用led显示音乐节奏。本代码曲目为:《两只老虎》《妈妈的吻》《让我们荡起双桨》本代码已在AX301开发板验证,开发板资料:FPGA 开发板手册.pdf演示视频:部分代码展示//音乐icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=193

部分代码展示

//音乐播放器
module music(sysclk, model_Key, spkout,led);
   input           sysclk;//50M晶振
   input           model_Key;//歌曲选择键
   output          spkout;//蜂鸣器输出
output      [1:0] led;//指示灯
   
   wire [7:0] tonecode;
   wire [9:0] tonestep;
   wire model_Key_down;
   //调用频率控制字产生模块
   musicdec u_musicdec
(
.tonecode(tonecode),//输入简谱
.tonestep(tonestep)//输出频率控制字
);
   
//调用按键消抖模块
key_jitter u_key_jitter(
     . clkin(sysclk),   
     . key_in(model_Key),//输入
  . key_posedge(),//消抖后按键上升沿
  . key_negedge(model_Key_down),//消抖后按键下降沿
     . key_value()//消抖后按键
);
   
//音乐控制模块
music_ctrl i_music_ctrl(
   .  sysclk(sysclk),//50M晶振
   .  model_Key_down(model_Key_down),//歌曲选择键
   .  tonecode(tonecode),
   .  tonestep(tonestep),
   .  spkout(spkout),//蜂鸣器输出
   .  led(led)//指示灯
);   
   
endmodule


//控制模块
module music_ctrl(
   input  sysclk,//50M晶振
   input  model_Key_down,//歌曲选择键
   output reg [7:0]  tonecode,
   input  [9:0] tonestep,
   output reg   spkout,//蜂鸣器输出
   output [1:0] led//指示灯
);   
   reg [21:0]      addr;//分频控制字
   reg [24:0]      divclk_counter;
   reg             musicclk;
   wire [31:0]     musickeyshiftbuf;
   wire [1:0]      musicno;
   
   wire [9:0]      step;
   reg [8:0]       codeaddr1;
   reg [8:0]       codeaddr2;
   reg [8:0]       codeaddr3;
   
//定义3个数组,用于存储3首歌曲
   reg [7:0] music1[0:255];
   reg [7:0] music2[0:447];  
   reg [7:0] music3[0:495];
//初始化三首歌,存入数组
initial begin
$readmemh("music1.list", music1);//music1.list存储的是两只老虎的简谱
$readmemh("music2.list", music2);//music2.list存储的是妈妈的吻的简谱
$readmemh("music3.list", music3);//music3.list存储的是让我们荡起双桨的简谱
end
   
   reg [1:0] music_select=2'd0;
assign led=music_select;
always@(posedge sysclk)
if(model_Key_down)
music_select<=music_select+2'd1;//按一次按键,music_select加1
   assign step = tonestep;
   always @(posedge sysclk)     
      begin
addr <= addr + step;//step是根据音乐文件产生的频率控制字,不同step产生不同频率的spkout
      end
   always @(posedge sysclk)     
      begin
         if (divclk_counter == 1799999)//50M/(1799999*2)=分频到13.9Hz
         begin
            musicclk <= (~musicclk);//musicclk=13.9Hz

设计文档:

设计文档.doc

1. 工程文件

2. 程序文件

3. 程序编译

4. RTL图

5. 管脚分配

6. Testbench

7. 仿真图

整体仿真图

按键模块

音乐控制模块

频率控制模块

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1111804.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C#面对对象(英雄联盟人物管理系统)增加,查询,删除

目录 英雄信息类 因为要在两个窗体里面调用字典&#xff0c;所以要写一个字典的静态变量 添加功能 查询功能 删除功能 英雄信息类 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Windo…

Required MultipartFile parameter ‘file‘ is not present

出现这个原因我们首先想到的是加一个RequestParam("file")&#xff0c;但是还有可能的原因是因为我们的名字有错误 <span class"input-group-addon must">模板上传 </span> <input id"uploadFileUpdate" name"importFileU…

Shell 脚本案例

1.编写hello world脚本 #!/bin/bash ############################################################## # File Name: hello_world.sh # Version: V1.0 # Author: oldchild # Email: 2363543991qq.com # Organization: https://blog.csdn.net/m0_63636799?spm1000.2115.3001.…

【自用重要】概率论中θ和θ尖的区别【计算时的一般方法】

θ就相当于x&#xff0c;是一个值。 θ尖就相当于X&#xff0c;是一个量。 在做分布函数的时候&#xff0c;最好把θ尖换成Z的形式&#xff0c;因为他们都是量&#xff0c;这样比较好看。 在做不等式的时候&#xff0c;一般把量放在中间进行计算&#xff0c;因为随机变量有分…

Kubernetes技术与架构-服务

从软件系统架构设计分层的角度看&#xff0c;Kubernetes的Service是基于Pod的上层&#xff0c;业务应用部署在Pod中&#xff0c;使用Service绑定Pod部署的应用&#xff0c;Service可以对外或者对上层提供服务&#xff0c;当Pod集群在系统调度的过程中发生弹性伸缩的时候&#x…

Linux实用指令-指定运行级别、帮助指令

一、 指定运行级别 1.运行级别说明&#xff1a; 0:关机 1:单用户[找回丢失密码] 2:多用户状态没有网络服务 3:多用户状态有网络服务 4:系统未使用保留给用户 5:图形界面 6:系统重启 常用运行级别是3和5&#xff0c;要修改默认的运行级别。可改文件/etc/inittab 的id:5:initd…

如何识别人工智能生成的图像

随着人工智能成像变得更加先进&#xff0c;从拍摄的场景中辨别真实情况变得越来越困难。这在很多方面都会成为一个问题——从假新闻到真实人物的深度伪造。 我们唯一的机会就是更加敏锐地识别假货。 我最近进行了在线人工智能识别&#xff0c;能够从人造版本中正确选择所有真…

十七、文件(2)

本章概要 文件系统路径监听文件查找文件读写 文件系统 为了完整起见&#xff0c;我们需要一种方法查找文件系统相关的其他信息。在这里&#xff0c;我们使用静态的 FileSystems 工具类获取"默认"的文件系统&#xff0c;但你同样也可以在 Path 对象上调用 getFileS…

【Java 进阶篇】HTML DOM 事件详解

当用户在网页上点击按钮、输入文本、鼠标移动到某个区域或执行其他互动操作时&#xff0c;这些动作都可以触发事件。HTML DOM&#xff08;文档对象模型&#xff09;允许我们使用JavaScript来捕获、处理和响应这些事件&#xff0c;以实现网页的交互和动态性。本篇博客将围绕HTML…

选择最适合的产品研发和运营管理工具

Zoho Projects项目管理工具&#xff0c;以其卓越的敏捷开发协作能力&#xff0c;有效提升了产品规划和研发效率。 以下是对其优势的深入探讨&#xff1a; 一、面临的问题分析 需求变动频繁&#xff1a;在快速变化的市场环境中&#xff0c;如何灵活应对需求变动是一大挑战。跨…

数据库中了mkp勒索病毒怎么办?Mkp勒索病毒解密,数据恢复

相信在本月有很多的企业都遭到了mkp勒索病毒的攻击&#xff0c;该勒索病毒非常狡猾&#xff0c;利用中秋国庆假期期间&#xff0c;对很多的企业服务器进行了攻击&#xff0c;导致服务器内的所有文件都被加密&#xff0c;严重影响了企业的正常工作&#xff0c;经过最近一段时间对…

微信小程序怎么注册_微信小程序怎么可以免费认证

随着微信小程序的日益普及&#xff0c;越来越多的企业和个人开始关注如何注册微信小程序。本文将详细介绍微信小程序注册的步骤以及注意事项&#xff0c;帮助大家更好地了解如何成功注册微信小程序。 一、了解微信小程序注册的意义 微信小程序是一种轻量级的应用程序&#xff…

BAT029:批量为指定路径下的文件添加8位修改日期后缀名

引言&#xff1a;编写批处理程序&#xff0c;实现批量为指定路径下的文件添加8位修改日期后缀名。 一、新建Windows批处理文件 参考博客&#xff1a; CSDNhttps://mp.csdn.net/mp_blog/creation/editor/132137544 二、写入批处理代码 1.右键新建的批处理文件&#xff0c;点击…

eBay类目限制要多久?eBay促销活动有哪些?-站斧浏览器

eBay类目限制要多久&#xff1f; 1、eBay对不同类目的商品有不同的限制和要求。一些类目可能对新卖家有一定的限制&#xff0c;限制他们在该类目下销售商品的数量或需要满足某些条件才能进行销售。 2、对于新卖家的限制通常是在一定时间内&#xff0c;比如30天或90天&#xf…

【数据结构】线性表(四)双向链表的各种操作(插入、删除、查找、修改、遍历打印)

目录 线性表的定义及其基本操作&#xff08;顺序表插入、删除、查找、修改&#xff09; 四、线性表的链接存储结构 1. 单链表 2. 循环链表 3. 双向链表 a. 双向链表节点结构 b. 创建一个新的节点 c. 在链表末尾插入节点 d. 在指定位置插入节点 e. 删除指定位置的节点…

LeetCode算法刷题(python) Day42|09动态规划|62.不同路径、63. 不同路径 II

目录 LeetCode 62. 不同路径LeetCode 63. 不同路径II LeetCode 62. 不同路径 力扣题目链接 class Solution:def uniquePaths(self, m: int, n: int) -> int:dp [[1] * n for _ in range(m)]for j in range(n):for i in range(m):if i 0 and j > 0:dp[i][j] dp[i][j-1…

Python实现番茄小说内容下载

嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! python更多源码/资料/解答/教程等 点击此处跳转文末名片免费获取 环境使用: Python 3.8 Pycharm 模块使用: requests --> pip install requests re parsel 代码展示&#xff1a; 导入模块 # 导入数据请求模块 import…

[自定义 Vue 组件] 小尾巴 Logo 组件 TailLogo

文字归档于&#xff1a;https://www.yuque.com/u27599042/coding_star/apt6y731ybmxgu5g 组件效果 组件依赖 自定义字符串工具函数 stringIsNull https://www.yuque.com/u27599042/coding_star/slncupw7un3ce7cb import {stringIsNull} from "/utils/string_utils.js&q…

python进制和编码

一、进制 计算机中底层所有的数据都是以 010101的形式存在&#xff08;图片、文本、视频等&#xff09;。 二、进制转换 v1 bin(25) # 十进制转换为二进制 print(v1) # "0b11001"v2 oct(23) # 十进制转换为八进制 print(v2) # "0o27"v3 hex(28) # 十进…

ThinkPHP 8.x MVC 数据库用户增加功能demo实现

ThinkPHP MVC 数据库用户增加功能实现 在thinkphp 多应用的项目中&#xff0c; 采用MVC的架构实现 增加用户的功能。 在多应用下的controller下创建UserInfo.php ,创建一个和用户信息相关操作的控制器。 定义一个插入信息的方法,这里叫insertUserInfo 我们要执行一个用户插入…