首页 > 其他分享 >FPGA之计数器简单运用(看注释

FPGA之计数器简单运用(看注释

时间:2024-02-26 15:24:18浏览次数:26  
标签:led FPGA clk counter 注释 计数器 rst reg

先写源文件counter.v

//////////////////////////////////////////////////////////////////////////////////
// Module Name: counter
// 板子晶振为50mhz,就是50106hz,周期为20*10(-9)s,s/ms/us/ns/ps,相邻两单位前者是后者的1000倍
//所以为20ns,
//////////////////////////////////////////////////////////////////////////////////
/

本题目要求满500ms时led状态翻转,那么就是满2510^6次翻转,可以明确输出是led,输入是时钟,复位键
计数器既不属于输出也不属于输入,所以不是外部端口,所以不需要在ports_list中,接着打开计算器程序员模式
看看25
10^6转为二进制是多少位以此来设置counter的范围
之所以clk算是输入我的理解是他作为外部时钟信号(应该是吧)
在这个源文件中就是设置逻辑要考虑情况有
1.rst按下以后,counter要清零,led熄灭
2.counter满了之后,led转变状态
*/

module counter(
clk,
rst,
led
);
input clk;
input rst;
output led;
reg led;
reg [24:0]counter;
parameter CNT_max = 24_999_999;//他是从0开始计数,那么到24999999就有25000000个周期

//事件控制有rst的按下,所以是下降沿,时钟满一个周期后关注其上升沿,从而对counter计数
always@(posedge clk or negedge rst)
begin
	if (!rst)
		begin
		counter <= 25'b0;
		end
	else if (counter == CNT_max)
		counter <= 25'b0;
	else
		counter <= counter + 1'b1;
	
end

//事件控制有rst的按下,所以是下降沿,时钟满一个周期后关注其上升沿,从而对led进行控制
always@(posedge clk or negedge rst)
begin
	if (!rst)
		begin
		led <= 0;
		end
	else if (counter == CNT_max)
		led <= ~led;
	else
		led <= led;
	
end

endmodule

//////////////////////////////////////////////////////////////////
再来看仿真文件counter_tb.v
`timescale 1ns / 1ns
//////////////////////////////////////////////////////////////////////////////////
// Module Name: counter_tb
//////////////////////////////////////////////////////////////////////////////////

//仿真只是给激励信号,所以这里面不需要涉及到计数器
module counter_tb(
);
reg clk;
reg rst;
wire led;

counter cnt(
	.clk(clk),
	.rst(rst),
	.led(led)
);

initial clk = 1;
always #10 clk = ~clk;//这里不是事件控制,只是需要一个时间,一个周期是20ns,那么正负各一半

// counter = 0;这里面都没涉及到counter所以不需要给counter设置初始值
// 重点是设置时钟周期,还是分开写吧,刚刚阻塞赋值和非阻塞赋值放在一起了

initial begin
rst <= 0;
#201;//模拟按下rst201ns,之所以加一,是为了不和时钟翻转冲突
rst <= 1;
#20000000000;//模拟松开rst
$stop;
end

endmodule

标签:led,FPGA,clk,counter,注释,计数器,rst,reg
From: https://www.cnblogs.com/cccofHIT/p/18034392

相关文章

  • C# 引用DLL调用时注释无法显示
    C#引用DLL调用时注释无法显示修改前,调用DLL中的方法没有注释:修改后,调用DLL中的方法有注释:解决办法:在生成DLL时,将项目属性的生成页面中,勾选“XML文档文件”使用时,需要将XML文件和DLL文件放在同一目录下转载:https://www.cnblogs.com/KingKwon/p/7419508.html......
  • FPGA之38译码器(看注释)
    先是编写源文件,我习惯把他的名字与项目名称统一decoder_3_8.v/*模块思路是输入abc,输出8选1,先定义各个端口,考虑到输出有多个选择所以用[7:0]*/moduledecoder_3_8(a,b,c,out);inputa;inputb;inputc;outputout;//注意在always中必须使用reg变量,所以还要把out转为......
  • Golang Swag 注释
    常用的注释用法:@title:指定API的标题。@description:对API的简要描述。@version:API的版本号。@termsOfService:API的使用条款。@contact:API的联系方式,例如邮箱。@license:API的许可证信息。@host:API的主机名和端口号。@BasePath:API的基本路径。@S......
  • 业界唯一单芯片自适应射频平台:XCZU42DR-L2FSVE1156I、XCZU42DR-1FFVE1156I、XCZU65DR-
    ZynqUltraScale+RFSoC是业界唯一单芯片自适应射频平台。ZynqUltraScale+RFSoC是一种异构计算架构,包括完整的Arm处理子系统、FPGA架构,以及RF信号链中的完整模数可编程性,其不仅可为不同的应用提供一个完整的单片软件定义无线电平台,而且还有助于随着市场动态的发展,生产无线......
  • vs2010 快捷键 注释
        3.写代码时经常要注释一些代码,测试,然后再取消注释,反复如此,可以记住这两个快捷键,按Ctrl+K,Ctrl+C注释代码,按Ctrl+K,Ctrl+U取消注释。可以在开发中不用将手在键盘和鼠标间移来移去,是一件多么惬意的事啊。这时候还可以配合Shift+上下键头,可以选择多行。就此告别用鼠标选......
  • 《Linux内核完全注释》(3)
    关于博客:当公开学习笔记写,如果对于有感想的地方就发散一下,没有感想的地方就了解学习一下。总之这个笔记不能代替书,也不是那种总结手册,更像是学习日记,请各位朋友理解。3.4C与汇编程序相互调用在Linux内核程序boot/head.s执行完基本初始化操作之后,就会跳转去执行init/main.c......
  • PC上位机通过TCP传输视频至FPGA小结
    笔记:TCP/IPLWIPFPGA笔记-CSDN博客上位机建立TCP/IP连接:Matlab实现-CSDN博客小结:1.通过Matlab建立的上位机非常稳定,可以轻松实现图片的发送;clc;clearall;closeall;warningoff;%ConfigPacketFramePacketConfigPacket_Length=14;%配置包单帧长ConfigPack......
  • /* istanbul ignore next */ 这个注释是什么意思
    /*istanbulignorenext*/是一个针对Istanbul(或其后续项目nyc)代码覆盖率工具的特殊注释。当这个注释出现在JavaScript代码中,它指示Istanbul在生成代码覆盖率报告时忽略紧跟在该注释之后的一行或多行代码。Istanbul是一个流行的测试覆盖率工具,用于计算测试用例对代码库......
  • powerdesigner 生成mysql脚本,要求字段、表名有注释
    1.字段注释设置:在pdm视图中,Database-->EditCurrentDBMS。   找到MySql5.0-->Script-->Objects-->Column-->Add。a)原来的内容%20:COLUMN%[%National%?national]%DATATYPE%[%Unsigned%?unsigned][%ZeroFill%?zerofill][[.O:[characterset][charset]]%Ch......
  • 《Linux内核完全注释》(2)
    3内核编程语言和环境首先介绍了as86和GNUas汇编程序的语法和使用方法,对GNUC中的内联汇编、语句表达式、寄存器变量和内联函数等C语言扩展内容进行介绍,同时描述了C和汇编函数之间的相互调用机制。3.1as86汇编器是一个可以产生16位代码的汇编器,与之配套的是ld86链接器。其是B......