码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 音乐播放器蜂鸣器ROM存储歌曲verilog,代码/视频


    名称:音乐播放器蜂鸣器ROM存储歌曲

    软件:Quartus

    语言:Verilog

    代码功能:

           设计音乐播放器,要求至少包含2首歌曲,使用按键切换歌曲,使用开发板的蜂鸣器播放音乐,使用Quartus内的ROM IP核存储音乐文件,

    简谱存储在ROM中,共2首歌曲。

         《茉莉花》的简谱存储在ROM中,具体值可以打开music.mif文件查看

         《两只老虎》的简谱存储在ROM2中,具体值可以打开music2.mif文件查看

    mif文件说明:

    8表示简谱1

    9表示简谱2

    10表示简谱3

    以此类推

    每个简谱对应4个相同的值

    演示视频:音乐播放器蜂鸣器ROM存储歌曲Verilog_Verilog/VHDL资源下载

    代码下载:音乐播放器蜂鸣器ROM存储歌曲Verilog_Verilog/VHDL资源下载名称:音乐播放器蜂鸣器ROM存储歌曲(代码在文末付费下载)软件:Quartus语言:Verilog代码功能: 设计音乐播放器,要求至少包含2首歌曲,使用按键切换歌曲,使用开发板的蜂鸣器播放音乐,使用Quartus内的ROM IP核存储音乐文件,简谱存储在ROM中,共2首歌曲。 《茉莉花》的简谱存储在ROM中,具体值可以打开music.mif文件查看 《两只老虎》的简谱存icon-default.png?t=N7T8http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=194

    部分代码展示

    //播放器控制模块
    module music_ctrl(sysclk,stop_key,select,start_key,tonecode,tonestep,led,spkout);
       input           sysclk;//50M晶振
    input           stop_key;//reset
    input           select;//歌曲选择,0和1对应不同歌曲
    input           start_key;//开始
    input       [9:0] tonestep;
       output      [7:0] tonecode;
    output       led;//指示灯
    output          spkout;//蜂鸣器输出
       
    reg spkout=0;
       reg [10:0]      addr='d0;//分频控制字--addr[21:0]
       reg [24:0]      divclk_counter='d0;
       reg             musicclk=0;
       
       wire [9:0]      step;
       reg [7:0]       tonecode='d0;
       wire [9:0]      tonestep;
       reg [7:0]       codeaddr1='d0;
    reg [7:0]       codeaddr2='d0;
       
    wire [7:0] ROM_data1;
    wire [7:0] ROM_data2;
    //ROM(歌曲茉莉花)
    ROM i1_ROM(
    .address(codeaddr1),
    .clock(musicclk),
    .q(ROM_data1)
    );
    //ROM(歌曲两只老虎)
    ROM2 i2_ROM(
    .address(codeaddr2),
    .clock(musicclk),
    .q(ROM_data2)
    );
    reg  music_select=1'd0;
    assign led=music_select;
    always@(posedge sysclk or negedge stop_key or negedge start_key)
    if(!stop_key)
    music_select<=0;//停止
    else if(!start_key)
    music_select<=1;//开始
       assign step = tonestep;
       always @(posedge sysclk)     
          begin
    addr <= addr + step;//step是根据音乐文件产生的频率控制字,不同step产生不同频率的spkout
          end
       always @(posedge sysclk)     
          begin
             if (divclk_counter == 179)//50M/(1799999*2)=分频到13.9Hz---仿真将1799999改小为179
             begin
                musicclk <= (~musicclk);//musicclk=13.9Hz
                divclk_counter <= 0;
             end
             else
                divclk_counter <= divclk_counter + 1;
          end
    always @(posedge sysclk) 
    if(music_select==0)begin
    spkout<=1'b1;//0时蜂鸣器拉高,不唱
    end
    else begin
    spkout<=addr[10];//addr的最高位就是输出蜂鸣器的频率--仿真将addr[21]改成addr[10]
    end
       always @(posedge musicclk or negedge stop_key)
       begin
    if(!stop_key)
    codeaddr1 <= 0;//停止
    else if(select==0)begin//歌曲1
             if (music_select)
                   begin
                      tonecode <= ROM_data1;//播放歌曲
                      if (codeaddr1 == 255)
                         codeaddr1 <= 0;//播放完后循环
                      else
                         codeaddr1 <= codeaddr1 + 1;
                   end
    end
    

    设计文档:

    1. 工程文件

    2. 程序文件

    ROM文件

    Mif文件

    3. 程序编译

    4. RTL图

    5. Testbench

    6. 仿真图

    整体仿真图

    音乐控制模块

    频率控制模块

    数码管显示模块

  • 相关阅读:
    ROS2支持技术:DDS简述
    Linux服务器安装Anaconda 配置远程jupyter lab使用虚拟环境
    2022-07-05 数据结构与算法-散列表、哈希算法
    鄙视测试,理解测试,成为测试
    IPKISS Tutorials ------查看使用_generate_instances 方法创建图形的端点
    使用mybatisplus查询sql时,报Error attempting to get column ‘ID‘ from result set错误
    使用 Wireshark 抓包工具快速分析 IoT 物联网终端设备的网络通信行为
    apt-get install 本地私有仓库创建
    【00】FISCO BCOS区块链简介
    关于我是如何得到凯程书签的-研途微光之写给徐影:致谢拉比
  • 原文地址:https://blog.csdn.net/diaojiangxue/article/details/133916756
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号