《可编程数字系统》课程设计实验报告基于VHDL的FPGA数字钟设计.doc
《《可编程数字系统》课程设计实验报告基于VHDL的FPGA数字钟设计.doc》由会员分享,可在线阅读,更多相关《《可编程数字系统》课程设计实验报告基于VHDL的FPGA数字钟设计.doc(27页珍藏版)》请在三一办公上搜索。
1、可编程数字系统设计课程设计实验报告实验名称: 基于VHDL的数字钟设计 _所属课程: 可编程数字系统设计 可编程数字系统课程设计一、课程设计目的: 熟悉EDA工具;掌握用VHDL语言进行数字系统设计的基本方法和过程。二、设计任务: 设计一数字钟,用数码管显示基本功能要求:(1) 可以分屏显示时、分、秒,可用数码管的小数点“.”代替时、分、秒的分隔符“:”,分屏显示是指由于数码管只有4个,不能同时显示时、分、秒,但可以只显示时、分,或只显示分、秒,通过按键来切换这两种显示方式。(2)可设置时钟的开始时间。设置时,相应的数码管要闪烁,指示当前设置的设置(内容)。(3)具有闹铃功能,可以设定闹铃时间
2、。闹铃时间到,LED闪烁进行指示。三、设计原理:数字钟的逻辑框图如图1所示。它由校时部分、闹钟部分、计时部分、显示部分组成。振荡器产生稳定的高频脉冲信号,作为数字钟的时间基准,然后经过分频器输出标准秒脉冲。秒钟计数器满60后向分计数器进位,分钟计数器满60后向小时计数器进位,时钟计数器按照“24归0”规律计数。计数器的输出分别经译码器送显示。当计时出现误差时或者到达另外一个时区时,可以用校时部分校时、校分、校秒。需要是用闹钟时,可以利用闹钟部分进行定时。 四、系统分析:根据数字钟的功能,我们可以将它的系统电路设计划分为四个部分:校时部分、闹钟部分、计时部分和显示部分。其中计时部分又划分为秒钟计
3、时模块、分钟计时模块、时钟计时模块,显示部分又划分为BCD译码模块和扫屏输出模块。校时模块秒钟计时模块分钟计时模块时钟计时模块译码模块扫屏输出闹钟模块LED灯图1数字钟的顶层实体描述如下:-TOP.VHDLIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY digitalclock IS PORT(-输入时钟CLK:IN STD_LOGIC;-设定闹钟ALARM_SET:IN STD_LOGIC;-双键位校时SET:IN STD_L
4、OGIC;MODE:IN STD_LOGIC;-选择显示方式CHG:IN STD_LOGIC;-八段译码输出out_data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-输出片选seg_out:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-LED输出ED_OUT:OUT STD_LOGIC);END digitalclock;ARCHITECTURE EXAMPLE OF digitalclock IS-元件例化COMPONENT adjusterPORT(-输入时钟CLK:IN STD_LOGIC;-双键位校时SET:IN STD_LOGIC;M
5、ODE:IN STD_LOGIC;-计数使能,接VCCEN:IN STD_LOGIC;-秒计数器进位输入S_ENOUT:IN STD_LOGIC;-分计数器进位输入M_ENOUT:IN STD_LOGIC;-输出1HZ时钟CLK1HZ:OUT STD_LOGIC;-输出使能S_CE:OUT STD_LOGIC;M_CE:OUT STD_LOGIC;H_CE:OUT STD_LOGIC);END COMPONENT;COMPONENT CNT60PORT(-输入1HZ时钟CLK1HZ:IN STD_LOGIC;-计数使能EN:IN STD_LOGIC;-进位输出ENOUT:OUT STD_LOG
6、IC;-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT CNT24ORT(-输入1HZ时钟CLK1HZ:IN STD_LOGIC;-计数使能EN:IN STD_LOGIC;-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END COMPONENT;COMPONENT displayPORT(-BCD输入in_data:IN
7、STD_LOGIC_VECTOR(3 DOWNTO 0);-八段译码输出out_data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END COMPONENT;COMPONENT saopingPORT(-选择显示方式CHG:IN STD_LOGIC;-BCD输入SL:IN STD_LOGIC_VECTOR(7 DOWNTO 0);SH:IN STD_LOGIC_VECTOR(7 DOWNTO 0);ML:IN STD_LOGIC_VECTOR(7 DOWNTO 0);MH:IN STD_LOGIC_VECTOR(7 DOWNTO 0);HL:IN STD_LOGIC_
8、VECTOR(7 DOWNTO 0);HH:IN STD_LOGIC_VECTOR(7 DOWNTO 0);ALARM_L:IN STD_LOGIC_VECTOR(7 DOWNTO 0);ALARM_H:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-输入时钟CLK:IN STD_LOGIC;-输出片选seg:out std_logic_vector(3 downto 0);-BCD输出out_data:out std_logic_vector(7 downto 0);END COMPONENT;COMPONENTalarmPORT(-输入时钟CLK:IN STD_LOGIC
9、;-设定闹钟ALARM_SET:IN STD_LOGIC;-BCD输入 IN_HL:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_HH:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_ML:IN STD_LOGIC_VECTOR(3 DOWNTO 0);IN_MH:IN STD_LOGIC_VECTOR(3 DOWNTO 0);-BCD输出LOW:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);HIGH:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);-LED输出LED_OUT:OUT STD_LOGIC);EN
10、D COMPONENT;-常数说明CONSTANT VCC:STD_LOGIC:=1;-信号说明SIGNAL VCC_CON:STD_LOGIC;SIGNAL S_ENOUT:STD_LOGIC;SIGNAL M_ENOUT:STD_LOGIC;SIGNAL CLK1HZ:STD_LOGIC;-计数使能SIGNAL S_CE:STD_LOGIC;SIGNAL M_CE:STD_LOGIC;SIGNAL H_CE:STD_LOGIC;-BCD码SIGNAL SL:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SH:STD_LOGIC_VECTOR(3 DOWNTO 0)
11、;SIGNAL ML:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL MH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL HL:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL HH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ALARM_LOW:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL ALARM_HIGH:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SL_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL
12、SH_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ML_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL MH_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL HL_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL HH_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ALARM_L_OUT:STD_LOGIC_VECTOR(7 DOWNTO 0);SIGNAL ALARM_H_OUT:STD_LOGIC_VECTOR(7 DOWNTO
13、 0);BEGIN-元件声明ADJUST_CONTROL:adjusterPORT MAP(-输入时钟CLK=CLK,-双键位校时SET=SET,MODE=MODE,-计数使能,接VCCEN=VCC_CON,-秒计数器进位输入S_ENOUT=S_ENOUT,-分计数器进位输入M_ENOUT=M_ENOUT,-输出信号CLK1HZ=CLK1HZ,-输出使能S_CE=S_CE,M_CE=M_CE,H_CE=H_CE);VCC_CONCLK1HZ,-计数使能,接VCCEN=S_CE,-进位输出ENOUT=S_ENOUT,-BCD输出LOW=SL,HIGH=SH);M_CONTROL:CNT60POR
14、T MAP(-输入1HZ时钟CLK1HZ=CLK1HZ,-计数使能EN=M_CE,-进位输出ENOUT=M_ENOUT,-BCD输出LOW=ML,HIGH=MH);H_CONTROL:CNT24PORT MAP(-输入1HZ时钟CLK1HZ=CLK1HZ,-计数使能EN=H_CE,-BCD输出LOW=HL,HIGH=HH);ALARM_CLOCK:alarmPORT MAP(-输入时钟CLK=CLK,-设定闹钟ALARM_SET=ALARM_SET,-BCD输入 IN_HL=HL,IN_HH=HH,IN_ML=ML,IN_MH=MH,-BCD输出LOW=ALARM_LOW,HIGH=ALARM
15、_HIGH,-LED输出LED_OUT=LED_OUT);SL_DIS:displayPORT MAP(-BCD输入in_data=SL,-八段译码输出out_data=SL_OUT);SH_DIS:displayPORT MAP(-BCD输入in_data=SH,-八段译码输出out_data=SH_OUT);ML_DIS:displayPORT MAP(-BCD输入in_data=ML,-八段译码输出out_data=ML_OUT);MH_DIS:displayPORT MAP(-BCD输入in_data=MH,-八段译码输出out_data=MH_OUT);HL_DIS:displayP
16、ORT MAP(-BCD输入in_data=HL,-八段译码输出out_data=HL_OUT);HH_DIS:displayPORT MAP(-BCD输入in_data=HH,-八段译码输出out_data=HH_OUT);ALARM_L_DIS:displayPORT MAP(-BCD输入in_data=ALARM_LOW,-八段译码输出out_data=ALARM_L_OUT);ALARM_H_DIS:displayPORT MAP(-BCD输入in_data=ALARM_HIGH,-八段译码输出out_data=ALARM_H_OUT);SAOPINGQI:saopingPORT MA
17、P(-BCD输入SL=SL_OUT,SH=SH_OUT,ML=ML_OUT,MH=MH_OUT,HL=HL_OUT,HH=HH_OUT,ALARM_L=ALARM_L_OUT,ALARM_H=ALARM_H_OUT,-选择显示方式CHG=CHG,-输入时钟CLK=CLK,-输出片选seg=seg_out,-BCD输出out_data=out_data);END EXAMPLE;仿真结果如下:该顶层文件原理图如下:系统实验实验结果如下:五、程序设计:1、校时模块:采用的是双键校时法,MODE和SET,其中MODE选择需要调整的部分:时钟、分钟、秒钟,而SET则作为调整脉冲。校时模块的核心思想是利
18、用一个计数器CON来作为状态机,CON=0时为正常工作状态,CON=1时为调整秒钟状态,CON=2时为调整分钟状态,CON=3时为调整时钟状态。调整的时候,利用SET代替CLK1HZ作为计数器输入脉冲,相当于按一次SET则被调整的计数器中的当前值+1,由此获得一个数字钟的时间设定效果。校时模块同时还具有控制时钟、分钟、秒钟计数器工作的功能,通过两个进位输入端以及三个使能控制端让时钟、分钟、秒钟计数器能够有序工作。比如,当秒钟计数器产生一个进位输入校时模块后,校时模块才通过使能输出端令分钟计数器工作一下,以此类推控制分钟、时钟之间的有序工作。元件视图如下:源程序如下:-adjuster.vhdL
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 可编程数字系统 可编程 数字 系统 课程设计 实验 报告 基于 VHDL FPGA 设计

链接地址:https://www.31ppt.com/p-2392525.html