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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

VHDL设计多功能数字钟.docx

1、VHDL设计多功能数字钟EDA期末作业班级:020914(一)选题目的学习使用QuartusII 9.0,巩固已掌握的EDA知识,增强自己的动手实践能力。(二)设计目标实现多功能数字钟的设计,主要有以下功能:计时,并且可以24小时制和12小时制转换。闹钟整点报时秒表(三)实现方案该课题的实现过程大体如下:先对4MHZ的信号进行分频使其变为1HZ;将该信号加入计数器中(模60和模24/12)实现基本时钟功能;然后在此基础上加入闹钟,秒表,整点报时,24/12小时制转换模块;最后在动态显示电路中实现上述功能。(四)设计过程、模块仿真及实现结果一、 分频器分频器的VHDL语言为(4M分频)libra

2、ry ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity fenpinqi isport( clk_in : in std_logic; clk_out : out std_logic);end fenpinqi;architecture behivor of fenpinqi is signal cou : std_logic_vector(21 downto 0);begin process(clk_in) begin if clk_inevent and clk_in=1 then cou=cou

3、+1; end if; end process; process(cou) begin clk_out=cou(21); end process;end architecture behivor;完成4Mhz到1hz的转换仿真结果略。二、计时器(模60,模24,模12)模60设计的电路图如下模24/12计数器如下合成模块分别如下仿真波形如下M60波形分析:ql3.0从0变到9,qh3.0从0变到5,当clk经过60个周期后,co输出一个脉冲。从而实现模60计数器的功能。M24/12模12计数器(sv6=0)模24计数器(sv6=1)波形分析:由于要进行24/12小时制的转换,所以加入开关sv6

4、来控制转换模24和模12计数器。由波形图可以看出,模24和模12功能均已实现。计时器总电路为三、动态显示功能1、由sv3和sv8来控制转换正常计数器、闹钟、秒表的转换。当sv3=0、sv8=0时,显示正常计时器;当sv3=0、sv8=1时,显示秒表;当sv3=1时,显示闹钟。实现此功能的VHDL语言如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mand isport( sv3,sv8 : in std_logic; sl,sh,ml,mh,hl,hh,ap,d,rsl,rsh

5、,rml,rmh,rhl,rhh,rap,rd,swa,swb,swc,swd:in std_logic_vector(3 downto 0); asl,ash,aml,amh,ahl,ahh,aap,ad: out std_logic_vector(3 downto 0) );end mand;architecture arc of mand is signal tmp:std_logic_vector(3 downto 0);beginprocess(sv3)begin if(sv3=0)then if sv8=0 then asl=sl;ash=sh;aml=ml;amh=mh; ahl

6、=hl;ahh=hh;aap=ap;ad=d; else asl=swa;ash=swb;aml=swc;amh=swd; ahl=1010;ahh=1010;aap=0000;ad=1010; end if; else asl=rsl;ash=rsh;aml=rml;amh=rmh; ahl=rhl;ahh=rhh;aap=rap;ad=rd; if(rap=0010and rhh=0000 and rhl=0000)then ahh=0001;ahl=0010; end if; end if; end process; end arc; 2、数据选择器VHDL语言描述如下:library

7、ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity chs isport( clk : in std_logic; sl,sh,ml,mh,hl,hh,ap,d:in std_logic_vector(3 downto 0); data: out std_logic_vector(3 downto 0); en: out std_logic_vector(7 downto 0) );end chs;architecture arc of chs is signal tt:std_logic_vector

8、(2 downto 0); signal t: integer range 0 to 30000;begin process(clk) begin if(clkevent and clk=1)then t=t+1; if t=30000 then ttdata=sl;endata=sh;endata=ml;endata=mh;endata=hl;endata=hh;endata=ap+10;endata=d;enffffffffffffffy1y1y1y1y1y1=0; end case; end if; end process; end arc ; 合成模块如下:其中okhz代表频率为1kh

9、z的信号(由4K分频器获得),tkhz代表频率为2khz的信号(由2khz分频器获得)。仿真结果为:波形分析:当分钟为“59”,秒钟的高位是“5”时,秒钟的低位为“2”、“4”、6”、”8”时,输出y1为低频信号;当秒钟的低位为“9”时,输出为高频信号。从而实现整点报时功能。六、闹钟功能电路图如下电路说明:由于闹钟只需要设置分钟、小时,所以分钟、始终为正常计数器,采用原来校分校时的方法来设定闹钟时间。这里用sv3和sv4构成一个24译码器来控制校准的对象。当sv3=0,sv4=0时,停止校准,分钟,时钟保持数字不变;当sv3=1,sv4=0时,校准分钟,时钟不变;当sv3=0,sv4=1时,校

10、准时钟,分钟不变。在闹钟功能中,由于用不到秒钟,所以秒钟始终显示“”(BCD码表示为1010,)故上图中的ringsec模块就是实现秒钟置“”功能,其VHDL语言为:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity ringsec isport( en : in std_logic; rsl,rsh: out std_logic_vector(3 downto 0) );end ringsec;architecture arc of ringsec isbeginprocess(en)

11、begin if(en=1)then rsl=1010; rsh=1010; end if; end process;end arc;合成模块如上图所示(ringsec)。为了实现闹钟功能,我们还要设计一个比较模块,当计时器与闹钟的时钟、分钟都相等的时候给蜂鸣器一个信号,使其发声。其VHDL语言如下:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cmp isport( clk : in std_logic; ml,mh,hl,hh,o,rml,rmh,rhl,rhh,ro: in

12、std_logic_vector(3 downto 0); r: out std_logic );end cmp;architecture arc of cmp isbeginprocess(clk)begin if(ml=rml and mh=rmh and hl=rhl and hh=rhh)then r=clk; else rchh=hh;chl=hl;cap if hl0010then chh=hh;chl=hl; cap=0001; else chh=0000;chl=hl-2;capcap=0010; if hl0010then chl=hl+8; chh=0000; 2021点的

13、变化 else chl=hl-2; chhnull; end case; else 原来是12小时制,sv6变为1,需要进行12转24的工作 if ap=0001then chh=hh;chl=hl; AM的转换,数字都不变,只是不显示“A”,显示“” end if; if ap=0010then if hl1000 then chh=hh+1;chl=hl+2; 下午18点的转换 else chl=hl-8;chh=hh+2; 下午811点的转换 end if; end if; cap=0000; 换成24小时制后,原来现实A、P的管显示“” end if; end process; end

14、 arc; 2、当变化sv6时,还要对原来计时器的电路(包括闹钟中的计时电路)中的小时位进行摸12和摸60的转换。转换电路如下(newm24):其中左上角的dmc模块是作为数据选择器74157控制信号发声器(即单脉冲发声器),其内部电路如下所示(dmc)Newm24模块合成为Newm24和dmc的仿真结果如下:Newm24电路说明:为了能在拨动开关sv6的同时进行模24模12转换,必须在开关拨动的同时使其能产生一个时间长度大于计时器一个周期,不大于其两个周期的单脉冲信号,从而保证在计时器时钟边沿到来时,能将chg所产生的转换信号置数到计数器。(上图中的chh3.0和chl3.0为上述VHDL语

15、言所编程序中的输出信号)。当sv6发生变化时,dmc会产生一个值为0的单脉冲,置数端信号为0,计数器将chh3.0、chl3.0分别置入计时器时钟的十位和个位;当sv6不变时,数据选择器选择的数均为“0000”,计数器正常计数至11或23时发生置数,正常计数。合成后的总电路图为开关对应功能表Sv1、sv2Sv1和sv2是整个电路功能的控制器。当sv1sv2=00时,计数器正常工作;当sv1sv2=10时,进行校分工作;当sv1sv2=01时,进行校时工作;当sv1sv2=11时,进行校天工作Sv3、sv8由sv3和sv8来控制转换正常计数器、闹钟、秒表的转换。当sv3=0、sv8=0时,显示正

16、常计时器;当sv3=0、sv8=1时,显示秒表;当sv3=1时,显示闹钟Sv5控制秒表Sv3、sv4sv3和sv4构成一个24译码器来控制校准的对象。当sv3=0,sv4=0时,停止校准,分钟,时钟保持数字不变;当sv3=1,sv4=0时,校准分钟,时钟不变;当sv3=0,sv4=1时,校准时钟,分钟不变Sv6当sv6=0时为12小时制;当sv6=1时为24小时制(五)遇到的困难各个模块之间的链接修改了很多次,提前没有整体构思好,单个模块设计好以后总是会在模块间的组合上出现接口不对应的情况。在24/12小时制模块chg的设计中,不同的时间转换考虑的不周全(例如下午17点和下午811点的变化不一样)自己对知识的掌握还是不够好,有许多模块设计了很长的时间(无论是构思还是具体编程)。(六)对课程的建议EDA课程上完以后,我感觉这门课程实际应用很强。非常锻炼动手能力,与其他的课程很不一样。希望学校增加该课的课时。

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

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