目 录
摘要………………………………………………………………………2 1设计目的……………………………………………………………… 2 2设计内容 …………………………………………………………… 2
2.1设计任务……………………………………………………………2 2.2扩展 ……………………………………………………………2
3系统方案及设计原理 ……………………………………………… 3
3.1方案选择 ………………………………………………………… 3 3.2数字钟的基本工作原理 ………………………………………………
3
3.3底层元件接口……………………………………………………… 4 3.4数字钟设计的RTL电路…………………………………………… 5
4设计步骤 ………………………………………………………………5 5心得体会………………………………………………………………10 6 程序代码 ………………………………………………………… 10
下载可编辑
摘要:
人类社会已进入到高度发达的信息化社会。信息化社会的发展离不开电子信息产品开发技术、产品品质的提高和进步。电子信息产品随着科学技术的进步,其电子器件和设计方法更新换代的速度日新月异。实现这种进步的主要原因就是电子设计技术和电子制造技术的发展,其核心就是电子设计自动化(EDA,Electronics Design Automation)技术,EDA技术的发展和推广应用又极大地推动了电子信息产业的发展。为保证电子系统设计的速度和质量,适应“第一时间推出产品”的设计要求,EDA技术正逐渐成为不可缺少的一项先进技术和重要工具。目前,在国内电子技术教学和产业界的技术推广中已形成“EDA热”,完全可以说,掌握EDA技术是电子信息类专业学生、工程技术人员所必备的基本能力和技能。
EDA技术在电子系统设计领域越来越普及,本设计主要利用VHDL语言在EDA平台上设计一个电子数字钟,它的计时为24小时小时制,显示满刻度为23时59分59秒,另外还具有校时功能和闹钟功能。总的程序由几个各具不同功能的单元模块程序拼接而成,其中包括分频程序模块、时分秒计数和校时程序模块、数据选择器程序模块、显示程序模块和例化程序模块。并且使用QUARTUS II软件进行电路波形仿真,下载到EDA实验箱进行验证。
关键词:数字钟 EDA VHDL语言 一、设计目的
1、熟练地运用数字系统的设计方法进行数字系统设计; 2、能进行较复杂的数字系统设计; 3、按要求设计一个数字钟。
二、设计内容
2.1、设计任务:设计一台能显示时、分、秒的数字钟。具体要求如下: (1) 由实验箱上的时钟信号经分频产生秒脉冲; (2) 计时计数器用24进制计时电路;
(3) 可手动校时,能分别进行时、分的校正; (4) 整点报时;
2.2、扩展:设置闹时功能,当计时计到预定时间时,扬声器发出闹铃信号,闹铃时间为4s,并可提前终止闹铃。
.专业.整理.
下载可编辑
三、系统方案及设计原理。
3.1、方案选择:
数字钟无非就是分频计数,设计出60进制,24进制计数器,在这里,秒分计数是60进制,时计数是24进制,对1Hz信号进行60分频也就产生了分计数脉冲,对1Hz进行60 * 60 分频(对分60分频)也就产生了时计数脉冲,为了方便校时,系统设计时未直接采用实验箱上的1Hz作为基准时钟源,而是对65536Hz进行32768分频产生秒脉冲,8192分频作为校时与闹钟时间设置脉冲,为方便调闹钟,采用了数据选择器选择输出正常走时或闹钟时间。为节省代码,数码管译码工作直接交给了实验箱自带的译码器,选择工作模式0。
3.2、数字钟的基本工作原理:
数字钟以其显示时间的直观性、走时准确性作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。数字钟的基本原理方框图如图1:
时显示器 分显示器 秒显示器 时译码器 分译码器 秒译码器 报时/闹钟
时计数器 分计数器 秒计数器 1Hz 校时电路 5HZ
振荡器 分频器 图1 数字钟的系统框图
图3.1数字钟实现原理框图 该系统由振荡器、分频器、“时、分、秒”计数器、译码器及显示器、校时电路、整点报时电路等组成。石英晶体振荡器和分频器产生整个系统的时基信号,它直接决定计时系统的精度。“秒计数器”采用六十进制计数器,每累计60秒向“分计数器”进位;“分计数器”采用六十进制计数器,每累计60分向“时计数器”进位;“时计数器”采用二十四进制计数器,按照“24翻1”规律计数。“时、分、秒”计数器的输出经译码器送显示器显示。校时电路用来当计时出现误差时对“时、分、秒”进行校对调整。整点报时(闹钟)电路是根据计时系统的输出状态产生一脉冲信号,然后去触发音频发生器实现报时(闹铃)。
.专业.整理.
下载可编辑
3.3、底层元件接口:
component hour
port(rst,carry,en : in std_logic; ADJclk,ADJEN : in std_logic;
ADJ : in std_logic_vector(3 downto 0); decade,unit : out std_logic_vector(3 downto 0)); end component; component min
port(rst,carry,en : in std_logic; ADJclk,ADJEN : in std_logic;
ADJ : in std_logic_vector(3 downto 0); carryout : out std_logic;
decade,unit : out std_logic_vector(3 downto 0)); end component; component sec
port(rst,clk,en : in std_logic; ADJEN : in std_logic;
carryout : out std_logic;
decade,unit : out std_logic_vector(3 downto 0)); end component;
component alarm
port(clk,en,ADJclk : in std_logic; alarmADJ : in std_logic; AlarmEn : in std_logic;
ADJ : in std_logic_vector(3 downto 0); hour_unit : in std_logic_vector(3 downto 0); hour_decade : in std_logic_vector(3 downto 0); min_unit : in std_logic_vector(3 downto 0); min_decade : in std_logic_vector(3 downto 0); ADJhour_unit : out std_logic_vector(3 downto 0); ADJhour_decade : out std_logic_vector(3 downto 0); ADJmin_unit : out std_logic_vector(3 downto 0); ADJmin_decade : out std_logic_vector(3 downto 0); sound : out std_logic); end component;
component PrescalClk
port(clkin : in std_logic;
clkout_1Hz : out std_logic; clkout_4Hz : out std_logic); end component;
.专业.整理.