EDA数字钟设计-毕业论文
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
EDA数字钟设计
目录
1.设计思路 (3)
1.1总体结构 (3)
2.方案论证与选择 (3)
2.1.数字钟方案论证与选择 (3)
3.单元模块设计部分 (3)
6模块的设计 (3)
3.2.SEL61模块的设计 (4)
3.3.DISP模块的设计 (5)
3.4.K4模块的设计 (6)
T10模块的设计 (6)
T6模块的设计 (7)
T101模块的设计 (8)
T61模块的设计 (9)
3.4.5 CNT23模块的设计 (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.1 CN6模块的设计
即无进位的六进制计数器,由此提供选择信号,可提供选择信号,选择显示的数码管及对应的数,循环扫描显示。如图1-2
图1-2
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cn6 is
port(res,clk : in std_logic;
cout : out std_logic_vector(2 downto 0)); end cn6;
architecture rtl of cn6 is
signal q : std_logic_vector(2 downto 0); begin
process(res,clk)
begin
if res='0' then
q<="000";
elsif(clk'event and clk='1') then
if(q=5) then
q<="000";
else
q<=q+1;
end if;
end if;
end process;
cout<=q;
end rtl;
3.2 SEL61模块的设计
即六选一选择器,如图1-3所示,对于给定的信号,输出对应的数,送到七段码译码器。
图1-3
library ieee;
use ieee.std_logic_1164.all;
entity sel61 is
port(sel : in std_logic_vector(2 downto 0);
a,b,c,d,e,f : in std_logic_vector(3 downto 0);
q : out std_logic_vector(3 downto 0));
end;
architecture rtl of sel61 is
begin
process(a,b,c,d,e,f,sel)
variable cout : std_logic_vector(3 downto 0);
begin
case sel is
when "000"=>cout:=a;
when "001"=>cout:=b;
when "010"=>cout:=c;
when "011"=>cout:=d;
when "100"=>cout:=e;
when others=>cout:=f;
end case;
q <=cout;
end process;
end rtl;
3.3 DISP模块的设计
即七段译码器,如图1-4所示,对于输入的4位BCD码进行译码,输出7位,Q0~Q6分别外接数码管a~g段显示。
图1-4
library ieee;
use ieee.std_logic_1164.all;
entity disp is
port(d : in std_logic_vector(3 downto 0);
q : out std_logic_vector(6 downto 0));
end;
architecture one of disp is
begin
process(d)
begin
case d is
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";