数字钟的设计.EDA课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA 课程设计报告书
课题名称 数字钟的设计 姓 名
王砾
学 号 0812201-37 院 系 物理与电信工程系 专 业 电子信息工程 指导教师
周来秀讲师
2011年 6月13日
※※※※※※※※※ ※
※ ※※ ※
※
2008级学生
EDA 课程设计
数字钟的设计
王砾
(湖南城市学院物理与电信工程系电子信息工程专业,湖南益阳,41300)
1设计目的
1,熟练的运用数字系统的设计方法进行数字时钟设计
2,能进行较复杂的数字系统设计
3,按要求设计一个数字钟
2设计的主要内容和要求
a.计时计数器用24进制计时器电路。
b.可手动校时,能清零及分别进行时、分、秒的校正。
c.可整点报时,扬声器发出时长为1s的信号。
d.可设置闹钟功能。当计时计到预定时间时,扬声器发出闹铃信号,可控制闹
铃时长。
3 整体设计方案
基于VHDL 语言,用Top_Down 的思想进行设计,其中计数模块、闹铃模块、定时模块、显示模块为主要模块,选择模块为辅助模块。
选择模块
定时模块
显示模块
闹铃模块计数模块选择模块
数码显示管
4 硬件电路的设计
4.1如下分别为60与24进制模块的代码: library ieee;
use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity count_60 is
port(en1,en2,clr,clk : in std_logic; rco : out std_logic;
q1,q2 : out std_logic_vector(3 downto 0));
end count_60;
architecture behav of count_60 is
signal iq1,iq2 : std_logic_vector(3 downto 0); begin
process(en1,en2,clr,clk) begin
if(clr='1')then iq1<="0000"; iq2<="0000";
elsif(clk='1' and clk'event)then
if(en1 or en2)='1'then
if(iq2>=5)then
if(iq1>=9)then
iq1<="0000";
iq2<="0000";
else
iq1<=iq1+1;
end if;
else
iq2<=iq2+1;
end if;
end if;
end if;
if(iq2=5 and iq1=9 and en1='1')then
rco<='1';
else rco<='0';
end if;
q1<=iq1;
q2<=iq2;
end process;
end behav;
library ieee;
use ieee.std_logic_1164.all;
entity count_24 is
port(en1,en2,clr,clk : in std_logic;
q1,q2 : out std_logic_vector(3 downto 0)); end count_24;
architecture behav of count_24 is
signal iq1,iq2 : std_logic_vector(3 downto 0);
begin
process(en1,en2,clr,clk)
begin
if(clr='1')then
iq1<="0000";
iq2<="0000";
elsif(clk='1' and clk'event)then
if(en1 or en2)='1'then
if(iq2>=2)then
if(iq1>=3)then
iq1<="0000";
iq2<="0000";
else
iq1<=iq1+1;
end if;
else
iq2<=iq2+1;
end if;
end if;
end if;
q1<=iq1;
q2<=iq2;
end process;
end behav;
然后将各模块进行组合,形成计数模块和定时模块,其组合方式如图所示:
d[3..0]
p[6..0]
display
inst4
生成的计数模块与定时模块的元件符号分别如下图:
4.2显示模块为六个时、分、秒的十位与个位的显示模块组成的,即六个七段译码器。将输入的4位BCD 码进行译码,输出7位,p0~p6分别外接数码管a~g 段,如下为七段译码器代码: library ieee;
use ieee.std_logic_1164.all; entity display is
port(d : in std_logic_vector(3 downto 0);
p : out std_logic_vector(6 downto 0));
end display;
architecture behav of display is
begin
with d select
p<="0111111"when"0000",
"0000110"when"0001",
"1011011"when"0010",
"1001111"when"0011",
"1100110"when"0100",
"1101101"when"0101",
"1111101"when"0110",
"0000111"when"0111",
"1111111"when"1000",
"1101111"when"1001",
"0000000"when others;
end behav;
再用六个七段译码器组合成同时能够显示时、分、秒的十位与个位的模块,其组合方式和生成元件符号如图所示: