EDA技术Verilog HDL语言完成数字钟设计

这篇具有很好参考价值的文章主要介绍了EDA技术Verilog HDL语言完成数字钟设计。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数字钟单元电路设计

Quartus Ⅱ安装包
链接:https://pan.baidu.com/s/12NbAX8J6XBZ7SQAxSj4H_A
提取码:cokm

主要内容:
1.数字钟系统具有时钟、清零和校准输入信号;
2.在系统时钟信号(1Hz)作用下,能显示时、分、秒;
3.时/分/秒计数器为24进制/60进制/60进制;
4.系统可以对时、分校准。校准信号有两个,一为校准时钟输入,一为校准控制输入;
5.系统具有整点报时功能。当时间为59’58’‘、59’59’'时,系统报时各响一声(低音),持续0.5秒;整点系统响一声(高音),持续1秒;
6.采用原理图输入方式设计数字钟单元电路顶层文件 ;下载测试。

分频

module fenpin(CP,CPout);
input CP;
output CPout;
reg CPout; 
reg [31:0]Cout;
reg CP_En;
always @(posedge CP)
begin
Cout<=(Cout == 32'd50000)?32'd0:(Cout+32'd1);
CP_En<=(Cout == 32'd50000)?1'd1:1'd0;
CPout<=CP_En;
end 
endmodule

控制器

module kongzhiqi(CPout,CP,S1,S2,RET,Hour,Minute,Second,sound);
input CPout,CP,S1,S2,RET;
output [5:0] Hour;
output [5:0] Minute;
output [5:0] Second;
output sound;
reg [5:0] Hour;
reg [5:0] Minute;
reg [5:0] Second;
reg R1;
reg R2,R8,sound;
reg [10:0] Cout;
reg [31:0] C1;
reg Clk_En;
reg clk_2000;
reg cp_n;
reg c_1hz,c_2hz,c_1000hz;
reg i;

integer n2=25000000;
integer h2=25000000;

always@(posedge CP)
	begin
	C1<=(C1==32'd25000)?32'd0:(C1+32'd1);
	cp_n<=(Cout==32'd25000)?1'd1:1'd0;
	clk_2000<=cp_n;
	end 

always@(posedge CP)
if(h2<n2/2-1)h2=h2+1;
else
begin
	c_2hz=~c_2hz;
	h2=0; 
end

always@(posedge c_2hz)
begin
	if(!i)i=1;
	else i=0;
end
	
always @(posedge CPout)
	begin
	if(S1==0)
	begin
	R1=1;
	end
	if(S2==0)
	begin
	R2=1;
	end
	if(RET==0)
	begin
	R8=1;
	end
	Cout=(Cout==32'd1000)?32'd0:(Cout + 32'd1);
	Clk_En=(Cout==32'd1000)?1'd1:1'd0;
	if(Clk_En)
	begin
	if(R1==1)
	begin
	if(Hour<24)
	Hour=Hour+1;
	if(Hour==24)
	begin
	Hour=0;
	end
	R1=0;
	end
	if(R2==1)
	begin
	if(Minute<60)
	Minute=Minute+1;
	if(Minute==60)
	begin
	Minute=0;
	if(Hour<24)
	Hour=Hour+1;
	if(Hour==24)
	begin
	Hour=0;
	end
	end
	R2=0;
	end
	if(Second<60)
	Second= Second+1;
	if(Second==60)
	begin
	Second=0;
	if(Minute<60)
	Minute= Minute+1;
	if(Minute==60)
	begin
	Minute=0;
	if(Hour<24)
	Hour=Hour+1;
	if(Hour==24)
	begin
	Hour=0;
	end
	end
	end
	if(R8==1)//清零
	begin
	Hour=0;
	Minute=0;
	Second=0;
	R8=0;
	end
	end
	end
always@(Minute,Second)
	begin
	
if((Minute==59)&&(Second==58 )&& (i==1)) 
	sound=c_2hz;
else if((Minute==59)&&(Second==58 )&&( i==0) )
	sound=0;
else if((Minute==59)&&(Second==59 )&& (i==1) )
	sound=c_2hz;
else if((Minute==59)&&(Second==59 )&& (i==0) )
	sound=0;
	
	//if((Minute==59)&&(Second>57))//整点倒计时
	// sound=c_2hz;
	else if((Minute==0)&&(Second==0))
	sound=~clk_2000;
	else sound=0;
	end
endmodule

显示

module xianshi(CPout,Hour,Minute,Second,SEL,LEDAG);
input CPout;
input [5:0] Hour,Minute,Second;
output SEL;
output [6:0]LEDAG;
reg [2:0] SEL; 
reg [6:0] Led;
reg [3:0] shi1,ge1,shi2,ge2,shi3,ge3;
always @(posedge CPout )
begin
	shi1=Hour/10;
	ge1=Hour%10;
	shi2=Minute/10;
	ge2=Minute%10;
	shi3=Second/10;
	ge3=Second%10;
	//if(SEL==3'b110)//8
	if(SEL==3'b111)//1
	//判断位选SEL的值,并将此位,上的值输出到数码管
  case(shi1)
		4'b0000:Led=7'b0111_111;
		4'b0001:Led=7'b0000_110;
		4'b0010:Led=7'b1011_011;
		4'b0011:Led=7'b1001_111; 	
		4'b0100:Led=7'b1100_110; 
		4'b0101:Led=7'b1101_101;
		4'b0110:Led=7'b1111_101;
		4'b0111:Led=7'b0000_111; 
		4'b1000:Led=7'b1111_111;
		4'b1001:Led=7'b1101_111;
		default:Led=7'b0000_000;
  endcase
	//if(SEL==3'b101)//7
	if(SEL==3'b000)//2

  case(ge1)
	4'b0000:Led=7'b0111_111;
	4'b0001:Led=7'b0000_110;
	4'b0010:Led=7'b1011_011;
	4'b0011:Led=7'b1001_111; 
	4'b0100:Led=7'b1100_110; 
	4'b0101:Led=7'b1101_101;
	4'b0110:Led=7'b1111_101;
	4'b0111:Led=7'b0000_111; 
	4'b1000:Led=7'b1111_111;
	4'b1001:Led=7'b1101_111;
	default:Led=7'b0000_000;
  endcase
	if(SEL==3'b100)	Led=7'b1000_000;
	//if(SEL==3'b011)//5
	if(SEL==3'b010)//4
  case(shi2)
	4'b0000:Led=7'b0111_111;
	4'b0001:Led=7'b0000_110;
	4'b0010:Led=7'b1011_011;
	4'b0011:Led=7'b1001_111; 
	4'b0100:Led=7'b1100_110; 
	4'b0101:Led=7'b1101_101;
	4'b0110:Led=7'b1111_101;
	4'b0111:Led=7'b0000_111; 
	4'b1000:Led=7'b1111_111;
	4'b1001:Led=7'b1101_111;
	default:Led=7'b0000_000;
  endcase
	//if(SEL==3'b010)//4
	if(SEL==3'b011)//5
  case(ge2)
	4'b0000:Led=7'b0111_111;
	4'b0001:Led=7'b0000_110;
	4'b0010:Led=7'b1011_011;
	4'b0011:Led=7'b1001_111; 
	4'b0100:Led=7'b1100_110; 
	4'b0101:Led=7'b1101_101;
	4'b0110:Led=7'b1111_101;
	4'b0111:Led=7'b0000_111; 
	4'b1000:Led=7'b1111_111;
	4'b1001:Led=7'b1101_111;
	default:Led=7'b0000_000;
  endcase
	if(SEL==3'b001)  Led=7'b1000_000;
	//if(SEL==3'b000)//2
	if(SEL==3'b101)//7
  case(shi3)
	4'b0000:Led=7'b0111_111;
	4'b0001:Led=7'b0000_110;
	4'b0010:Led=7'b1011_011;
	4'b0011:Led=7'b1001_111; 
	4'b0100:Led=7'b1100_110; 
	4'b0101:Led=7'b1101_101;
	4'b0110:Led=7'b1111_101;
	4'b0111:Led=7'b0000_111; 
	4'b1000:Led=7'b1111_111;
	4'b1001:Led=7'b1101_111;
	default:Led=7'b0000_000;
  endcase
	//if(SEL==3'b111)//1
	if(SEL==3'b110)//8
  case(ge3)
	4'b0000:Led=7'b0111_111;
	4'b0001:Led=7'b0000_110;
	4'b0010:Led=7'b1011_011;
	4'b0011:Led=7'b1001_111; 
	4'b0100:Led=7'b1100_110; 
	4'b0101:Led=7'b1101_101;
	4'b0110:Led=7'b1111_101;
	4'b0111:Led=7'b0000_111; 
	4'b1000:Led=7'b1111_111;
	4'b1001:Led=7'b1101_111;
	default:Led=7'b0000_000;
  endcase
	SEL= SEL + 3'd1;
end
	assign   LEDAG=Led;
endmodule

EDA技术Verilog HDL语言完成数字钟设计
顶层原理图
EDA技术Verilog HDL语言完成数字钟设计
管脚锁定图文章来源地址https://www.toymoban.com/news/detail-504504.html

到了这里,关于EDA技术Verilog HDL语言完成数字钟设计的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 年轻人的第一个数字钟!适用于FPGA的数字钟Verilog实现

    因为闲。 当然也不是很闲,初衷是因为本科时上过的数电实验课最后的大作业就是在 FPGA 上实现一个数字钟,这个作业当时困扰了我们班的诸多同学(难以置信,我们只是学材料的弱小可怜又无助{{{(_)}}}。最终,大部分同学在 拷贝一位学长的代码 一位学长的帮助下顺利通过

    2024年02月11日
    浏览(32)
  • 【verilog】多功能数字钟的设计

    掌握数字钟的工作原理。 掌握计数器级联构成更大模值计数器的方法。  能用verilog描述简单的时序逻辑电路。         多功能数字钟应该具有的基本功能有:显示时-分-秒、整点报时、小时和分钟可调等。首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的

    2024年02月04日
    浏览(41)
  • 【电子技术综合设计】数字钟(包含计数模块、12/24进制切换模块以及闹钟模块)

    工程文件: https://pan.baidu.com/s/1PnYd2mwMUf0tgxczdcl2MA 提取码: ihrk B站演示: 【电子技术综合设计】数字电子时钟(包含计数模块、12/24进制切换模块以及闹钟模块)_哔哩哔哩_bilibili 一、设计要求 1. 24小时制的时、分、秒计时; 2. 手动调时功能; 3. 闹钟功能; 4. 12/24小时制转换;

    2023年04月22日
    浏览(38)
  • 自动报时数字钟

    设计任务和要求: 1、用数字显示时、分、秒。12小时循环一次。 2、可以在任意时刻校准时间,只用几只按钮开关实现,切求可靠方便。 3、能以蜂鸣器自动正点报时,在进时来到后或来到前,进行整点报时。 设计要求分析:       根据设计任务与要求,可初步将系统分为

    2024年02月08日
    浏览(35)
  • 实验 7 数字钟设计

    7.1 实 验 目 的 设计一个具有时功能和校的数字钟。 7.2 实 验 仪 器 与 器 材 1. EDA 开发软件 一 套 2.微机 一 台 3.实验开发系统 一 台 4.打印机 一 台 5.其他器件与材料 若 干 7.3 实 验 说 明 用 数码管显示小时 、 分 钟 和 秒钟。 三 个 按键用于时钟校准。 K1 用 与切换

    2024年01月22日
    浏览(24)
  • 【数字钟实验1】logisim

    数字逻辑大作业1.0,用logisim画数字钟(经典实验了属于是🧪) 开始做实验的时候也才刚刚学完时序逻辑那一章,计数器提都没提过(笑死我怀疑老师是特意这么安排的),而且logisim完全不会用,隧道什么的根本不懂【这也就导致了我后面没有力气做外观封装了,累了🤦‍♀️

    2024年02月11日
    浏览(33)
  • 数字系统设计(FPGA)课程设计: 多功能数字钟

    一、目的: 实现多功能数字钟,具备下列功能: 1、数字钟:能计时,实现小时、分钟、秒的显示; 2、数字跑表:精度至0.01秒 比如显示12.97秒; 3、闹钟: 可以设定闹钟,用试验箱上的蜂鸣器作为闹铃; 4、调时:可以对时间进行设定; 5、日期设定:能设定日期并显示当前

    2023年04月18日
    浏览(29)
  • 基于FPGA的数字钟设计

    这篇文章通过VHDL代码实现数字钟的功能,绑定引脚就可以看到实际的效果。 代码运行成功,就可以实现了计时(年月日/时分秒)、秒表、倒计时、闹钟的全部功能。

    2024年02月11日
    浏览(42)
  • 电子设计数字钟,multisim仿真·

    设计步骤(分模块叙述,并附上各模块与总体电路图) 1.计时模块,显示模块,调时模块设计 计数器模块由七片74LS160的芯片组成,两片为“秒”,两片为“分”,两片为“时”,还有一片作为“星期”,七个数码管显示器用来显示数字。‘秒’和‘分’采用60进制。通过异步

    2024年02月11日
    浏览(30)
  • 数电仿真实验-数字钟的设计

    1、掌握任意模值计数器的设计方法 2、掌握multisim仿真软件对电路进行仿真验证的方法。 3、掌握数字综合系统设计的方法,能够对整体电路进行功能测试及故障检测。

    2023年04月26日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包