logo资料库

数字逻辑课程设计(数字钟 三人表决器 “101”序列检测器).doc

第1页 / 共13页
第2页 / 共13页
第3页 / 共13页
第4页 / 共13页
第5页 / 共13页
第6页 / 共13页
第7页 / 共13页
第8页 / 共13页
资料共13页,剩余部分请下载后查看
1) SECOND源程序
2) MINUTE源程序
else hour<=hour+1;enhour<='0';
end if;
end if;
End process;
End;
4) DAY源程序
5)ALARM源程序
1)整机电路仿真图:
3)时间设置:
武汉纺织大学计算机科学学院 逻辑设计 课程设计报告 数字钟设计 (三人多数表决器、“101”序列检测器) 1
计算机科学学院 逻辑设计 课程设计报告 1 题目与要求 1.1 问题提出 本人设计一个数字时钟,主要用来实现 00~59 的秒、分六十进制计数器, 00~23 的小 时二十四进制计数器,整点报时,置数,清零以及数码管显示等功能。 1.2 设计原理 该数字钟可以实现3个功能:计时功能、整点报时功能和重置时间功能,因此有3个 子模块:计时、报时(alarm1)、重置时间(s1、m1、h1、d1)。其中计时模块有4部分构 成:秒计时器(second1)、分计时器(minute1)、时计时器(hour1)和星期计时器(day1)。 秒计时器(second1)是由一个60进制的计数器构成的,具有清0、置数和计数功能。 其中 reset 为清0信号,当 reset 为0时,秒计时器清0;set 为置数信号,当 set 为0时, 秒计时器置数,置 s1的值。clk 为驱动秒计时器的时钟,sec 为秒计时器的输出,ensec 为秒计时器的进位信号,作为下一级的时钟输入信号。 分计时器(minute1)是由一个60进制的计数器构成的,具有清0、置数和计数功能。 其中 reset 为清0信号,当 reset 为0时,分计时器清0;set 为置数信号,当 set 为0时, 分计时器置数,置 m1的值。 clkm 为驱动分计时器工作的时钟,与 ensec 相连接;min 为分计时器的输出;enmin 为分计时器的进位信号,作为下一级的时钟输入信号。 时计时器(hour1)是由一个24进制的计数器构成的,具有清0、置数和计数功能。 其中 reset 为清0信号,当 reset 为0时,时计时器清0;set 为置数信号,当 set 为0时, 时计时器置数,置 h1的值。 clkh 为驱动时计时器工作的时钟,与 enmin 相连接;hour 为时计时器的输出;enhour 为时计时器的进位信号,作为下一级的时钟输入信号。 星期计时器( day1)是由一个7进制的计数器构成的,具有清0、置数和计数功能。 其中 reset 为清0信号,当 reset 为0时,星期计时器清0;set 为置数信号,当 set 为0 时,星期计时器置数,置 d1的值。 clkd 为驱动星期计时器工作的时钟,与 enhour 相 连接;day 为星期计时器的输出。 报时模块(alarm1)的功能是当整点(将 min 作为该模块的输入信号,min=00且 sec<=1001)时,alarm 输出高电平,并且持续10秒钟。 根据电路特点,可用层次化结构化设计概念。将此项设计任务分成若干模块,每个 模块的功能原理分析如下: 秒计数器模块 分计数器模块 时间计数模块 小时计数器模块 整点报时模块 星期计数器模块 显示模块 数码管显示 - 1 - 1
计算机科学学院 逻辑设计 课程设计报告 2 设计过程 2.1 逻辑描述 1) 顶层文件 将以上四个模块连接在一起: 秒计数器模块 SECOND(60 进制),分计数器模块 MINUTE(60 进制),小时计数器模块 HOUR (24 进制),星期计数器模块 DAY(7 进制),蜂鸣器报警器模块 Alarm。 2) 各模块之间的连线 对外的端口引脚名称: 输入:clk,set,reset,s1[7…0],m1[7…0],h1[7…0],d1[2…0] 输出:Alarm,Sec[7…0],min[7…0],hour[7…0],day[2…0] 具体的连接见以上连接示意图。 - 2 - 2
计算机科学学院 逻辑设计 课程设计报告 1) SECOND 源程序 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; Entity second1 is Port(clk,set,reset:in std_logic; S1:in std_logic_vector(7 downto 0); Sec:buffer std_logic_vector(7 downto 0); Ensec:out std_logic); End; Architecture a of second1 is Begin Process(clk,reset,set,s1) Begin If reset='0' then sec<="00000000"; Elsif set='0' then sec<=s1; Elsif clk'event and clk='1' then if sec="01011001" then sec<="00000000";ensec<='1'; elsif sec="00001001" then sec<=sec+7;ensec<='0'; elsif sec="00011001" then sec<=sec+7;ensec<='0'; elsif sec="00101001" then sec<=sec+7;ensec<='0'; elsif sec="00111001" then sec<=sec+7;ensec<='0'; elsif sec="01001001" then sec<=sec+7;ensec<='0'; else sec<=sec+1;ensec<='0'; end if; end if; End process; 2) MINUTE 源程序 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; Entity minute1 is Port(clkm,set,reset:in std_logic; m1:in std_logic_vector(7 downto 0); min:buffer std_logic_vector(7 downto 0); Enmin:out std_logic); - 3 - 3
计算机科学学院 逻辑设计 课程设计报告 End; Architecture a of minute1 is Begin Process(clkm,reset,set,m1) Begin If reset='0' then min<="00000000"; Elsif set='0' then min<=m1; Elsif clkm'event and clkm='1' then if min="01011001" then min<="00000000";enmin<='1'; elsif min="00001001" then min<=min+7;enmin<='0'; elsif min="00011001" then min<=min+7;enmin<='0'; elsif min="00101001" then min<=min+7;enmin<='0'; elsif min="00111001" then min<=min+7;enmin<='0'; elsif min="01001001" then min<=min+7;enmin<='0'; else min<=min+1;enmin<='0'; end if; end if; End process; End; 3) HOUR 源程序 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; Entity hour1 is Port(clkh,set,reset:in std_logic; h1:in std_logic_vector(7 downto 0); hour:buffer std_logic_vector(7 downto 0); Enhour:out std_logic); End; Architecture a of hour1 is Begin Process(clkh,reset,set,h1) Begin If reset='0' then hour<="00000000"; Elsif set='0' then hour<=h1; Elsif clkh'event and clkh='1' then if hour="00100011" then hour<="00000000";enhour<='1'; elsif hour="00001001" then hour<=hour+7;enhour<='0'; elsif hour="00011001" then hour<=hour+7;enhour<='0'; - 4 - 4
计算机科学学院 逻辑设计 课程设计报告 else hour<=hour+1;enhour<='0'; end if; end if; End process; End; 4) DAY 源程序 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; Entity day1 is Port(clkd,set,reset:in std_logic; d1:in std_logic_vector(2 downto 0); day:buffer std_logic_vector(2 downto 0)); end day1; Architecture a of day1 is Begin Process(clkd,reset,set,d1) Begin If reset='0' then day<="000"; Elsif set='0' then day<=d1; Elsif clkd'event and clkd='1' then If day=6 then day<="000"; Else day<=day+1; End if; End if; End process; End a; 5)ALARM 源程序 Library ieee; Use ieee.std_logic_1164.all; Use ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; Entity alarm1 is Port(reset:in std_logic; Min:in std_logic_vector(7 downto 0); sec:in std_logic_vector(7 downto 0); Alarm:out std_logic); End; Architecture a of alarm1 is - 5 - 5
计算机科学学院 逻辑设计 课程设计报告 signal aaa:std_logic_vector(7 downto 0); Begin aaa<="00001010"; Alarm<='1' when (min="00000000" and sec<=aaa)and reset='1' else '0'; end; 2.2 编译(Compilation) 选用的芯片为:ACEX1K 系列 EP1K30TC144-3 引脚分配如图: 编译中遇到的主要问题 由于对 Quartus Ⅱ的开发环境以及软件的使用不是很熟练,以及对 EDA 电路原理及实 现机制不了解,以至于在下载及分配引脚,实现逻辑功能实现时有些不知所措。 编译结果 编译结果与预期结果相符合。 2.3 逻辑功能仿真(Simulation) 1)整机电路仿真图: 2)报时结果: 图中 clk 为内部时钟,报时时间为 10 秒。 - 6 - 6
计算机科学学院 逻辑设计 课程设计报告 3)时间设置: 图中 CLK 为内部时钟 1HZ。当遇到上升沿的时候 Sec 加 1,当 Sec 加到 59 时从 00 开始循环, 同时在 min 上产生一个进位。 2.4 下载(Programming) 设备:PC 机、DICE-EH2000 EDA 实验开发系统 由上调试过程可知,该数字钟实现了计时、重置时间、整点报时三大功能。 在给数字钟重置时间后,数字钟便开始从所置的时间计时,到达59秒时,秒计时器回到 0秒,并且给分钟加1;当到达59分时,分计时器回到0分钟,并且给小时加1;当到达23 小时时,时计时器回到0小时,并且给星期加1;当到达星期六时,星期计时器又回到0。 当到达59分,分计时器回到0时,报时装置输出高电平,并且持续10秒钟。 不足的是时间的设定太过麻烦输入太多,想用两个输入来替代最终没有成功,由于 时间的原因没有解决,相信以后有时间一定可以解决。 2.5 验证 经过重重实验与验证,实验结果与预期是一致的。 3 设计总结 通过这次设计,进一步加深了对EDA的了解,让我对它有了更加浓厚的兴趣。在编 写顶层文件的程序时,遇到了不少问题,特别是各元件之间的连接,以及信号的定义, 总是有错误的存在,但是在老师的指导下,在对程序进行修改后,以及正确选择硬件模 块后,就对其进行了硬件测试,并且最后硬件测试结果与期望得到了功能要求一致。 总的来说,这次设计的数字钟还是比较成功的。从这次实验中我学到了很多东西, 不仅对 EDA 实验有所了解,而且还把实验和理论结合起来实用,对 EDA 有了较深入的 了解。不仅学到了不少知识,而且锻炼了自己的实际动手的能力和思考的能力。使自己 对以后的学习道路有了个更加清楚的认识! 4 结束语 在实验设计中,由于知识的缺乏,使得我们遇到不少困难,但在我们曾老师和一个 大三学长的帮助下,我们终于如期完成了任务,在这诚心的感谢曾老师,还有给予我们 - 7 - 7
分享到:
收藏