当前位置:文档之家› EDA数字时钟VerilogHDL

EDA数字时钟VerilogHDL

EDA数字时钟VerilogHDL
EDA数字时钟VerilogHDL

目录

一、实验任务 (2)

实验目的 (2)

实验要求 (2)

二、设计思路 (2)

硬件部分 (2)

软件部分 (3)

三、完成情况 (6)

四、总结与收获 (7)

具体分工.......................................................... 错误!未定义书签。

五、完整程序 (7)

一、实验任务

实验目的

1.深入了解基于EDA工具的复杂时序逻辑电路的设计。

2.理解并熟练利用EDA工具进行综合设计。

3.熟练掌握芯片烧录的流程及步骤。

4.掌握Verilog HDL 语言的语法规范及时序电路描述方法。

5.掌握多个数码管动态扫描与键盘扫描的显示原理及设计方法。

实验要求

设计一个带闹钟功能的24 小时数字钟,它包括以下几个组成部分:

①显示屏,由4 个七段数码管组成,用于显示当前时间(时:分)或设置的闹钟时间;

②数字键‘0’~‘9’,用于输入新的时间或新的闹钟时间;

③ TIME(时间)键,用于确定新的时间设置;

④ ALARM(闹钟)键,用于确定新的闹钟时间设置,或显示已设置的闹钟时间;

⑤扬声器,在当前时钟时间与闹钟时间相同时,发出蜂鸣声。

基本要求

(1) 计时功能:这是本计时器设计的基本功能,每隔一秒计时一次,并在显示屏上显示当前时间。

(2) 闹钟功能:如果当前时间与设置的闹钟时间相同,则扬声器发出蜂鸣声。

(3) 设置新的计时器时间:用户用数字键‘0’~‘9’输入新的时间,然后按"TIME"键确认。

发挥部分

(1) 设置新的闹钟时间:用户用数字键“0”~“9”输入新的时间,然后按“ALARM”键确认。

(2) 显示所设置的闹钟时间:在正常计时显示状态下,用户直接按下“ALARM”键,则已设置的闹钟时间将显示在显示屏上。

二、设计思路

硬件部分

本次数字时钟的设计主要在NC-EDA-2000C实验箱上完成,应用的芯片为Altara公司的EP1K10TC100—3芯片。该芯片具有低内核电压、低功耗的特点。芯片内门电路高达1万门,内部使用RAM作电路结构,速度高达几百MHZ,其输出可用管脚已全部开放,位于芯片的四周,用户可以根据自己的要求和芯片本身的功能自己任意定义管脚。同时为了体现实验箱的可扩展性,在芯片的两边各有一个34脚的IDE插口,可以通过数据排线与其它应用模块相连接。

除了主芯片外,主要包括三大部分:八个数码管组成的显示部分、4×4键盘构成的按

键输入部分。以及其他输入或输出部分,如:"TIME"键、“ALARM”键、时钟信号、蜂鸣器等。

8位7段数码管:采用2个进口共阴高红7段数码管组成,其连接管脚位选信号在数码管的左边由连接孔SEL0、SEL1、SEL2与其它模块连接。

数码管显示的设计示意图如下:

八位数码管显示设计示意图

4×4键盘: 4×4键盘主要是通过编程实现0~F的输入,也可以作为一个控制键。在其上方的连接孔R1、R2、R3、R4控制横向4位;C1、C2、C3、C4纵向4位。

键盘输入设计示意图如下:

4×4键盘输入设计示意图

软件部分

软件主要应用软件quartus,使用Verilog HDL语言来编写程序。在老师所给的keyscan 的基础上加入计时部分、设置部分(时间的设置和闹钟的设置)以及闹铃部分。

a)计时部分

always@(posedge clkl) //计时过程

begin

hour<=Hour;minute<=Minute;

if(reset) begin hour<=0;minute<=0;second<=0;end

else

if(second==59)

if(minute==59)

if(hour ==23) begin second<=0;minute<=0;hour<=0;end

else begin second<=0;minute<=0;hour<=hour+1;end

else begin second<=0;minute<=minute+1;end

else second<=second+1;

end

其中,clkl为1Hz的时钟信号,当每遇到一个时钟信号的上升沿时,秒钟就加1秒;当加到59时,分钟就加1,秒钟自动回到0重新计时;当分钟加到59时,时钟就加1,然后分钟回到0;当计时到23:59:59时,则回到00:00:00再进入计时。reset为清零信号,高电平有效。

b)设置部分

always @(posedge clkh)

begin

if(w==1)//设置时间

begin Hour=num1*10+num2; Minute=num3*10+num4; end

else if(p==1) //设置闹钟

begin Ahour=num1*10+num2; Aminute=num3*10+num4; end end

将按下的键值存在num1、num2、num3、num4中,再通过w和p即所谓的TIME(时间)键与ALARM(闹钟)键将输入的数值赋给初始时间或闹钟时间。

c)闹铃部分

always @(posedge clkh)//闹钟响

begin

if((hour==Ahour)&&(minute==Aminute)) ds=1;

else ds=0;

end

当设置的闹钟时间(时:分)与当前的时间(时:分)相等时,则闹铃发出响声;ds 信号可以接在蜂鸣器上或者发光二极管上。

本次设计的完整程序已附在报告的最后。整体程序编译无误。

程序中涉及的变量名称及其对应的变量意义:

引脚配置图

三、完成情况

在这次实验过程中我们完成了24小时数字时钟的设计。时钟的显示屏为七段数码管。显示出的时间格式为小时、分钟、秒钟(如图1)。

时钟含有闹钟,可以在程序中设置闹钟时间,在实际时间和闹钟时间相吻合时蜂鸣器响。图2中的二极管亮即可说明,在闹钟时间可以输出高电平,该输出接在蜂鸣器上即可使蜂鸣器响。

本次设计的闹钟为响1分钟自动关闭。图3中二极管熄灭。

图1 时间显示

图2 闹钟响(体现为发光二极管发光)

图3 发光二极管熄灭(本次设计的闹钟为响1分钟自动关闭)

四、总结与收获

在实验设计的过程中,我们首先尝试了树上和老师上课时所讲的例程,在熟悉软件和设计流程后开始了数字时钟的设计。在设计数字时钟时,我们先分设计出来时钟的自动计数显示,实现了24小时时钟。之后实验了4*4键盘,实现了键盘输入值的扫描读取。最后设计了闹钟部分,包括设置闹钟时间和到时间闹铃响。

我们通过本次实验深入了解基于EDA工具的复杂时序逻辑电路的设计,理解并熟练利用quartus进行Verilog HDL语言的设计。掌握了建立工程项目,编译调试程序,下载程序的流程和步骤。在应用的过程中掌握了数码管和键盘扫描的原理和方法。并且对Verilog HDL 语言的语法规则和几种常用语句有了更深入的理解。实验过程中通过合作的方式,小组成员积极讨论,对不同的语句进行了对比,最终确定了本次实验的完整程序。

这次完成的数字时钟只是EDA实验箱中可以实现的众多功能之一,我们也认识到Verilog HDL语言可以实现的设计还有很多,本次实验激发了我们对Verilog HDL语言的兴趣,也让我们认识到课堂的学习是有限的,想更加深入学习Verilog HDL语言,还要在今后的学习中多多自学,勤加练习。

五、完整程序

module zonghe (clkl,clkh,reset,q,w,p,kr,kc,a,b,c,d,e,f,g,sa,sb,sc,ds);

input clkl,clkh,reset; //计数时钟脉冲、扫描频率脉冲与复位信号

input q,w,p; //启动设置的控制信号、设置时间的控制信号及设置闹钟的控制信号

inout [3:0]kr; //4*4键盘的行输入/输出信号

inout [3:0]kc; //4*4键盘的列输入/输出信号

output a,b,c,d,e,f,g,sa,sb,sc,ds; //LED的7个片选信号与3个位选信号

reg a,b,c,d,e,f,g,sa,sb,sc,ds;

reg [3:0]kr,kc;

reg [6:0] display ;

reg [2:0] dcount,kcount;

reg [3:0]keyr,keyc;

reg kflag1,kflag2;

reg [6:0] buff7 ;

reg [3:0] shiwei1,gewei1,shiwei2,gewei2,shiwei3,gewei3;

reg[5:0] hour,minute,second,Ahour,Aminute,Hour,Minute; //储存当前时间的时分秒、闹钟的时分及设置的时间的时分

always@(posedge clkh) //累加两个计数值

begin

dcount<=dcount+1;

kcount<=kcount+1;

end

always @(posedge clkh) //扫描键盘

begin

if(kcount==0)

begin

kr<=4'b1111;

kc<=4'b0000;

end

else if(kcount==1)

begin

keyr<=kr;

kr<=4'bZZZZ;

end

else if(kcount==2)

begin

kr<=4'b0000;

kc<=4'b1111;

end

else if(kcount==3)

begin

keyc<=kc;

kc<=4'bZZZZ;

end

end

always@(posedge clkh) //改变键的标志位

begin

if(kcount==4 & keyr==4'b1111)

kflag1<=0;

else if(kcount==4)

kflag1<=1;

kflag2<=kflag1;

end

always@(posedge clkh) // 获取相应按键按下的结果

begin

if(kcount==5)

if(keyr==4'b1110)

case (keyc)

4'b1110:buff7<=7'b0111111; //在LED上显示0

4'b1101:buff7<=7'b0000110; //在LED上显示1

4'b1011:buff7<=7'b1011011; //在LED上显示2

4'b0111:buff7<=7'b1001111; //在LED上显示3

default :buff7<=buff7; //无变化

endcase

else if (keyr==4'b1101)

case (keyc)

4'b1110:buff7<=7'b1100110; //在LED上显示4

4'b1101:buff7<=7'b1101101; //在LED上显示5

4'b1011:buff7<=7'b1111101; //在LED上显示6

4'b0111:buff7<=7'b0000111; //在LED上显示7

default :buff7<=buff7; // 无变化

endcase

else if(keyr==4'b1011)

case (keyc)

4'b1110:buff7<=7'b1111111; // 在LED上显示8

4'b1101:buff7<=7'b1101111; // 在LED上显示9

4'b1011:buff7<=7'b1110111; //在LED上显示a

4'b0111:buff7<=7'b1111100; //在LED上显示b

default :buff7<=buff7; // 无变化

endcase

else if(keyr==4'b0111)

case (keyc)

4'b1110:buff7<=7'b0111001; //在LED上显示c

4'b1101:buff7<=7'b1011110; //在LED上显示d

4'b1011:buff7<=7'b1111001; //在LED上显示e

4'b0111:buff7<=7'b1110001; // 在LED上显示f

default:buff7<=buff7; //无变化

endcase

end

always@(posedge clkh) //显示过程

begin

sa<=dcount[0]; //将dcount赋给LED的三个片选信号

sb<=dcount[1];

sc<=dcount[2];

shiwei1=hour/10;

gewei1=hour%10;

shiwei2=minute/10;

gewei2=minute%10;

shiwei3=second/10;

gewei3=second%10;

if(dcount==3'b111)//判断位选dcount的值,并将此位上的值输出到数码管case(shiwei1) //在第一数码管上显示时钟的十位

4'b0000: display <= 7'b0111_111;

4'b0001: display<= 7'b0000_110;

4'b0010: display <= 7'b1011_011;

4'b0011: display <= 7'b1001_111;

4'b0100: display <= 7'b1100_110;

4'b0101: display <= 7'b1101_101;

4'b0110: display <= 7'b1111_101;

4'b0111: display <= 7'b0000_111;

4'b1000: display <= 7'b1111_111;

4'b1001: display <= 7'b1101_111;

default: display <= 7'b0000_000;

endcase

if(dcount==3'b000) //在第二个数码管上显示时钟的个位

case(gewei1)

4'b0000: display <= 7'b0111_111;

4'b0001: display <= 7'b0000_110;

4'b0010: display <= 7'b1011_011;

4'b0011: display <= 7'b1001_111;

4'b0100: display <= 7'b1100_110;

4'b0101: display <= 7'b1101_101;

4'b0110: display <= 7'b1111_101;

4'b0111: display <= 7'b0000_111;

4'b1000: display <= 7'b1111_111;

4'b1001: display <= 7'b1101_111;

default: display <= 7'b0000_000;

endcase

if(dcount==3'b001) //在第三个数码管上显示分钟的十位

case(shiwei2)

4'b0001: display <= 7'b0000_110;

4'b0010: display <= 7'b1011_011;

4'b0011: display <= 7'b1001_111;

4'b0100: display <= 7'b1100_110;

4'b0101: display <= 7'b1101_101;

4'b0110: display <= 7'b1111_101;

4'b0111: display <= 7'b0000_111;

4'b1000: display <= 7'b1111_111;

4'b1001: display <= 7'b1101_111;

default: display <= 7'b0000_000;

endcase

if(dcount==3'b010) //在第四个数码管上显示分钟的个位case(gewei2)

4'b0000: display <= 7'b0111_111;

4'b0001: display <= 7'b0000_110;

4'b0010: display <= 7'b1011_011;

4'b0011: display <= 7'b1001_111;

4'b0100: display <= 7'b1100_110;

4'b0101: display <= 7'b1101_101;

4'b0110: display <= 7'b1111_101;

4'b0111: display <= 7'b0000_111;

4'b1000: display <= 7'b1111_111;

4'b1001: display <= 7'b1101_111;

default: display <= 7'b0000_000;

endcase

if(dcount==3'b011) //在第五个数码管上显示秒钟的十位case(shiwei3)

4'b0000: display <= 7'b0111_111;

4'b0001: display <= 7'b0000_110;

4'b0010: display <= 7'b1011_011;

4'b0011: display <= 7'b1001_111;

4'b0100: display <= 7'b1100_110;

4'b0101: display <= 7'b1101_101;

4'b0110: display <= 7'b1111_101;

4'b0111: display <= 7'b0000_111;

4'b1000: display <= 7'b1111_111;

4'b1001: display <= 7'b1101_111;

default: display <= 7'b0000_000;

endcase

if(dcount==3'b100) //在第六个数码管上显示秒钟的个位case(gewei3)

4'b0000: display <= 7'b0111_111;

4'b0010: display <= 7'b1011_011;

4'b0011: display <= 7'b1001_111;

4'b0100: display <= 7'b1100_110;

4'b0101: display <= 7'b1101_101;

4'b0110: display <= 7'b1111_101;

4'b0111: display <= 7'b0000_111;

4'b1000: display <= 7'b1111_111;

4'b1001: display <= 7'b1101_111;

default: display <= 7'b0000_000;

endcase

if(dcount==3'b101) display <=7'b1000_000; //在第七个数码管上显示“—”

if(dcount==3'b110) display <=buff7; //在第八个数码管上显示按下的键值

end

always @(posedge clkh) //将display中存的值赋给LED的七个片选信号begin

a<=display[0];

b<=display[1];

c<=display[2];

d<=display[3];

e<=display[4];

f<=display[5];

g<=display[6];

end

always@(posedge clkl) //计时过程clkl的频率为1Hz

begin

hour<=Hour;minute<=Minute; //将设置的时间(时、分)赋给hour和minute if(reset)

begin hour<=0;minute<=0;second<=0; end //当reset为1时,将时间清零即为00:00:00

else //正常计时

if(second==59)

if(minute==59)

if(hour ==23)

begin second<=0;minute<=0;hour<=0;end

else begin second<=0;minute<=0;hour<=hour+1;end

else begin second<=0;minute<=minute+1;end

else second<=second+1;

end

integer i; //记录按键按下的次数

reg [3:0]num1,num2,num3,num4; //储存按键的键值

always @(posedge clkh)//储存按下的键值

begin

if(q==1)//启动设置

begin

i=0;

if(keyc!=4'b1111) i=i+1; //当有键按下时,i自动加1

if(i==1) //将第一个按下的按键值存入num1 begin

case ({keyr,keyc})

4'b1110_1110:num1=0;

4'b1110_1101:num1=1;

4'b1110_1011:num1=2;

4'b1110_0111:num1=3;

4'b1101_1110:num1=4;

4'b1101_1101:num1=5;

4'b1101_1011:num1=6;

4'b1101_0111:num1=7;

4'b1011_1110:num1=8;

4'b1011_1101:num1=9;

default:num1=num1;

endcase

end

if(i==2) //将第二个按下的按键值存入num2

begin

case ({keyr,keyc})

4'b1110_1110:num2=0;

4'b1110_1101:num2=1;

4'b1110_1011:num2=2;

4'b1110_0111:num2=3;

4'b1101_1110:num2=4;

4'b1101_1101:num2=5;

4'b1101_1011:num2=6;

4'b1101_0111:num2=7;

4'b1011_1110:num2=8;

4'b1011_1101:num2=9;

default:num2=num2;

endcase

end

if(i==3) //将第三个按下的按键值存入num3

begin

case ({keyr,keyc})

4'b1110_1110:num3=0;

4'b1110_1101:num3=1;

4'b1110_1011:num3=2;

4'b1110_0111:num3=3;

4'b1101_1110:num3=4;

4'b1101_1101:num3=5;

4'b1101_1011:num3=6;

4'b1101_0111:num3=7;

4'b1011_1110:num3=8;

4'b1011_1101:num3=9;

default:num3=num3;

endcase

end

if(i==4) //将第四个按下的按键值存入num4

begin

case ({keyr,keyc})

4'b1110_1110:num4=0;

4'b1110_1101:num4=1;

4'b1110_1011:num4=2;

4'b1110_0111:num4=3;

4'b1101_1110:num4=4;

4'b1101_1101:num4=5;

4'b1101_1011:num4=6;

4'b1101_0111:num4=7;

4'b1011_1110:num4=8;

4'b1011_1101:num4=9;

default:num4=num4;

endcase

end

end

end

always @(posedge clkh) //设置部分

begin

if(w==1)//设置时间

begin Hour=num1*10+num2; Minute=num3*10+num4; end else if(p==1) //设置闹钟时间

begin Ahour=num1*10+num2; Aminute=num3*10+num4; end

end

always @(posedge clkh)//闹钟响

begin

if((hour==Ahour)&&(minute==Aminute)) ds=1; //当设置的闹钟时间与当前

时间相同时发出警报else ds=0;

end

endmodule

基于eda的数字钟程序设计

一、课题要求: (1)技术要求:1、掌握多功能数字钟的工作原理。 2、应用EDA技术,VHDL语言编写程序。 3、层次化设计,设计原理框图。 4,、硬件设计及排版。 (2)功能要求:1、基本功能:能进行正常的时、分、秒计时功能,分别 由6个数码管显示24小时、60分钟、60秒的计数器 显示。 2、扩展功能:(1)能够利用按键实现“校时”“校分” “清零”功能。 (2)能利用扬声器做整点报时,整点前 五秒短声,整点长声。 (3)本人工作:负责软件部分,,编写各部分模块的VHDL程序,并且锁定 引脚,将程序下载到芯片中。 二、设计方案: 原理框图: 数字钟原理框图 一共有11个小模块:分频,片选,按键,小时,分,秒,显示模块,七段显示译码器,报时,扬声,36译码器。 左边第一个是时钟信号输入端,50Mhz到分频模块。第二个为清零按键,第三个为校分按键,第四个为校时按键。 右边第一个为七段显示译码器输出端,第二个为扬声器输出端,第三个为6个数码管输出端。

中间模块为数字钟的核心,有计时,报时,校时功能。 三、单元模块设计 1、分频模块 该模块是将时钟脉冲50Mhz分频到1000、500和1,分别给报时模块和及时模块。

2、秒模块 仿真图

该模块为60进制计数器,有分频模块得到的1hz进行计时,计时输出为秒的数值,在计时到59时进位1到co端。当按下s3时,秒清零。 3.、分模块 仿真图

该模块也为60进制计数器,计时输出为分的数值。在EN信号有效且时钟来时,计数器加1、在s2按下时,EN使能端有效,实现校分功能。 4、时模块 仿真图 该模块为24进制计数器,计时输出为小时的数值,在EN信号到来时,计数器

数字电子钟课程设计实验报告

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计任务书2016/2017 学年第一学期 学生姓名:张涛学号: 李子鹏学号: 课程设计题目:数字电子钟的设计 起迄日期:2017年1月4日~2017年7月10日 课程设计地点:科学楼 指导教师:姚爱琴 2017年月日 课程设计任务书

中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计开题报告2016/2017 学年第一学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号:

指导教师:姚爱琴 2017 年 1 月 6 日 中北大学 信息与通信工程学院 通信工程专业 《电子线路及系统》课程设计说明书2016/2017 学年第二学期 题目:数字电子钟的设计 学生姓名:张涛学号: 李子鹏学号: 指导教师:姚爱琴 2017 年月日

目录 1 引言 (6) 2 数字电子钟设计方案 (6) 2.1 数字计时器的设计思想 (6) 2.2数字电路设计及元器件参数选择 (6) 2.2.2 时、分、秒计数器 (7) 2.2.3 计数显示电路 (8) 2.2.5 整点报时电路 (10) 2.2.6 总体电路 (10) 2.3 安装与调试 (11) 2.3.1 数字电子钟PCB图 (11) 3 设计单元原理说明 (11) 3.1 555定时器原理 (12) 3.2 计数器原理 (12) 3.3 译码和数码显示电路原理 (12) 3.4 校时电路原理 (12) 4 心得与体会 (12) 1 引言 数字钟是一种用数字电子技术实现时,分,秒计时的装置,具有较高的准确性和直观性等各方面的优势,而得到广泛的应用。此次设计数字电子钟是为了了解数字钟的原理,在设计数字电子钟的过程中,用数字电子技术的理论和制作实践相结合,进一步加深数字电子技术课程知识的理解和应用,同时学会使用Multisim电子设计软件。 2数字电子钟设计方案 2.1 数字计时器的设计思想 要想构成数字钟,首先应选择一个脉冲源——能自动地产生稳定的标准时间脉冲信号。而脉冲源产生的脉冲信号地频率较高,因此,需要进行分频,使得高频脉冲信号变成适合于计时的低频脉冲信号,即“秒脉冲信号”(频率为1Hz)。经过分频器输出的秒脉冲信号到计数器中进行计数。由于计时的规律是:60秒=1分,60分=1小时,24小时=1天,就需要分别设计60进制,24进制计数器,并发出驱动信号。各计数器输出信号经译码器、驱动器到数字显示器,是“时”、“分”、“秒”得以数字显示出来。 值得注意的是:任何记时装置都有误差,因此应考虑校准时间电路。校时电路一般

EDA设计II实验报告——多功能数字钟

『EDA设计II』 课程实验报告 姓名 学号 学院 指导教师 时间 2011年 05月

多功能数字钟 摘要:本实验利用Quartus II软件设计多功能数字钟并下载到Smart SOPC实验系统,实现校分、校时、清零、保持和整点报时等多种基本功能,以及闹钟等附加功能。本实验首先通过Quartus II 软件对各模块进行原理图设计,并进行仿真调试,最后下载至实验平台验证其功能。 关键词:多功能数字钟Quartus II软件仿真封装校分校时清零保持整点报时闹钟 Abstract:The experiment is to design a multi-purpose digital clock by Quartus II and then download to the test system of Smart SOPC. It can realize many functions such as minute adjusting, hour adjusting, resetting, keeping and reporting time on integral hour. Apart from this, it can also be used as a alarm clock. First of all, we design the schematic diagram of every part. In addition, we simulate through Quartus II. At last, we download it to the tests platform and test the function. Key words:multi-purpose digital clock Quartus II simulate seal minute- adjusting hour adjusting resetting keeping reporting time on integral hour alarm clock

eda数字电子钟

唐山学院 《EDA技术》课程设计 题目数字电子钟设计 系(部) 智能与信息工程学院 班级13电本1班 姓名马建雨 学号4130208144 指导教师郭耀华、王默琦、戴彦 2016年7 月4日至7月8 日共1 周 2016年7 月8日

目录 1 引言 (1) 2 EDA技术简介 (2) 2.1 EDA技术的基本特征 (2) 2.2 硬件描述语言 (2) 3 QuartusII软件简介 (4) 3.1软件介绍 (4) 3.2 QuartusII工作环境介绍 (5) 4 课程设计说明 (8) 4.1设计内容 (8) 4.2设计要求 (8) 4.3设计目的 (8) 4.4设计思路 (8) 4.5 设计具体方案及实现 (9) 4.5.1秒、分、时计时模块 (9) 4.5.2 动态显示模块 (11) 4.5.3 整点报时模块 (13) 4.5.4 校时模块 (14) 4.6 总程序 (16) 5 总结 (17) 参考文献 (18)

1 引言 随着大规模集成电路技术和计算机技术的不断发展,在涉及通信、国防、航天、医学、工业自动化、计算机应用、仪器仪表等领域的电子系统设计工作中,EDA技术的含量正以惊人的速度上升;电子类的高新技术项目的开发也愈益依赖于EDA技术的应用。即使是普通的电子技术的开发,EDA技术常常使一些原来的技术瓶颈得以轻松突破,从而使产品的开发周期大为缩短、、性能价格比大幅提高。不言而喻,EDA技术将迅速成为电子设计领域中的极其重要的组成部分。 EDA技术的设计语言为VHDL(硬件描述语言),实验载体为可编程器件CPLD或者FPGA,进行元件模拟和仿真的目标器件为ASIC/SOC芯片。它是一种自动化设计电子产品的过程。在电子设计仿真的领域里,EDA技术的出现具有非常重要的现实意义。EDA源自于计算机辅助设计、制造、测试以及辅助工程。利用EDA工具,设计者们可以从概念、算法、协议等方面来设计电子系统。值得一提的是,在整个电子系统的设计过程中,设计电路、分析性能、布置IC 和PCB版图等步骤都可以在电脑上自动完成。 时钟是我们日常生活中必备的生活用品之一。而数字时钟的出现更是给人们的生产生活带来了极大的便利。钟表的数字化给人们生产生活带来了极大的方便,而且大大地扩展了钟表原先的报时功能。诸如定时自动报警、按时自动打铃、时间程序自动控制、定时广播、定时启闭电路、定时开关烘箱、通断动力设备,甚至各种定时电气的自动启用等,所有这些,都是以钟表数字化为基础的。因此,研究数字钟及扩大其应用,有着非常现实的意义。 EDA技术为数字类产品提供了一个非常简便实用的开发平台。随着EDA技术的快速发展,数字时钟的应用越来越广泛,并且它在功能外观方面也有了很大的改善和提高。本文就是基于EDA技术的基础知识,利用Quartus2软件再现一个具有传统时钟功能和自动报时功能的数字时钟。 数字钟采用EDA技术设计,利用硬件描述语言VHDL按模块化方式设计、编程及时序仿真等。该数字钟能实现时、分、秒计数的显示功能,且以24小时循环计时,具有清零的功能,且能够对计时系统的小时、分钟进行调整,具有整点报时功能。整个系统包括传统数字时钟所拥有的计时模块、校时模块、译码显示模块以及整点报时模块。整个系统使用方便,功能齐全,精度高。

eda数字时钟实验报告

EDA数字时钟电工电子实习 实验报告 姓名 班级 学号20

一、实验目的: 1、掌握多位计数器相连的设计方法。 2、掌握十进制、六十进制和二十四进制计数器的设计方法。 3、巩固数码管的驱动原理及编程方法。 4、掌握CPLD技术的层次化设计方法。 二、实验要求: 基本要求:具有时、分、秒计数显示功能,以二十四小时循环计时。 扩展要求:具有整点报时功能。 三、实验原理: 计数时钟由模60秒计数器、模60分计数器、模24小时计数器、蜂鸣器(用于整点报时)、分/时设定模块、输出显示模块构成,秒计数模块的进位输出为分钟计数模块的进位输入,分钟计数模块的进位输出为小时计数模块的进位输入。 74163功能简介:

图1 图2 由图1可知,74163的脉冲上升沿的时候工作。 四、实验过程

1.模60计数器(如图3) 图3 由74163实现计数功能,第一片74163实现10进制,即做0-9的循环,9即二进制的1001,化简可得当q[0]与q[3]同时为1的时候进行清零。第二片74163实现6进制,即做0-5的循环,5即二进制的111,化简可得当q[4]与q[6]同时为1的时候进行清零,同时第一片74163的进位端作为第二片的脉冲端。这样就可实现60进制。60进制计数器用于秒计数器和分计数器,秒个位的进位端作为秒十位的脉冲端秒十位的进位端作为分个位的脉冲端,分个位的进位端作为分十位的脉冲端。 2.模24计数器(如图4) 图4 分十位的进位端作为时个位的脉冲端,时个位的进位端作为时十位的脉冲端。因为24进制的特殊性,当十位是0和1的时候,个位做十进制循环,即0-9,9的二进制为1001;当十位是2的时候,个位做0-3的循环。而十位做0-2的循环。2的二进制为0010,3的二进制为0011。所以第一片74163不仅要在q[14]与q[17]同时为1的时候清零,还要在第二片74163的q[19]、第一片的q[14]、q[15]同时为1(即23时)做清零。第二片是3进制,在q[19]=1的时候进行清零。

EDA数字时钟课程设计报告

EDA技术及应用课程设计说明书 2013 届电子信息工程专业班级 题目数字时钟 学号 姓名 指导教师 二О一五年月日

一、基本原理 一个完整的时钟应由三部分组成:秒脉冲发生电路、计数显示部分和时钟调整部分。 秒脉冲发生电路原理:一个时钟的准确与否主要取决于秒脉冲的精确度。为了保证计时准确我们对系统时钟48MHz进行了48000000分频,从而得到1Hz的秒脉冲。 计数显示部分原理:显示部分是用数码管LED实现的,这里使用的是共阳极的数码管如图所示8个数码管,其中左边两个数码管用来显示时的个位和十位、中间的显示分的个位和十位、最右边两个显示分的个位和十位。 时钟调整部分原理:校时电路里定义key[0]、key[1]和k2、k3分别用于控制时钟的计时开始、清零和调整功能中的时的加1、分的加1处理,从而完成对现在的时间调整。本实验电路校时电路在此完成了暂停、清零、时调整和分调整。

二、硬件设计 芯片图: 图1 数字时钟原理图 程序的调试工作都是在电脑上完成的,通过程序的输入、原理图的建立、管脚分配、编译、仿真、再下载到芯片进行运行。

电路中采用共阳极连接的七段数码管,通过程序的控制扫描驱动来显示时钟的时-分-秒。

程序中的按键设定为K1暂停、K2清零、K3调时、K4调分元件清单: 三、数字时钟的Verilog实现 管脚的分配: 程序: module clock(clk,s1,,s2,key,dig,seg); //模块名clock input clk,s1,s2; //输入时钟 input[1:0]key; //输入按键 output[7:0]dig; //数码管选择输出引脚

EDA实验实验报告

数字eda实验实验报告 学院:计算机科学与工程学院专业:通信工程学 号: 0941903207 姓名:薛蕾指导老 师:钱强 实验一四选一数据选择器的设计 一、实验目的 1、熟悉quartus ii软件的使用。 2、了解数据选择器的工作原理。 3、熟悉eda开发 的基本流程。 二、实验原理及内容 实验原理 数据选择器在实际中得到了广泛的应用,尤其是在通信中为了利用多路信号中的一路, 可以采用数据选择器进行选择再对该路信号加以利用。从多路输入信号中选择其中一路进行 输出的电路称为数据选择器。或:在地址信号控制下,从多路输入信息中选择其中的某一路 信息作为输出的电路称为数据选择器。数据选择器又叫多路选择器,简称mux。 4选1数据 选择器: (1)原理框图:如右图。 d0 、d1、d2、d3 :输入数据 a1 、a0 :地址变量 由地址码决定从4路输入中选择哪1路输出。 (2)真值表如下图: (3)逻辑图 数据选择器的原理比较简单,首先必须设置一个选择标志信号,目的就是为了从多路信 号中选择所需要的一路信号,选择标志信号的一种状态对应着一路信号。在应用中,设置一 定的选择标志信号状态即可得到相应的某一路信号。这就是数据选择器的实现原理。 三.实验内容 1、分别采用原理图和vhdl语言的形式设计4选1数据选择器 2、对所涉及的电路进行 编译及正确的仿真。电路图: 四、实验程序 library ieee; use ieee.std_logic_1164.all; entity mux4 is port( a0, a1, a2, a3 :in std_logic; s :in std_logic_vector (1 downto 0); y :out std_logic ); end mux4; architecture archmux of mux4 is begin y <= a0 when s = 00 else --当s=00时,y=a0 a1 when s = 01 else --当s=01时,y=a1 a2 when s = 10 else --当s=10时,y=a2 a3; --当s取其它值时,y=a2 end archmux; 五、运行结果 六.实验总结 真值表分析: 当js=0时,a1,a0取00,01,10,11时,分别可取d0,d1,d2,d3. 篇二:eda实验报告模版 《eda技术》实验报告

EDA数字钟实验报告

目录 1.设计思路—————————————————————(3) 1.1总体结构——————————————————(3) 2.方案论证与选择——————————————————(3) 3.单元模块设计部分—————————————————(3)3.1 CNT10 模块的设计———————————————(4)3.2 CNT6 模块的设计———————————————(5)3.3 CNT101模块的设计———————————————(6)3.4 CNT61模块的设计———————————————(7) 3.5 CNT23模块的设计———————————————(8) 4.系统仿真—————————————————————(9) 4.1数字钟的引脚锁定———————————————(9) 4.2数字钟原理图————————————————(12) 4.3数字钟仿真图————————————————(10) 4.4数字钟编译报告———————————————(11) 5.参考文献————————————————————(13)

EDA数字钟设计 中文摘要: 数字钟学习的目的是掌握各类计数器及它们相连的设计方法;掌握多个数码管显示的原理与方法;掌握FPGA技术的层次化设计方法;掌握用VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,以24小时为计数循环;能实现清零,调节小时,分钟以及整点报时的功能。 关键词:数字钟,计数器,,FPGA,VHDL 1.设计思路 基于VHDL语言,用Top—To--Down的思想进行设计。 1.1 确定总体结构,如图1-1所示。 图1-1 2. 方案论证与选择 方案:设置小时和分,输出整点报时信号和时,分,秒信号。方案采用自顶向下的设计方法,它由秒计数模块,分计数模块,小时计数模块和顶层模块四部分组成。 3. 单元模块设计部分 RES是整个系统的复位键,低电平有效,复位时,各个输出都为零,时间显示0时0分0秒;clk是输入时钟,提供秒信号,上升沿触发,每出发一次,时间增加一秒;HRTMP,MIN10TMP,MINTMPKEYI可以分别设置小时位,10分位,分位,起到调时的作用,高电平有效,有效时,每来一个CLK时钟(1s),所对应的位都将以各自的计数循环; RING是整点报时。

EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明

EDA课程设计 多功能数字钟设计程序清单 数字系统设计与verilog HDL(第四版) 王金明 /*引脚锁定基于DE2一70,芯片为EP2C70F896,信号定义如下: Clk50m: 50MHz 时钟输, mode: 模式选择0:计时模式1:设置闹钟模式 mcheck: 手动调整时间 turn: 手动调整时间,在时、分之间选择 change: 对选中的数据调整 led hourl,led_hour0,led_minul,led_minu0,led_secl,led sec0; alert: 闹钟输出 ld_alert: 是否设置了闹钟 ld_hour,id_min,ld_sec:在调整时,指示选中了时,分还是秒*/ moduleclock(clk50m,mode,turn,change,mreset,led_hour1,led_hour0,led_minu1,led _minu0,led_sec1,led_sec0, alert,ld_alert,ld_check,ld_hour,ld_min,ld_sec); input clk50m; input mode; // key0键 input turn; //keyl键 input change; // key2 键 input mreset; //switch0复位,低电平有效 output alert; //gpioO->IOAO output ld_alert; //ledgO-led19 output ld_check; //ledgl-led22 output ld_hour; //ledr3-led13 output ld_min; //ledr9-led9

数字钟实验报告

EDA技术课程设计 ——多功能数字钟 学院:城市学院 专业、班级:电子C154 姓名:高阳夏岩 学号:158102 58128 指导老师:安亚军 2017年12月

一实验目的 1、具有时、分、秒记数显示功能,以24小时循环计时。 2、要求数字钟具有清零、调节小时、分钟功能。 3、具有整点报时,整点报时的同时LED灯花样显示 二实验原理 1时钟计数:完成时、分、秒的正确计时并且显示所计的数字;对秒、分——60进制计数,即从0到59循环计数,时钟——24进制计数,即从0到23循环计数,并且在数码管上显示数值。 2时间设置:手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。 3清零功能:reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。 4蜂鸣器在整点时有报时信号产生,蜂鸣器报警。产生“滴答.滴答”的报警声音。 5LED灯在时钟显示时有花样显示信号产生。即根据进位情况,LED不停的闪烁,从而产生“花样”信号 三实验内容 1时钟记数部分 1)小时部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下

2)分钟部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下 3)秒部分 其VHDL描述如下

编译,无误。 经仿真,其波形如下 2整点报时部分,其VHDL描述如下 编译,无误。

经仿真,其波形如下 3驱动8位八段共阴扫描数码管的片选驱动信号输出部分 其VHDL描述如下 编译,无误。 经仿真,其波形如下 4驱动八段字形译码输出部分 该模块功能:信号输入后,模块驱动八段字形译码输出,A,B,C,D,E,F,G分别接八段共阴级数码管7个接口,即有字形输出。

基于EDA技术的数字时钟设计

电子系统课程设计任务书 设计题目:基于EDA技术的数字时钟设计 设计目的:课程设计是一种复杂的学习实践过程。设计过程采用系统设计的方法,先分析任务,得到系统设计的要求,然后进行总体设计,划分子系统模块,然后进行详细设计,编写各个功能子系统VHDL代码并进行功能仿真,最后进行整个系统总装并仿真。 设计内容:设计一个采用0.5英寸LED数码管显示的数字时钟系统,工作电源5V,它采用24小时制,具有“时”、“分”、“秒”显示,并且可以校正时间显示。 设计要求: 1.由石英晶体多谐振荡器20MHz和分频器产生1Hz标准秒脉冲;(说 明:EDA试验箱中晶振频率20MHz,经试验箱内一系列二分频可将频率降低,但无法直接产生1Hz信号,需要大家根据实际情况编制分频器得到1Hz信号); 2.秒电路、分电路均为60进制计数,时电路为24进制计数; 3.数码管采用动态扫描方式; 4.能动手校时,校时模块功能可以自由发挥。比如可用两个按钮实 现校时,A按钮控制调整项目,B按钮调整数字,B按钮还可以根据按下时间长短实现慢调、快调功能。也可以用三个按钮实现增减两个方向的手动校时。校时用按钮开关不能超过4个; 5.扩展内容:1)进入校时状态后,被调整数字以2Hz闪烁; 2)24/12小时可调,处于12小时制时,要有AM/PM

显示; 3)所有开关加入防抖设计; 4)加入检测外部环境亮度功能,夜间自动降低数码管显示亮度; 5)加入整点报时电路; 6)增加秒表功能; 7)增加报闹功能。 6.以上电路功能除外部环境亮度检测电路外均由VHDL代码实现层次式设计,顶层电路可以采用EDA电路图。 设计成果: 1.课程设计说明书,要求内容完整,图表完备,条理清楚,字迹工 整,程序完整有相应的注解,仿真波形设计合理有必要的分析,引用资料要注明出处。 2.顶层电路原理图,各层电路VHDL代码及仿真波形。

数字时钟设计实验报

电子课程设计题目:数字时钟

数字时钟设计实验报告 一、设计要求: 设计一个24小时制的数字时钟。 要求:计时、显示精度到秒;有校时功能。采用中小规模集成电路设计。 发挥:增加闹钟功能。 二、设计方案: 由秒时钟信号发生器、计时电路和校时电路构成电路。 秒时钟信号发生器可由振荡器和分频器构成。 计时电路中采用两个60进制计数器分别完成秒计时和分计时;24进制计数器完成时计时;采用译码器将计数器的输出译码后送七段数码管显示。 校时电路采用开关控制时、分、秒计数器的时钟信号为校时脉冲以完成校时。 三、电路框图: 图一 数字时钟电路框图 四、电路原理图: (一)秒脉冲信号发生器 秒脉冲信号发生器是数字电子钟的核心部分,它的精度和稳定度决定了数字钟的质量。由振荡器与分频器组合产生秒脉冲信号。 ? 振荡器: 通常用555定时器与RC 构成的多谐振荡器,经过调整输出1000Hz 脉冲。 ? 分频器: 分频器功能主要有两个,一是产生标准秒脉冲信号,一是提供功能 扩展电路所需要的信号,选用三片74LS290进行级联,因为每片为1/10分频器,三片级联好获得1Hz 标准秒脉冲。其电路图如下: 译码器 译码器 译码器 时计数器 (24进制) 分计数器 (60进制) 秒计数器 (60进制) 校 时 电 路 秒信号发生器

图二秒脉冲信号发生器 (二)秒、分、时计时器电路设计 秒、分计数器为60进制计数器,小时计数器为24进制计数器。 ?60进制——秒计数器 秒的个位部分为逢十进一,十位部分为逢六进一,从而共同完成60进制计数器。当计数到59时清零并重新开始计数。秒的个位部分的设计:利用十进制计数器CD40110设计10进制计数器显示秒的个位。个位计数器由0增加到9时产生进位,连在十位部计数器脉冲输入端CP,从而实现10进制计数和进位功能。利用74LS161和74LS11设计6进制计数器显示秒的十位,当十位计数器由0增加到5时利用74LS11与门产生一个高电平接到个位、十位的CD40110的清零端,同时产生一个脉冲给分的个位。其电路图如下: 图三60进制--秒计数电路

eda数字钟程序及波形仿真图

部件一:60进制程序 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CLOCK60 IS PORT( CLK: IN STD_LOGIC; ---时钟信号NRESET: IN STD_LOGIC; ---复位端 LOAD: IN STD_LOGIC; ---置数端 D: IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---输入端 CI:IN STD_LOGIC; ---始能端 CO: OUT STD_LOGIC; ---进位脉冲 QH: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); QL: BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)); END CLOCK60; ARCHITECTURE ARTCLOCK60 OF CLOCK60 IS BEGIN CO<='1'WHEN(QH="0101" AND QL="1001" AND CI='1')ELSE'0';----进位输出PROCESS(CLK,NRESET) BEGIN IF(NRESET='0')THEN -----异步复位 QH<="0000"; QL<="0000"; ELSIF(CLK'EVENT AND CLK='1')THEN------同步置数 IF(LOAD='1')THEN QH<=D(7 DOWNTO 4); QL<=D(3 DOWNTO 0); ELSIF(CI='1')THEN IF(QL=9)THEN QL<="0000"; IF(QH=5)THEN QH<="0000"; ELSE QH<=QH+1; END IF; ELSE QL<=QL+1; END IF; END IF; END IF; END PROCESS; END ARTCLOCK60; 60进制波形图如下:

南京理工大学EDA设计 多功能数字钟的设计

EDA数字钟的设计 指导老师:谭雪琴 姜萍 姓名:张羊 学院:电子工程与光电技术学院专业:真空电子技术 学号:0804620127 完成时间:2011年4月

目录: 一.设计要求……………………………………………………………… 二.方案论证……………………………………………………………… 三.子模块设计…………………………………………………………… 1.频率源设计…………………………………………………………… ①模48计数器的设计……………………………………………… ②模1000计数器的设计…………………………………………… ③模2计数器的设计……………………………………………… ④ 1KHZ脉冲的设计………………………………………………… ⑤ 500HZ脉冲的设计……………………………………………… ⑥ 1HZ脉冲的设计………………………………………………… 2.计数部分电路设计…………………………………………………… ①模60计数器的设计……………………………………………… ②模24计数器的设计……………………………………………… ③计数器的设计…………………………………………………… 3.清零和保持电路的设计………………………………………………

4.校分和校时电路的设计……………………………………………… 5.报时电路的设计……………………………………………………… 6.显示电路的设计……………………………………………………… ①模6计数器的设计……………………………………………… ② 24选4(或六选一)数据选择器的设计………………………… ③动态显示设计…………………………………………………… 7.最终总体电路………………………………………………………… 四.附加闹铃功能………………………………………………………… ①频率源的设计…………………………………………………… ②闹铃的设计………………………………………………………五.编程下载……………………………………………………………… 六.实验总结和感受………………………………………………………七.参考文献………………………………………………………………

简单数字电子钟的设计实验报告

《EDA技术》课程实验报告 学生姓名: 所在班级: 指导教师: 记分及评价: 一、实验名称 实验1-3:简单数字电子钟的设计(原理图输入设计方法) 二、任务及要求 【基本部分】 1、在QuartusII平台上,采用原理图输入设计方法,调用两片74160十进制计数器,采 用反馈置数法,完成一个24进制同步计数器的设计,并进行时序仿真。要求具备 使能功能和异步清零功能,设计完成后封装成一个元件。 2、同1,采用原理图输入设计方法,调用两片74160十进制计数器,采用反馈置数法, 完成一个60进制同步计数器的设计,并进行时序仿真。要求具备使能功能和异步 清零功能,设计完成后封装成一个元件。 3、利用1和2所设计的60进制计数器和24进制计数器元件,采用同步的方式设计一 个简单的数字电子钟并进行时序仿真,要求具有时分秒功能显示功能、使能功能和 异步清零功能。 4、由于实验箱数码管采用的动态扫描方式,本实验暂时只要求仿真,硬件验证到实验 7再完成。 【发挥部分】 1、思考:采用反馈清零法设计的计数器与反馈置数法有何不同请用实例进行仿真。 2、如何实现电子钟时分秒连续可调的功能 三、原理图 二十四进制原理图

六十进制原理图 数字电子钟原理图

四、仿真及结果分析 24进制时序仿真图 24进制计数器采用的是两片74160集成块,利用同步置数原理,在第23个脉冲的时候跳转为零。这时个位计数器g3到g0的数值时0011,十位计数器的s3到s0的数值时0010。另外,使能断也应接入到与非门的中,与非门的作用是防止受干扰发生误写。 60进制时序仿真图 60进制计数器采用的是两片74160集成块,利用同步置数原理,在第59个脉冲的时候跳转为零。这时个位计数器g3到g0的数值时1001,十位计数器的s3到s0的数值时0101。另外,使能断也应接入到与非门的中,与非门的作用是防止受干扰发生误写。 电子时钟时序仿真图 电子时钟计数器采用的是两片60进制的计数器与一片24进制的计数器组成的,连接到一起就可以组成电子时钟计数器,要注意的是如果前面的24进制计数器与60进制计数器的使能短没接入与非门的话,可能会时钟脉冲的波形不是严格的按要求翻转。 五、小结 这次实验课,让我们更加了解了集成块74160的结构,学会使用集成块组成任意进制计数器。使用74160构成计数器时,应该注意使能端的使用、时钟脉冲信号多少,那些会影响仿真波形,但是,如果时钟脉冲多了的话,仿真波形就会在不该跳转的时候跳转。 实验中出现了很多问题,从发现错误到解决问题中自己学到了许多,明白了学习要善于思考,这样才能把自己的才能激发出来。这次的实验让我对学习EDA更加感兴趣,也增加我对这本课程的了解。

EDA数字时钟课程设计

课程设计报告 学生姓名学号 班级 专业电子信息工程 题目数字时钟设计 指导教师 2011 年11 月

一、任务和设计要求 1. 熟悉集成电路的引脚安排。 2. 掌握各芯片的逻辑功能及使用方法。 3. 了解数字钟的组成及工作原理。 4. 熟悉数字钟的设计与制作。 1.设计指标 (1)时间以24 小时为一个周期; (2)显示时、分、秒; (3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; (4)计时过程具有报时功能,当时间到达整点前 5 秒进行蜂鸣报时。 2.设计要求 (1)画出电路原理图(或仿真电路图); (2)元器件及参数选择; (3)电路仿真与调试 二、设计原理 设计思路 根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。这些模块都放在一个顶层文件中。 1)时钟计数: 首先下载程序进行复位清零操作,电子钟从00:00:00计时开始。sethour可以调整时钟的小时部分, setmin可以调整分钟,步进为1。 由于电子钟的最小计时单位是1s,因此提供给系统的内部的时钟频率应该大于1Hz,这里取100Hz。CLK端连接外部10Hz的时钟输入信号clk。对clk进行计数,当clk=10时,秒加1,当秒加到60时,分加1;当分加到60时,时加1;当时加到24时,全部清0,从新计时。 用6位数码管分别显示“时”、“分”、“秒”,通过OUTPUT( 6 DOWNTO 0 )上的信号来点亮指定的LED七段显示数码管。 2)时间设置: 手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板上的键7和键4进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。 3)清零功能: reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。 总体结构图

EDA数字钟的设计实验报告

五邑大学实验报告 实验课程名称: EDA实验 院系名称:信息工程学院 专业名称:通信工程(物联网) (一)实验目的: 设计并实现具有一定功能的数字钟。掌握各类计数器及它们相连的设计方法,掌握多个数码管显示的原理与方法,掌握FPGA的层次化设计方法,掌握VHDL语言的设计思想以及整个数字系统的设计。此数字钟具有时,分,秒计数显示功能,能实现清零,调节小时,分钟以及整点报时的功能。 (二)实验器材: 计算机一台,EDA实验箱一台。 (三)实验原理:

实验内容: 1.正常的时、分、秒计时功能,分别由6个数码管显示24小时、60分钟,60秒钟的计数器显示。 2.按键实现“校时”“校分”功能; 3.用扬声器做整点报时。当计时到达59’50”时鸣叫。 方案:利用试验箱上的七段码译码器(模式7),采用静态显示,系统时钟选择1Hz。整个系统可以是若干文件组成,用PORT MAP 实现的方式;也可以是一个文件用多进程方式实现;亦或者是用文本和图形混合的方式实现;亦或者是用LPM参数化模块实现。 (五)实验步骤: 1. 新建一个文件夹,命名为shuzizhong. 2. 输入源程序。打开QuartusⅡ,选择File→new命令。在New窗口中的DesignFiles 栏选择编译文件-的语言类型,这里选择VHDL File选项。然后在VHDL文本编译窗口中输入秒模块程序。

秒模块源程序如下: library ieee; use SECOND is port(clk,clr:in std_logic;----时钟/清零信号 sec1,sec0:out std_logic_vector(3 downto 0);----秒高位/低位 co:out std_logic);-------输出/进位信号 end SECOND; architecture SEC of SECOND is begin process(clk,clr) variable cnt1,cnt0:std_logic_vector(3 downto 0);---计数 begin if clr='1' then----当ckr为1时,高低位均为0 cnt1:="0000"; cnt0:="0000"; elsif clk'event and clk='1' then if cnt1="0101" and cnt0="1000" then----当记数为58(实际是经过59个记时脉冲)co<='1';----进位 cnt0:="1001";----低位为9 elsif cnt0<"1001" then----小于9时 cnt0:=cnt0+1;----计数 else cnt0:="0000"; if cnt1<"0101" then----高位小于5时 cnt1:=cnt1+1; else cnt1:="0000"; co<='0'; end if; end if; end if; sec1<=cnt1; sec0<=cnt0; end process; end SEC; 3.文件存盘。选择File→Save As命令,找到已经设立的文件夹,存盘文件名应与实体名一致。 4.创建工程。打开并建立新工程管理窗口,选择File→New Project Wizard命令,即弹出设置窗口,命名为57。

EDA数字钟程序代码

--分频器 library ieee; use ieee.std_logic_1164.all; entity fenpin is port(clk:in std_logic; qH: buffer std_logic; qout:buffer std_logic); end entity; architecture c20 of fenpin is begin process(clk) variable num : integer :=1; variable num1 : integer :=1 begin if clk'event and clk='0' then if(num=2)--0000000) --1HZ--10000000 to timer then num:=1;qout<=not qout; else num:=num+1; end if; if(num1=1)--000000) --1000HZ--10000 to wei then num1:=1;qH<=not qH; else num1:=num1+1; end if; end if; end process; end c20; --timer library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity Clock3 is port(clk:in std_logic; duan: out std_logic_vector(3 downto 0); wei: in std_logic_vector(2 downto 0); wei2: out std_logic_vector(2 downto 0) ); end entity; architecture clo of Clock3 is signal clk2:std_logic ; signal keys: std_logic_vector(2 downto 0); begin

EDA数字时钟

设计报告 课程名称在系统编程技术任课教师周泽华 设计题目EDA数字钟设计班级09自动化1班姓名王冰 学号0905071010 日期2012/6/4

前言 随着基于PLD的EDA技术的发展和应用领域的扩大和深入,EDA技术在电子信息、通信、自动控制及计算机应用领域的重要性日益提高。 作为现在的大学生应熟练掌握这门技术,为以后的发展打下良好的基础,本实验设计是应用QuartusII环境及VHDL语言设计一个时间可调的数字时钟。使自己熟练使用QuartusII环境来进行设计,掌握VHDL语言的设计方法。要注重理论与实践之间的不同,培养自己的实践能力!

目录 一、课程设计任务及要求 (3) 1.1实验目的 (3) 1.2功能设计 (3) 二、整体设计思想 (3) 2.1性能指标及功能设计 (3) 2.2总体方框图 (4) 三、详细设计 (4) 3.1数字钟的基本工作原理: (4) 3.1.1时基T 产生电路 (4) 3.1.2调时、调分信号的产生 (4) 3.1.3计数显示电路 (5) 3.2设计思路 (5) 3.3设计步骤 (6) 3.3.1工程建立及存盘 (6) 3.3.2工程项目的编译 (7) 3.3.3目标芯片的选择 (8) 3.3.4时序仿真 (9) 3.3.5引脚锁定 (10) 3.3.6硬件测试 (11) 3.3.7实验结果 (12) 四、设计总结 (12) 五、附录 (13) 5.1 VHDL源程序 (13) 5.2电路图 (18) 5.3仿真波形 (18)

一、课程设计任务及要求 1.1实验目的 1)熟练地运用数字系统的设计方法进行数字系统设计; 2)能进行较复杂的数字系统设计; 3)按要求设计一个数字钟。 1.2功能设计 1)有时、分、秒计数显示功能,以24小时循环计时; 2)设置复位、清零等功能; 3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间; 4)时钟计数显示时有LED灯显示; 5)具有整点报时功能。 二、整体设计思想 2.1性能指标及功能设计 1)时、分、秒计时器 时计时器为一个24进制计数器,分、秒计时器均为60进制计数器。当秒计时器接受到一个秒脉冲时,秒计数器开始从1计数到60,此时秒显示器将显示00、01、02、...、59、00;每当秒计数器数到00时,就会产生一个脉冲输出送至分计时器,此时分计数器数值在原有基础上加1,其显示器将显示00、01、02、...、59、00;每当分计数器数到00时,就会产生一个脉冲输出送至时计时器,此时时计数器数值在原有基础上加1,其显示器将显示00、01、02、...、23、00。即当数字钟运行到23点59分59秒时,当秒计时器在接受一个秒脉冲,数字钟将自动显示00点00分00秒。 2)校时电路 当开关拨至校时档时,电子钟秒计时工作,通过时、分校时开关分别对时、分进行校对,开关每按1次,与开关对应的时或分计数器加1,当调至需要的时与分时,拨动reset开关,电子钟从设置的时间开始往后计时。

相关主题
文本预览
相关文档 最新文档