EDA课程设计——多功能数字钟_多功能数字钟eda设计

其他范文 时间:2020-02-28 06:16:53 收藏本文下载本文
【www.daodoc.com - 其他范文】

EDA课程设计——多功能数字钟由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“多功能数字钟eda设计”。

哈尔滨工业大学(威海)电子学课程设计报告

带有整点报时的数字钟设计与制作

姓名: 蒋栋栋 班级: 0802503 学号: 080250331 指导教师:

井岩

目录

一、课程设计的性质、目的和任务„„„„„„„„„„„„3

二、课程设计基本要求„„„„„„„„„„„„„„„„„3

三、设计课题要求„„„„„„„„„„„„„„„„„„„3

四、课程设计所需要仪器„„„„„„„„„„„„„„„„4

五、设计步骤„„„„„„„„„„„„„„„„„„„„„4

1、整体设计框图„„„„„„„„„„„„„„„„„„„42、各个模块的设计与仿真„„„„„„„„„„„„„„„4

2.1分频模块„„„„„„„„„„„„„„„„„„„„„„„4

2.2计数器模块„„„„„„„„„„„„„„„„„„„„„„6

2.3控制模块„„„„„„„„„„„„„„„„„„„„„„10

2.4数码管分配„„„„„„„„„„„„„„„„„„„„„13

2.5显示模块„„„„„„„„„„„„„„„„„„„„„„14

2.6报时模块„„„„„„„„„„„„„„„„„„„„„„16

六、调试中遇到的问题及解决的方法„„„„„„„„„„„18

七、心得体会„„„„„„„„„„„„„„„„„„„„„18

一、课程设计的性质、目的和任务

创新精神和实践能力二者之中,实践能力是基础和根本。这是由于创新基于实践、源于实践,实践出真知,实践检验真理。实践活动是创新的源泉,也是人才成长的必由之路。

通过课程设计的锻炼,要求学生掌握电路的一般设计方法,具备初步的独立设计能力,提高综合运用所学的理论知识独立分析和解决问题的能力,培养学生的创新精神。

二、课程设计基本要求

掌握现代大规模集成数字逻辑电路的应用设计方法,进一步掌握电子仪器的正确使用方法,以及掌握利用计算机进行电子设计自动化(EDA)的基本方法。

三、设计课题要求

(1)构造一个24小时制的数字钟。要求能显示时、分、秒。(2)要求时、分、秒能各自独立的进行调整。

(3)能利用喇叭作整点报时。从59分50秒时开始报时,每隔一秒报时一秒,到达00分00秒时,整点报时。整点报时声的频率应与其它的报时声频有明显区别。

#设计提示(仅供参考):(1)对频率输入的考虑

数字钟内所需的时钟频率有:基准时钟应为周期一秒的标准信号。报时频率可选用1KHz和2KHz左右(两种频率相差八度音,即频率相差一倍)。另外,为防止按键反跳、抖动,微动开关输入应采用寄存器输入形式,其时钟应为几十赫兹。

(2)计时部分计数器设计的考虑 分、秒计数器均为模60计数器。

小时计数为模24计数器,同理可建一个24进制计数器的模块。(3)校时设计的考虑

数字钟校准有3个控制键:时校准、分校准和秒校准。

微动开关不工作,计数器正常工作。按下微动开关后,计数器以8Hz频率连续计数(若只按一下,则计数器增加一位),可调用元件库中的逻辑门建一个控制按键的模块,即建立开关去抖动电路(见书70页)。

(4)报时设计的考虑

可以将高频时钟分频得到约2KHz和1KHz的音频,作为数字钟的报时频率。当电子钟显示XX:59:50时,数字钟开始报时“DO“,持续一秒,而且每隔一秒报一下,直至显示XX:00:00时报“DI”,持续一秒后停止。最后输出至喇叭。应调用元件库中的逻辑门建一个控制报时的模块。

(5)建一个七段译码的模块

因在系统可编程器件实验箱上的数码管没有经过译码,故要用AHDL语言写一个七段译码的模块,且应考虑数码管为共阳极。数码管上的点(D2、D4、D6)应置Vcc。

四、课程设计所需要仪器

1、计算机一台

2、quartusⅡ软件

3、FPGA开发板

五、设计步骤

1、模块介绍

(1)分频模块:产生1Hz、1KHz、2KHz频率(2)计数器模块:生成60进制、24进制计数器(3)控制模块:按键控制、按键消抖

(4)显示模块:7段数码管显示器,分别显示小时、分钟、秒(5)报时模块:进行整点报时

2、各个模块的设计与仿真

2.1分频模块

CLK晶振频率50MHZ,分成2KHZ,1KHZ,1HZ的信号。基准1HZ信号作为时钟计时的秒计数时钟信号;分频的1KHZ,2KHZ信号用于报时电路的不同声讯。

程序代码:

library ieee;use ieee.std_logic_1164.all;entity fre is port(clk ,sel: in std_logic;clk1hz,clk1khz,clk2khz:out std_logic);end fre;architecture beh of fre is signal data1khz,data2khz,data1hz : std_logic := '0';begin clk1hz

clk2khz

输入模块电路图:

产生2khz信号 产生1hz 信号 5 freclkclk1hzclk2khzinst selclk1khz2.2计数器模块

由秒计数器,分计数器,时计数器组成了最基本的数字钟计时电路,两个六十进制计数器与二十四进制计数器组合构成。

程序代码:

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use IEEE.STD_LOGIC_ARITH.ALL;

entity shuzizhong is port(clk_change : in std_logic;s_en,m_en,h_en:in std_logic;sel:in std_logic;secout,minout,hourout :out std_logic;sl,sh,ml,mh,hl,hh:out std_logic_vector(3 downto 0);a:out std_logic_vector(15downto 0));end shuzizhong;architecture behav of shuzizhong is

signal low_rega,high_rega,low_regb,high_regb,low_regc,high_regc :std_logic_vector(3 downto 0):=“0000”;signal sout,mout,hout :std_logic :='0';begin--秒的60进制进制 counter_sec_l : proce(clk_change,s_en)begin

sl

----分钟的60进制设置 counter_min_l : proce(clk_change,m_en)begin if clk_change'event and clk_change='1' then if m_en='1' then if sout='1'or sel='0' then if low_regb=“1001” then low_regb

if high_regb =“0101”then

high_regb

输入模块电路图:

shuzizhongclk_changes_enm_enh_enselsecoutminouthouroutsl[3..0]sh[3..0]ml[3..0]mh[3..0]hl[3..0]hh[3..0]a[15..0]inst

2.3控制模块

分五个状态0状态正常计时,按下按键进入下一状态开始调时模式1,按下按键进入调秒模式2,按下按键进入调分模式3,按下按键进入调小时模式4.按下按键恢复正常计时模式。

程序代码:

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity key_pre is port(set ,mode: in std_logic;clk1khz,clk1hz: in std_logic;secout,minout: in std_logic;clk_change,clk2hz_en:out std_logic;sel,s_ce,m_ce,h_ce:out std_logic;s_en,m_en,h_en:out std_logic);end key_pre;architecture beh of key_pre is 9 signal key1,key2:std_logic;signal sce_reg, mce_reg ,hce_reg:std_logic;signal l,en,mmen,hhen:std_logic;signal con : integer range 0 to 4 :=0;--按键按下(延时)begin

key_pre2 : proce(set,clk1khz)variable cnt :integer range 0 to 999;begin if set='0' then if clk1khz'event and clk1khz='1'then if cnt=50 and set='0' then cnt :=cnt+1;key2 l l l l l l s_ce s_ce s_ce

输入模块电路图: key_preetclk_changemodeclk2hz_enclk1khzselclk1hzs_cesecoutm_ceminouth_ces_enm_enh_eninst

2.4数码管分配

程序代码:

library ieee;use ieee.std_logic_1164.all;entity display is port(datain : in std_logic_vector(3 downto 0);dataout : out std_logic_vector(7 downto 0));end display;architecture duan of display is begin proce(datain)begin case datain is 12 when “0000” => dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout dataout null;end case;end proce;end;

输入模块电路图:

displaydatain[3..0]dataout[7..0]inst

2.5显示模块

使用七段数码管显示小时、分钟与秒

程序代码:

library ieee;use ieee.std_logic_1164.all;entity scan is port(clk1khz : in std_logic;sl,sh,ml,mh,hl,hh : in std_logic_vector(3 downto 0);clk2hz_en : in std_logic;s_ce,m_ce,h_ce : in std_logic;en_out : out std_logic_vector(7 downto 0);13 dataout : out std_logic_vector(3 downto 0));end scan;architecture beh of scan is signal cnt : integer range 0 to 7;signal en : std_logic_vector(7 downto 0);signal clk2hz : std_logic;signal h_ce_reg,m_ce_reg,s_ce_reg : std_logic;begin h_ce_reg dataout dataout dataout dataout dataout dataout dataout dataout null;end case;end proce scan_pro;

en_out

输入模块电路图:

scanclk1khzen_out[7..0]sl[3..0]dataout[3..0]sh[3..0]ml[3..0]mh[3..0]hl[3..0]hh[3..0]clk2hz_ens_cem_ceh_ceinst

2.6报时模块

利用蜂鸣器进行整点报时

程序代码:

library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use IEEE.STD_LOGIC_ARITH.ALL;--整点报时 entity baoshi is port(clk1khz,clk2khz : in std_logic;a:in std_logic_vector(15 downto 0);sel:in std_logic;bell:out std_logic);end baoshi;architecture zhong of baoshi is signal c1,ring:std_logic;begin ring_bell :proce(clk1khz,clk2khz)15 begin case a is when “***0” => c1 c1 c1 c1 c1 c1 c1 c1

bs: proce(c1)begin if sel='1' then if c1='1' then ring

end zhong;

输入模块电路图:

baoshiclk1khzbellclk2khza[15..0]selinst

整体模块电路图

displayshuzizhongs_enm_enh_enselclk_changes_enm_enh_enselsecoutminouthouroutsl[3..0]sh[3..0]ml[3..0]mh[3..0]hl[3..0]hh[3..0]setmodefreclkINPUTVCCINPUTVCCdata[3..0]datain[3..0]secoutminoutinst1scanclk1khzclk1khzsl[3..0]sh[3..0]ml[3..0]mh[3..0]hl[3..0]a[15..0]dataout[7..0]OUTPUTdataout[7..0]en_out[7..0]dataout[3..0]OUTPUTen_out[7..0]data[3..0]key_preetclk1khzmodeclk1khzclk1hzsecoutminoutclk_changeclk2hz_ensels_cem_ceh_ces_enm_enh_eninst6s_enm_enh_enselinst7a[15..0]INPUTVCChh[3..0]clk2hz_ens_cem_ceh_ceinst4baoshiclk1khzclk2khza[15..0]selclk1khzbellclk2khza[15..0]sel++selclkclk1hzselclk1khzclk2khzinst2clk1khzclk2khzsecoutminoutOUTPUTbellinst

六、调试中遇到的问题及解决的方法:

1、编程时,经常导致语法错误,如:“;”没有写上,变量类型没有预先标明,前后变量名字由于缺少一个或多一个字母而导致出错。解决办法:对照错误,认真检查程序,看哪个地方的标点,变量没有写上或标明。

2、进行编译或波形仿真时,经常得到的不是预想中的结果。

解决办法:将需要编译或进行仿真的实体文件置顶,经检错无误后,进行波形仿真,在仿真之前需要合理设置仿真结束时间和信号周期。

3、在控制时间的显示的时候,由于变量太多多发现不能完全的控制住变量,导致显示的时候出现了乱码,数码管显示不正常 解决办法:减少变量,仔细推敲,合理命名。

七、心得体会

一个多星期的课程设计让我受益匪浅,也让我真正明白理论与实践相结合的重要性。通过具体实践才能让自己清楚哪些知识已经掌握,哪些知识仍需巩固加强。与此同时,我也对EDA以及VHDL语言有了进一步了解,对于其结构、语法、功能等认识不少。当然,我目前所做的还仅仅只是一些基本操作,要想真正将其融会贯通还需要今后更多的学习与实践。虽然只是一个小设计,我却也从中学到了不少设计流程和一些相关问题。设计是一个十分严谨的过程,容不得随意和马虎。要想快速而高效地完成一项设计,必须先有一个清晰明了的设计思路,设想好一个整体框架,然后在此基础上,逐渐将各个部分功能进行完善。在设计的过程中,也曾遇到不少困难,但正所谓坚持就是胜利,要想取得成功,必须要有努力付出,这样所取得的结果才更有意义。

EDA数字钟课程设计

课 程 设 计 报 告设计题目:用VHDL语言实现数字钟的设计班 级:电子1002班 学 号:20102625 姓 名:于晓 指导教师:李世平、李宁 设计时间:2012年12月摘要数字钟是一种用数字电路技术......

EDA实现多功能数字钟

EDA实现多功能数字钟 实验 报 告专业班级:学生姓名:学生学号:目录一、内容摘要二、实验要求三、各底层模块设计四、总体方案五、心得体会一、实验内容利用 QuartusII 软件,结合......

eda 实现多功能数字钟

一、标题:EDA实现多功能数字钟二、任务书:设计要求是用FPGA器件和EDA技术实现多功能数字钟的设计,⑴ 控制功能包括①以数字形式显示时、分、秒的时间;②小时计数器为24进制;③分......

多功能数字钟课程设计

多功能数字钟朱安烟(安阳师范学院 物电学院, 河南 安阳 455002)摘要:时钟相比具有更高的准确性和直观性因此得到了更加广泛的使用。 数字钟从原理上讲是一种典型的数字电路,其中......

多功能数字钟课程设计报告

课题名称 姓名 学号 院、系、部 专业 指导教师电子技术课程设计报告书2016年6月12日一、设计任务及要求:用中小规模集成芯片设计并制作多功能数字钟,具体要求如下:1、准确及时,......

下载EDA课程设计——多功能数字钟word格式文档
下载EDA课程设计——多功能数字钟.doc
将本文档下载到自己电脑,方便修改和收藏。
点此处下载文档

文档为doc格式

热门文章
点击下载本文