FPGA开发——蜂鸣器的控制

一、概述

在项目开发的过程当中,我会通常会需要一个东西就行报警显示,有使用语音报警,信息报警等注入此类的方式,但最为简单使用的还是蜂鸣器的使用,蜂鸣器控制简单,成本低,是最为常用的模块之一。今天我们就来对蜂鸣器在FPGA中的使用进行一个简单实现。

二、概念

蜂鸣器原理图

从图中可以看出我们这使用的蜂鸣器是高电平触发。初始蜂鸣器为低电平,当控制引脚按下按下,接通高电平,蜂鸣器通过高电平。这里就一个控制引脚,没有其他需要特别注意的。

三、工程实现

1、设计文件

新建beep.v文件,如下:

cpp 复制代码
//蜂鸣器
module beep(
  input         clk,
  input         rst_n,
  input         flag1,
  output    reg    beep_out
);
parameter TIME=50_000_000;
reg [26:0] cnt;
wire add_cnt;
wire end_cnt;
//分频系数
always @(posedge clk or negedge rst_n)begin 
  if(!rst_n)
    cnt<=0;
  else if(add_cnt)begin 
    if(end_cnt)
      cnt<=0;
    else
      cnt<=cnt+1'b1;
  end
end 
assign add_cnt=1'b1;
assign end_cnt=add_cnt &&(cnt==TIME-1); 
//pwm输出
always @(posedge clk or negedge rst_n)begin
  if(!rst_n)
    beep_out<=1'b0;
  else if(end_cnt)
    beep_out<=~beep_out;
end
endmodule 

2、测试文件

cpp 复制代码
//定义时间尺度
`timescale 1ns/1ns
module beep_tb ;

//输入信号定义
reg          clk           ;  
reg          rst_n         ; 
wire         beep_out       ;
//模块例化
beep beep_inst(
  /*input        */ .clk        (clk      )   ,
  /*input        */ .rst_n      (rst_n    )   ,
  /*output       */ .beep_out    (beep_out  )   
);
defparam beep_inst.TIME =100;
//激励信号产生
parameter CLK_CYC = 20;
//时钟
initial clk=1;
always #(CLK_CYC/2)clk=~clk;

//复位
initial begin
    rst_n= 1'b0;
    #(CLK_CYC*2);
    #3;//复位结束避开时钟上升沿
    rst_n= 1'b1;
end
endmodule

四、波形仿真

通过仿真波形图可以看到当计数器计数了一个周期之后,蜂鸣器状态变换一次,最终在开发板上实现了蜂鸣器响和不响的状态实现

相关推荐
wbc103155583 小时前
基于 VSCode + Icarus 的 Verilog 编译和仿真
ide·vscode·编辑器
weixin_452077643 小时前
oai compatible provider for copilot for deepseek UI界面设置
vscode·copilot
xiaobobo33304 小时前
vscode如何免秘钥登入Ubuntu
vscode·ssh·免秘钥登入·ubuntu虚拟机
lf2824814314 小时前
08 AD9361自发自收PS工程搭建
fpga开发
谷哥的小弟6 小时前
(最新版)VSCode安装图文详解教程
ide·vscode·编辑器·教程·前端开发·图文
zlinear数据采集卡6 小时前
电源纹波无处遁形!工业采集卡电源去耦与滤波电路深度解析
c语言·嵌入式硬件·fpga开发·自动化·硬件架构
IOT.FIVE.NO.17 小时前
Codex+Vscode+Remote ssh+ 服务器自定义第三方API配置保姆级教程
ide·vscode·编辑器
xiaobobo33307 小时前
vscode打开Ubuntu虚拟机中文件资源管理器加载慢
vscode·ubuntu·资源管理器·加载慢
香菇滑稽之谈8 小时前
VSCode配置QT环境
ide·vscode·qt