1879|1

5

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

FPGA课程设计中的一个小问题,大家帮忙看一下。。。 [复制链接]

最近老师布置了一个课程设计,用FPGA实现一个音乐点唱机。将3首乐谱存放在rom中,然后通过按键切歌。具体要求如下:
1。复位时蜂鸣器不播放音乐
2。按下第1按键时播放第一首音乐,播放过程中按下第2个按键时就播放第二首音乐,按下第3个按键就立即播放第三首音乐。

但是设计中出现了一个小问题,如何在按下按键时立即就播放所对应的歌曲。比如在复位后我按下第二个按键,总是从第一首音乐开始播放,完了以后才播放第二首,才一直循环。我想直接就播放第二首,怎样才能修改我想要的啊????  

消抖代码采用的是特权同学的
主要代码如下:
always @ (posedge clk_10m or negedge rst_n) begin
                if(~rst_n)
                        cnt_r <= 8'dz;
                else
                        case(key_pluse)
                                3'b100        :        begin cnt_r <= 8'd0; end     //当第一个按键按下时cnt_r为0,从rom地址为0开始读数据
                                3'b010        :        begin cnt_r <= 8'd64; end  //当第二个按键按下时cnt_r为64,从rom地址为64开始读数据
                                3'b001        :        begin cnt_r <= 8'd128;end  //当第三个按键按下时cnt_r为128,从rom地址为128开始读数据
                        endcase
        end

        always @ (posedge clk_4 or negedge rst_n) begin
                if(~rst_n)
                        rom_addr <= 8'bz;
                else
                        if(rom_addr == (cnt_r + 64))      //每首歌只存rom中的64个地址
                                rom_addr <= cnt_r;
                        else
                                rom_addr <= rom_addr + 1'b1;
        end

//其中clk_10m为10MHz,clk_4为4Hz
//如何在上面的代码基础上进行修改啊????  给我个思路啊~~  跪谢了
此帖出自FPGA/CPLD论坛

最新回复

case(key_pluse)里也要把rom_addr设置好, 否则 rom_addr   详情 回复 发表于 2014-9-3 22:01
点赞 关注
 

回复
举报

165

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
case(key_pluse)里也要把rom_addr设置好, 否则 rom_addr <= rom_addr + 1'b1,直到放完
此帖出自FPGA/CPLD论坛
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表