fpga开发——蜂鸣器
蜂鸣器的原理
有源蜂鸣器和无源蜂鸣器
无源蜂鸣器利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。无源蜂鸣器的工作原理与扬声器相同。在使用方波信号源驱动的应反向并联一个二极管,防止突然断电时产生的高压反向电动势击穿其他元件以及使用寿命缩短。
有源蜂鸣器插上电就能用,内部有固定频率,无法更改。
在我的开发板上使用的是无源蜂鸣器,只有产生方波才能发出声音,产生不同频率的方波就产生不同音调的波形。
发出特定音调的声音
开发板外部时钟50Mhz,若要产生262hz(do)音调,则计数器应该计数到50000000/262 = 190840个数,若要产生占空比为0.5的方波,则计数器可以计数到190840/2 = 95420 信号翻转,就产生了占空比0.5 的方波,可以驱动蜂鸣器发出连续的do音调。
代码如下:
module beep
#(parameter cnt_max = 17'd95419)
(input wire clk,
input wire rst,
output reg beep);//发出连续音调的声音
reg [16:0] cnt ;always@(posedge clk or negedge rst)
beginif(rst == 1'd0)cnt<=17'd0;else if(cnt == cnt_max)cnt<=17'd0;else cnt<= cnt+17'd1;
endalways@(posedge clk or negedge rst )
beginif(rst == 1'd0)beep <=1'd0;else if(cnt == cnt_max)beep<=~beep;elsebeep <= beep;
endendmodule
发出间断的声音
上述的代码是产生一个方波,通过这个方波才能驱动计数器发出声音,若要让蜂鸣器0.5s发出声音,0.5s不发出声音,就要设置一个计数器,计数到24999999,当计数到24999999时产生一个标志信号,通过标志信号产生一个选择信号,当选择信号为低电平的时候不发出声音,当选择信号为高电平的时候发出声音,选择信号的周期为1s,0.5s高电平,0.5s为低电平。高电平时按照上述方法产生音调tone方波。
代码如下:
module beep
#(parameter cnt_max = 17'd95419,parameter cnt_50ms = 25'd24999999)
(input wire clk,
input wire rst,
output reg beep);//发出有间隔的声音
reg [16:0] cnt_tone ;
reg [24:0] cnt_space;
reg space_flag;
reg beep_sel;always@(posedge clk or negedge rst)
beginif(rst ==1'd0)cnt_space <= 25'd0;else if (cnt_space == (cnt_50ms -1))cnt_space <= 25'd0;else cnt_space<=cnt_space+25'd1;
endalways@(posedge clk or negedge rst)
beginif(rst ==1'd0)space_flag <= 1'd0;else if (cnt_space == (cnt_50ms - 1))space_flag <=1'd1;else space_flag<=1'd0;
endalways@(posedge clk or negedge rst)
beginif(rst ==1'd0)beep_sel <= 1'd0;else if( space_flag == 1'd1)beep_sel<= ~beep_sel;elsebeep_sel <=beep_sel;
endalways@(posedge clk or negedge rst)
beginif(rst == 1'd0)cnt_tone<=17'd0;else if(cnt_tone == cnt_max)cnt_tone<=17'd0;else cnt_tone<= cnt_tone+17'd1;
endalways@(posedge clk or negedge rst )
beginif(rst == 1'd0)beep <=1'd0;else if(beep_sel==1'b1)if(cnt_tone == cnt_max)beep<=~beep;elsebeep <= beep;else beep<=1'd0;
endendmodule
测试文件如下,为了便于观察波形,将最大值设小:
`timescale 1ns/1ns
`include"beep_test.v"module top();reg clk;
reg rst;initial
beginclk <= 1'b0;rst<=1'b0;#25rst <=1'b1;
endalways #10 clk =~clk;beep
#(.cnt_max(17'd24),.cnt_50ms(25'd99))
b1
(clk,rst,beep);endmodule
仿真波形如下:

相关文章:
fpga开发——蜂鸣器
蜂鸣器的原理 有源蜂鸣器和无源蜂鸣器 无源蜂鸣器利用电磁感应现象,为音圈接入交变电流后形成的电磁铁与永磁铁相吸或相斥而推动振膜发声,接入直流电只能持续推动振膜而无法产生声音,只能在接通或断开时产生声音。无源蜂鸣器的工作原理与扬声…...
【Liux下6818开发板(ARM)】触摸屏
(꒪ꇴ꒪ ),hello我是祐言博客主页:C语言基础,Linux基础,软件配置领域博主🌍快上🚘,一起学习!送给读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!作者水平很有限,如果发现错误&#x…...
苍穹外卖day11——数据统计图形报表(Apache ECharts)
效果展示 Apache ECharts 介绍 常见图表 入门案例 快速上手 - Handbook - Apache ECharts 营业额统计——需求分析与设计 产品原型 接口设计 VO设计 营业额统计——代码开发 Controller中 /*** 数据统计相关接口*/ RestController RequestMapping("/admin/report&qu…...
在制作PC端Game Launcher游戏启动器时涉及到的技术选型
1)在制作PC端Game Launcher游戏启动器时涉及到的技术选型 2)如何将图片显示到Canvas的Raw Image上面 3)Unity 2018.4.4f1退出重启后出现黑屏 4)如何获取到GPU耗时 这是第346篇UWA技术知识分享的推送,精选了UWA社区…...
SQL力扣练习(九)
目录 1.订单最多的用户(586) 示例 1 解法一(limit) 解法二(dense_rank()) 2.体育馆的人流量 示例 1 解法一(临时表) 解法二(三表法) 1.订单最多的用户(586) 表: Orders --------------------------- | Column Name | Type | ---------…...
软考高级架构师笔记-10数学计算题
目录 1. 前文回顾 & 考情分析2. 最小生成树3. 最短路径4. 网络与最大流量5. 线性规划6. 动态规划/决策表7. 博弈论8. 状态转移矩阵9. 决策论10. 结语1. 前文回顾 & 考情分析 前文回顾: 软考高级架构师笔记-1计算机硬件软考高级架构师笔记-2计算机软件(操作系统)软考…...
设计模式五:建造者模式(Builder Pattern)
建造者模式(Builder Pattern)是一种创建型设计模式,用于通过一系列步骤来构建复杂对象。它将对象的构建过程与其表示分离,从而允许相同的构建过程可以创建不同的表示。 建造者模式中的几个角色: 产品(Product):表示被构建的复杂…...
C++多线程编程(包含c++20内容)
C多线程编程(包含c20内容) 文章目录 C多线程编程(包含c20内容)线程通过函数指针创建线程通过函数对象创建线程通过lambda创建线程通过成员函数创建线程线程本地存储取消线程自动join线程从线程获得结果 原子操作库原子操作原子智能指针原子引用使用原子类型等待原子变量 互斥互…...
【C语言】通讯录2.0 (动态增长版)
前言 通讯录是一种记录联系人信息的工具,包括姓名、电话号码、电子邮件地址、住址等。 文章的一二三章均于上一篇相同,可以直接看第四章改造内容。 此通讯录是基于通讯录1.0(静态版)的基础上进行改进,请先看系列文字第…...
详解AMQP协议以及JAVA体系中的AMQP
目录 1.概述 1.1.简介 1.2.抽象模型 2.spring中的amqp 2.1.spring amqp 2.2.spring boot amqp 1.概述 1.1.简介 AMQP,Advanced Message Queuing Protocol,高级消息队列协议。 百度百科上的介绍: 一个提供统一消息服务的应用层标准高…...
跨境电商外贸常态下,深度分析Live Market的优势
据统计,今年上半年,面对复杂严峻的外部环境,我国外贸进出口规模在历史同期首次突破20万亿元,展现较强韧性。我国正处于大力支持跨境电商发展的时代节点。在此背景下,无数商家准备抓住时代机遇,将品牌影响力从国内延伸至全世界。同…...
vue2企业级项目(八)
vue2企业级项目(八) 组件封装(二) 4、searchForm 创建components/searchForm/index.js import XSearchForm from "./index.vue"; export default XSearchForm;使用案例 <template><div class"wrap"…...
小研究 - 主动式微服务细粒度弹性缩放算法研究(二)
微服务架构已成为云数据中心的基本服务架构。但目前关于微服务系统弹性缩放的研究大多是基于服务或实例级别的水平缩放,忽略了能够充分利用单台服务器资源的细粒度垂直缩放,从而导致资源浪费。为此,本文设计了主动式微服务细粒度弹性缩放算法…...
【雕爷学编程】Arduino动手做(177)---ESP-32 掌控板
37款传感器与执行器的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块,依照实践出真知(一定要动手做)的理念,以学习和交流为目的&am…...
使用Gunicorn+Nginx部署Flask项目
部署-开发机上的准备工作 确认项目没有bug。用pip freeze > requirements.txt将当前环境的包导出到requirements.txt文件中,方便部署的时候安装。将项目上传到服务器上的/srv目录下。这里以git为例。使用git比其他上传方式(比如使用pycharmÿ…...
【12】STM32·HAL库开发-STM32时钟系统 | F1/F4/F7时钟树 | 配置系统时钟
目录 1.认识时钟树(掌握)1.1什么是时钟?1.2认识时钟树(F1)1.2.1STM32F103时钟树简图1.2.2STM32CubeMX时钟树(F103) 1.3认识时钟树(F4)1.3.1F407时钟树1.3.2F429时钟树1.3…...
Kotlin基础(十):函数进阶
前言 本文主要讲解kotlin函数,之前系列文章中提到过函数,本文是kotlin函数的进阶内容。 Kotlin文章列表 Kotlin文章列表: 点击此处跳转查看 目录 1.1 函数基本用法 Kotlin 是一种现代的静态类型编程语言,它在函数的定义和使用上有一些特点…...
计算机视觉(四)神经网络与典型的机器学习步骤
文章目录 神经网络生物神经元人工神经元激活函数导数 人工神经网络“层”的通俗理解 前馈神经网络Delta学习规则前馈神经网络的目标函数梯度下降输出层权重改变量 误差方向传播算法误差传播迭代公式简单的BP算例随机梯度下降(SGD)Mini-batch Gradient De…...
使用easyui的tree组件实现给角色快捷分配权限功能
这篇文章主要介绍怎么实现角色权限的快捷分配功能,不需要像大多数项目的授权一样,使用类似穿梭框的组件来授权。 具体实现:通过菜单树的勾选和取消勾选来给角色分配权限,在这之前,需要得到角色的菜单树,角色…...
Postman打不开/黄屏/一直转圈/Windows
环境背景 内网环境Postman-win64-8.11.1-Setup.exe 问题描述 电脑重启后,打开Postman后,出现加载弹窗:Preparing your workspaces…This might take a few minutes; 等待数分钟后,还是没有反应,于是关闭…...
2026届最火的五大AI论文助手推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 由于人工智能生成内容也就是AIGC被广泛运用,互联网里到处都是由AI生成的&#x…...
极简fastapi框架
# 自己手写一个极简版 FastAPI 框架 class MiniFastAPI:def __init__(self):# 路由表:存储 {("GET", "/url1"): 对应函数}self.router_map {}# 模仿 app.get("/path") 装饰器def get(self, path: str):def decorator(func):# 把 请求…...
ElevenLabs老年语音情感衰减难题破解(附可复用的Prosody增强JSON Schema与实测MOS提升2.1分)
更多请点击: https://intelliparadigm.com 第一章:ElevenLabs老年男性语音情感衰减现象的本质剖析 ElevenLabs 的老年男性语音模型(如 “Antoni” 或 “Josh”)在高语速、长句或情绪密集场景下,常出现语调扁平化、微停…...
小米路由器R3G刷机实战:从官方固件到蜜罐版MT工具箱的保姆级避坑指南
小米路由器R3G深度改造指南:解锁第三方固件的完整路线图 当你盯着家里那台性能日渐吃紧的小米路由器R3G时,是否想过它其实蕴藏着未被发掘的潜力?这款发布于数年前的中端路由器,凭借MT7621双核芯片和128MB内存的硬件基础࿰…...
别再被SAR图像上的‘雪花点’骗了!手把手教你理解相干斑噪声的底层原理
别再被SAR图像上的‘雪花点’骗了!手把手教你理解相干斑噪声的底层原理 第一次接触SAR图像时,那些密密麻麻的"雪花点"总让人误以为是设备故障或数据损坏。这种视觉上的"噪声"其实是合成孔径雷达(SAR)成像中特…...
如何快速优化EVE Online舰船配置:免费专业工具指南
如何快速优化EVE Online舰船配置:免费专业工具指南 【免费下载链接】Pyfa Python fitting assistant, cross-platform fitting tool for EVE Online 项目地址: https://gitcode.com/gh_mirrors/py/Pyfa Pyfa(Python Fitting Assistant)…...
从芯片选型到PCB布线:手把手拆解基于Zynq-7100的10Gbps雷达数据采集卡硬件设计
从芯片选型到PCB布线:Zynq-7100雷达数据采集卡硬件设计实战 在高速数据采集领域,10Gbps量级的实时信号处理对硬件设计提出了严苛挑战。当我们面对雷达回波、医学影像或工业检测等场景时,传统采集方案往往在吞吐量、延迟和同步精度上捉襟见肘。…...
SAP ABAP文件处理避坑指南:从FILE事务码到OPEN DATASET的完整配置流程
SAP ABAP服务器端文件处理实战:从逻辑路径配置到OPEN DATASET高阶应用 在SAP系统集成与数据交换场景中,文件处理能力直接影响着接口稳定性与运维效率。不同于常规编程语言的文件操作,ABAP环境下的服务器端文件处理涉及逻辑路径映射、平台适配…...
基于Shell与Python的本地化GPT服务部署与架构实践
1. 项目概述:一个基于Shell与NLP的轻量级GPT服务接口最近在折腾一些自动化脚本和智能对话的集成,发现了一个挺有意思的需求:能不能在命令行里,或者通过一个简单的HTTP请求,就能调用类似GPT这样的语言模型,来…...
终极指南:使用Tinke轻松探索和修改NDS游戏资源
终极指南:使用Tinke轻松探索和修改NDS游戏资源 【免费下载链接】tinke Viewer and editor for files of NDS games 项目地址: https://gitcode.com/gh_mirrors/ti/tinke 你是否曾经好奇任天堂DS游戏内部是如何组织的?想要提取游戏中的精美图片、动…...
