【FPGA入门】简单计时器实现

一、准备工作:

有关Quartusii的初始化配置,参见我的另一篇blog:【FPGA入门】QuartusII初始化配置

二、所用工具:

芯片:10CL006YU256C8G

三、实现功能:

实现数码管从0-60计数显示

四、思路分析:

输入为50Mhz的时钟信号,一分为二,一份经PLL分频后输出到位选段选信号源CNT2,从而输出个位十位选择控制信号到位选段选输出口。

另一份到CNT60将信号源转为M=60的计数器模块,并拆分为十位个位输出到段选数据输入模块,再通过译码器实现显示

五、Quartusii配置:

1、PLL时钟分频设置

从50Mhz分频为2000Hz

2、位选段选信号源CNT2模块

module CNT2(CLK,Q);
	input CLK;
	output Q;
	reg Q1;
	assign Q=Q1;
	always @(posedge CLK) begin
				Q1 <=Q1+1;	 end
				
endmodule
	

3、位选控制器ECODE模块

module ECODE(CD,SG);
	input CD;
	output [7:0]SG;
	reg [7:0]SG;
	always @(CD)	begin
		case (CD)
			1'b0:	SG<=8'B11111110;
			1'b1:	SG<=8'B11111101;
			endcase
	end
endmodule

4、分频M=60计数模块

module CNT60(CLK,RST,Q);
	input CLK,RST;
	output [7:0]Q;
	reg [7:0]Q1;
	assign Q[7:4]=Q1/10;
	assign Q[3:0]=Q1%10;
	localparam M=60;
	
	reg [24:0] clk_cnt;
	reg		  clk_one;
	
always @(posedge CLK or negedge RST)begin
	if(!RST)
		clk_cnt <= 25'b0;
	else if (clk_cnt<25000000-1'b1)
		clk_cnt <= clk_cnt+1'b1;
	else
		clk_cnt <= 25'b0;
end

always @(posedge CLK or negedge RST)begin
	if(!RST)
		clk_one <= 1'b0;
	else if(clk_cnt==2500000-1'b1)
		clk_one <=~clk_one;
	else
		clk_one <=clk_one;
end

always @(posedge clk_one or negedge RST)begin
	if(!RST)
		Q1=8'b0;
	else if(Q1<M-1'b1)
		Q1=Q1+1'b1;
	else	
		Q1=8'b0;
end
endmodule
		

5、段选信号数据选择器模块

module MUXA(A,B,S,Y,DP);
	input [3:0]A,B;
	input S;
	output reg [3:0] Y;
	output reg DP;
always @(A,B,S) begin
			if (S==1'B0) begin Y=A;	DP=1;	end
	else 					 begin Y=B;	DP=1; end
end
	endmodule
	

6、译码器DEC6模块

module DEC6(A,LED7);
	input [3:0]A;
	output reg [6:0] LED7;
	
	always @(A) begin
				if(A==4'B0000) LED7=7'B1000000;
		else  if(A==4'B0001) LED7=7'B1111001;
		else  if(A==4'B0010) LED7=7'B0100100;
		else  if(A==4'B0011) LED7=7'B0110000;
		else  if(A==4'B0100) LED7=7'B0011001;
		else  if(A==4'B0101) LED7=7'B0010010;
		else  if(A==4'B0110) LED7=7'B0000010;
		else  					LED7=7'B1000000;
	end
endmodule

六、源码提供:

【免费】【FPGA入门】简单计时器实现

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值