ImageVerifierCode 换一换
格式:DOCX , 页数:16 ,大小:140.09KB ,
资源ID:20304945      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/20304945.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(实习数字钟.docx)为本站会员(b****2)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

实习数字钟.docx

1、实习数字钟EDA 实习(数字钟控制器的设计)封皮数字钟控制器一 设计任务与要求试设计一个显示时(2位)、分(2位)、秒(2位)的多功能电子钟。具体要求如下:(1)具有时、分、秒计数显示功能,以24小时循环计时;(2)LED动态显示时、分、秒和分隔符;(3)具有清零、调节小时、分钟、整点报时、整天报时功能。二电路连接图及工作原理描述图1-1 电路硬件连接系统框图工作原理描述:根据设计要求,采用如图1-1所示的硬件连接电路,该系统共有5个输入:clk基准脉冲(1Hz)、ckdsp显示扫描脉冲(1kHz)、res清零、hrtmp调时、mintmp调分,13个输出:q0q7是八段的显示、sel0sel

2、2是位选信号、ring整点蜂鸣器输出、ca是整天报时输出。三.VHDL程1.顶层模块划分如图1-2所示为EPM7128SLC84-6芯片内的系统方块图. 该系统框图由八个模块组成,分别为:秒、分、时计数模块,分隔符显示模块,整点、整天报时模块,LED动态显示扫描模块,LED显示译码器模块组成。其工作原理是:基准脉冲输入信号同时加到秒、分、时、分隔符的脉冲输入端,采用并行计数的方式,秒的进位接到分的使能端上,秒的使能借到分隔符的使能上,分得接到时的使能端上,完成秒、分、时和分隔符的循环计数。整点报时是根据分的A、B输出同时为0时,整点报时模块输出高电平控制报时。整天报时是根据时、分得输出都为0时

3、而输出高电平控制整天报时的。LED显示扫描模块根据输入的扫描信号CKDSP轮流选通秒、分、时、分隔符的8位八段数码管,LED显示译码器完成计数器输出的BCD的译码。图1-2 数字时钟控制器系统框图2.分模块及仿真(1).秒计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY seccount IS PORT(en,res,clk:IN STD_LOGIC; ca:OUT STD_LOGIC; a,b:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END sec

4、count;ARCHITECTURErtl OF seccount ISSIGNAL aout,bout:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL cout:STd_logic;BEGIN PROCESS(en,clk,res) BEGIN IF(res=0)THEN aout=0000; bout=0000; cout=0; ELSIF(clkevent AND clk=1)THEN IF en=1THEN IF bout=0101AND aout=1000then aout=1001; cout=1; ELSIF aout1001THEN aout=aout+

5、1; ELSE aout=0000; IF bout0101THEN bout=bout+1; ELSE bout=0000; cout=0; END IF; END IF; END IF; END IF; END PROCESS; a=aout; b=bout; ca=cout;END rtl;图1-3 秒计数器模块仿真波形(2).分计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY mincount IS PORT(en1,en2,res,clk:IN STD_LOGIC;

6、 ca:OUT STD_LOGIC; a,b:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END mincount;ARCHITECTURE rtl OF mincount ISSIGNAL aout,bout:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL cout:STD_LOGIC;BEGIN PROCESS(en1,en2,clk,res) BEGIN IF(res=0)THEN aout=0000; bout=0000; cout4)THEN IF(aout8)THEN aout=0000; bout=0000; cout=1; ELSE

7、 aout=aout+1; END IF; ELSE IF(aout=9)THEN aout=0000; bout=bout+1; ELSE aout=aout+1; cout=0; END IF;END IF; ELSE cout=0; END IF; END IF; END PROCESS; a=aout; b=bout; ca=cout; END rtl; 图1-4 分计数器模块仿真波形(3).时计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY count24 IS P

8、ORT(en1,en2,res,clk:IN STD_LOGIC; ca:OUT STD_LOGIC; a,b:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END count24;ARCHITECTURE rtl OF count24 ISSIGNAL aout,bout:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL cout:STD_LOGIC;BEGINPROCESS(en1,en2,clK,res)BEGIN IF(res=0)THEN aout=0000; bout=0000; cout=0; ELSIF(clkevent AND clk

9、=0)THEN IF en1=1 OR en2=0 THEN IF bout=0010 and aout=0011THEN aout=0000; bout=0000; cout=1; ELSIF aout1001then aout=aout+1;ELSE aout=0000; bout=bout+1; END IF; END IF; END IF; END PROCESS; a=aout; b=bout; ca=cout;END rtl;图1-5 时计数器模块仿真波形(4).分隔符计数器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.ST

10、D_LOGIC_UNSIGNED.ALL;ENTITY dian IS PORT(en,res,clk:IN STD_LOGIC; a,b:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END dian;ARCHITECTURE rtl OF dian ISSIGNAL aout,bout:STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(en,clk,res) BEGIN IF(res=0)THEN aout=0000; bout=0000; ELSIF(clkevent and clk=1) THENIF(en=1)THEN aout

11、=1010; bout=1010;END IF; END IF; END PROCESS; a=aout; b=bout; END rtl; 图1-6 分隔符模块仿真波形(5).整点报时器模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ring IS PORT(a,b:IN STD_LOGIC_VECTOR(3 DOWNTO 0); r_out:OUT STD_LOGIC);END ring;ARCHITECTURE beh OF ring ISBEGINr_out=1 WHEN

12、 a=0000 AND b=0000 ELSE0;END beh;图1-7 整点报时器模块仿真波形(6).整天报时器模块LIBRARY IEEE;USEIEEE.STD_LOGIC_1164.ALL;USEIEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY deng ISPORT (a,b,c,d:IN STD_LOGIC_VECTOR(3 DOWNTO 0); ca:OUT STD_LOGIC);END deng;ARCHITECTURE beh OF deng ISBEGIN ca=1 WHEN a=0 AND b=0 AND c=0 AND d=0 ELSE 0;END

13、 beh;图1-8 整天报时器模块仿真波形(7).LED动态显示扫描模块LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY scanselect IS PORT(clk:IN STD_LOGIC; res:IN STD_LOGIC; in1,in2,in3,in4,in5,in6,in7,in8:IN STD_LOGIC_VECTOR(3 DOWNTO 0); sel:OUT STD_LOGIC_VECTOR(2 DOWNTO 0); daout:OUT STD_LOGIC_VECTOR

14、(3 DOWNTO 0);END scanselect;ARCHITECTURE behave OF scanselect IS BEGIN PROCESS(clk) VARIABLE cnt:STD_LOGIC_VECTOR(2 DOWNTO 0); BEGIN IF(clkevent AND clk=1) THEN IF res=0THEN cnt:=000; ELSE IF cnt=111THEN cnt:=000; ELSE cnt:=cnt+1; END IF;END IF; IF cnt=000THEN daout(0)=in1(0); daout(1)=in1(1); daout

15、(2)=in1(2); daout(3)=in1(3); ELSIF cnt=001THEN daout(0)=in2(0); daout(1)=in2(1); daout(2)=in2(2); daout(3)=in2(3); ELSIF cnt=010THEN daout(0)=in3(0); daout(1)=in3(1); daout(2)=in3(2); daout(3)=in3(3); ELSIF cnt=011THEN daout(0)=in4(0); daout(1)=in4(1); daout(2)=in4(2); daout(3)=in4(3); ELSIF cnt=100

16、THEN daout(0)=in5(0); daout(1)=in5(1); daout(2)=in5(2); daout(3)=in5(3); ELSIF cnt=101THEN daout(0)=in6(0); daout(1)=in6(1); daout(2)=in6(2); daout(3)=in6(3); ELSIF cnt=110THEN daout(0)=in7(0); daout(1)=in7(1); daout(2)=in7(2); daout(3)=in7(3); ELSIF cnt=111THEN daout(0)=in8(0); daout(1)=in8(1); dao

17、ut(2)=in8(2); daout(3)=in8(3); END IF; END IF; selqqqqqqqqqqq=1000000; END CASE; END PROCESS;END rtl;图1-10 扫描模块仿真波形四.设计总结 在对数字钟控制器设计的实习过程中,我前后总共编了4次,修改了很多次才成功。对于程序这东西你必须实实在在的懂它,了解它,对它。如果你糊弄它,它就会毫不留情地给你带来非常头痛的烦恼。 在第一次编程下载完成后,打开试验箱电源发现数码管都不亮。后来发现器件的1、2、83引脚用的不正确,经调整后就能使了。这次错误是对器件的引脚功能不懂造成的。然后我验证各个模块的进

18、位是否正确,发现,时的进位有一段时间会随着秒的显示一起走,经过分析知道这个现象是分计数器模块进位错误造成的,我就对分计数器模块的程序进行分析,知道了程序的错误是在IF(en1=1or en2=0)THEN语句结束之前少了 ELSE cout=0; 语句。 在编程的过程中我的心里面也遇到了一些困扰。尤其是对整天报时这个问题的处理上。我先是用了几种自己的方法,但效果都不好。后来我我就问了别的同学,他们说加一个与门连接秒、分、时的输出脉冲,我就有点迷惑了,不知道为什么。根据波形图分析,秒、分、时的输出脉冲时由基准时钟控制的,它们三个与在一起只能出现短时间的闪烁现象而不会有1分钟的报时。后来我只能按照自己的思路去做,把分和时的输出都为0的的情况与在一起,结果基本正确了。 对于VHDL的学习要有一定的前瞻性,局部观和整体观。有时,即使你的所有模块都编译正确,但最终的结果也不一定正确。编译正确了也不能说明此模块对于这个课题就是匹配的,没有缺陷的。最根本的还是能够理解和了解它,能够根据出现的问题找到原因。 在这几天的实习过程中我总是思考着一些问题,怎样才能把遇到的错误解决,怎样才能把试验做好。每解决了一个问题之后心里面也是挺高兴的,因为我感觉到了自己在进步。这次实习给我的记忆很深,也更好的锻炼了我独立思考和动手能力,也让我对EDA、VHDL有了更深层次的理解。

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1