数电实验--多功能数字钟_第1页
数电实验--多功能数字钟_第2页
数电实验--多功能数字钟_第3页
数电实验--多功能数字钟_第4页
数电实验--多功能数字钟_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、-. z理工大学本科实验报告题目:多功能数字钟课程名称: 数字电路课程设计学院系:电子信息与电气工程学部专 业: 自动化 班 级: 电自0801 学生:学 号: 202181142 完成日期: 2021年7月20日 成 绩:2021 年 7 月 20 日题目:多功能数字钟1 设计要求一个具有时,分,秒的十进制数字显示小时从0023计时器。具有手动校时,校分的功能。定时与闹钟功能,能在设定的时间发出闹铃声能整点报时。要求从59分54秒起报时,每隔2秒发出低音,连续3次,在整点要高音。2 设计分析及系统方案设计系统总体结果系统设计要求说明:该秒表用模24、模60计数器实现24小时计时在调节闹钟时不

2、影响数字钟的正常走表;在调节闹钟时要通过数码管显示出;3系统以及模块硬件电路设计根据上述给出的系统总体构造框图,给出系统硬件电路设计,并作必要的说明和理论计算。由于数字电路课程设计课程采用实验箱完成,没有学时涉及有关FPGA芯片的使用,因此有关FPGA芯片的局部可以用FPGA最小系统模块框代替。其余接口局部按键,LED以及数码管,各种接口等需要设计电路以及参数。下载时选择的开发系统模式以及管脚定义表1 GW48-CK开发系统工作模式:模式0接口名称类型(输入/输出)构造图上的信号名引脚号说明en输入PIO716手动校时1-调时,0-走表th输入PIO611调时按键en=1,或en1=1调时en

3、1输入PIO510闹钟设定1-调时,0-不走tm输入PIO49调分按键en=1或en1=1,才可调分alarmstop输入PIO38闹铃控制端clk输入CLOCK142系统走表时钟f=1Hzclk1输入CLOCK02闹钟与整点报时时钟f=256Hzclk2输入CLOCK583整点报时时钟时钟f=1024Hzqhh输出PIO47-PIO4479、78、73、72输出小时的高位qlh输出PIO43-PIO4071、70、67、66输出小时的低位qhm输出PIO39-PIO3665、64、62、61输出分钟的高位qlm输出PIO35-PIO3260、59、58、54输出分钟的低位qhs输出PIO31

4、-PIO2853、52、51、50输出秒的高位qls输出PIO27-PIO2449、48、47、39输出秒的低位speaker输出SPEAKER3输出蜂鸣器的时钟4 系统的VHDL设计系统的各个局部如何用VHDL设计出来的应该有说明,包括论述以及真值表或者状态图等。要求:系统或顶层文件构造描述,各个模块或子程序的功能描述;1用原理图实现的,需包含以下容:(1)系统原理图(2)主要模块或符号说明;主要模块:模60计数器,模24计数器,2用VHDL语言实现的(1) 秒计数器模60计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_log

5、ic_unsigned.all;entity m_601 is port(clk: in std_logic; clk_1: out std_logic; -clk_1表进位 qh,ql:out std_logic_vector(3 downto 0)qh,ql表示十位与个位 );end;architecture a of m_601 issignal qqh,qql: std_logic_vector(3 downto 0);signal tmp: std_logic;begin process(clk)begin if clkevent and clk=1 then if qql=9 th

6、en qql=0000; if qqh=5 then qqh=0000;tmp=1; else qqh=qqh+1; end if; else qql=qql+1; tmp=0; end if; end if;end process;qh=qqh;ql=qql;clk_1=tmp;end;秒计数器仿真图2分计数器模60计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m_60 is port(clk,en,t: in std_logic; -在en=1控制的情况下,手动t校时 c

7、lk_1: out std_logic; -clk_1表进位 qh,ql:out std_logic_vector(3 downto 0)qh,ql表十位与个位 );end;architecture a of m_60 issignal qqh,qql: std_logic_vector(3 downto 0);signal tmp,tmp_1: std_logic;begin process(tmp_1)begin if tmp_1event and tmp_1=1 then if qql=9 then qql=0000; if qqh=5 then qqh=0000;tmp=1; else

8、 qqh=qqh+1; end if; else qql=qql+1; tmp=0; end if; end if;end process;qh=qqh;ql=qql;clk_1=tmp;process(en,clk,t)beginif en=0 thentmp_1=clk;elsetmp_1=t;end if;end process;end;分计数器仿真图3小时计数器模24计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m_24 is port(clk,en,t: in st

9、d_logic; -在en=1控制的情况下,手动t校时 qh,ql:out std_logic_vector(3 downto 0)qh,ql表十位与个位 );end;architecture a of m_24 issignal tmp: std_logic;signal qqh,qql: std_logic_vector(3 downto 0);begin process(en,tmp,t)beginif en=0 thentmp=clk;elsetmp=t;end if;end process;process(tmp)begin if tmpevent and tmp=1 then if

10、 qql=9 or(qql=4 and qqh=2) then qql=0000; if qqh=2 then qqh=0000; else qqh=qqh+1; end if; else qql=qql+1; end if; end if;end process;qh=qqh;ql=qql;end;小时计数器模24计数器仿真图闹钟分钟计数器模60计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m_60b is port(clk,en: in std_logic; -在en=1

11、是,手动给clk,闹钟加1; qh,ql:out std_logic_vector(3 downto 0) );end;architecture a of m_60b issignal qqh,qql: std_logic_vector(3 downto 0);begin process(en,clk)begin if clkevent and clk=1 then if en=1 then if qql=9 then qql=0000; if qqh=5 then qqh=0000; else qqh=qqh+1; end if; else qql=qql+1; end if; end if

12、; end if;end process;qh=qqh;ql=qql;end;闹钟分钟计数器模60计数器仿真图闹钟小时计数器模24计数器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity m_24b is port(clk,en: in std_logic; qh,ql:out std_logic_vector(3 downto 0) );end;architecture a of m_24b issignal qqh,qql: std_logic_vector(3 downto 0);

13、begin process(clk,en)begin if clkevent and clk=1 then if en=1 then if qql=9 or(qql=4 and qqh=2) then qql=0000; if qqh=2 then qqh=0000; else qqh=qqh+1; end if; else qql=qql+1; end if; end if; end if;end process;qh=qqh;ql=qql;end;闹钟小时计数器模24计数器仿真图整个系统程序library ieee;use ieee.std_logic_1164.all;use ieee.

14、std_logic_unsigned.all;-分钟模60计数器-entity m_60 is port(clk,en,t: in std_logic; clk_1: out std_logic; qh,ql:out std_logic_vector(3 downto 0) );end;architecture a of m_60 issignal qqh,qql: std_logic_vector(3 downto 0);signal tmp,tmp_1: std_logic;begin process(tmp_1)begin if tmp_1event and tmp_1=1 then i

15、f qql=9 then qql=0000; if qqh=5 then qqh=0000;tmp=1; else qqh=qqh+1; end if; else qql=qql+1; tmp=0; end if; end if;end process;qh=qqh;ql=qql;clk_1=tmp;process(en,clk,t)beginif en=0 thentmp_1=clk;elsetmp_1=t;end if;end process;end;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.a

16、ll;-校分模60计数器-entity m_60b is port(clk,en: in std_logic; qh,ql:out std_logic_vector(3 downto 0) );end;architecture a of m_60b issignal qqh,qql: std_logic_vector(3 downto 0);begin process(en,clk)begin if clkevent and clk=1 then if en=1 then if qql=9 then qql=0000; if qqh=5 then qqh=0000; else qqh=qqh+

17、1; end if; else qql=qql+1; end if; end if; end if;end process;qh=qqh;ql=qql;end;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-秒表模60计数器-entity m_601 is port(clk: in std_logic; clk_1: out std_logic; qh,ql:out std_logic_vector(3 downto 0) );end;architecture a of m_601 issign

18、al qqh,qql: std_logic_vector(3 downto 0);signal tmp: std_logic;begin process(clk)begin if clkevent and clk=1 then if qql=9 then qql=0000; if qqh=5 then qqh=0000;tmp=1; else qqh=qqh+1; end if; else qql=qql+1; tmp=0; end if; end if;end process;qh=qqh;ql=qql;clk_1=tmp;end;library ieee;use ieee.std_logi

19、c_1164.all;use ieee.std_logic_unsigned.all;-校时模24计数器-entity m_24b is port(clk,en: in std_logic; qh,ql:out std_logic_vector(3 downto 0) );end;architecture a of m_24b issignal qqh,qql: std_logic_vector(3 downto 0);begin process(clk,en)begin if clkevent and clk=1 then if en=1 then if qql=9 or(qql=4 and

20、 qqh=2) then qql=0000; if qqh=2 then qqh=0000; else qqh=qqh+1; end if; else qql=qql+1; end if; end if; end if;end process;qh=qqh;ql=qql;end;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;-小时模24计数器-entity m_24 is port(clk,en,t: in std_logic; qh,ql:out std_logic_vector(3 down

21、to 0) );end;architecture a of m_24 issignal tmp: std_logic;signal qqh,qql: std_logic_vector(3 downto 0);begin process(en,tmp,t)beginif en=0 thentmp=clk;elsetmp=t;end if;end process;process(tmp)begin if tmpevent and tmp=1 then if qql=9 or(qql=4 and qqh=2) then qql=0000; if qqh=2 then qqh=0000; else q

22、qh=qqh+1; end if; else qql=qql+1; end if; end if;end process;qh=qqh;ql=qql;end;library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity top4 is port(clk,clk1,clk2,en,en1,th,tm,alarmstop:in std_logic;-clk:系统走表时钟(f=1Hz);clk1:闹钟与整点报时时钟f=256Hz;clk2: 整点报时时钟(f=1024Hz);en.en1:分别是校时、校

23、分与调闹铃的使能端;th,tm:是手动调节小时与分钟的时钟- qls,qhs,qlm,qhm,qlh,qhh:out std_logic_vector(3 downto 0);-分别表示秒低高位,分上下位,时上下位- speaker:out std_logic );speaker:是喇叭end;architecture a of top4 is ponent m_60 port(clk,en,t: in std_logic; clk_1: out std_logic; qh,ql:out std_logic_vector(3 downto 0) );end ponent; ponent m_6

24、01 port(clk: in std_logic; clk_1: out std_logic; qh,ql:out std_logic_vector(3 downto 0) );end ponent; ponent m_60b port(clk,en: in std_logic; qh,ql:out std_logic_vector(3 downto 0) );end ponent; ponent m_24 port(clk,en,t: in std_logic; qh,ql:out std_logic_vector(3 downto 0) );end ponent; ponent m_24

25、b port(clk,en: in std_logic; qh,ql:out std_logic_vector(3 downto 0) );end ponent; signal fulls,fullm:std_logic; -秒、分进位- signal:qhhtmp,qlhtmp,qhmtmp,qlmtmp,qhhaltmp,qlhaltmp,qhmaltmp, qlmaltmp,qlstmp,qhstmp:std_logic_vector(3 downto 0);-秒,分,时中间信号- signal speaker1,speaker2:std_logic; -闹钟与整点报时的中间信号begi

26、n u1:m_601 port map(clk,fulls,qhstmp,qlstmp); u2:m_60 port map(fulls,en,tm,fullm,qhmtmp,qlmtmp); u3:m_24 port map(fullm,en,th,qhhtmp,qlhtmp); u4:m_24b port map(th,en1,qhhaltmp,qlhaltmp); u5:m_60b port map(tm,en1,qhmaltmp,qlmaltmp); process(en1,qhhaltmp,qlhaltmp,qhmaltmp,qlmaltmp,qhhtmp,qlhtmp, qhmtm

27、p,qlmtmp) begin if en1=1 then-在闹钟调节时,把闹钟显示的界面显示出来并且不影响时钟的正常走表- qhh=qhhaltmp;qlh=qlhaltmp; qhm=qhmaltmp;qlm=qlmaltmp; qhs=0000;qls=0000; else -在en=0时显示正常走表- qhs=qhstmp;qls=qlstmp; qhh=qhhtmp;qlh=qlhtmp; qhm=qhmtmp;qlm=qlmtmp; end if; end process; -闹钟-process(alarmstop,qhhaltmp,qlhaltmp,qhmaltmp,qlmaltmp,qhhtmp,qlhtmpqhmtmp,qlmtmp), -当到预设时间时别且alarmstop=0是每隔2秒响一次- begin if qhhaltmp=qhhtmp and qlhaltmp=qlhtmp and qhmaltmp=qhmtmp and qlmaltmp=qlmtmp and (qlstmp=1 or qlstmp=3 or qlstmp=5 or qlstmp=7 or qlstmp=9) then if alarmstop=0 then speaker2=clk1; else sp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论