收藏 分享(赏)

实验七 LED数码显示时钟实验.doc

上传人:dcjskn 文档编号:8101933 上传时间:2019-06-08 格式:DOC 页数:9 大小:186.39KB
下载 相关 举报
实验七 LED数码显示时钟实验.doc_第1页
第1页 / 共9页
实验七 LED数码显示时钟实验.doc_第2页
第2页 / 共9页
实验七 LED数码显示时钟实验.doc_第3页
第3页 / 共9页
实验七 LED数码显示时钟实验.doc_第4页
第4页 / 共9页
实验七 LED数码显示时钟实验.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

1、实验七 LED 数码显示时钟实验班级:通信 1121 姓名:王密 学号:1121302230一、实验目的 :1、地运用数字系统的设计方法进行数字系统设计。2、能进行较复杂的数字系统设计。 3、数 字 钟 的 工 作 原 理 , 数 字 钟 的 工 作 流 程 图 与 原 理 方 框 图 , 自 顶 向 下 的 数 字 系 统 设 计方 法 。二、实验原理:1、数字钟的基本工作原理: 数字钟以其显示时间的直观性、走时准确性而受到了人们的欢迎并很快走进了千 家万户。作为一种计时工具,数字钟的基本组成部分离不开计数器,在控制逻辑电路的控制下完成预定的各项功能。数字钟的基本原理方框图如下:(1)时基

2、T 产生电路:由晶振产生的频率非常稳定的脉冲,经整形、稳定电路后,产生一个频率为 1Hz 的、非常稳定的计数时钟脉冲。 (2)控制逻辑电路:产生调时、调分信号及位选信号。 调时、调分信号的产生:由计数器的计数过程可知,正常计数时,当秒计数器( 60进制)计数到 59 时,再来一个脉冲,则秒计数器清零,重新开始新一轮的计数,而进位则作为分计数器的计数脉冲,使分计数器计数加 1。现在我们把电路稍做变动:把秒计数器的进位脉冲和一个频率为 2Hz 的脉冲信号同时接到一个 2 选 1 数据选择器的两个数据输入端,而位选信号则接一个脉冲按键开关,当按键开关不按下去时(即为 0),则数据选择器将秒计数器的进

3、位脉冲送到分计数器,此时,数字钟正常工作;当按键开关按下去时(即为 1),则数据选择器将另外一个 2Hz 的信号作为分计数器的计数脉冲,使其计数频率加快,当达到正确时间时,松开按键开关,从而达到调时的目的。调节小时的时间也一样的实现。 (3)计数显示电路:由计数部分、数据选择器、译码器组成,是时钟的关键部分。 计数部分: 由两个 60 进制计数器和一个 24 进制计数器组成,其中 60 进制计数器可用 6 进制计数器和 10 进制计数器构成;24 进制的小时计数同样可用 6 进制计数器和10 进制计数器得到:当计数器计数到 24 时,“2”和 “4”同时进行清零,则可实现 24 进制计数。 数

4、据选择器:84 输入 14 输出的多路数据选择器,因为本实验用到了 8 个数码管(有两个用来产生隔离符号)。 调时、 调分控制电路位选信号发生电路控制逻辑电路计数器 电路时基 T 产生电路1Hz晶振分频整形 门控双稳 脉冲计数 译码 显示译码器:七 段 译 码 器 。 译 码 器 必 须 能 译 出 , 由 实 验 二 中 译 码 器 真 值 表 可 得 : 字 母 F 的 8421BCD 码 为 “1111”, 译 码 后 为 “1000111”, 现 在 如 果 只 译 出 , 即 字 母 F 的中 间 一 横 , 则 译 码 后 应 为 “0000001”, 这 样 , 在 数 码 管

5、上 显 示 的 就 为 。2、自顶向下设计分割图: 说 明 : 按 一 下 按 键 key0,完 成 复 位 功 能 ,clk5 选 择 1Hz 的 时 钟 ,clk3 选 择 的 时 钟 频 率 尽 量 高 。三、实验连线:1、将 EP2C5 适配板左下角的 JTAG 用十芯排线和万用下载区左下角的 SOPC JTAG 口连接起来,万用下载区右下角的电源开关拨到 SOPC 下载的一边。2、请将 JPLED1 短路帽右插,JPLED 的短路帽全部上插,实验板右下方频率源 CLK1接任意频率作为扫描频率。3、将实验板左端的 JP103 全部用短路帽接上(共八个) 。四、实验内容与步骤:(程序:E

6、P2C5timertimer.sof)1、打开 Quartus II 6.0 软件,点击“FileOpenProject”出现如下的对话框(图10.1),选中 timer,点打开即可;图 10.12、点击“Tools-Programmer”后出现如下的对话窗口, 3、在点”EditAdd File”出现如下对话框(图 10.2),在图 10.3 对话框中,选中 EP2C5/timer/timer.sof 项目后点击打开回到 Programmer 对话框, 在下载对话窗口中“选中 Program/ Configure”,点击“Start”即进行下载。数 字 钟计数显示电路控制逻辑电路2 选 1

7、数 据 选 择 器 位 选 信 号 发 生 器 计数器 译码器数据选择器图 10.2图 10.3现将 timer.vhd 原程序作如下说明:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY TIMER ISPORT( CLK5:IN STD_LOGIC;CLK3:IN STD_LOGIC;RST1:IN STD_LOGIC;SEG_SEL:OUT STD_LOGIC_V

8、ECTOR(2 DOWNTO 0);SEG_DA :OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END TIMER;ARCHITECTURE ADO OF TIMER ISCOMPONENT CNT10PORT(CLK:IN STD_LOGIC;RST:IN STD_LOGIC;CIN:IN STD_LOGIC;CNT_VAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT :OUT STD_LOGIC);END COMPONENT;COMPONENT CNT6PORT(CLK :IN STD_LOGIC;RST :IN STD_LOGIC;C

9、IN :IN STD_LOGIC;CNT_VAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END COMPONENT;COMPONENT CNT2PORT(CLK: IN STD_LOGIC;RST: IN STD_LOGIC;CIN: IN STD_LOGIC;CNT_VAL:INOUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT :OUT STD_LOGIC);END COMPONENT;COMPONENT CNT4PORT (CLK:IN STD_LOGIC;RST:IN STD_LOGIC;CIN

10、:IN STD_LOGIC;CNT_VAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END COMPONENT;SIGNAL SEG_BUF1,SEG_BUF2,SEG_BUF3,SEG_BUF4:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL SEG_BUF5,SEG_BUF6,SEG_BUF7,SEG_BUF8:STD_LOGIC_VECTOR(3 DOWNTO 0); SIGNAL SEG_CNT :STD_LOGIC_VECTOR(2 DOWNTO 0);SIGNAL SEG_TEMP:STD_L

11、OGIC_VECTOR(3 DOWNTO 0);SIGNAL COUT:STD_LOGIC_VECTOR(5 DOWNTO 0); SIGNAL CLK:STD_LOGIC;BEGINPROCESS (CLK3)BEGINIF CLK3EVENT AND CLK3=1 THENCLK SEG_TEMP SEG_TEMP SEG_TEMP SEG_TEMP SEG_TEMP SEG_TEMP SEG_TEMP SEG_TEMP NULL;END CASE;END PROCESS;PROCESS (SEG_TEMP)BEGINCASE SEG_TEMP ISWHEN “0000“ = SEG_DA

12、 SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DA SEG_DACLK5,RST=RST1,CNT_VAL=SEG_BUF1,COUT=COUT(0),CIN=1);U2 : CNT6 PORT MAP (CLK=CLK5,RST=RST1,CNT_VAL=SEG_BUF2,COUT=COUT(1),CIN=COUT(0);U3 : CNT10 PORT MAP (CLK=CLK5,RST=RST1,CNT_VAL=SEG_BUF4,COUT=COU

13、T(2),CIN=COUT(1);U4 : CNT6 PORT MAP (CLK=CLK5,RST=RST1,CNT_VAL=SEG_BUF5,COUT=COUT(3),CIN=COUT(2);U5 : CNT4 PORT MAP (CLK=CLK5,RST=RST1,CNT_VAL=SEG_BUF7,COUT=COUT(4),CIN=COUT(3);U6 : CNT2 PORT MAP (CLK=CLK5,RST=RST1,CNT_VAL=SEG_BUF8,COUT=COUT(5),CIN=COUT(4);END ADO;LIBRARY IEEE;USE IEEE.STD_LOGIC_116

14、4.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNT10 ISPORT(CLK :IN STD_LOGIC;RST :IN STD_LOGIC;CIN :IN STD_LOGIC;CNT_VAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT10;ARCHITECTURE BEHAVE OF CNT10 ISSIGNAL CNT_T:STD_LOGIC_VECT

15、OR(3 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN IF RST=1 THENCNT_T=“0000“;ELSIF CLKEVENT AND CLK=1 THENIF CIN=1 THENIF CNT_T/= 9 THENCNT_T=CNT_T+1;ELSE CNT_T=“0000“;END IF;END IF;ELSE CNT_T=CNT_T;END IF;END PROCESS;COUT=1 WHEN CNT_T=9 AND CIN=1 ELSE 0 ;CNT_VAL=CNT_T;END BEHAVE;LIBRARY IEEE;USE IEEE.STD_LOGIC

16、_1164.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY cnt6 ISPORT(CLK :IN STD_LOGIC;RST :IN STD_LOGIC;CIN :IN STD_LOGIC;CNT_VAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC );END CNT6;ARCHITECTURE ADO2 OF CNT6 ISSIGNAL CNT_T :STD_LOGIC_VEC

17、TOR(3 DOWNTO 0);SIGNAL COUTD :STD_LOGIC;BEGIN PROCESS (CLK,RST)BEGINIF RST=1 THENCNT_T=“0000“;ELSIF CLKEVENT AND CLK=1 THENIF CIN=1 THENIF CNT_T 5 THENCNT_T=CNT_T+1;ELSE CNT_T=x“0“;END IF;END IF;ELSECNT_T=CNT_T;END IF;END PROCESS;COUT=1 WHEN CNT_T=5 AND CIN=1 ELSE 0;CNT_VAL=CNT_T;END ADO2; LIBRARY I

18、EEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNT2 ISPORT(CLK :IN STD_LOGIC;RST :IN STD_LOGIC;CIN:IN STD_LOGIC;CNT_VAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT2;ARCHITECTURE ADO3 OF CNT2 ISSIGNAL

19、CNT_T:STD_LOGIC_VECTOR (3 DOWNTO 0);BEGIN PROCESS(CLK,RST)BEGINIF RST=1 THENCNT_T=“0000“;ELSIF CLKEVENT AND CLK=1 THENIF CIN=1 THENIF CNT_T1 THEN CNT_T=CNT_T+1;ELSE CNT_T=“0000“;END IF;END IF;ELSE CNT_T=CNT_T;END IF;END PROCESS;COUT=1 WHEN CNT_T=1 AND CIN=1 ELSE 0;CNT_VAL=CNT_T;END ADO3;LIBRARY IEEE

20、;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;USE IEEE.STD_LOGIC_SIGNED.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;ENTITY CNT4 ISPORT(CLK :IN STD_LOGIC;RST:IN STD_LOGIC;CIN:IN STD_LOGIC;CNT_VAL:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END CNT4;ARCHITECTURE BEHAVE OF CNT4 ISSIGNAL CN

21、T_T:STD_LOGIC_VECTOR(3 DOWNTO 0);SIGNAL i:INTEGER;BEGINPROCESS(CLK,RST)BEGINi = 0;IF RST=1 THENCNT_T=“0000“;i =0;ELSIF CLKEVENT AND CLK=1 THENIF i2 THEN IF CIN=1 THENIF CNT_T9 THENCNT_T=CNT_T+1;ELSE CNT_T=“0000“;END IF;END IF;ELSE IF CIN=1 THENIF CNT_T3 THENCNT_T=CNT_T+1; ELSE CNT_T=“0000“;END IF;EN

22、D IF;END IF;ELSECNT_T=CNT_T;END IF;END PROCESS;CNT_VAL=CNT_T;COUT=1 WHEN ( CNT_T=9 AND CIN=1)OR (CNT_T=3 AND CIN=1 AND i=2) ELSE 0;END BEHAVE;引脚分配(Cyclone EP2C5Q208C8):seg_d0-P3、seg_d1-P5、seg_d2-P6、seg_d3-P8、seg_d4-P10、seg_d5-P11、seg_d6-P12,sel0-P141、sel1-P142、sel2-P143,clk3-P130,rst-P43,clk5-P145管脚

23、标号 seg_d0 到 seg_d 6 分别接到 LED 的 8 位段码中的 7 位上(由于实验中不需要在 LED 上显示“.” ,因此 8 位段码中显示“.”的数据没有接入,其默认为低电平,有兴趣的同学可以自己修改一下程序,其管脚分配如附录三所示) ;sel0 到 sel2 接到实验箱中74ls138 的输入端;clk 为 LED 显示时钟输入,接到频率源 clk1。clk5 为电子时钟的震荡频率,100 脚接 key0 用作系统复位。管脚标号对应的 I/O 如下图所示:User Assignments Node Nameset_location_assignment PIN_3 -to s

24、eg_da0set_location_assignment PIN_5 -to seg_da1set_location_assignment PIN_6 -to seg_da2set_location_assignment PIN_8 -to seg_da3set_location_assignment PIN_10 -to seg_da4set_location_assignment PIN_11 -to seg_da5set_location_assignment PIN_12 -to seg_da6set_location_assignment PIN_141 -to seg_sel0s

25、et_location_assignment PIN_142 -to seg_sel1set_location_assignment PIN_143 -to seg_sel2set_location_assignment PIN_43 -to rstset_location_assignment PIN_145 -to clk5set_location_assignment PIN_130 -to clk3五、实验现象:在数码管上,会显示当前的时钟值,格式为 11 11 11.会有两个数码管是熄灭的,作为小时和分钟的间隔,分钟和秒钟的间隔。六、实验体会:这次实验比较复杂,因为之前没有处理过这么长的代码,然后在老师的讲解之下看懂了代码,然后修改了日期之间进制的问题,所以花的时间比较多,但是收获很多。同时要感谢小组成员的合作。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报