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

📄 counter55.v

📁 一些很好的FPGA设计实例
💻 V
字号:
module counter55(C_CLK,RST,C_EN,D_OUT1,D_OUT0,C_out);
output C_out;       //计数满后脉冲输出
output [3:0] D_OUT1;//计数器高位输出
output [3:0] D_OUT0;//计数器地位输出
input  C_CLK;       //1hz的方波信号
input  RST;         //低电平复位
input  C_EN;        //高电平计数器工作
reg [3:0] D_OUT1;
reg [3:0] D_OUT0;
reg C_out;
reg [3:0] CData1;   //计数值
reg [3:0] CData0;
reg [7:0] DATA;
always @(posedge C_CLK) //采用加计数,然后转换成到计数当前的值
begin
	if(RST==0||C_EN==0)//系统复位或者未工作状态
	  begin 
		C_out <= 1'b0;
		CData1 <= 4'b0000;
		CData0 <= 4'b0000;
	  end
	else                //加计数器
	  begin
	    if(CData0 == 4'b0101 && CData1 == 4'b0101)
		  begin
	    	CData1 <= 4'b0000;
	        CData0 <= 4'b0000;
	        C_out = 1'b1;
	      end		
		else if(CData0 != 4'b1001)
		  begin
			CData0 <= CData0 + 1;
			C_out <= 1'b0;
		  end
		else if(CData0 == 4'b1001 && CData1 != 4'b0110)
		  begin
			CData1 <= CData1 + 1;
			CData0 <= 4'b0000;
			C_out <= 1'b0;
		  end
		else
	      begin
	    	CData1 <= 4'b0000;
	        CData0 <= 4'b0000;
	        C_out = 1'b1;
	      end
	end
end
always                 //加计数器的计数值到倒计时的数值转换
begin
	DATA <= 8'b01010101-((CData1<<4)+CData0);//55-当前计数值为倒计时值(BCD码表示的)
	if(((DATA>>4)&4'b1111)>4'b0101) //如果倒计时值高位大于5
		D_OUT1 <= (DATA>>4)&4'b1111-4'b1111;//
	else
		D_OUT1 <= (DATA>>4)&4'b1111;//
	if((DATA&4'b1111)>4'b1001)//
		D_OUT0 <= (DATA&4'b1111)-4'b0110;//
	else
		D_OUT0 <= DATA&4'b1111;//
end
endmodule

⌨️ 快捷键说明

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