【基于FPGA的可调数字钟设计】

这篇具有很好参考价值的文章主要介绍了【基于FPGA的可调数字钟设计】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

近年来由于美国对我国芯片行业的封锁,我国芯片行业迎来了一波发展的浪潮,FPGA这款小众而又实用的芯片也被划在制裁名单中。


一、设计要求

(1)、能在开发板的数码管上显示时间功能
(2)、正常显示时、分、秒
(3)、4个按键:一个作为rst复位,1个作为数字钟调节时的切 换,1个作为按键加,1个作为按键减
(4)、按键切换小时/分钟时对应闪烁

二、实现过程

1.总体设计思想

【基于FPGA的可调数字钟设计】
其中的数字钟逻辑控制模块由于涉及设计显示时间的核心设计比较复杂,将数字钟逻辑控制模块拆分为若干个模块:逻辑控制模块(logic_ctrl)、秒控制模块(sec_ctrl)、分钟控制模块(min_ctrl)、小时控制模块(hour_ctrl ) 、二进制转BCD(bin_bcd ) 、 小时闪烁模块(hour_adjust)、分钟闪烁模块(min_adjust)
【基于FPGA的可调数字钟设计】

2.设计模块分析

2.1按键
1、按键消抖
目的:避免在按下按键瞬间产生的一系列抖动由此引发按键开关在闭合时不会马上稳定、断开时不会马上断开的现象。
【基于FPGA的可调数字钟设计】
按键消抖时序仿真及分析:
【基于FPGA的可调数字钟设计】
【基于FPGA的可调数字钟设计】
状态机
【基于FPGA的可调数字钟设计】
2、按键的边沿检测

目的:检测输入信号,输入01上升沿,输入10为下降沿

边沿检测电路:1级D触发器对应的边沿检测
【基于FPGA的可调数字钟设计】

时序仿真:
【基于FPGA的可调数字钟设计】
2.2数字钟逻辑控制
1、逻辑控制模块(logic_ctrl)
统筹按键按下后的基本逻辑功能以及数码管出现的相应现象

【基于FPGA的可调数字钟设计】
2、秒控制模块(sec_ctrl)

【基于FPGA的可调数字钟设计】
3、分钟控制模块(min_ctrl )
【基于FPGA的可调数字钟设计】

4、小时控制模块(hour_ctrl )
【基于FPGA的可调数字钟设计】

5、二进制转BCD(bin_bcd )
该模块用于对编码信息的译码工作,通过二进制转码从而使数码管显示相应的数字。
【基于FPGA的可调数字钟设计】
【基于FPGA的可调数字钟设计】

6、小时闪烁模块(hour_adjust)
【基于FPGA的可调数字钟设计】

7、分钟闪烁模块(min_adjust)
【基于FPGA的可调数字钟设计】
2.3数码管显示驱动
1、设计框架
【基于FPGA的可调数字钟设计】
2、仿真测试

【基于FPGA的可调数字钟设计】

三、系统调试

1.Modelsim仿真及下板结果
仿真过程由于用到的代码较多需对每个模块创建一个group
【基于FPGA的可调数字钟设计】
把顶层文件设为TOP组

然后在左下找到sim点开
【基于FPGA的可调数字钟设计】
在这里里面一共有8个模块
【基于FPGA的可调数字钟设计】
右击Add Wave
【基于FPGA的可调数字钟设计】
然后回到Wave里面将这个模块分组
【基于FPGA的可调数字钟设计】
剩余模块重复此操作
【基于FPGA的可调数字钟设计】
【基于FPGA的可调数字钟设计】
在填入所有模块后还有最重要的一步调试
【基于FPGA的可调数字钟设计】
调整sec位置,并将选中的三个设置成无符号数
【基于FPGA的可调数字钟设计】
data_in改为十六进制
【基于FPGA的可调数字钟设计】
【基于FPGA的可调数字钟设计】
【基于FPGA的可调数字钟设计】

最后得到以下图

【基于FPGA的可调数字钟设计】
仿真分析主要图过adjust按下对应功能闪烁达到预设目的就行
【基于FPGA的可调数字钟设计】

顶层设计代码如下:

module digital_clock(
	input					clk,
	input					rst_n,
	input					key_adjust,			
	input					key_add,				
	input					key_sub,				
	
	output		[2:0]	sel,
	output		[7:0]	seg
);

	wire					key_adjust_out;
	wire					key_add_out;
	wire					key_sub_out;
	
	wire					flag_adjust;
	wire					flag_add;
	wire					flag_sub;
	
	wire			[23:0]display_data;

	
	key_fliter #(.T10ms(4)) key_fliter_adjust(
		.clk(clk),
		.rst_n(rst_n),
		.key_in(key_adjust),				
		
		.key_out(key_adjust_out)				
	);
	
	
	key_fliter #(.T10ms(4)) key_fliter_add(
		.clk(clk),
		.rst_n(rst_n),
		.key_in(key_add),				
		
		.key_out(key_add_out)				
	);
	
	
	key_fliter #(.T10ms(4)) key_fliter_sub(
		.clk(clk),
		.rst_n(rst_n),
		.key_in(key_sub),				
		
		.key_out(key_sub_out)				
	);
	
	
	check_edge check_edge_adjust(
		.clk(clk),
		.rst_n(rst_n),
		.signal(key_adjust_out),					
		
		.pos_edge(flag_adjust),				
		.neg_edge()					
	);
	
	
	check_edge check_edge_add(
		.clk(clk),
		.rst_n(rst_n),
		.signal(key_add_out),					
		
		.pos_edge(flag_add),				
		.neg_edge()					
	);
	
	
	check_edge check_edge_sub(
		.clk(clk),
		.rst_n(rst_n),
		.signal(key_sub_out),					
		
		.pos_edge(flag_sub),				
		.neg_edge()					
	);
	
	
	clk_logic_ctrl clk_logic_ctrl_dut(
		.clk(clk),
		.rst_n(rst_n),
		.flag_adjust(flag_adjust),			
		.flag_add(flag_add),				
		.flag_sub(flag_sub),				
		
		.display_data(display_data)			
	);
	
	
	seven_tube seven_tube_dut(
		.clk(clk),
		.rst_n(rst_n),
		.data_in(display_data),
		
		.sel(sel),			
		.seg(seg)			
	);

endmodule


结语

这个项目是学校和企业合作带着我们做的一个项目,对PFGA有兴趣或者想要源码和设计报告的小伙伴可以私聊,我们可以一起学习。文章来源地址https://www.toymoban.com/news/detail-490067.html

到了这里,关于【基于FPGA的可调数字钟设计】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • EDA实验(Quartus Ⅱ+fpga) (五)---多功能数字钟设计

    本实验代码为初学FPGA所写,逻辑不太清晰,请跳往下面网址查看最新的模块化设计数字钟,更易看懂 模块化多功能数字钟设计 前言: 本文主要介绍了EDA原理与应用这门课程的相关实验及代码。使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cycloneⅤ 5CSEMA5F31C6。 (1)了解数字钟的

    2024年02月06日
    浏览(75)
  • 数电课设数字钟设计(基于quartus)

            数字钟是一种利用数字电路技术实现时、分、秒计时的钟表。与机械钟相比具有更高的准确性和直观性,具有更长的使用寿命,已得到广泛的使用。数字钟的综合性较强,将数字钟作为数电实验大作业的选题不仅可以加深对数电相关理论知识如计数器、组合逻辑电

    2024年02月05日
    浏览(35)
  • 年轻人的第一个数字钟!适用于FPGA的数字钟Verilog实现

    因为闲。 当然也不是很闲,初衷是因为本科时上过的数电实验课最后的大作业就是在 FPGA 上实现一个数字钟,这个作业当时困扰了我们班的诸多同学(难以置信,我们只是学材料的弱小可怜又无助{{{(_)}}}。最终,大部分同学在 拷贝一位学长的代码 一位学长的帮助下顺利通过

    2024年02月11日
    浏览(32)
  • FPGA的数字钟带校时闹钟报时功能VHDL

    名称:基于FPGA的数字钟具有校时闹钟报时功能 软件:Quartus 语言:VHDL 要求:   1、计时功能:这是数字钟设计的基本功能,每秒钟更新一次,并且能在显示屏上显示当前的时间。   2、闹钟功能:如果当前的时间与闹钟设置的时间相同,则扬声器发出闹音。   3、校时设置:用户可

    2024年02月04日
    浏览(29)
  • 实验 7 数字钟设计

    7.1 实 验 目 的 设计一个具有时功能和校的数字钟。 7.2 实 验 仪 器 与 器 材 1. EDA 开发软件 一 套 2.微机 一 台 3.实验开发系统 一 台 4.打印机 一 台 5.其他器件与材料 若 干 7.3 实 验 说 明 用 数码管显示小时 、 分 钟 和 秒钟。 三 个 按键用于时钟校准。 K1 用 与切换

    2024年01月22日
    浏览(29)
  • 电子设计数字钟,multisim仿真·

    设计步骤(分模块叙述,并附上各模块与总体电路图) 1.计时模块,显示模块,调时模块设计 计数器模块由七片74LS160的芯片组成,两片为“秒”,两片为“分”,两片为“时”,还有一片作为“星期”,七个数码管显示器用来显示数字。‘秒’和‘分’采用60进制。通过异步

    2024年02月11日
    浏览(32)
  • FPGA-DE2-115-实验二-模块化多功能数字钟

    前言: 本文主要介绍了集成电路EDA这门课程的相关实验及代码。使用的软件是Quartus Ⅱ,该实验使用fpga芯片为cyclone IV EP4CE115F29C7。 本次实验我们需要实现生活中常见的电子手表的所有功能。 我们知道: 电子手表有五个功能,包括:时间显示功能,夜光模式功能,计时功能,闹钟功能

    2024年02月04日
    浏览(50)
  • 数电仿真实验-数字钟的设计

    1、掌握任意模值计数器的设计方法 2、掌握multisim仿真软件对电路进行仿真验证的方法。 3、掌握数字综合系统设计的方法,能够对整体电路进行功能测试及故障检测。

    2023年04月26日
    浏览(37)
  • 【verilog】多功能数字钟的设计

    掌握数字钟的工作原理。 掌握计数器级联构成更大模值计数器的方法。  能用verilog描述简单的时序逻辑电路。         多功能数字钟应该具有的基本功能有:显示时-分-秒、整点报时、小时和分钟可调等。首先要知道钟表的工作机理,整个钟表的工作应该是在1Hz信号的

    2024年02月04日
    浏览(43)
  • 【基于51单片机的数字钟】

    掌握单片机 C 语言判断语句、分支语句以及子程序调用等编程知识 此程序调试时间方式为先暂停再调时,故有调秒的功能。 (1) 实现正确稳定地显示小时(两位数)、分钟(两位数)、秒钟(两位数),同时数 码管应无闪烁问题 (2) 通过按键分别实现时、分、秒信息的调整,方便用户

    2024年02月11日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包