⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stopwatch.v

📁 数字钟可以说明的具体功能都在文件家中,请仔细参阅,希望大家可以相互学习,共同进步
💻 V
字号:
`timescale 1ns / 100ps
module StopWatch(Mode,Clk4096Hz,Clk100HzCE,StartPauseKey,HoldResetKey,GlbReset,StopWatch);
	input Clk4096Hz,Clk100HzCE,StartPauseKey,HoldResetKey,GlbReset;
	input [1:0]	Mode;
	output [31:0]StopWatch;
	
	//variable
	wire  Running,Holding; //state
	wire Reset,ClearCounter;					   //Reset for counters
	reg [27:0]HoldCounter; //Temp variable to hold the Counter
	//27---22 21---15 14---8 7----0
	//SWHour  SWMin   SWSec	 SWPer
	wire RefreshHold;
	wire [5:0]SWHour; //Counters of each part
	wire [6:0]SWMin,SWSec; 
	wire [7:0]SWPer; 
	wire ClkPer,ClkSec,ClkMin,ClkHour; // Clock pulse of each part
	//if is current mode allow key in,
	wire IsThisMode=(Mode==2'b01);
	wire StartPause=(IsThisMode)?StartPauseKey:0;
	wire HoldReset=(IsThisMode)?HoldResetKey:0;
	assign Reset=GlbReset & ClearCounter;
	//output 
	assign StopWatch=(Holding)?
	{2'b00,HoldCounter[27:22],1'b0,HoldCounter[21:15],1'b0,HoldCounter[14:8],HoldCounter[7:0]}					 
	:{2'b00,SWHour,1'b0,SWMin,1'b0,SWSec,SWPer};					 
	
	//state part
	StopWatchCtrl U_Control
	(.StartPause(StartPause),.HoldReset(HoldReset),
	.Clk(Clk4096Hz),.CE(Clk100HzCE),.Reset(GlbReset),
	.Running(Running),.Holding(Holding),
	.RefreshHold(RefreshHold),.ClearCounter(ClearCounter));
	//refresh hold Counter//

	always @(negedge GlbReset or posedge RefreshHold)
		if(!GlbReset) HoldCounter<=0;   						
		else HoldCounter<={SWHour,SWMin,SWSec,SWPer};
			
	//counter part				
	StopWatchCount U_StopWatchCount(.CE(Running & Clk100HzCE),.Clk(Clk4096Hz),.Reset(ClearCounter),
					.SWHour(SWHour),.SWMin(SWMin),.SWPer(SWPer),.SWSec(SWSec));
endmodule

	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -