输出DO,RE,MI,FA,SO,LA,XI 7位音符verilog代码

module beep
#(
parameter CNT_MAX = 25'd24999999,
          DO = 18'd190839,
          RE=18'd170067,
          MI=18'd151514,
          FA=18'd143266,
          SO=18'd127551,
          LA=18'd113636,
          XI=18'd101214
)
(
input wire sys_clk,
input wire sys_rst_n,
output reg beep
);
reg [24:0] cnt;
reg [2:0]  cnt_500ms;
reg [17:0] freq_cnt;
reg [17:0] freq_data;
wire [16:0] duty_data;

always@(posedge sys_clk or negedge sys_rst_n)
if (sys_rst_n == 1'b0)
cnt <= 25'b0;
else if(cnt == CNT_MAX)
cnt <= 25'b0;
else 
cnt <= cnt+1'b1;

always@(posedge sys_clk or negedge sys_rst_n)
if (sys_rst_n == 1'b0)
cnt_500ms <= 3'd0;
else if((cnt_500ms == 3'd6)&&(cnt==CNT_MAX))
cnt_500ms <= 3'd0;
else if(cnt == CNT_MAX)
cnt_500ms <= cnt_500ms+1'b1;
else 
cnt_500ms <= cnt_500ms;

always@(posedge sys_clk or negedge sys_rst_n)
if (sys_rst_n == 1'b0)
freq_cnt <= 18'd0;
else if((freq_cnt == freq_data)||(cnt == CNT_MAX))
freq_cnt <= 18'd0;
else 
freq_cnt <= freq_cnt + 1'b1;

always@(posedge sys_clk or negedge sys_rst_n)
if (sys_rst_n == 1'b0)
freq_data <= DO;
else case(cnt_500ms)
3'd0:freq_data<=DO;
3'd1:freq_data<=RE;
3'd2:freq_data<=MI;
3'd3:freq_data<=FA;
3'd4:freq_data<=SO;
3'd5:freq_data<=LA;
3'd6:freq_data<=XI;
default:freq_data<=DO;
endcase

assign duty_data = freq_data >> 1 ;

always@(posedge sys_clk or negedge sys_rst_n)
if (sys_rst_n == 1'b0)
beep <= 1'b0;
else if(freq_cnt >= duty_data)
beep <= 1'b1;
else
beep <= 1'b0;
endmodule

*
*
*
*
*

用modelsim的仿真代码,建议仿真时间设置为300ms

`timescale 1ns/1ns 
module tb_beep ();
reg sys_clk;
reg sys_rst_n;
wire beep;
initial 
begin
sys_clk=1'b1;
sys_rst_n <= 1'b0;
#20
sys_rst_n <= 1'b1;
end
always #10 sys_clk= ~sys_clk ;

beep
#
(.CNT_MAX(25'd2499999),// 输入值减小了一位便于仿真
          .DO(18'd19083),
          .RE(18'd17006),
          .MI(18'd15151),
          .FA(18'd14326),
          .SO(18'd12755),
          .LA(18'd11363),
          .XI(18'd10121)
)
beep_inst
(
.sys_clk(sys_clk),
.sys_rst_n(sys_rst_n),
.beep(beep)
);

endmodule

verilog 无源蜂鸣器输出7位音符相关推荐

  1. STM32 cubeMX下配置STM32单片机使无源蜂鸣器输出PWM波并放音乐

    1.首先我们要了解定时器(timer) timer分为三种:高级定时器(tim1,tim8),基本定时器(tim6,tim7),通用定时器(tim2,tim3,tim4,tim5). 基本定时器:它有 ...

  2. 【入门学习二】基于 FPGA 使用 Verilog 实现蜂鸣器响动的代码及原理讲解

    目录 一.知识了解 二.模块设计 三.程序实现 四.管脚配置及结果展示 五.写给小白看的 上一篇博文:[入门学习一]基于 FPGA 使用 Verilog 实现按键点灯代码及原理讲解 功能描述:通过前面 ...

  3. Arduino 无源蜂鸣器实验

    相关资料链接 点这里 1.1 介绍: 本实验用无源蜂鸣器播放音乐,无源蜂鸣器是通过PWM脉冲宽度调制脉冲进而调节音调, PWM比较多用于调节LED灯的亮度或者调节无源蜂鸣器的频率,或者是电机的转动速度 ...

  4. 树莓派无源蜂鸣器c语言,[Python]使用树莓派+无源蜂鸣器播放铁血丹心

    条件树莓派4B 无源蜂鸣器3V: 3毛钱一个 杜邦线: 2根 语言: Python 3 接线 蜂鸣器正极: 作者使用的是GPIO 1 也就是第28个接口, 对于GPIO口没有要求,只要GPIO口都可以 ...

  5. STM32实战-无源蜂鸣器

    前言: 主要通过无源蜂鸣器实现功能有: 1.上电后,无源蜂鸣器发出警报声: 2.通过触摸按键1打开或关闭蜂鸣器; 目录 1.硬件电路部分 2.技术讲解 2.1通用定时器(TIMx) 2.2主要特性 2 ...

  6. 无源蜂鸣器的歌曲演奏

    无源蜂鸣器的相关介绍 1. 无源内部不带震荡源,所以如果用直流信号无法令其鸣叫.必须用2K~5K的方波(建议使用PWM)去驱动它 2. 声音频率可控,可以做出"多来米发索拉西"的效 ...

  7. STM32 使用STM32F103控制无源蜂鸣器发声播放音乐

    使用STM32控制无源蜂鸣器发声播放音乐 [注:学习STM32总结做的笔记,大神勿喷.有不足之处还望不吝赐教. -----本篇大部分转载而来,有侵权请联系作者,谢谢.] 原博客地址: https:// ...

  8. 超声波测距系统(stc89c52单片机+lcd1602+srf04超声波传感器+DS18B20温度传感器+无源蜂鸣器)

    求赞,它是我写博客的动力,请鼓励鼓励我,谢谢 基于超声波测距的倒车报警系统. 计划通过超声波传感器测距,温度传感器校正误差,lcd1602显示结果,距离小于某一值时将蜂鸣报警. 总体设计思路 HC-S ...

  9. 树莓派无源蜂鸣器c语言,[Python]使用树莓派+无源蜂鸣器播放

    条件 树莓派4B 无源蜂鸣器3V: 3毛钱一个 杜邦线: 2根 语言: Python 3 接线 蜂鸣器正极: 做者使用的是GPIO 1 也就是第28个接口, 对于GPIO口没有要求,只要GPIO口均可 ...

最新文章

  1. Linux基础-yum软件包管理
  2. 10.1——为什么方法不能用static修饰
  3. java中arges.length_java中的args.length
  4. 判断某棵二叉树是否二叉排序树
  5. 直击阿里双11神秘技术:PB级大规模文件分发系统“蜻蜓”
  6. jQuery each、节点操作、动画演示、尺寸操作、扩展方法
  7. 【186天】黑马程序员27天视频学习笔记【Day15-上】
  8. js替换字符中的斜杠反斜杠
  9. 父亲购房后去世,房产证还没办,后妈和父亲没结婚,户口簿上有父亲,儿子,妹妹,那房产证应该写谁的名字?
  10. String中的intern方法详解
  11. Linux安装Nvidia显卡驱动
  12. 关于Oracle性能分析中 自动工作量资料档案库(AWR)的管理(Oracle10个/11g的新特点) 文平...
  13. 基于MATLAB综合特征的图像检索系统
  14. SpringBoot -> 自动装配初探,debug=ture判断配置类是否生效
  15. 编程语言之时下潮流与实用价值
  16. Photon教程——Photon的获取
  17. MySQL基础知识-MySQL概述安装,单表增删改查,函数,约束,多表查询,事物
  18. 通用权限管理设计篇(一)
  19. Ubuntu18.04LTS系统编译Android所需安装的一些插件内容
  20. 下列关于java集合说法错误的是_下列说法错误的是A.集合类都位于java.util包下

热门文章

  1. 微信小程序开发中的相关记录
  2. Unity 游戏 牧师与魔鬼
  3. Java swing设置jar包开机启动
  4. #今日论文推荐# 谷歌DreamBooth扩散模型实现“以假乱真”,让指定实物在图像中以各种方式展现
  5. 前端那些些之jquery,layui,boostrap数据封装(后台系统)
  6. MSP430FR6989系列教程之LCD
  7. 程序员的 “三六九等”
  8. vue使用element-ui中日期选择器 (el-date-picker) 出现报错
  9. 【微话】究竟什么是大数据?
  10. Linux | ubuntu-16.04-server-amd64 的安装过程