全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制 您所在的位置:网站首页 怎么进行报警 全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制

全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制

2024-06-03 10:22| 来源: 网络整理| 查看: 265

目录

简单介绍:

设计思路

Verilog HDL硬件语言描述:

语言检测

引脚分配

综合

实现

器件配置

时间不饶人,我快速记录一下这个过程吧。

简单介绍:

蜂鸣器是一种最简单的发声元器件,它的应用也非常广泛,大都是作为报警或发声提醒装置。

PWM即脉冲宽度调制,PWM的输出只有高电平1和低电平0。PWM不停的重复输出周期为T,其中高电平1时间为t的脉冲,t/T是它的占空比,1/T是它的频率。

如下图是PWM信号:

下面是蜂鸣器电路原理及结构:

如下图:

BEEP网络连接到FPGA的IO上,当BEEP = 1时,三极管Q1的BE导通,则CE也导通,那么U4的2端直接接地,因此在它两端有5V的电压,那么蜂鸣器就发声了。同理,BEEP = 0时,Q1截止,U4的2端相当于开路,则蜂鸣器不会发出声音。

如下图:

基于蜂鸣器在FPGA的IO输出1就发声、0则不发声的原理,我们给IO口一个占空比为50%的PWM的信号,让蜂鸣器间歇性的发声鸣叫。

如果它的频率高则发声就显得相对尖锐急促一些,如果它的发声频率低则发声就显得低沉平缓一些。

设计思路

我们期望产生一个输出频率为25Hz(40ms)、占空比为50%的PWM信号去驱动蜂鸣器的发声。

因此,我们使用系统时钟25MHz(40ns)进行计数,每计数1,000,000次,这个计数器就清零重新计算。此外,为了得到输出的PWM占空比为50%,那么我们只要判断计数值小于最大计数值的一半即500000时,输出高电平1,反之输出低电平0。

打开ISE,新建一个工程,然后添加一个源文件,用来设计该电路。

Xilinx虽然早已不更新ISE软件了,目前的主流是VIvado,但是这也不能否认ISE,也就是集成软件环境的强大与人性化,你把代码设计好,然后把各种约束设计好,整个过程,就只需要动动手指,就可以如行云流水般进行了。

Verilog HDL硬件语言描述: `timescale 1ns / 1ps // // Company: // Engineer: // // Create Date: 22:21:57 08/14/2018 // Design Name: // Module Name: beep // Project Name: // Target Devices: // Tool versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: get a 25Hz(40ms) signal to drive beep and system clock is 25MHz(40ns) // // module beep( input ext_clk_25m, input ext_rst_n, output beep ); reg beep; reg [19:0] cnt; //20 bit get the maximum number of 1048575; //计数模块,计数达到1000 000次,计数器清零 always @ (posedge ext_clk_25m or negedge ext_rst_n) begin if(!ext_rst_n) cnt


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有