1、定时器和计数器

从一定程度上讲,定时器就是计数器,计数器就是定时器。

定时器:核心单元本质也是一个计数器,设置一个定时值,启动定时器后,计数器开始计数,计数满后产生计数满标志信号,提示设定的定时时间到达。

计数器:对脉冲信号进行计数,统计一确定时间段内该脉冲信号出现的次数,或者等待指定次数的脉冲信号出现后,产生相应标志。

2、定时器设计基本需求

本节设计一个定时器,能够支持以下功能

1) 该定时器的定时时间参数可以通过该模块的一个端口输入,通过调节端口上输入数据的值,就能修改其定时时间。

2)设置一个计数模式控制信号,当该信号为1时,设置为循环定时模式,当该信号为0时,设置为单次定时模式。

3)设置一个计数启动信号,在循环定时模式下,该信号为高电平使能计时,为低电平则停止计时。在单次计数模式下,该信号的一个单基准时钟周期的脉冲使能一次定时。

4)输出计数器实时计数值,该值将用于产生特定占空比的方波。

3、定时器设计功能验证

蜂鸣器是一种产生声音的器件,广泛应用于报警器、电子玩具、汽车电子设备、定时器等电子产品中作发声器件。

蜂鸣器按照构造方式的不同,可分为压电式蜂鸣器和电磁式蜂鸣器两种类型。压电式蜂鸣器主要由多谐振荡器、压电蜂鸣片、阻抗匹配器、共鸣箱以及外壳等组成。电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。由于两种蜂鸣器发音原理不同,压电式结构简单耐用但音调单一音色差,适用于报警器等设备。而电磁式由于音色好,所以多用于语音、音乐等设备。

蜂鸣器按照驱动电路的不同可以分为有源蜂鸣器与无源蜂鸣器。有源蜂鸣器内部带震荡源,所以只要通电就会鸣叫;而无源蜂鸣器内部不带震荡源,因此如果用直流信号无法令其鸣叫,这就需要用200-5K的方波(声音频率)去驱动。

4、实验原理

在如图电路中,电容C36用于提高电路抗干扰性能;D5起保护三极管的作用,当三极管突然截止时,无源蜂鸣器两端产生的瞬时感应电动势可以通过D1迅速释放掉,避免叠加到三极管集电极上从而击穿三极管;BEEP端口接FPGA输出管脚,使用时只需要在BEEP信号上输入2~5KHz的PWM波,就能驱动蜂鸣器按照既定的频率产生振动信号。

5、实验过程

本次实验主要由以下步骤组成:

创建Quartus Prime工程

编写计数器HDL描述文件

编写计数器测试脚本(testbench)

对计数器进行功能仿真

在Quartus Prime中执行布局布线

对计数器进行时序仿真

分配引脚并编译得到FPGA配置文件.sof

配置FPGA并运行

6、代码

module beep_top(clk,Rst_n,beep,CNT_GO//在循环定时模式下,该信号为高电平使能计时,为低电平则停止计时。在单次计数模式下,该信号的一个单基准时钟周期的脉冲使能一次定时。);input clk;input Rst_n;input CNT_GO;output beep;wire [31:0] CNT_NOW;beep_test beep_test0(.clk(clk),.Rst_n(Rst_n),.CNT_ACC(49999),.MODE(1),.CNT_GO(CNT_GO),.CNT_NOW(CNT_NOW),.FULL_Flag());assign beep = (CNT_NOW >= 24999 )? 1'b1:1'b0;endmodulemodule beep_top(clk,Rst_n,beep,CNT_GO//在循环定时模式下,该信号为高电平使能计时,为低电平则停止计时。在单次计数模式下,该信号的一个单基准时钟周期的脉冲使能一次定时。);input clk;input Rst_n;input CNT_GO;output beep;wire [31:0] CNT_NOW;beep_test beep_test0(.clk(clk),.Rst_n(Rst_n),.CNT_ACC(49999),.MODE(1),.CNT_GO(CNT_GO),.CNT_NOW(CNT_NOW),.FULL_Flag());assign beep = (CNT_NOW >= 24999 )? 1'b1:1'b0;endmoduletestbench文件
`timescale 1ns/1ns
`define clk_period 20
module beep_test_tb;reg clk;reg Rst_n;reg [31:0] CNT_ACC;reg MODE;reg CNT_GO;wire [31:0]CNT_NOW;wire FULL_Flag;reg [31:0]cnt;beep_test beep_test0(.clk(clk),.Rst_n(Rst_n),.CNT_ACC(CNT_ACC),.MODE(MODE),.CNT_GO(CNT_GO),.CNT_NOW(CNT_NOW),.FULL_Flag(FULL_Flag));initial clk = 1;always #(`clk_period/2) clk=~clk;initial beginRst_n = 0;CNT_ACC = 0;CNT_GO = 0;#(`clk_period*20+1);//保证复位信号的变化不与clk信号边沿重合,方便观察异步复位Rst_n = 1;#(`clk_period*20);//设置预设值为1000,模式为循环模式CNT_ACC = 1000;MODE = 1;#(`clk_period*20);CNT_GO = 1;#(`clk_period*12000);CNT_GO = 0;#(`clk_period*20);//设置预设值为600,模式为循环模式CNT_ACC = 1000;MODE = 1;#(`clk_period*20);CNT_GO = 1;#(`clk_period*8000);CNT_GO = 0;#(`clk_period*20);//设置预设值为1000,模式为单次定时模式CNT_ACC = 1000;MODE = 0;#(`clk_period*20);CNT_GO = 1;#(`clk_period);CNT_GO = 0;#(`clk_period*1200);//设置预设值为600,模式为单次定时模式CNT_ACC = 600;MODE = 0;#(`clk_period*20);CNT_GO = 1;#(`clk_period);CNT_GO = 0;#(`clk_period*1200);$stop;end

7、RTL视图

驱动蜂鸣器 Verilog相关推荐

  1. uln2003驱动蜂鸣器_让蜂鸣器发声

    预备知识:蜂鸣器介绍 开发板原理图上面蜂鸣器的电路图是这样的,根据视频知道它是一个无源蜂鸣器. 可以看到蜂鸣器的一端和电阻相连,另一端和引脚BZ相连,注意这个BZ并不是元气名称,有图可知,元气名称都是 ...

  2. gpio驱动蜂鸣器出现破音_五款蜂鸣器驱动电路原理图

    蜂鸣器驱动电路图一: 典型的蜂鸣器驱动电路,蜂鸣器驱动电路一般包含:一个三极管.一个蜂鸣器.一个续流二极管.一个滤波电容. 1.蜂鸣器:发声元件,在其两端施加直流电压(有源蜂鸣器)或者方波(无源蜂鸣器 ...

  3. 使用gpio输出驱动蜂鸣器出现破音_探索者 STM32F407 开发板资料连载第七章 蜂鸣器实验...

    1)实验平台:探索者 STM32F407 开发板 2)摘自<STM32F4 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 蜂鸣器实验 上一章,我们介绍了 ...

  4. linux蜂鸣器驱动指令,linux蜂鸣器驱动 蜂鸣器--LINUX.doc

    linux蜂鸣器驱动 蜂鸣器--LINUX 导读:就爱阅读网友为您分享以下"蜂鸣器--LINUX"的资讯,希望对您有所帮助,感谢您对92的支持! //mux = 1/16 tcfg ...

  5. 电路——I/O口定时翻转电平驱动蜂鸣器注意事项

    前言:经常做项目时用到蜂鸣器作为输出信号提示用户,接下来简单总结下蜂鸣器的一些简单注意事项. 1.蜂鸣器类型   对于软件来说,蜂鸣器按照驱动类型分为有源蜂鸣器和无源蜂鸣器. 有源蜂鸣器   在外观上 ...

  6. s5p6818PWM驱动蜂鸣器实验

    s5p6818PWM驱动蜂鸣器实验 一, PWM 概念 PWM (Pulse Width Modulation ):脉冲宽度调制解调器. 阈值:就是输出的 PWM 中,高饱和保持的时间与该PWM 的时 ...

  7. 用51单片机驱动蜂鸣器

    用51单片机驱动蜂鸣器 #include<reg51.h>//头文件 sbit BEEP=P1^5;//位定义P1的第五个端口为蜂鸣器 void delay() //延时函数 {unsig ...

  8. arduino蜂鸣器音乐代码_STM32驱动蜂鸣器演奏音乐“你笑起来真好看”

    有源蜂鸣器与无源蜂鸣器的区别 这里的"源"不是指电源,而是指震荡源. 内部自带震荡源的为有源蜂鸣器,给电就能响,但是响的频率是固定的,即响的声音是固定的. 内部没有震荡源的为无源蜂 ...

  9. STM32单片机基础12——使用通用定时器产生PWM驱动蜂鸣器

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的通用定时器外设,产生PWM驱动无源蜂鸣器. 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM ...

  10. php三极管驱动蜂鸣器计算,三分钟教你如何用三极管驱动蜂鸣器

    原标题:三分钟教你如何用三极管驱动蜂鸣器 背景知识 NPN型三极管,由三块半导体构成,其中两块N型和一块P型半导体组成,P型半导体在中间,两块N型半导体在两侧.三极管是电子电路中最重要的器件,它最主要 ...

最新文章

  1. java 线程的创建和执行_线程管理(一)线程的创建和运行
  2. 小猿圈解析vue数据双向绑定的缺点
  3. 基本机器学习面试问题 ---- Company/Industry Specific/Interest
  4. 大数据场景中语言虚拟机的应用和挑战
  5. (二)oracle的SGA
  6. mysql 视图锁_Oracle数据库的锁类型及相关视图
  7. 【概念理论】不存在的NOIP2016
  8. 将List按照指定大小等分的几种实现方式和效率对比及优化
  9. Visio绘制神经网络层Layer
  10. 帝国cms二次开发留言板自定义字段教程
  11. 谷歌Debugger调试
  12. 如何用ChatGPT做品牌联名方案策划?
  13. cocoscreator热更新
  14. 解密微信开放高级接口 企业如何应对
  15. vue + iview Table表头中插入图片
  16. 我的读书笔记 -《厚黑学》
  17. 买车容易行路难-撞车
  18. git npm命令集合
  19. 【转】电子签章(Electronic Signature)在C#中的实现方法
  20. android ui框架详解,多图详解 “Android UI”设计官方教程(二)

热门文章

  1. 研究生看论文的看的是什么
  2. WebRTC-nack机制详解
  3. 什么是GNSS测试?如何进行GNSS测试?
  4. ssrf dict MySQL_SSRF之利用dict和gopher吊打Redis
  5. 去除【CSDN论坛】【博客】所有广告的方法(非会员or非专家/版主 也可使用哦)
  6. linux 锐捷 自动,Ubuntu下锐捷自动认证设置
  7. Beats:如何在 Elastic Stack 中得到并使用 Root CA Certificate fingerprint
  8. 简易计算机系统综合设计--函数发生器
  9. 10098 全排列水题
  10. C#之AutoCAD图层样式定义