赞
踩
让nexys 4板上的7段码LED显示时钟信息,其中包括时钟的小时,分钟,秒钟部分,且能够实现时钟的停止计时信号,手动调整小时,分钟模块功能。
值得一提的是这里的信号我都用上升沿检测来实现,这样每个模块都可以直接接受时钟信号,而进位信号或者其他的控制信号都可以通过上升沿检测模块来提供一个上升沿信号来实现
在之前的博客中已经写了60进制计数器的实现,这个时钟芯片不外乎就类似于两个60进制的计数器和一个24进制的计数器,同时两两之间有进位信号。
同时还增加了停止,手动调整这两个功能。其中停止功能只需要停止秒级信号的计数,而手动调整这个功能只需要为分钟模块和小时模块输入增加或减少信号,而控制模块只需要增加它的状态量,让它能实现6个位依次点亮,所以需要6个状态,其他的模块都不需要改变
秒级计数模块
module Counter60( input clk, input rst, //input up,//技术模式转换 input palse,//停止计数信号 output reg [5:0]cnt, output reg cout//传入下一个时钟模块信号 ); //variation declaration // reg state,state_next;//1 represents up // reg c,c_next;//show wherther up? //state logic always@(posedge clk,posedge rst) if(rst)begin cnt<=0; cout<=0; end else if(palse)//高电平停止计数 cnt<=cnt;//暂停 else//开始计数 // if(up)//高电平上升计数 if(cnt==59)begin cnt<=0; cout<=1;//在59的时候进位输出一个计数信号 end else begin cnt<=cnt+1; cout<=0; end
分钟级计数模块
module Counter60_minute(
input clk,
input rst,</
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。