EDA数字秒表的设计

时间:2019-05-12 03:43:32下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《EDA数字秒表的设计》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《EDA数字秒表的设计》。

第一篇:EDA数字秒表的设计

设 计 报 告——数字秒表的设计

EDA 一 设计目的

1.根据设计要求,完成对数字秒表的设计。

2.进一步加强对QuartusⅡ的应用和对Verilog HDL语言的使用。

二 设计内容和要求

1.计时精度应大于1/100S,计时器能显示1/100S的时间,提供给计时器内部定时的时钟频率应大于100Hz,这里选用KHz。

2.计时器的最大计时时间为1小时,为此需要6位的显示器,显示的最长时间为59分59.99秒。

3.设置有复位和起/停开关,复位开关用来使计数器清零,做好计时准备。起停开关的使用方法与传统的机械式计数器相同,即按一下,启动计时器开始计时,再按一下计时终止。

三 系统设计方案

自顶向下的设计自顶向下的设计方法是数字系统设计中最常用的设计方法.也是基于芯片的系统设计的主要方法。

自顶向下的设计方法利用功能分割手段将设计由上到下 进行层次话和模块化,及分层次、分模块进行设计和仿真。功能分割时,将系统功能分解为功能块,功能块再分解为逻辑块,逻辑块再分解为更少的逻辑块和电路。如此分割,逐步的将系统细化,将功能逐步的具体化,模块化。高层次设计进行功能和接口描述,说明模块的功能和接口,模块功能的更详细描述在下一设计层次说明,最底层的设计才涉及具体寄存器和逻辑门电路等实现方式的描述。四 模块设计 1.分频模块

将输入1KHZ的系统时钟经过十分频分为100HZ的单位时钟。编程原理跟计数器原理相似。

2.定时模块

采用2个60进制、1个100进制的BCD码全加器作为定时器,分为分,秒,百分秒,输入时钟信号为分频器输出信号100HZ时钟,外界两个拨码开关作为清零按钮和暂停按钮。

3.位选发生器:

根据显示的数据位和人眼暂留效应,设计显示分为分、秒、百分秒位,每位需要2个数码管进行显示,因此变化频率至少为300HZ,为了方便则采用1KHZ,循环码则从000循环到101。

4.多路选择器

根据位选信号,输出对应位显示的数据。

5.译码器

将多路选择器输出端的数据对应的转换为七段二进制数,送给显示器。

五 顶层原理图

以上所描述的模块的程序编写均在同一工程下,由程序生成的元件也在该工程下,所以可以在该工程下再建一原理图作为顶层,将所需要的元件按照要求进行连线,加入输入输出处端口并改名。包层原理图,并将原理图置为顶层文件。

由于我们的程序是写在一起的,所以本设计的整体原理图如图1所示:

qweclkINPUTVCCclkrstkey2instout_wei[7..0]out_duan[7..0]OUTPUTout_wei[7..0]rstINPUTVCCOUTPUTout_duan[7..0]key2INPUTVCC图1.实验原理图

六 系统仿真与引脚分配

本实验结果的仿真图与引脚分配如下图2

引脚分配

实验原理图

图2.实验结果仿真图与引脚分配

七 器件编程与硬件下载

1.在Quartus软件中为顶层文件选择好芯片类型,选择引脚后进行编译。

2.将实验箱端口与计算机相应端口连接,检测试验箱是否可以使用,经检测无误后,关闭试验箱,将主芯片标号对应顶层文件相应引脚标号连线到相应器件处。即输入时钟信号端接试验箱时钟发生电路CLK输出端(用50MHz信号),启动新号段与归零信号端分别接两个拨码开关,输出端count[2..0]分别接3/8译码器的SEL2—SEL0端,输出a,b,c,d,e,f,g,h端接显示译码器的相应输入端,连接好线后打开试验箱电源,将设计好的程序下载到试验箱的芯片上即可测试功能。八 总结及心得

1.总结

通过这次课程设计让我对EDA这门课有了更深刻的了解,对设计过程中困难重重现总结如: 在程序编写时,先要在心中规划一个大概流程,然后编写,经过与其他同学多次合作修改最终编译而成,在如何编写程序方面收获颇多;

在往开发板上导程序的时候,虽然出现了几次错误,但是只要有耐心,就能获得成功。2.心得体会

这次EDA课程设计,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。特别是当程序编写调试成功时,心里特别的开心。但在编写时,有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。在波形仿真时,也遇到了一点困难,想要的结果不能在波形上得到正确的显示。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次设计的数字秒表还是比较成功的,在设计中遇到了很多问题,最后在同学的帮助下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。最后,对给过我帮助的所有同学再次表示忠心的感谢!九 设计程序如下:

module qwe(clk,out_wei,out_duan,rst,key2);//key2==27pin input rst;input clk;input key2;output [7:0]out_wei;output [7:0]out_duan;reg [7:0]out_wei=8'b00000000;reg [7:0]out_duan=8'b00000011;//a b c d e f g dp reg [4:0]count;reg [3:0]count1;reg [14:0]count2;reg [7:0]sec_l=8'b00000011;reg [7:0]sec_h=8'b00000011;reg [7:0]fen_l=8'b00000011;reg [7:0]fen_h=8'b00000011;reg [7:0]msec_l=8'b00000011;reg [7:0]msec_h=8'b00000011;reg [3:0]s_1=0;reg [3:0]s_2=0;reg [3:0]s_3=0;reg [3:0]s_4=0;reg [3:0]s_5=0;reg [3:0]s_6=0;reg clk_out;reg pause;//信号

always@(posedge clk)begin if(count2==25000)

count2<=0;

clk_out<=~clk_out;end else count2<=count2+1;end always@(posedge clk_out)begin count<=count+1'b1;case(count)

:begin

end

3:begin

end

6:begin

//zero at first //fenpin begin //one of thousand secend 25000

//scan

out_wei<=8'b11111110;

out_duan<=msec_l;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;out_wei<=8'b11111101;out_duan<=msec_h;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;

out_wei<=8'b11110111;out_duan<=sec_l;

//out_wei<=8'b11111011;//out_duan<=8'b00000100;//out_wei<=8'b11011111;//out_duan<=8'b00000100;

end

9:begin

out_wei<=8'b11101111;

out_duan<=sec_h;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

12:begin

out_wei<=8'b10111111;

out_duan<=fen_l;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

15:begin

out_wei<=8'b01111111;

out_duan<=fen_h;

//out_wei<=8'b11111011;

//out_duan<=8'b00000100;

//out_wei<=8'b11011111;

//out_duan<=8'b00000100;

end

18:count<=0;endcase end

always@(negedge key2)begin

pause<=~pause;end

always@(posedge clk_out or negedge rst)begin //minite secend if(!rst)begin

s_1<=0;

s_2<=0;

s_3<=0;

s_4<=0;

s_5<=0;

s_6<=0;end else if(count1==10)begin //if 1s l+1

count1<=0;

if(s_6==9)begin

s_6<=0;

if(s_5==9)begin

s_5<=0;

if(s_1==9)begin

s_1<=0;

if(s_2==5)begin

s_2<=0;

if(s_3==9)begin

s_3<=0;

if(s_4==5)

s_4<=0;

else s_4<=s_4+1;

end else s_3<=s_3+1;

end else s_2<=s_2+1;

end else s_1<=s_1+1;

end else s_5<=s_5+1;

end else s_6<=s_6+1;

end

else if(pause==1)begin

count1<=count1+1;

end end //这下面全部是扫描显示用的。

always@(s_1 or s_2 or s_3 or s_4 or s_5 or s_6)begin

case(s_1)

0:sec_l=8'b11000000;

1:sec_l=8'b11111001;

2:sec_l=8'b10100100;

3:sec_l=8'b10110000;

4:sec_l=8'b10011001;

5:sec_l=8'b10010010;

6:sec_l=8'b10000010;

7:sec_l=8'b11111000;

8:sec_l=8'b10000000;

9:sec_l=8'b10010000;

default:sec_l=1'bx;

endcase

case(s_2)

0:sec_h=8'b11000000;

1:sec_h=8'b11111001;

2:sec_h=8'b10100100;

3:sec_h=8'b10110000;

4:sec_h=8'b10011001;

5:sec_h=8'b10010010;

6:sec_h=8'b10000010;

default:sec_h=1'bx;

endcase

case(s_3)

0:fen_l=8'b11000000;

1:fen_l=8'b11111001;

2:fen_l=8'b10100100;

3:fen_l=8'b10110000;

4:fen_l=8'b10011001;

5:fen_l=8'b01001001;

6:fen_l=8'b10010010;

7:fen_l=8'b10000010;

8:fen_l=8'b10000000;

9:fen_l=8'b10010000;

default:fen_l=1'bx;

endcase

case(s_4)

0:fen_h=8'b11000000;

1:fen_h=8'b11111001;

2:fen_h=8'b10100100;

3:fen_h=8'b10110000;

4:fen_h=8'b10011001;

5:fen_h=8'b01001001;

6:fen_h=8'b10010010;

default:fen_h=1'bx;

endcase

case(s_6)

0:msec_l=8'b11000000;

1:msec_l=8'b11111001;

2:msec_l=8'b10100100;

3:msec_l=8'b10110000;

4:msec_l=8'b10011001;

5:msec_l=8'b10011001;

6:msec_l=8'b10010010;

7:msec_l=8'b10000010;

8:msec_l=8'b10000000;

9:msec_l=8'b10010000;

default:msec_l=1'bx;

endcase

case(s_5)

0:msec_h=8'b11000000;

1:msec_h=8'b11111001;

2:msec_h=8'b10100100;

3:msec_h=8'b10110000;

4:msec_h=8'b10011001;

5:msec_h=8'b10011001;

6:msec_h=8'b10010010;

7:msec_h=8'b10000010;

8:msec_h=8'b10000000;

9:msec_h=8'b10010000;

default:msec_h=1'bx;

endcase end endmodule

第二篇:EDA课程设计 数字时钟

EDA

课程设计报告

一·设计任务

使用硬件描述语言,在CPLD/FPGA上实现一个多功能数字钟。

二·设计要求

除按键、LED、扬声器、时钟信号外,整个数字钟的功能要求在一块芯片上实现。

a)具有时,分,秒,计数显示功能,以24小时循环计时; b)具有时间清零功能;

c)具有小时、分钟和秒钟调整功能(个位和十位分开调或合起来调)。

d)具有闹钟功能,能预设闹钟时间,精确到秒。

整个数字钟只设一个时钟输入端口,所需不同频率信

号在内部分频实现。(LED扫描频率设为50Hz以上)。

三·设计方案

设计采用模块方式,分别为分频模块:产生1Hz的脉冲作为秒的输入,和产生1kHz的脉冲作为数码管显示的动态扫描。计时模块:秒模块,分模块,时模块。闹钟模块,显示模块,控制模块。

四·模块端口设置

1.分频模块

输入:clkin :

本实验输入为50MHz晶振

输出:clk : 为显示模块及始终调节提供1KHz脉冲

clkt: 为计数器模块提供1Hz脉冲

2.计时模块

m 是模式按键,当m=0 时,进入计时模式,在计时模式下可以进行时间调整。num3,num4 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的频率由clk 提

供。counta,count1 是手动调节时间。Turn 接按键,可以改变当前调节的是小时还是分钟,长按turn 键还可以使秒钟信号清零。sec1,min1,hour1 输出的是计时的秒,分,时。

3.闹钟模块

原理:num1,num2 产生加速调整时间,当其值为1 时,可以快速调整时间,该调整时间的

频率由clk 提供。countb,count2 是手动调节闹钟时间。amin,ahour 是输出的闹钟的分钟和 小时 4.控制模块

m 是模式按键,当m=0 时,指当前输出的是计时功能;当m=1 时,指当前调整的是

闹钟时间;当m=2 时,指当前调整的是计时时间;当m=3 时,此时turn 按键可用于跑表的

暂停与开始。change 接按键,手动调整时,每按一次,计数器加1;如果长按,则连续快

速加1,用于快速调时和定时;turn 接按键,在手动校时功能时,选择是调整小时,还是分

钟;若长时间按住该键,还可使秒信号清零,用于精确调时。count1,count2,counta,countb 分

别是用来调节计时时间和闹钟时间。LD_min,LD_hour,指示当前调节的是分钟还是小时。5 显示模块

输入:clk--1kHz时钟,提供高频扫描

in0、in1…in5--分别为时、分、秒的个位与十位信号

输出:a、b…g--数码管输入

d0、d1…d5--数码管选通

五.程序。

分频模块

module fenpin(clk,clkt,clkin);input clkin;output clk,clkt;reg clk,clkt;reg [31:0]out,t1;

initial t1<=0;initial out<=0;initial clk<=0;initial clkt<=0;

always@(posedge clkin)begin

out<=out+1;

if(out==20000)

begin

out<=0;

clk<=!clk;

end end

always@(posedge clk)

begin

t1<=t1+1;

if(t1==1000)

begin

clkt<=1;

t1<=0;

end

else

clkt<=0;end endmodule

计时模块 module jishi(clk,clk_1Hz, turn,mode,count1,counta,sec1,min1,hour1,num3,num4);input clk,clkt,turn,num3,num4;input mode;input count1,counta;output [7:0] sec1,min1;output [7:0] hour1;wire clkt,ct1,cta,turn,num3,num4;reg [7:0] sec1=0,min1=0;reg [7:0] hour1=0;reg [1:0] m;wire count1,counta;reg minclk,hclk;always @(posedge mode)//mode 信号控制系统在三种功能间转换 begin if(m==4)m<=0;else m<=m+1;end /////秒钟计时模块////// always @(posedge clkt)

if((sec1==8'h59)|turn&(!m))///////若长时间按住该键,还可使秒信号清零,用于精确调时。begin sec1<=0;//按住“turn”按键一段时间,秒信号可清零,该功能用于手动精确调时

if(!(turn&(!m)))minclk<=1;///产生进位 end else begin if(sec1[3:0]==4'b1001)begin sec1[3:0]<=4'b0000;sec1[7:4]<=sec1[7:4]+1;end else sec1[3:0]<=sec1[3:0]+1;minclk<=0;end ////////分钟计时模?/// assign m_clk=minclk||count1;/////m_clk 产生进位或校正改变 assign ct1=(num3&clk)|(!num3&m_clk);//ct1 用于计时、校时中的分钟计数

always @(posedge ct1)begin if(min1==8'h59)begin min1<=0;hclk<=1;end else begin if(min1[3:0]==9)

begin min1[3:0]<=0;min1[7:4]<=min1[7:4]+1;end else min1[3:0]<=min1[3:0]+1;hclk<=0;end end ////////小时计时模块/// assign h_clk=hclk||counta;//////h_clk 产生进位或校正改变 assign cta=(num4&clk)|(!num4&h_clk);//cta 用于计时、校时中的小时计数

always @(posedge cta)if(hour1==8'h23)hour1<=0;else if(hour1[3:0]==9)begin hour1[7:4]<=hour1[7:4]+1;hour1[3:0]<=0;end else hour1[3:0]<=hour1[3:0]+1;Endmodule

闹钟模块

module alarm(clk,amin,ahour,num1,num2,count2,countb,LD_alert);input clk,num1,num2,count2,countb;output [7:0] amin;

output [7:0] ahour;output LD_alert;wire LD_alert;reg [7:0] amin=0;reg [7:0] ahour=0;assign ct2=(num1&clk)|(!num1&count2);//ct2 用于定时状态下调整分钟信号

assign LD_alert=(ahour|amin)?1:0;//指示是否进行了闹铃定时 always @(posedge ct2)if(amin==8'h59)amin<=0;else if(amin[3:0]==9)begin amin[3:0]<=0;amin[7:4]<=amin[7:4]+1;end else amin[3:0]<=amin[3:0]+1;assign ctb=(num2&clk)|(!num2&countb);////ctb 用于定时状态调节小时信号 always @(posedge ctb)if(ahour==8'h23)ahour<=0;else if(ahour[3:0]==9)begin ahour[3:0]<=0;ahour[7:4]<=ahour[7:4]+1;end else ahour[3:0]<=ahour[3:0]+1;Endmodule 控制模块

module ctrol(change,turn,count1,count2,counta,countb,pause,LD_min,LD_hour,mode);input change,mode,turn;output count1,count2,counta,countb,pause,LD_min,LD_hour;reg [1:0] m;reg fm=0,count1=0,count2=0,counta=0,countb=0,pause=0,LD_min=0,LD_hour=0;wire mode,turn,change;always @(posedge mode)//mode 信号控制系统在三种功能间转换 begin if(m==4)m<=0;else m<=m+1;end always @(posedge turn)//////////接按键,在手动校时功能时,选择是调整小时,还是分钟; begin fm<=~fm;end

always @(m or fm or change)begin case(m)2: begin ////////2:调节时间功能; if(fm)begin count1<=change;{LD_min,LD_hour}<=2;end//////指示当前调整的是分钟

Else

begin counta<=change;{LD_min,LD_hour}<=1;end/////指示当前调整的是小时 {count2,countb}<=0;end 1: begin //////1:调节闹钟功能 if(fm)begin count2<=change;{LD_min,LD_hour}<=2;end/////指示当前调整的是分 else begin countb<=change;{LD_min,LD_hour}<=1;end/////指示当前调整的是小时 {count1,counta}<=0;end

0: begin {count1,count2,counta,countb,LD_min,LD_hour}<=0;end ////0:计时功能 endcase end endmodule 显示模块

module show(min1,sec1,amin,hour1,ahour,MSH,MSL,SH,SL,MH,ML,min,sec,hour,mode);input [7:0] min1,sec1,amin;input [7:0] hour1,ahour;input[3:0] MSH,MSL,SH,SL,MH,ML;input mode;output [7:0] min,sec;output [7:0] hour;reg [7:0] min,sec;reg [7:0] hour;reg [1:0] m;always @(posedge mode)//mode 信号控制系统在三种功能间转换

begin if(m==4)m<=0;else m<=m+1;end always @(min1 or sec1 or amin or hour1 or ahour or m)begin case(m)0: begin hour<=hour1;min<=min1;sec<=sec1;end 1: begin hour<=ahour;min<=amin;sec<=8'hzz;end 2: begin hour<=hour1;min<=min1;sec<=8'hzz;end 3: begin

hour<={SH,SL};

min<={MSH,MSL};sec<={MH,ML};end endcase end Endmodule

实验分析 七

实验总结

八、参考资料

1、《EDA技术实用教程》

2、实验箱使用说明;

第三篇:EDA课程设计——数字时钟

Hefei University

EDA课程综述

论文题目: EDA课程综述

专 业: 09通信(2)班

姓 名: 唐吉祥

学 号: 0905072035 指导老师: 查长军

随着基于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目标芯片的选择...................................................................................7 3.3.4时序仿真...............................................................................................8 3.3.5引脚锁定.............................................................................................10 3.3.6硬件测试.............................................................................................11 3.3.7实验结果.............................................................................................11

四、设计总结..............................................................................................................12

五、附录......................................................................................................................12

5.1 VHDL源程序..................................................................................................12 5.2配置符号图....................................................................................................17

一、课程设计任务及要求

1.1实验目的

1)掌握VHDL语言的基本运用

2)掌握QuartusII的简单操作并会使用EDA实验箱 3)掌握一个基本EDA课程设计的操作

1.2功能设计

1)有时、分、秒计数显示功能,小时为24进制,分钟和秒为60进制以24小时循环计时

2)设置复位、清零等功能

3)有校时功能,可以分别对时及分进行单独校时,使其校正到标准时间 4)时钟计数显示时有LED灯显示

二、整体设计思想

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开关,电子钟从设置的时间开始往后计时。2.2总体方框图

三、详细设计

3.1数字钟的基本工作原理:

3.1.1时基T 产生电路

数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。

由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz的、非常稳定的计数时钟脉冲。

3.1.2调时、调分信号的产生

由计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。现在我们把电路稍做变动:把秒计数器的进位脉冲和一个频率为2Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数 器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。调节小时的时间也一样的实现。

3.1.3计数显示电路

由计数部分、数据选择器、译码器组成,是时钟的关键部分。

1、计数部分:由两个60进制计数器和一个24 进制计数器组成,其中60 进制计数器可用6 进制计数器和10 进制计数器构成;24 进制的小时计数同样可用6 进制计数器和10 进制计数器得到:当计数器计数到24 时,“2”和“4”同时进行清零,则可实现24 进制计数。

2、数据选择器:84 输入14 输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号‘—’)。

3、译码器:七段译码器。译码器必须能译出‘—’,由实验二中译码器真值表可得:字母F 的8421BCD 码为“1111”,译码后为“1000111”,现在如果只译出‘—’,即字母F的中间一横,则译码后应为“0000001”,这样,在数码管上显示的就为‘—’。

3.2设计思路

根据系统设计要求,系统设计采用自顶向下设计方法,由时钟分频部分、计时部分、按键部分调时部分和显示部分五个部分组成。这些模块都放在一个顶层文件中。

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为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。

3.3设计步骤

3.3.1工程建立及存盘

1.打开 QuartusⅡ,单击“File”菜单,选择 File→New Project Wizard,对话框如下:分别输入项目的工作路径、项目名和实体名,单击Finish。

2.单击“File”菜单,选择New,弹出小对话框,双击“VHDL File“,即选中了文本编辑方式。在出现的“Vhdl1.vhd”文本编辑窗中键入VHDL程序,输入完毕后,选择File→Save As,即出现“Save As”对话框。选择自己建立好的存放本文件的目录,然后在文件名框中键入文件名,按“Save”按钮。

3.建立工程项目,在保存VHDL文件时会弹出是否建立项目的小窗口,点击“Yes”确定。即出现建立工程项目的导航窗口,点击“Next”,最后在出现的屏幕中分别键入新项目的工作路径、项目名和实体名。注意,原理图输入设计方法中,存盘的原理图文件名可以是任意的,但VHDL程序文本存盘的文件名必须与文件的实体名一致,输入后,单击“Finish”按钮。3.3.2工程项目的编译

单击工具条上的编译符号开始编译,并随着进度不断变化屏幕,编译完成后的屏幕如图所示:

3.3.3目标芯片的选择

选择菜单 Assignments 选项的下拉菜单中选择器件 Device „,如图所示: 在弹出的对话框中的 Family(器件序列栏)对应的序列名,EP1C3 对应的是 Cyclone 系列。在 Available Devices里选择 EP1C3T144-C8(有时需要把 Show advanced devices的勾消去,以便显示出所有速度级别的器件)。注意:所选器件必须与目标板的器件型号完全一致。

在图中,单击“Device and Pin Options„”,在弹出的“Device and Pin Options„”窗口中,单击“Unused Pins”标签。选择“As output driving an unspecified signal ”(由于学习机的“FPGA”具有很多功能,为了避免使用引脚对其它器件造成影响,保证本系统可靠工作,将未使用引脚设定为输出不定状态)后,单击确定后,无误后单击“OK”。

3.3.4时序仿真

建立波形文件:选择 File→New,在New窗中选中“Other File”标签。在出现的屏幕中选择“Vector Waveform File”项出现一新的屏幕。在出现的新屏幕中,双击“Name”下方的空白处,弹出“Insert Nod or Bus”对话框,单击该对话框的“Node Finder„„”。在屏幕中的 Filter 中选择 Pins,单击“List”。而后,单击“>>”,所有输入/输出都被拷贝到右边的一侧,这些正是我们希望的各个引脚,也可以只选其中的的一部分,根据实际情况决定。然后单击屏幕右上脚的 “OK”。在出现的小屏幕上单击“OK”。

设定仿真时间宽度。选择 Edit → End time„选项,在End time选择窗中选择适当的仿真时间域,以便有足够长的观察时间。

波形文件存盘。选择File→Save as 选项,直接存盘即可。运行仿真器。在菜单中选择项,直到出现,仿真结束。

未曾编辑的仿真波形

仿真波形 3.3.5引脚锁定

将设计编程下载进选定的目标器件中,如EPF10K10,作进一步的硬件测试,将设计的所有输入输出引脚分别与目标器件的EPF10K10的部分引脚相接,操作如下:

1.选择 Assignments → Assignments Editor ,即进入 Assignments Editor编辑器。在Category 栏选择 Pin,或直接单击右上侧的 Pin 按钮。

2.双击 TO 栏的《new》,在出现的的下拉栏中选择对应的端口信号名(如 D[0]);然后双击对应的栏的《new》,在出现的下拉栏中选择对应的端口信号名的期间引脚号。

3.最后存储这些引脚锁定信息后,必须再编译(启动)一次,才能将引脚锁定信息编译进编程下载文件中。此后就可以准备将编译好的 SOF 文件下载到试验系统的FPGA中去了。

引脚锁定 3.3.6硬件测试

1.首先将下载线把计算机的打印机口与目标板(如开发板或实验板)连接好,打开电源,选择模式7。

2.打开编辑窗和配置文件。选择,弹出一个编辑窗。在Mode栏中选择JTAG,并在选项下的小方框打勾。注意核对下载文件路径与文件名。如果文件没有出现或者出错,单击左Add file侧按钮,手动选择配置文件 clock.sof。

3.最后单击下载标符Start,即进入对目标器件 FPGA 的配置下载操作。当 Progress 显示100%,以及在底部的处理栏中出现 Configuration Succeeded 时,表示编程成功,如图所示。注意,如果必要时,可再次单击 Start,直至编程成功。

4.下载完成后,通过硬件测试进一步确定设计是否达到所有的技术指标,如未达到,可逐步检查,哪部分出现问题。如果是代码出现问题,须修改代码;若是时序波形图有问题,须重新设置。

3.3.7实验结果

实验箱使用模式7,键8为复位按键,键8为1时正常工作。键4设置小时,键7设置分钟。

下载成功后,按下键8,及使六个LED复位清零,显示数秒的自动计时,可以通过4键设置小时数,7键设置分钟数。当秒数满60则进一位,分钟数满60进一位,当显示为23:59:59时,秒数在加一则显示00:00:00,之后从新计时。

四、设计总结

通过这次课程设计,我进一步加深了对电子设计自动化的了解。并进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过与同学探讨和请教老师,终于把问题都解决了,并加深了对数字时钟原理和设计思路的了解。

同时也掌握了做课程设计的一般流程,为以后的设计积累了一定的经验。做课程设计时,先查阅相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。总之,通过这次的设计,进一步了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

在此,也感谢康老师的悉心指导,使自己学到了很多东西!

五、附录

5.1 VHDL源程序

Alert模块

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY alert IS

PORT(clk:IN STD_LOGIC;

dain:IN STD_LOGIC_VECTOR(6 DOWNTO 0);

speak:OUT STD_LOGIC;

lamp:OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END alert;ARCHITECTURE fun OF alert IS

SIGNAL count:STD_LOGIC_VECTOR(1 DOWNTO 0);SIGNAL count1:STD_LOGIC_VECTOR(1 DOWNTO 0);

BEGIN speaker:PROCESS(clk)

BEGIN

--speak<=count1(1);

IF(clk'event and clk='1')THEN

IF(dain=”0000000“)THEN

speak<=count1(1);

IF(count1>=”10“)THEN

count1<=”00“;--count1为三进制加法计数器

ELSE

count1<=count1+1;--speak<=count1(0);

END IF;

END IF;

END IF;

END PROCESS speaker;lamper:PROCESS(clk)

BEGIN

IF(rising_edge(clk))THEN

IF(count<=”10“)THEN

IF(count=”00“)THEN

lamp<=”001“;--循环点亮三只灯

ELSIF(count=”01“)THEN

lamp<=”010“;

ELSIF(count=”10“)THEN

lamp<=”100“;

END IF;

count<=count+1;

ELSE

count<=”00“;

END IF;

END IF;

END PROCESS lamper;END fun;Hour模块

LIBRARY IEEE;use IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY hour IS

PORT(clk,reset:IN STD_LOGIC;

daout:out STD_LOGIC_VECTOR(5 DOWNTO 0));END ENTITY hour;ARCHITECTURE fun OF hour IS SIGNAL count:STD_LOGIC_VECTOR(5 DOWNTO 0);

BEGIN

daout<=count;

PROCESS(clk,reset)

BEGIN

IF(reset='0')THEN count<=”000000“;--若reset=0,则异步清零

ELSIF(clk'event and clk='1')THEN

--否则,若clk上升沿到

IF(count(3 DOWNTO 0)=”1001“)THEN--若个位计时恰好到”1001“即9

IF(count<16#23#)THEN

--23进制

count<=count+7;

--若到23D则

else

count<=”000000“;

--复0

END IF;

ELSIF(count<16#23#)THEN

--若未到23D,则count进1

count<=count+1;

ELSE

--否则清零

count<=”000000“;

END IF;

--END IF(count(3 DOWNTO 0)=”1001“)

END IF;

--END IF(reset='0')

END PROCESS;END fun;Minute模块

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY minute IS

PORT(clk,clk1,reset,sethour:IN STD_LOGIC;

enhour:OUT STD_LOGIC;

daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY minute;ARCHITECTURE fun OF minute IS SIGNAL count :STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enhour_1, enhour_2: STD_LOGIC;--enmin_1为59分时的进位信号 BEGIN

--enmin_2由clk调制后的手动调时脉冲信号串

daout<=count;

enhour_2<=(sethour and clk1);--sethour为手动调时控制信号,高电平有效

enhour<=(enhour_1 or enhour_2);PROCESS(clk,reset,sethour)

BEGIN

IF(reset='0')THEN--若reset为0,则异步清零

count<=”0000000“;

ELSIF(clk'event and clk='1')THEN--否则,若clk上升沿到

IF(count(3 DOWNTO 0)=”1001“)THEN--若个位计时恰好到”1001“即9

IF(count <16#60#)THEN--又若count小于16#60#,即60

IF(count=”1011001“)THEN--又若已到59D

enhour_1<='1';--则置进位为1

count<=”0000000“;--count复0

ELSE

count<=count+7;--若count未到59D,则加7,即作”加6校正“

END IF;--使前面的16#60#的个位转变为8421BCD的容量

ELSE

count<=”0000000“;--count复0(有此句,则对无效状态电路可自启动)

END IF;

--END IF(count<16#60#)

ELSIF(count <16#60#)THEN

count<=count+1;--若count<16#60#则count加1

enhour_1<='0' after 100 ns;--没有发生进位

ELSE

count<=”0000000“;--否则,若count不小于16#60# count复0

END IF;--END IF(count(3 DOWNTO 0)=”1001“)

END IF;--END IF(reset='0')

END process;END fun;Second模块

LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY second IS PORT(clk,reset,setmin:STD_LOGIC;

enmin:OUT STD_LOGIC;

daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END ENTITY second;ARCHITECTURE fun OF second IS SIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);SIGNAL enmin_1,enmin_2:STD_LOGIC;

--enmin_1为59秒时的进位信号

BEGIN

--enmin_2由clk调制后的手动调分脉冲信号串

daout<=count;

enmin_2<=(setmin and clk);--setmin为手动调分控制信号,高电平有效

enmin<=(enmin_1 or enmin_2);--enmin为向分进位信号

PROCESS(clk,reset,setmin)

BEGIN

IF(reset='0')THEN count<=”0000000“;--若reset为0,则异步清零

ELSIF(clk 'event and clk='1')then--否则,若clk上升沿到

IF(count(3 downto 0)=”1001“)then

--若个位计时恰好到”1001“即9

IF(count<16#60#)then--又若count小于16#60#,即60H IF(count=”1011001“)then

--又若已到59D

enmin_1<='1';count<=”0000000“;--则置进位为1及count复0

ELSE

--未到59D

count<=count+7;--则加7,而+7=+1+6,即作”加6校正“

END IF;

ELSE

--若count不小于16#60#(即count等于或大于16#60#)

count<=”0000000“;

--count复0

END IF;

--END IF(count<16#60#)

ELSIF(count<16#60#)then--若个位计数未到”1001“则转此句再判

count<=count+1;

--若count<16#60#则count加1

enmin_1<='0'after 100 ns;--没有发生进位

ELSE

--否则,若count不小于16#60#

count<=”0000000“;

--则count复0

END IF;

--END IF(count(3 DOWNTO 0)=”1001")

END IF;

--END IF(reset='0')END PROCESS;END fun;5.2配置符号图

第四篇:基于EDA技术的数字时钟设计 最终版范文

物理与电子学院

《》 课程考核论文

论文作者姓名:

者 学 号:

学 专 业:

理科

物理方向

课 教 师:

高伟

成 时 间:

2015年6月

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

目录

摘要··················································································2 一.绪论·············································································3 1.课题的研究背景·································································3 2.数字电子钟的发展简况·························································3 二.系统设计········································································4 1.整体规划·········································································4 2.时基信号产生电路·······························································5 3.调时、调分信号的产生电路····················································5 4.计数显示电路····································································6 三.基本功能实现···································································6 1.时钟计数··········································································7 2.校时设置··········································································7 3.清零功能··········································································8 4.定时、报时功能··································································9 四.系统软件实现···································································9 1.详细模块描述·····································································9 2.总体设计及引脚设置·····························································9 五.系统仿真及分析································································10 1.各模块时序仿真·································································10 2.总体时序仿真····································································11 3.实验结果·········································································11 六.设计总结········································································12 ·参考文献···········································································12 附录:参考程序······································································13

摘要

随着基于PLD的EDA技术的发展和应用领域的扩大与深入,EDA技术在电子信息、通信、自动控制及计算机应用等领域的重要性日益突出。本文详细介绍EDA课程设计任务——数字钟的设计的详细设计过程及结果,并总结出心得体会。

主体:主要涉及模60与模24计数器、动态显示控制电路、分频器主要整点报时电路,这些电路都是以模块封装好的,以便其他电路调用。以计数器构成计时部件,通过分频器分出的1HZ脉冲计时,调用动态显示电路显示,通过整点报时电路控制蜂鸣器。在计数器级联时采用内部同步外部异步的方式,但通过简单的改变达到了同步的效果而且比同步还可靠。显示控制时为了节约资源采用动态原理。

关键字 多功能数字时钟

整点报时 EDA技术 VHDL语言

Abstract

This article is based on the QuartusII software and the corresponding experimental platform to complete a multi-function digital timer experiment, so that we clearly understand to us digital table function is how to achieve.Used in the design of the level design thought, function decreases progressively step by step.The experiment mainly includes the mainbody-the basic functions of the circuit of clock.Subject: mainly relates to mode 60and mode 24counter, dynamicdisplay of control circuit, the primary divider the whole point timekeeping circuit, the circuit is in module a good package, so that other circuit calls.To counter through a frequency divider which timing components, from1HZ pulse timing,called dynamic display circuit displays, through the wholepoint timekeeping circuit control buzzer.In counter cascade usesinternal synchronous external asynchronous manner, but bysimplychanging the synchronization effect and is more reliable thansynchronous.Display control in order to save resources by the dynamic principle.Key word: Level design Multifunctional digital clock Synchronization The whole point timekeeping The language of VHDL

一.绪论

1.课题的研究背景

当面对这样一个信息爆炸的时代,时间变得越来越宝贵,人们无疑需要一个良好的计划时间表,而这就需要一个系统完善成熟的定时系统来及时提醒人们。然而在这个新技术、新产品不断涌现,各类产品功能日益强大,这就需要我们带着战略性眼光选择。多功能数字电子钟无意是人们最好的选择之一,多功能数字时钟小巧、价格低廉,外观造型日益精美、精确度高、功能齐全、使用方便,不仅仅可以显示钟表的功能也具备计时、测温、定闹钟、显示日历、语音报表等功能,其集成化高而受到广大人们群众喜爱。在人们不断的要求下,多功能数字钟已经成为现代设计时钟研究生产的主导方向。

2.数字电子钟的发展简况

在国外,公元以前,人们也是主要利用天文现象来计时,比如观察太阳日出日落、星相的转移,此后当在德国的亨莱思创造了小型机械钟开始,国外的钟表行业逐渐掀起,到了19世纪,钟表制造业已经成为人们必不可少的一个行业,钟表制造业也逐渐的实现了工业化生产,在20世纪,随着电子潮流的飞速发展,钟表行业也出现了翻天覆地的变化,由单一的机械表转向多元式的钟表,有电池驱动钟、电机械表、指针式电子钟表、数字式电子钟表等种类,并且功能不断的增多如现在出现的多功能数字电子钟,它采用的是数字电路来显示分秒,它的作用早已不仅限于计时的功能,它还可以显示日历、定闹、报时、测温等功能。它人性化的设计给人们的生活带来了很多的方便,成为人们日常生活的必需品。

二.系统设计

1.整体规划

数字电子时钟主干电路系统由秒信号发生器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路组成。将标准秒信号送入“秒计数器”,“秒计数器”采用60进制计数器,每累计60秒发出一个“分脉冲”信号,该信号将作为“分计数器”的时钟脉冲。“分计数器”也采用60进制计数器,每累计60分钟,发出一个“时脉冲”信号,该信号将被送到“时计数器”。“时计数器”采用12进制计时器,可实现12小时的累计。通过六个LED显示器显示出来。整点报时电路根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。校时电路用来对“时”、“分”、“秒”显示数字进行校对调整。

电子时钟系统总体规划如图1所示:

(1)根据电路特点,用层次设计概念,将此设计任务分成若干模块,规定每一模块的功能和各模块之间的接口,同时加深层次化设计概念。

(2)软件的元件管理深层含义,以及模块元件之间的连接概念,对于不同目录下的同一设计,如何融合。

(3)适配划分前后的仿真内容有何不同概念,仿真信号对象有何不同,有更深一步了解。

(4)按适配划分后的引脚锁定,同相关功能模块硬件电路的接口连线。(5)所有模块采用VHDL硬件描述语言设计。

图1 总体方案框图

2.时基信号产生电路

数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为1Hz的、非常稳定的计数时钟脉冲。

3.调时、调分信号的产生电路

由计数器的计数过程可知,正常计数时,当秒计数器(60进制)计数到59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加1。把秒计数器的进位脉冲和一个频率为2Hz的脉冲信号同时接到一个2选1数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为0),则数据选择器将秒计数器的进位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为1),则数据选择器将另外一个2Hz 的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。调节小时的时间也一样的实现。

4.计数显示电路

由计数部分、数据选择器、译码器组成,是时钟的关键部分。

1、计数部分:由两个60进制计数器和一个24 进制计数器组成,其中60 进制计数器可用6 进制计数器和10 进制计数器构成;24 进制的小时计数同样可用6 进制计数器和10 进制计数器得到:当计数器计数到24 时,“2”和“4”同时进行清零,则可实现24 进制计数。

2、数据选择器:84 输入14 输出的多路数据选择器,因为本实验用到了8个数码管(有两个用来产生隔离符号‘—’)。

3、译码器:七段译码器。译码器必须能译出‘—’,由实验二中译码器真值表可得:字母F 的8421BCD 码为“1111”,译码后为“1000111”,现在如果只译出‘—’,即字母F的中间一横,则译码后应为“0000001”,这样,在数码管上显示的就为‘—’。

三.基本功能实现

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.校时设置:

手动调节分钟、小时,可以对所设计的时钟任意调时间,这样使数字钟真正具有使用功能。我们可以通过实验板进行任意的调整,因为我们用的时钟信号均是1HZ的,所以每LED灯变化一次就来一个脉冲,即计数一次。

通过一个开关的两种电平,来打开个关闭一个二输入与非门,另一个输入端接1Hz的信号。因此这个开关实现了1Hz信号是否加入电路的作用,开关打在高电平上,1Hz信号通过与非门,开关打在低电平上,与非门输出为高电平。把与非门的输出信号,和时钟正常走时所需要的时钟信号,一起通过与门,加给分个位时钟信号的输入端即可,这样分校时开关打在高电平上,分个位以1Hz的频率跳动起来,分校时开关打在低电平上时,正常走时。同理小时校准与此相同。

3.清零功能:

reset为复位键,低电平时实现清零功能,高电平时正常计数。可以根据我们自己任意时间的复位。

清零电路设计的关键就是要解决好同步问题,在发出清零信号时,所有计数器的时钟信号是一致的,而且处于有效的边沿。为此可以设计当清零信号有效时,很高频率的信号同时加入个计数器的时钟端,而当清零信号无效时,各计数器上时钟端加的是正常走时所需要的时钟信号。也可以用与门,或门和非门实现上述的功能。当清零信号为低时,清零信号经过一个非门变为高电平信号,将与门打开,高频信号通过与门,在与秒各位计数器的时钟端上的信号相或,与其他各位计数器时钟输入端上的信号相与。这样,当清零信号有效时,每一位计数器上的时钟输入端实现了同步的功能,实现了同步清零的功能。当清零信号无效时,时钟正常走时。

4.定时、报时功能:

整点报时电路根据计时系统的输出状态产生一脉冲信号,然后去触发一音频发生器实现报时。它通过对定时和计时的比较来完成报时,由两个计数器组成,计数器由两个开关控制,用来对定时的分钟和时钟设定,当开关都打到不送脉冲的状态,两个计数器都保持,从而达到存储的目的。比较电路用来比较定时时间和计时时间,当它们一致时,输出为1,这样可以驱动报时模块。最后,利用显示电路将定的时间设定输出。要使定时起到提醒作用,还要有铃声,这里用1hz脉冲作为蜂鸣器的信号源。

四.系统软件实现

1.详细模块描述

(1)Second模块为秒计数模块。Clk作为秒脉冲,reset复位,setmin用于调整分钟,接按键,enmin是当秒计数记到59后产生分脉冲,秒计数重新从0开始计数。Daout为秒计数。

(2)Minute模块为分计数模块。Clk作为分脉冲,接second模块的enmin,reset用于复位,sethour用于调整小时,接按键,enhour是当分计数记到59后产生时脉冲,分计数重新从0开始计数。Daout为分计数。

(3)Hour模块为时计数模块,clk为时脉冲,接minute模块的enhour,reset复位,daout为时计数。

(4)Alert模块为整点报时模块。其中clk1用于在其上升沿判断是否为整点时刻,若是则加clk秒脉冲从speak端口输出到扬声器作为声音信号,报时10秒。Stop为停止报时控制,接按键,按动按键时若在报时则报时停止。Reset复位端。dainsh和dianm分别接分计数和秒计数,用于判断整点和报时。

2.总体设计及引脚设置

在软件中设置后顶层原理图显示为

设计思想,利用脉冲时钟产生一个1Hz的信号来实现一秒钟的控制,要产生1Hz的信号就要用到分频器,实验中用三个百分频器把1MHz的信号变成1Hz。然后信号进入控制秒的计数器,当 的仿真时间域以便有足够长的观察时间。波形文件存盘后运行仿真器,直到出现仿真结果。

24进制的时控制模块中当clk为上升沿时,hour1输出由9变为0,并且hour1都是由0到9循环,hour2输出由2变为0,并且hour2都是由0到2循环。

60进制的分控制模块中当clk和carry为上升沿时,min1输出由9变为0,并且min1都是由0到9循环,min2输出由5变为0,并且min2都是由0到5循环。

60进制的秒控制模块中当clk和carry为上升沿时,sec1输出由9变为0,并且sec1都是由0到9循环,sec2输出由5变为0,并且sec2都是由0到5循环。

仿真波形

3.实验结果

首先,由石英晶体振荡器输出稳定的脉冲信号,经过振荡器输出标准的秒脉冲信号,秒计数电路为六十进制计数器,秒计数电路将振荡器产生的秒脉冲信号作为输入信号,进行计数,并通过秒显示器显示秒;其次,当秒计数器完成60个秒计数后,秒计时电路清零,输出一个“分计时信号”,分计时电路收到秒计时电路产生的信号后,开始计数并显示分;再次,当分计时电路完成60个分计数后,分计数器清零,输出一个“时计时信号”,时计时电路收到分计时电路产生的信号后,开始计数并显示时;最后,时计时电路完成24个时计数后,清零。完成电子钟基本功能仿真结果。

六.设计总结

通过毕业论文设计,我进一步加深了对电子设计的认识,进一步熟练了对QuartusII软件的操作。在编写程序的过程中,遇到了很多问题,使我发现自己以前学习上存在的不足。通过同学探讨和请教老师的方式,终于把问题都解决了。对数字时钟原理和设计思路的更详细的了解,掌握了做毕业设计的一般流程,为以后的电路设计积累了一定的经验。做毕业设计时,我先查阅了相关知识,把原理吃透,确定一个大的设计方向,在按照这个方向分模块的把要实现的功能用流程图的形式展示。最后参照每个模块把输入和输出引脚设定,运用我们所学的VHDL语言进行编程。通过这次的设计,我深入了解了EDA技术,收获很大,对软件编程、排错调试、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。

经过这次的毕业设计我学到的也不止是一些新的理论知识和具体的动手实践。更重要的是一种思路,大的问提可以转换成小的问题解决,困难的问题通过转换成简单的问题解决。相信这将会对我今后的学习工作带来帮助。设计论文过程中我认识到我专业知识缺少的还很多,实践经验也相当匮乏。因此在今后我还需要不断的去学习新的知识,不断的充实自身。

在此,再次感谢梁勇老师的悉心指导,您让使我学到了很多很多!

·参考文献

1.EDA技术实用教程----vhdl版(carry:out std_logic);end second;architecture rt1 of second is signal sec1_t,sec2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then sec1_t<=“0000”;sec2_t<=“0000”;elsif clk'event and clk='1'then if sec1_t=“1001”then sec1_t<=“0000”;if sec2_t=“0101”then sec2_t<=“0000”;else sec2_t<=sec2_t+1;end if;else sec1_t<=sec1_t+1;end if;if sec1_t=“1001” and sec2_t=“0101”then carry<='1';else carry<='0';end if;end if;end process;sec1<=sec1_t;sec2<=sec2_t;end rt1;

分模块 程序如下:

library ieee;

use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity minute is port(clk,reset:in std_logic;min1,min2:out std_logic_vector(3 downto 0);carry:out std_logic);end minute;architecture rt1 of minute is signal min1_t,min2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then min1_t<=“0000”;min2_t<=“0000”;elsif clk'event and clk='1'then if min1_t=“1001”then min1_t<=“0000”;if min2_t=“0101”then min2_t<=“0000”;else min2_t<=min2_t+1;end if;else min1_t<=min1_t+1;end if;if min1_t=“1001” and min2_t=“0101”then carry<='1';else carry<='0';end if;end if;end process;min1<=min1_t;min2<=min2_t;end rt1;

时模块

程序如下:

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity hour is port(clk,reset:in std_logic;hour1,hour2:out std_logic_vector(3 downto 0));end hour;architecture rt1 of hour is signal hour1_t,hour2_t:std_logic_vector(3 downto 0);begin process(clk,reset)begin if reset='1'then hour1_t<=“0000”;hour2_t<=“0000”;elsif clk'event and clk='1'then if hour1_t=“0011” and hour2_t=“0010”then hour1_t<=“0000”;hour2_t<=“0000”;else if hour1_t=“1001”then hour1_t<=“0000”;if hour2_t=“0010”then hour2_t<=“0000”;else hour2_t<=hour2_t+1;end if;else hour1_t<=hour1_t+1;end if;end if;end if;end process;hour1<=hour1_t;

hour2<=hour2_t;end rt1;译码显示模块 程序如下: library ieee;use ieee.std_logic_1164.all;entity segment7 is port(data:in std_logic_vector(3 downto 0);dout:out std_logic_vector(6 downto 0));end segment7;architecture behav of segment7 is begin process(data)begin case data is when “0000”=>dout<=“0111111”;when “0001”=>dout<=“0000110”;when “0010”=>dout<=“1011011”;when “0011”=>dout<=“1001111”;when “0100”=>dout<=“1100110”;when “0101”=>dout<=“1101101”;when “0110”=>dout<=“1111101”;when “0111”=>dout<=“0100111”;when “1000”=>dout<=“1111111”;when “1001”=>dout<=“1101111”;when others=>dout<=“0000000”;end case;end process;end behav;

第五篇:数字电路EDA课程设计数字跑表

EDA课程设计报告书

题目: 数字跑表

姓名: 班级: 学号: 成绩:

一、设计题目及要求 设计题目:数字跑表

要求:1 具有暂停,启动功能。

具有重新开始功能。用六个数码管分别显示百分秒,秒和分钟。

二、设计过程及内容

拿到题目后,我在图书馆进行了相关书籍的查阅,首先明确了题目中设计项目要实现的功能,再进一步确定实现其功能的组成部分和使用器件,对于本次设计的总体思路,首先是设计一个控制模块,可以使跑表具有启动、暂停及重新开始的功能;然后,利用一个分频模块即15进制计数器得到100HZ的时钟脉冲,接入到一个100*60*60三个计数器的模块中,完成对时间的计时工作和对选时模块的输出工作,使选时模块得到对应的时间,其次将选时模块与显示模块连接,使数码管显示选中的当前时间,从而完成了这次课程设计的设计工作,进入到实现过程中去。

根据课程设计要求将设计分为5个模块:

1、控制模块,使跑表具有启动、暂停及重新开始的功能;

2、分频模块,用于得到频率为100HZ的时钟脉冲;

3、计时模块,进行时间的计时,同时将当前时间输出给选时模块;

4、选时模块,从计时器得到当前时间输出给显示模块;

5、显示模块,进行时间的显示。总图如下: 第一个模块:控制器模块

与门可控制时钟信号的输出与否,当跑表为START状态时CLK端为高电平,QA为1,时钟信号输出,当跑表为STOP状态时CLK端为低电平,QA为0,时钟信号不输出,从而实现开始和暂停的功能。REST是清零按钮,REST接到控制模块和总计时器模块的清零端,当REST为高电平时,控制模块和总计数器模块清零,跑表重新开始工作。

第二个模块:分频器模块

将74161接成15进制计数器,将1465HZ的时钟频率转换成近似于100HZ的时钟信号即所需的输入时钟信号,从而实现分频功能。将得到的时钟信号输入到总计数器模块中去。第三个模块:计时模块

计时模块

本模块由两个60进制计数器和一个100进制计数器构成,从而实现百分秒向秒、秒向分的计数功能需求。60进制计数器及100进制计数器均采用两个74LS160,采用整体置数方式接成。从60进制计数器和100进制计数器这三个输出端分别印出八个端口(秒、分、时的个位及十位分别由四个二进制代码表示),将当前时间编码传送给选时模块,实现时间的选择和显示。(秒个位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分个位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D;百分秒个位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D.)

100进制计数器

60进制计数器

第四个模块:选时模块

本模块由四个八选一数据选择器74LS151和地址选择器74LS161构成。

地址选择器74LS161接入一个1465 HZ的时钟信号,使能端和清零端接高电平,使其循环工作,产生一组循环地址码A、B、C,接到数码管的地址端,使其循环显示数字。同时,地址选择器74LS161产生的一组循环地址码接入到四个八选一数据选择器74LS151上,使其对地址相同的一组数据进行选择,产生四个二进制数A0,A1,A2,A3,即为数码管所要显示的数字的编码。

第一个74LS151上的输入端为秒、分、百分秒个位及十位的四位二进制的最低位(S0A,S1A, M0A, M1A, H0A, H1A), 第二个74LS151上的输入端为秒、分、百分秒个位及十位的四位二进制的次低位(S0B,S1B,M0B,M1B,H0B,H1B), 第三个74LS151上的输入端为秒、分、百分秒个位及十位的四位二进制的第二位(S0C,S1C,M0C,M1C,H0C,H1C), 第四个74LS151上的输入端为秒、分、百分秒个位及十位的四位二进制的第一位(S0D,S1D,M0D,M1D,H0D,H1D),通过这四个八位二进制数比较器74LS151选出同一组数(秒个位:S0A,S0B,S0C,S0D;秒十位:S1A,S1B,S1C,S1D;分个位:M0A,M0B,M0C,M0D;分十位:M1A,M1B,M1C,M1D;百分秒个位:H0A,H0B,H0C,H0D;百分秒十位:H1A,H1B,H1C,H1D.)作为输出A0,A1,A2,A3,接到显示模块输入端。

选时模块

第五个模块:显示模块

本模块采用BCD—七段显示译码器7448对实验板上数码管进行驱动。由选时模块输出的显示数字编码A0,A1,A2,A3接至输入端A,B,C,D,使输出端产生七位译码连接到实验箱公共数据输入端ABCDEDG,从而进行数据的显示。

显示模块

三、设计结论

两周的课程设计很快就结束了,虽然时间很短,但是收获颇丰。通过这次课程设计,我学到了许多关于EDA的知识,认识到了EDA的强大功能,更重要的是增强了我的实践动手能力,使我深刻地认识到仅仅学习课本上的知识是远远不够的,必须要多多动手,多多实践,才能真正理解并掌握所学的知识,达到学以致用的目的。同时我也深深地感受到严谨的态度对于科学研究的重要性。由于在设计的过程中,一点点的马虎都可能造成整个系统的瘫痪,所以每一个细节都要认真思考,认真操作,不能有丝 百分的大意。这使我认识到要想做一个科研工作者是多么的不易!自己身上的缺点还有很多,要靠以后艰苦的努力来克服!

这次的EDA课程设计给了我一次非常重要也非常难得的实践机会,使我可以将平时课本上学习的理论知识应用于实际操作。设计的过程是十分艰苦的,由于从未接触过类似的领域,所以刚开始的时候一片茫然,不知道该干些什么。随着研究的逐渐深入,自己渐渐的摸出头绪,掌握了一些规律和方法,设计的成果也逐步成型,最终按照要求完成了设计。在实际操作的过程中,碰到了许多的困难,但最终在老师的耐心指导和同学的热情帮助下,按时完成了任务。在此对老师和同学们表示衷心的感谢!

最后感谢老师给与我这次宝贵的实践机会!

下载EDA数字秒表的设计word格式文档
下载EDA数字秒表的设计.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    北航eda实验报告数字部分

    Verilog数字电路设计 实验报告 院系: 组员: 年月日 Verilog实验报告 目录 分组概况 ........................................................................................

    EDA课程设计 数字时钟(闹钟)

    课 程 设 计 说 明 书 题目: 闹钟 学院(系): 年级专业: 学 号: 学生姓名: 指导教师: 教师职称: 共 16 页第 1 页 目 录 第1章 摘要……………………………………………………………......

    燕山大学EDA课程设计数字跑表

    一、设计题目及要求 设计题目:数字跑表 要求:1 具有暂停,启动功能; 2 具有重新开始功能; 3 用六个数码管分别显示百分秒,秒和分钟。 二、设计过程及内容 总体设计: 第一,对于要实现......

    数字电子EDA课程设计八音电子琴

    燕山大学EDA课程设计 实验报告院系:信息科学与工程学院姓名: 班级: 学号: 日期: [实验名称] 八音电子琴 [实验要求] 1.能发出1.2.3.4.5.6.7.i八个音2.用按键作为键盘......

    EDA数字钟设计

    数字钟 一、实验目的 1、掌握多位计数器相连的设计方法。 2、掌握十进制,六进制,二十四进制计数器的设计方法。 3、掌握扬声器的驱动及报时的设计。 4、LED灯的花样显示。 5、......

    EDA设计报告

    EDA 多 功 能 数 字 时 钟 专业:11级应用电子技术 班级:二班 学号:110372021307 姓名:贺成林 指导老师:祝宏 日期:2012年6月29日 一、实验目的 1、课程设计是一实践教学环节,是......

    EDA设计论文

    EDA课程设计报告书 交通灯设计 设 计 者: 邱春华 吕云兰 指导老师: 李 敏 学 号: 09387105 09387114 专业班级:通信工程0911班 摘要…………………………………………………......

    实习报告-单片机秒表设计

    目 录 第1章 单片机系统硬件电路 ................................................................................. 1 1.1 实习目的 ......................................