全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制 | 您所在的位置:网站首页 › 怎么进行报警 › 全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制 |
目录 简单介绍: 设计思路 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 实验室设备网 版权所有 |