- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
(基于FPGA的数字钟设计)
一、课题要求
技术要求
1)掌握QUARTUS-2软件的使用方法;
2)具备EDA技术基础,能够熟练使用VHDL语言进行编程,掌握层次化设计方法;
3) 掌握多功能数字钟的工作原理,学会不同进制计数器及时钟控制电路的设计方法;
4)能根据设计要求对设计电路进行仿真和测试;
5)掌握将所设计软件下载到FPGA芯片的下载步骤等等。
6) 将硬件与软件连接起来,调试电路的功能。
功能要求
基本功能:能进行正常的时、分、秒计时功能,分别由6个数码管显示24小时,60分钟,60秒钟的计数器显示。
附加功能:1)能利用硬件部分按键实现“校时”“校分”“清零”功能;
2)能利用蜂鸣器做整点报时:当计时到达59’55’’时开始报时,在55’’56’’57’’58’’59’’时鸣叫,共鸣叫5秒钟;
3)定时闹铃:本设计中设置的是在六点半时进行闹钟功能,鸣叫时间为一分钟。
本人工作
本人主要负责硬件安装及焊接部分!
二、设计方案
数字钟电路的原理框图详见末页图(a)
数字钟设计方案
采用同步电路,总线结构。时钟信号分别加到各个模块,各个模块相对独立,模块间连线简单,易于扩展。振荡器和分频器产生稳定的校时信号和计时信号。对“秒”计时信号进行60进制计数,形成“分”计时信号和秒计数值;再对“分”计时信号进行60进制计数,形成“时”计时信号和分计数值;进一步对“时”计时信号进行24进制计数得到时计数值。秒计数值、数字电子钟由振荡器、分频器 计数器、译码显示、报时等电路组成。library ieee;
use ieee.std_logic_1164.all;
entity fenpin is
port(clk6:in std_logic;
q1000,q5,q1:out std_logic);
end fenpin;
architecture ccc_arc of fenpin is
signal x:std_logic;
begin
process(clk6)
variable cnt:integer range 0 to 24999;
begin
if clk6event and clk6=1 then
if cnt24999 then
cnt:=cnt+1;
else
cnt:=0;
x=not x;
end if;
end if;
end process;
q1000=x;
process(x)
variable cnt2:integer range 0 to 999;
variable y:std_logic;
begin
if xevent and x=1 then
if cnt2999 then
cnt2:=cnt2+1;
q1=0;
else
cnt2:=0;
q1=1;
end if;
end if;
if xevent and x=1 then
y:=not y;
end if;
q5=y;
end process;
end ccc_arc;
2)仿真波形:
(2)秒模块(second)
1)程序:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity second is
port (clk1,en1:in std_logic;
qa:out std_logic_vector(3 downto 0);
co1:out std_logic;
qb:out std_logic_vector(3 downto 0));
end second;
architecture cc of second is
signal cout2,cout1:std_logic_vector(3 downto 0);
signal mm: std_logic;
begin
process(clk1,en1)
begin
if en1=1 then
cout2=0000;cout1=0000;
elsif (clk1event and clk1=1)then
if (cout2=5 and cout1=8) then cout2=cout2;cout1=cout1+1;mm=1;
elsif (cout2=5 and cout1=9) then cout2
文档评论(0)