Sopc课程设计24小时制的多功能数字钟

上传人:1888****888 文档编号:39367400 上传时间:2021-11-10 格式:DOC 页数:24 大小:212.34KB
收藏 版权申诉 举报 下载
Sopc课程设计24小时制的多功能数字钟_第1页
第1页 / 共24页
Sopc课程设计24小时制的多功能数字钟_第2页
第2页 / 共24页
Sopc课程设计24小时制的多功能数字钟_第3页
第3页 / 共24页
资源描述:

《Sopc课程设计24小时制的多功能数字钟》由会员分享,可在线阅读,更多相关《Sopc课程设计24小时制的多功能数字钟(24页珍藏版)》请在装配图网上搜索。

1、赣南师院物理与电子信息学院SOPC技术课程设计报告书专业班级: 09电信本 学生姓名: 黄红平 学号:090802012指导教师: 管立新老师 设计时间: 2011.12.29 摘 要 本课题设计为24小时制的多功能数字钟,具有时钟时间设置、闹钟时间设置、闹钟开、闹钟关等功能,数字显示小时、分钟、秒,闹钟就绪灯,蜂鸣器。 在设计中采用EDA自动化设计技术。以计算机为基本平台,以硬件描述语言为系统逻辑描述表达方式,以EDA工具作为开发环境,以大规模可编程逻辑器件为设计载体,以专用集成电路ASIC为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。这样的设计方法,大大的缩短了设计的周期,

2、降低了设计成本。设计出来的数字钟具有功能多、体积小、功耗低的特点。在论文中主要涉及的内容有: 1、 介绍Verilog HDL语言。2、 介绍在QuartusII软件上对数字钟的设计。3、 介绍系统仿真结果和硬件验证与分析。4、 对整个设计系统进行总结。 关键词: 电子设计自动化 Verilog HDL 可编程逻辑器件 目 录摘 要I第1章 绪 论3第2章 数字钟Verilog HDL的设计721设计方案及工作原理72.1.1数字钟设计原理72.1.2 数字钟功能722 数字钟钟控定时器的基本组成82.2.1 D触发器的设计82.2.2数据选择器的设计92.2.3 计数器的设计102.2.4

3、数据分配器122.2.5译码器132.2.6分频器152.2.7闹时器162.2.8 报时器1723 数字钟原理图19第3章 软件调试20结论21参考文献22附录23 24第1章 绪 论 数字钟是一种实现时、分、秒计时的钟表。与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。数字钟的设计方法有许多种,例如可用中小规模集成电路组成电子钟,也可以利用专用的电子钟芯片配以显示电路及其所需要的外围电路组成电子钟,还可以利用单片机来实现电子钟等等。这些方法都各有其特点,其中利用单片机实现的电子钟具有编程灵活,以便于功能的扩展。第2章 数字钟Verilog HDL的设计21设计方

4、案及工作原理 2.1.1数字钟设计原理 数字钟的示意如下图所示。它由石英晶体振荡器、分频器、计数器、译码器显示器和校时电路组成。振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒计数器满60后向分计数器进位,分计数器满60后向小时计数器进位,小时计数器按照“24翻1”规律计数。计数器的输出分别经译码器送显示器显示。计时出现误差时,可以用校时电路校时、校分。产生闹铃和报时音校时时、分、秒计时时间显示数字钟示意图如上图所示212 数字钟功能1) 具有正确的时、分、秒计时功能。2) 计时结果要用数码管分别显示进、分、秒的十位和个位。3) 有校时功能。当S键按下时,分

5、计数器以秒脉冲的速度递增,并按60min循环,即计数到期59min后再回到00。当工A键按下时,时计数器以秒脉冲的速度递增,并按24h循环,即计数到23h后再回00。4) 利用扬声器整点报时。当计时到达59分59秒时开始报时,在59分50秒、52秒、54秒、56秒、58秒时鸣叫,鸣叫声频为500hz;到达59分60秒时为最后一声整点报时,频率为1khz。22 数字钟钟控定时器的基本组成 数字钟钟控定时器由:计数器、D触发器、数据选择器、数据分配器、译码器、报时器、闹时器组、分频器和一个或非门这九大模块构成。计数器主要分为24进制计数器和60进制计数器,24进制计数器对数字钟的小时位计行计数,6

6、0进制对数字钟的分和秒进行计数。D触发器主要是用在对数字进行校准时的按键消抖作用,以免在校时的时候产生抖动信号。数据分配器的作用是在动态译码时选择输出数据。译码器对输出信号进行译码在数码管上显示出来,让大家数字钟的表示直观。报时电路是使时钟在整点有报时功能而设计的。闹时器是对时钟进行比较产生闹时电信号的电路。2.2.1 D触发器的设计在本设计中运用到了3个D触发器,它主要是用在对数字进行校准时的按键消抖作用,以免在校时的时候产生抖动信号。在电路中用到了D触发器74LS74,74LS74的管脚图如图3-1。D2Q5Q6CLK341PRECLRA74LS74图3-1 74LS74管脚图触发器,它是

7、由门电路构成的逻辑电路,它的输出具有两个稳定的物理状态(高电平和低电平),所以它能记忆一位二进制代码。触发器是存放在二进制信息的最基本的单元。按其功能可为基本RS触发器触、JK触发器、D触发器和T触发器。这几种触发器都有集成电路产品。其中应用最广泛的当数JK触发器和D触发器。不过,深刻理解RS触发器对全面掌握触发器的工作方式或动作特点是至关重要的。事实上,JK触发器和D触发器是RS触发器的改进型,其中JK触发器保留了两个数据输入端,而D触发器只保留了一个数据输入端。D触发器有边沿D触发器和高电平D触发器。74LS74为一个电平D触发器。2.2.2数据选择器的设计 在多路数据传送过程中,能够根据

8、需要将其中任意一路选出来的电路,叫做数据选择器,也称多路选择器或多路开关。数据选择器(MUX)的逻辑功能是在地址选择信号的控制下,从多路数据中选择一路数据作为输出信号。通过QuartusII软件进行编译后,仿真结果如图3-2所示,图3-2 2选一数据选择器仿真结果打包后成元器件如图3-3所示;图3-3 2选一数据选择器2.2.3 计数器的设计计数器是一种计算输入脉冲的时序逻辑网络,被计数的输入信号就是时序网络的时钟脉冲,它不仅可以计数而且还可以用来完成其他特定的逻辑功能,如测量、定时控制、数字运算等等。数字钟的计数电路是用两个六十进制计数电路和“24进制”计数电路实现的。数字钟的计数电路的设计

9、可以用反馈清零法。当计数器正常计数时,反馈门不起作用,只有当进位脉冲到来时,反馈信号将计数电路清零,实现相应模的循环计数。以六十进制为例,当计数器从00,01,02,59计数时,反馈门不起作用,只有当第60个秒脉冲到来时,反馈信号随即将计数电路清零,实现模为60的循环计数。下面是用Verilog HDL语言编写的24进制、60进制计数器的程序代码:1)24进制计数器程序代码;module count24(ten,one,clk);output3:0 ten,one;input clk;reg3:0 ten,one;always (posedge clk)beginif(ten3:0=2&one

10、3:0=3)beginten3:0=0;one3:0=0;endelse if(one3:0=9)beginone3:0=0;ten3:0=ten3:0+1;endelseone3:0=one3:0+1;endendmodule通过QuartusII软件进行编译后,仿真结果如图3-4所示,图3-4 24进制计数器仿真结果打包后成元器件如图3-5所示;图3-5 24进制计数器2)60进制计数器程序代码;module count60(cout,ten,one,clk);output3:0 ten,one;output cout;input clk;reg3:0 ten,one;always (po

11、sedge clk)beginif(one3:0=9)beginone3:0=0;if(ten3:0=5)ten3:0=0;elseten3:0=ten3:0+1;endelseone3:0=one3:0+1;endassign cout=(ten3:0=0&one3:0=0)?1:0;endmodule通过QuartusII软件进行编译后,仿真结果如图3-6所示;图3-6 60进制计数器仿真结果打包后成元器件如图3-7所示;图3-7 60进制计数器2.2.4 数据分配器能够将1个输入数据,根据需要传送到m个输出端的任何一个输出端的电路,叫做数据分配器,又称为多路分配器,其逻辑功能正好与数据选

12、择器相反。电路结构:由与门组成的阵列。分类:1路-4路数据分配器(如74LS139)、1路-8路数据分配器(74LS138)等。由于译码器和数据分配器的功能非常接近,所以译码器一个很重要的应用就是构成数据分配器。 也正因为如此,市场上没有集成数据分配器产品,只有集成译码器产品。 通过QuartusII软件进行编译后,仿真结果如图3-8所示;图3-8 数据分配器仿真结果打包后成元器件如图3-9所示;图3-9 数据分配器2.2.5译码器 译码器是一个多输入、多输出的组合逻辑电路。它的工作是把给定的代码进行“翻译”,变成相应的状态,使输出通道中相应的一路有信号输出。译码器在数字系统中有广泛的用途,不

13、仅用于代码的转换、终端的数字显示,还用于数字分配,存储器寻址和组合控制信号等。译码器可以分为通用译码器和显示译码器两大类。在电路中用的译码器是共阴极译码器74LS48,用74LS48把输入的8421BCD码ABCD译成七段输出a-g,再由七段数码管显示相应的数。 通过QuartusII软件进行编译后,仿真结果如图3-11所示;图3-11 译码器仿真结果2.2.6分频器分频器的作用是将由石英晶体产生的高频信号分频成基时钟脉冲信号和扩展部分所需的频率。在此电路中,分频器的功能主要有两个:一是产生标准脉冲信号;二是功能扩展电路所需的信号,如仿电台用的1KHz的高频信号和500Hz的低频信号等.可以组

14、成二分频电路和四分频电路和十六分频器。打包后成元器件如图3-12所示; 图3-12 2分频、4分频、16分频分频器2.2.7闹时器数字钟在指定的时刻发出信号,或驱动音响电路“闹时”;或对某装置的电源进行接通或断开“控制”。不管是闹时还是控制,都要求时间准确,即信号的开始时刻与持续时间必须满足规定的要求。在这里将举例来说明它的工作原理。要求上午7时59分发出闹时信号,持续1分钟。设计如下:7时59分对应数字钟的时时个位计数器的状态为,分十位计数器的状态为,分个位计数器的状态为,若将上述计数器输出为“1”的所有输出端经过与门电路去控制音响电路,就可以使音响电路正好在7点59分响,持续1分钟后(即8

15、点)停响。所以闹时控制信号Z的表达式为式中,M为上午的信号输出,要求M=1。如果用与非门实现的逻辑表达式为:在电路图中用到了4输入二与非门74LS20,集电极开路的2输入四与非门74LS03,因OC门的输出端可以进行“线与”,使用时在它们的输出端与电源+5V端之间应接一电阻RL。RL的值由下式决定: =0.4V,=0.4mA,=2.4V,=50uA,=8mA,=100Ua;m为负载门输入端总个数。取RL=3.3K。如果控制1KHz高音和驱动音响电路的两极与非门也采用OC门,则RL的值应该重新计算。由电路图可以看见,上午7点59分,音响电路的晶体管导通,则扬声器发出1KHz的声音。持续1分钟到8

16、点整晶体管因为输入端为“0”而截止,电路停闹。 闹时器程序代码;module nsdl(out,m1,m2,h1,h2,tenh,oneh,tenm,onem,clk1k,cin);output out;input3:0 m1,m2,h1,h2,tenh,tenm,oneh,onem;input cin, clk1k;reg out;always (m1 or m2 or h1 or h2 or tenh or tenm or oneh or onem or cin) beginif(cin) out=0;else if(cin=0)beginif(tenh=h1&oneh=h2&tenm=m

17、1&onem=m2) out=clk1k;elseout=0;endendendmodule打包后成元器件如图3-13所示;图3-13 闹时器228 报时器(一)功能要求报时的功能要求是:每当数字钟计时快要到正点时,通常按照4低音1高音的顺序发出间断声响,以最后一声高音结束的时刻为正点时刻。(二)该电路的工作原理电路图的工作原理举例来说明;例如设4声低音(约500Hz)分别 在59分51秒、53秒、55秒及57秒,最后一声高音(约1000Hz)发生在59秒,它们的持续时间为1秒。只有当分十进位的,分个位的,秒十位的及秒个位的时,音响电路才能工作。(三)对该电路中使用的元件的介绍因为在该电路中所

18、用的元件主要是74LS00、74LS04及74LS20这些元件在前面的电路中已经介绍.这里就不再介绍它了报时器程序代码;module baoshi(tenm,onem,tens,ones,q500,q1k,a,b);input a,b;input 3:0tenm,onem,tens,ones;output q500,q1k;reg q500,q1k;always (tenm or onem or tens or ones)beginif (tenm,onem=8h59&tens,ones=8h50|tenm,onem=8h59&tens,ones=8h52|tenm,onem=8h59&ten

19、s,ones=8h54|tenm,onem=8h59&tens,ones=8h56|tenm,onem=8h59&tens,ones=8h58)q500=a;else q500=0;endalways (tenm or onem or tens or ones)beginif (tenm3:0=0000&onem3:0=0000)&(tens3:0=0000&ones3:0=0000)q1k=b;else q1k=0;endendmodule打包后成元器件如图3-14所示;图3-14 报时器23 数字钟原理图将各模块组合一起构成如图3-15所示:Sopc课程设计(论文)用纸 第3章 软件调试软

20、件调试的过程据功能的增加分为几步:首先,根据原来的100进制显示程序的基础上编写成时分秒六位显示的主程序。该程序将时分秒分成个位和十位分别计算,所以将60进制和24进制变成10进制、6进制和2进制。又因为如果时十位为2的话,不能大于3,所以在分十位向时个位进位时得判断时十位是否为2,在组员的帮助下经过不断试验和修改终于完成。过程比较顺利。该电子钟使用一个键来调时,利用长按来选择所要调的位,用短暂按下来对位进行加1,前提是时钟暂停,这个功能也是通过长按来实现的。选位是从秒个位到时十位依次选取,但到时十位以后就回不到秒个位了,就是不会循环。所以就得对选的位进行检查,如果到了时十位再按取位键就重新赋

21、给秒个位地址。这样就可以循环选位了。但在后来的测试中又有了新的问题,如果该位到了9,对一个位进行加1调整就会显示乱码。时分秒的十位都会调到9!对于这个问题费看一些周折。起先构思再加一个减一的键,但不但没有解决这个乱码问题而且减到了0一下很可能也会出现乱码。所以就转而寻求程序解决。调时的时候让它也像正常运行的时候进位?没见过这样的。继而决定在进行加1调时的时候检测该位是否到10或6或3。所以就产生了所谓的调时比较子程序,就是在调时的时候将该位跟10或6或3比较。最后,调试的时候却总是出现这样的情况:所调的位超过了9或5或2就变成乱码。比原来进步的地方就是时分秒的十位不用超过9就变成乱码。这说明虽

22、然还没成功,但还是有前展的。就继续调试。 结论我们对SOPC课程设计这门课的学习主要是理论学习和实验实践两个部分。通过对其理论知识的学习,我对硬件描述语言有了初步的认识,学会利用硬件描述语言完成相应功能系统的设计。在实验中,我们可以通过自己的实际操作,找出问题,改正错误,提出改进之法,大胆创新,使自己的能力在实践中成长起来。经过这几周的实验,我基本了解了实验设计过程。虽然有些实验很简单,但是他们体现了EDA设计的大概流程 。通过这么多次的试验我将一些在课堂上了解了的知识的运用到了实验中,经过实验课之后,我对于VHDL语言的理解更加深刻了,本来有些不理解的理论知识,都能通过实验得到一定解答。在实

23、验的过程中,有时遇到难题的时候,我们上网或去图书馆查找资料,或者向老师和同学们讨论,在这个过程中我学习到了一些我们在课堂上学不到的知识。通过这次课程设计使我更加深刻的懂得了理论与实际相结合的重要性!只有理论知识无法实现相关的设计和实际操作,当把所学的理论知识与实践相结合起来,从理论中得出结论,这样才能把所学的理论知识更加巩固至掌握住,才能提高自己的实际动手能力和独立思考能力。参考文献1 李东生.电子设计自动化与IC设计.北京:高等教育出版社,20042 蔡明生.电子设计.北京:高等教育出版社,20043 齐洪喜,陆颖.VHDL电路设计使用教程.北京:清华大学出版社,20044 雷伏容.VHDL

24、电路设计.北京:清华大学出版社,20065 黄仁欣.EDA技术实用教程.北京:清华大学出版社,20066 路而红.电子设计自动化应用技术.北京:高等教育出版社,20047 陈有卿.实用555时基电路300例.北京:中国电力出版社,20048 晶体管技术编辑部.电子技术原理.制作.实验.北京:科学出版社,20059 张亦华,延明.数字电路EDA入门VHDL程序实例集.北京:北京邮电大学出版社,200310 王延才,赵德申.电子技术实训.北京:高等教育出版社,2003附录 下面是用Verilog HDL语言编写的2选一数据选择器的程序代码:module mux2(out,a,b,sel);outp

25、ut out;input a,b,sel;reg out;always (a or b or sel)beginif(sel=1)out=a;else out=b;endendmodule下面是用Verilog HDL语言编写的24进制、60进制计数器的程序代码:1)24进制计数器程序代码;module count24(ten,one,clk);output3:0 ten,one;input clk;reg3:0 ten,one;always (posedge clk)beginif(ten3:0=2&one3:0=3)beginten3:0=0;one3:0=0;endelse if(one

26、3:0=9)beginone3:0=0;ten3:0=ten3:0+1;endelseone3:0=one3:0+1;endendmodule2)60进制计数器程序代码;module count60(cout,ten,one,clk);output3:0 ten,one;output cout;input clk;reg3:0 ten,one;always (posedge clk)beginif(one3:0=9)beginone3:0=0;if(ten3:0=5)ten3:0=0;elseten3:0=ten3:0+1;endelseone3:0=one3:0+1;endassign co

27、ut=(ten3:0=0&one3:0=0)?1:0;endmodule数据分配器程序代码:module x(q,L,hten,hone,mten,mone,sten,sone,clk);output3:0 q;output5:0 L;input 3:0 hten,hone,mten,mone,sten,sone;input clk;reg3:0 q,rel;reg5:0 L;always (posedge clk)beginif(rel3:0=5) rel3:0=0;elserel3:0=rel3:0+1;endalways (rel )beginif(rel3:0=0) begin q3:

28、0=sone3:0; L5:0=6b111110;endelse if(rel3:0=1) begin q3:0=sten3:0;L5:0=6b111101;endelse if(rel3:0=2) begin q3:0=mone3:0;L5:0=6b111011;endelse if(rel3:0=3) begin q3:0=mten3:0; L5:0=6b110111;endelse if(rel3:0=4) begin q3:0=hone3:0; L5:0=6b101111;endelse begin q3:0=hten3:0;L5:0=6b011111;endendendmodule译

29、码器程序代码;module yima308(out,in);output7:0 out;input3:0 in;reg7:0 out;always (in) begin case(in)4d0:out=8b00000010;4d1:out=8b10011110;4d2:out=8b00100100;4d3:out=8b00001100;4d4:out=8b10011000;4d5:out=8b01001000;4d6:out=8b01000000;4d7:out=8b00011110;4d8:out=8b00000000;4d9:out=8b00001000;endcaseendendmodu

30、le1)2分频程序代码;module fen2(a,b,q);input b;output a;output q;reg q;always (posedge b )begin q=q+1; endassign a=(q=4d1)?1:0;endmodule2)4分频程序代码;module fen4(a,b,q);input b;output a;output1:0 q;reg1:0q;always (posedge b )begin q=q+1; endassign a=(q=2d3)?1:0;endmodule3)16分频程序代码;module fen16(a,b,q);input b;ou

31、tput a;output3:0 q;reg3:0q;always (posedge b )begin q=q+1; endassign a=(q=4d15)?1:0;endmodule 闹时器程序代码;module nsdl(out,m1,m2,h1,h2,tenh,oneh,tenm,onem,clk1k,cin);output out;input3:0 m1,m2,h1,h2,tenh,tenm,oneh,onem;input cin, clk1k;reg out;always (m1 or m2 or h1 or h2 or tenh or tenm or oneh or onem o

32、r cin) beginif(cin) out=0;else if(cin=0)beginif(tenh=h1&oneh=h2&tenm=m1&onem=m2) out=clk1k;elseout=0;endendendmodule报时器程序代码;module baoshi(tenm,onem,tens,ones,q500,q1k,a,b);input a,b;input 3:0tenm,onem,tens,ones;output q500,q1k;reg q500,q1k;always (tenm or onem or tens or ones)beginif (tenm,onem=8h59

33、&tens,ones=8h50|tenm,onem=8h59&tens,ones=8h52|tenm,onem=8h59&tens,ones=8h54|tenm,onem=8h59&tens,ones=8h56|tenm,onem=8h59&tens,ones=8h58)q500=a;else q500=0;endalways (tenm or onem or tens or ones)beginif (tenm3:0=0000&onem3:0=0000)&(tens3:0=0000&ones3:0=0000)q1k=b;else q1k=0;endEndmodule赣南师范学院2011-2012学年第一学期SOPC技术课程设计 课程设计题目:Sopc数字钟的设计 设计要求:在设计中采用EDA自动化设计技术。以计算机为基本平台,以硬件描述语言为系统逻辑描述表达方式,以EDA工具作为开发环境,以大规模可编程逻辑器件为设计载体,以专用集成电路ASIC为目标器件,以电子系统设计为应用方向的电子产品自动化设计过程。 1.介绍Verilog HDL语言。 2.介绍在QuartusII软件上对数字钟的设计。 3.介绍系统仿真结果和硬件验证与分析。 教师评语:教师签字:年 月 日

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!