交一下数码管作业:模60计数器,开发板的两个LED已经由一片CPLD译码(可能与讲师的要求有点不符合吧),时钟为20MHZ。
这是实验现象:手机的秒表开快了一点。http://v.youku.com/v_show/id_XNzIzMzQxODEy.html
/*************************************************************************
* Company:* Engineer: Superdian
*
* Create Date: 2014/6/8
* Design Name: CONTER60
* Module Name: CONTER60
* Project Name: CONTER60
* Target Devices: EP3CE5E144C8
* Tool versions:
* Description: 模60计数器,数码管动态显示。
*
* Dependencies:
*
* Revision:
* Revision 0.01 - File Created
* Additional Comments:
***************************************************************************/
module CONTER60(Clk,Rset,Led1,Led2);
input Clk;//20MHZ时钟输入
input Rset;//复位信号输入
output [3:0] Led1;//个位数码管显示控制
output [3:0] Led2;//十位数码管显示控制
reg [3:0] Led1;
reg [3:0] Led2;
reg [24:0] Delay;
always@(posedge Clk,negedge Rset)
begin
if(!Rset)
Delay<=25'd0;
else if(Delay==25'd19999999)
Delay<=25'd0;
else
Delay<=Delay+1'b1;
end
always@(posedge Clk,negedge Rset)
begin
if(!Rset)//复位,两个数码管显示0;
begin
Led1<=4'b0000;
Led2<=4'b0000;
end
else
begin
if(Delay==25'd19999999)
begin
Led1<=Led1+1'b1;//每一秒个位数码管显示至加1。
if(Led1==4'b1001)
begin Led1<=4'b0000;
Led2<=Led2+1'b1;//个位数码管清零,同时进位。
end
if(Led2==4'b0110)
Led2<=4'b0000;//十位数码管到6清零。
end
else
begin
Led1<=Led1;
Led2<=Led2;
end
end
end
endmodule