EDA数字钟设计毕业论文.docx
- 文档编号:11764393
- 上传时间:2023-04-01
- 格式:DOCX
- 页数:17
- 大小:153.09KB
EDA数字钟设计毕业论文.docx
《EDA数字钟设计毕业论文.docx》由会员分享,可在线阅读,更多相关《EDA数字钟设计毕业论文.docx(17页珍藏版)》请在冰豆网上搜索。
EDA数字钟设计毕业论文
EDA数字钟设计
1.设计思路……………………………………………………………………………………3
1.1总体结构………………………………………………………………………………...3
2.方案论证与选择……………………………………………………………………………3
2.1.数字钟方案论证与选择………………………………………………………………...3
3.单元模块设计部分…………………………………………………………………………3
3.1.CN6模块的设计………………………………………………………………………..3
3.2.SEL61模块的设计……………………………………………………………………..4
3.3.DISP模块的设计………………………………………………………………………5
3.4.K4模块的设计…………………………………………………………………………6
3.4.1.CNT10模块的设计……………………………………………………………….6
3.4.2.CNT6模块的设计………………………………………………………………..7
3.4.3.CNT101模块的设计………………………………………………………………8
3.4.4.CNT61模块的设计………………………………………………………………..9
3.4.5CNT23模块的设计………………………………………………………………..10
4.系统仿真……………………………………………………………………………………11
4.1.数字钟仿真图…………………………………………………………………………….11
4.2.数字钟编译报告………………………………………………………………………...12
4.3.数字钟原理图……………………………………………………………………………12
vEDA数字钟设计
中文摘要:
数字钟学习的目的是掌握各类计数器及它们相连的设计方法;掌握多个数码管显示的原理与方法;掌握FPGA技术的层次化设计方法;掌握用VHDL语言的设计思想以及整个数字系统的设计。
此数字钟具有时,分,秒计数显示功能,以24小时为计数循环;能实现清零,调节小时,分钟以及整点报时的功能。
关键词:
数字钟,计数器,数码管,FPGA,VHDL
1.设计思路
基于VHDL语言,用Top_Down的思想进行设计。
1.1确定总体结构,如图1-1所示。
图1-1
2.方案论证与选择
2.1数字钟方案论证与选择:
方案一是用CN6无进位六进制计数器选择数码管的亮灭以及对应的数,循环扫描显示,用SEL61六选一选择器选择给定的信号输出对应的数送到七段码译码器。
K4模块进行复位,设置小时和分,输出整点报时信号和时,分,秒信号。
作品中选方案二。
方案二也采用自顶向下的设计方法,它由秒计数模块,分计数模块,小时计数模块,报警模块,秒分时设置模块和译码模块六部分组成。
两者设计方式,功能实现方面都差不多,作品中选择的是方案一。
3.单元模块设计部分
单元模块设计部分分四个部分,介绍数字钟选择显示数码管和对应的数模块CN6,信号选择模块SEL61,七段码译码器模块DISP和复位,秒,分,时显示,设置模块。
3.1CN6模块的设计
即无进位的六进制计数器,由此提供选择信号,可提供选择信号,选择显示的数码管及对应的数,循环扫描显示。
如图1-2
图1-2
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycn6is
port(res,clk:
instd_logic;
cout:
outstd_logic_vector(2downto0));
endcn6;
architecturertlofcn6is
signalq:
std_logic_vector(2downto0);
begin
process(res,clk)
begin
ifres='0'then
q<="000";
elsif(clk'eventandclk='1')then
if(q=5)then
q<="000";
else
q<=q+1;
endif;
endif;
endprocess;
cout<=q;
endrtl;
3.2SEL61模块的设计
即六选一选择器,如图1-3所示,对于给定的信号,输出对应的数,送到七段码译码器。
图1-3
libraryieee;
useieee.std_logic_1164.all;
entitysel61is
port(sel:
instd_logic_vector(2downto0);
a,b,c,d,e,f:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(3downto0));
end;
architecturertlofsel61is
begin
process(a,b,c,d,e,f,sel)
variablecout:
std_logic_vector(3downto0);
begin
caseselis
when"000"=>cout:
=a;
when"001"=>cout:
=b;
when"010"=>cout:
=c;
when"011"=>cout:
=d;
when"100"=>cout:
=e;
whenothers=>cout:
=f;
endcase;
q<=cout;
endprocess;
endrtl;
3.3DISP模块的设计
即七段译码器,如图1-4所示,对于输入的4位BCD码进行译码,输出7位,Q0~Q6分别外接数码管a~g段显示。
图1-4
libraryieee;
useieee.std_logic_1164.all;
entitydispis
port(d:
instd_logic_vector(3downto0);
q:
outstd_logic_vector(6downto0));
end;
architectureoneofdispis
begin
process(d)
begin
casedis
when"0000"=>q<="0111111";
when"0001"=>q<="0000110";
when"0010"=>q<="1011011";
when"0011"=>q<="1001111";
when"0100"=>q<="1100110";
when"0101"=>q<="1101101";
when"0110"=>q<="1111101";
when"0111"=>q<="0100111";
when"1000"=>q<="1111111";
when"1001"=>q<="1101111";
whenothers=>q<="0000000";
endcase;
endprocess;
endone;
3.4K4模块的设计
图1-5
如图1-5,RES是整个系统的复位键,低电平有效,复位时,各个输出都为零,时间显示0时0分0秒;clk是输入时钟,提供秒信号,上升沿触发,每出发一次,时间增加一秒;HRTMP,MIN10TMP,MINTMPKEYI可以分别设置小时位,10分位,分位,起到调时的作用,高电平有效,有效时,每来一个CLK时钟(1s),所对应的位都将以各自的计数循环;
RING是整点报时;SEC,SEC10,MIN,MIN10,HR,HR10都输出四位BCD码,用于计数。
3.4.1CNT10模块设计
10进制计数器。
CLK为秒信号;RES是复位信号,与CLK同步;EN为选通信号;COUT3..0]输出秒个位;CA是进位信号。
如图1-6所示。
图1-6
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt10is
port(en,res,clk:
instd_logic;
ca:
outstd_logic;
cout:
outstd_logic_vector(3downto0));
end;
architecturertlofcnt10is
signalq:
std_logic_vector(3downto0);
begin
p1:
process(en,clk,res)
begin
if(clk'eventandclk='1')then
if(res='0')then
q<="0000";
elsif(en='1')then
if(q=9)then
q<="0000";
else
q<=q+1;
endif;
endif;
endif;
endprocessp1;
p2:
process(q)
begin
if(q=9)then
ca<=en;
else
ca<='0';
endif;
endprocessp2;
cout<=q;
endrtl;
3.4.2CNT6模块设计
即进制计数器,CLK为秒信号;RES为复位信号,与CLK同步;EN为选通信号;COUT[3..0]输出秒的十位;CA是进位信号。
如图1-7所示。
图1-7
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt6is
port(en,res,clk:
instd_logic;
ca:
outstd_logic;
cout:
outstd_logic_vector(3downto0));
end;
architecturertlofcnt6is
signalq:
std_logic_vector(3downto0);
begin
p1:
process(en,clk,res)
begin
if(clk'eventandclk='1')then
if(res='0')then
q<="0000";
elsif(en='1')then
if(q=5)then
q<="0000";
else
q<=q+1;
endif;
endif;
endif;
endprocessp1;
p2:
process(q)
begin
if(q=5)then
ca<=en;
else
ca<='0';
endif;
endprocessp2;
cout<=q;
endrtl;
3.4.3CNT101模块设计
即十进制计数器,输出分的个位。
EN接CNT6的进位CA,产生正常的时钟;EN2由外部断口控制,可用来调节时间,高电平有效,输出将以秒的速度递增循环。
如图1-8所示。
图1-8
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt101is--outputminitute'sgewei
port(en2,en,res,clk:
instd_logic;
ca:
outstd_logic;--jingwei
cout:
outstd_logic_vector(3downto0));
end;
architecturertlofcnt101is
signalq:
std_logic_vector(3downto0);
begin
p1:
process(en,en2,clk,res)
begin
if(clk'eventandclk='1')then
if(res='0')then
q<="0000";
elsif(en='1'oren2='1')then
if(q=9)then
q<="0000";
else
q<=q+1;
endif;
endif;
endif;
endprocessp1;
p2:
process(q)
begin
if(q=9)then
ca<=en;
else
ca<='0';
endif;
endprocessp2;
cout<=q;
endrtl;
3.4.4CNT61模块的设计
六进制计数器,输出分的各位。
EN接CNT101的进位CA,产生正常的时钟;EN2由外部端口控制,可用来调节时间,高电平有效,输出分的十位将以秒的速度递增循环。
如图1-9所示。
图1-9
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt61is--outputminitute'sshiwei
port(en2,en,res,clk:
instd_logic;
ca:
outstd_logic;--jingwei
cout:
outstd_logic_vector(3downto0));
end;
architecturertlofcnt61is
signalq:
std_logic_vector(3downto0);
begin
p1:
process(en,en2,clk,res)
begin
if(clk'eventandclk='1')then
if(res='0')then
q<="0000";
elsif(en='1'oren2='1')then
if(q=5)then
q<="0000";
else
q<=q+1;
endif;
endif;
endif;
endprocessp1;
p2:
process(q)
begin
if(q=5)then
ca<=en;
else
ca<='0';
endif;
endprocessp2;
cout<=q;
endrtl;
3.4.5CNT23模块设计
24进制计数器,输出时个位和时十位,由两个选通信号EN和EN2控制,EN2用来调时。
如图1-10所示。
图1-10
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entitycnt23is
port(en2,en,res,clk:
instd_logic;
a,b:
outstd_logic_vector(3downto0));
end;
architecturertlofcnt23is
signalaout,bout:
std_logic_vector(3downto0);
begin
p1:
process(en,en2,clk,res)
begin
if(res='0')then
aout<="0000";
bout<="0000";
elsif(clk'eventandclk='1')then
if(en='1'oren2='1')then
ifbout>1then
ifaout>2then
aout<="0000";
bout<="0000";
else
aout<=aout+1;
endif;
elsif(aout=9)then
aout<="0000";
bout<=bout+1;
else
aout<=aout+1;
endif;
endif;
endif;
endprocessp1;
endrtl;
4.系统仿真
4.1数字钟仿真图
4.2数字钟编译报告
4.3数字钟原理图
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 数字 设计 毕业论文