名称:复位键和蜂鸣器测试设计Verilog代码VIVADO ARTIX-7开发板
软件:VIVADO
语言:Verilog
代码功能:
复位键和蜂鸣器测试
对时钟做分频,产生1Hz的分频信号控制蜂鸣器发声;按复位键完成复位,蜂鸣器停止。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
本代码已在ARTIX-7开发板验证,ARTIX-7开发板如下,其他开发板可以修改管脚适配:
设计文档:
1简介
本代码介绍使用计数器产生一个频率1Hz、占空比50%的脉冲信号,并将整个脉冲信号作为蜂鸣器输入,从而驱动蜂鸣器产生嘀嘀声。
2实验原理
蜂鸣器的原理很简单,就是通过不同的频率脉冲产生不同的声音。
3程序设计
//时钟计数,对100MHz的时钟进行100000000计数,即1秒钟重复计数
always @(posedge sys_clk_i)
begin
if(clk_cnt > 32'd100000000)
begin
clk_cnt <= 32'b0;
end
else
begin
clk_cnt <= clk_cnt + 1'b1;
end
end
//蜂鸣器输出,当计数器大于50000000,即0.5ms时产生高电平脉冲,小于等于则产生低电平脉冲
always @(posedge sys_clk_i)
begin
if(clk_cnt > 32'd50000000)
begin
fm_out <= 1'b1;
end
else
begin
fm_out <= 1'b0;
end
end
4.实验现象
将目录“... at7_prj_03at7_prjat7_prj.runsimpl_1”文件夹下的 at7_prj.bit 文件下载到开发板上,则蜂鸣器发出1Hz的嘀嘀声。
部分代码展示:
`timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2019/04/13 17:54:08 // Design Name: // Module Name: at7_prj // Project Name: // Target Devices: // Tool Versions: // Description: // // Dependencies: // // Revision: // Revision 0.01 - File Created // Additional Comments: // ////////////////////////////////////////////////////////////////////////////////// module at7_prj( input sys_clk_i,//外部输入100MHz时钟信号 input ext_rst_n,//外部输入复位信号,低电平有效 output reg fm_out //蜂鸣器输出 ); reg [31:0] clk_cnt; //时钟计数 always @(posedge sys_clk_i) begin if(clk_cnt > 32'd100000000) begin clk_cnt <= 32'b0; end
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1329
333