FPGA学习之蜂鸣器

来源:本站
导读:目前正在解读《FPGA学习之蜂鸣器》的相关信息,《FPGA学习之蜂鸣器》是由用户自行发布的知识型内容!下面请观看由(电工技术网 - www.9ddd.net)用户发布《FPGA学习之蜂鸣器》的详细说明。
简介:本文章是关于FPGA学习之蜂鸣器的。

将自己学习的一些东西记录下来。

modulelianxi2(clk,rst_n,fm);inputclk;//板子时钟,50MHzinputrst_n;//复位,低电平有效outputregfm;//fm在赋值左边,需要定义为reg型reg[20:0]cnt;//21位计数器,最大计数2的21次方always@(posedgeclkornegedgerst_n)if(!rst_n)cnt<=21'd0;elseif(cnt<21'd1_999_999)//从0开始,共计数2_000_000次,即40mscnt<=cnt+1'b1;elsecnt<=21'd0;always@(posedgeclkornegedgerst_n)if(!rst_n)fm<=1'b0;elseif(cnt<21'd1_000_000)//从0开始,共计数1_000_000次,即前一半时间fm高电平,后一半时间fm低电平,即占空比为50%的PWM信号fm<=1'b1;elsefm<=1'b0;endmodule

FPGA学习之蜂鸣器

上图为PWM模型

可以修改T(cnt < 21'd1_999_999)或者t(cnt < 21'd1_000_000)来获得不同的模型

下面为测试文件testbench

`timescale1ns/1ns`defineclk_period20//定义时钟周期为20nsmodulelianxi2_tb;regclk;//将.v文件中的端口复制过来,input修改为reg,output修改为wireregrst_n;wirefm;lianxi2lianxi2//将.v文件中的端口复制过来,加个例化名字,加个.,加个例化的端口(.clk(clk),.rst_n(rst_n),.fm(fm));initialclk=1;//初始化时钟clkalways#(`clk_period/2)clk=~clk;initialbeginrst_n=1'b0;#(`clk_period*20)//初始rst_n为低电平,延时400ns后复位rst_n=1'b1;#(`clk_period*4000000)//程序继续进行4_000_000*20ns=80ms$stop;endendmodule

得到的波形如下

FPGA学习之蜂鸣器

可以看到得到的fm波形,周期是40ms,占空比为50%。

提醒:《FPGA学习之蜂鸣器》最后刷新时间 2024-03-14 00:55:59,本站为公益型个人网站,仅供个人学习和记录信息,不进行任何商业性质的盈利。如果内容、图片资源失效或内容涉及侵权,请反馈至,我们会及时处理。本站只保证内容的可读性,无法保证真实性,《FPGA学习之蜂鸣器》该内容的真实性请自行鉴别。