基于至简设计法实现的万年历功能

一、  功能描述

1、上板复位后从元年1月1号开始计数,为方便上板调试,将一天的时间压缩为1秒;

2、按键用于设置日历,按下按键0进入设置状态,再次按下按键0退出设置状态;

3、按键1来选择想要设置的年月日的各个位;

4、按键2在设置状态进行计数设置,每按下一次数码管显示数字加1;

5、平年365天(52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。

6、闰年:每400年整一闰,或每4年且不为百年的一闰。即能被400整除,或不能被100整除但能被4整除的年份为闰年。

二、  平台效果图

3.仿真结果:选取3个日期检查

(1)1900年2月28日:该年不是闰年,故2月份只有28天

(2)2000年2月29日:该年是闰年,故2月份有29天

(3)2016年12月27日:

经验证,日期显示正确。

三、   实现过程

首先根据所需要的功能,列出工程顶层的输入输出信号列表。


信号名


I/O


位宽


说明


clk


I


1


系统工作时钟50M


rst_n


I


1


系统复位信号,低电平有效


key_col


I


4


矩阵键盘列信号


key_row


O


4


矩阵键盘行信号


segment


O


8


数码管段选信号


seg_sel


O


8


数码管位选信号

我们可以把工程划分成三个模块,分别是万年历计数模块、按键模块和数码管显示模块。

1.万年历计数模块

万年历计数模块实现的是万年历计数功能,为方便观看,将一天时间设置为一秒,日计数器dat_cnt、月份计数器mon_cnt_h、mon_cnt_1、mon_2_h、mon_2_1分别为大月小月以及平年闰年的2月计数器、年份计数器yea_one、yea_ten、yea_hun、yea_tho分别为年份的个十百千位,由yea_cnt_tol <=yea_cnt1000 + yea_cnt100 + yea_cnt10 + yea_one得到年份。本模块还自动计算当年是否是平闰年。

本模块信号列表如下:


信号名


I/O


位宽


说明


clk


I


1


系统工作时钟50M


rst_n


I


1


系统复位信号,低电平有效


key_num


I


4


矩阵键盘列信号


key_vld


I


4


矩阵键盘行信号


dout


O


32


输出给8个数码管数据

2.按键模块

本次案例万年历使用的是4x4矩阵键盘,本模块就是实现了矩阵键盘的扫描并使用以及按键消抖功能。通过行扫描法得到按下的键的位置信息。

本模块的信号列表如下:


信号名


I/O


位宽


说明


clk


I


1


系统工作时钟50M


rst_n


I


1


系统复位信号,低电平有效


key_col


I


4


矩阵键盘列信号


key_row


O


4


矩阵键盘行信号


key_num


O


4


按键位置信号


key_vld


O


1


按键有效信号

3.数码管模块

数码管模块实现了将年月日的信息显示在数码管上。

本模块的信号列表如下:


信号名


I/O


位宽


说明


clk


I


1


系统工作时钟50M


rst_n


I


1


系统复位信号,低电平有效


din


I


32


数码管显示值输入


din_vld


O


8


数码管显示输入指示


segment


O


8


数码管段选信号


seg_sel


O


8


数码管位选信号

时间: 2024-10-19 21:32:39

基于至简设计法实现的万年历功能的相关文章

基于至简设计法实现的PWM调制verilog

一.   功能描述 脉冲宽度调制(pulse width modelation)简称PWM,利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量.通信到功率控制与变换的许多领域中脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量.通信到功率控制与变换的许多领域中. 在本章的应用中可以认为PWM就是一种方波.如图所示: PWM波形图 上图是一个周期为10ms,高电平为6ms,低电平时间为4ms的PWM,其占空比(高电平时间占整

明德扬至简设计法--verilog综合器和仿真器

Verilg是硬件描述语言,顾名思义,就是用代码的形式描述硬件的功能.而我们最终是要在电路上实现该功能的.当Verilog描述出硬件功能后,我们需要综合器对Verilog代码进行解释,将代码转化成实际的电路来表示,最终实际的电路,我们称之为网表.这种将Verilog代码转成网表的工具,就是综合器.上图左上角是一份verilog代码,该代码描述了一个加法器功能.该代码经过综合器解释后,转化成一个加法器电路.QUARTUS.ISE和VIVADO都是综合器,集成电路常用的综合器是DC. 我们在FPGA

明德扬至简设计法设计的8位串行乘法器

一.功能描述 在两个N位二进制数x.y的乘积用简单的方法计算就是利用移位操作来实现. 二进制乘法原理: 就是左移,然后相加,根据二进制数的权位来决定左移几位,实际上乘法结果就是被乘数乘以每一位乘以模(10)的N次方的累积和. 本案例实现8位串行乘法器的功能. 二.平台效果图 仿真效果图 三.实现过程 输入输出信号列表如下: 信号名 I/O 位宽 说明 clk I 1 系统工作时钟50M rst_n I 1 系统复位信号,低电平有效 vld_in I 2 输入有效指示信号 x I 8 数据a y

明德扬至简设计法设计的IP核加法器

一.功能描述 在Quartus II 和ISE中都有加法器的IP core,可以完成无符号数和有符号数的加.减法,支持有符号数的补码.原码操作及无符号数的加.减操作,引入了最佳流水线操作,可以方便的为用户生成有效的加法器,用户可以根据自己的需要来完成配置加法器 ,本案例用Altera和Xilinx的IP核实现了26位加法器的功能. 二.平台效果图 Altera仿真效果图 Xilinx仿真效果图 三.实现过程 Xilinx输入输出信号列表如下: 信号名 I/O 位宽 说明 clk I 1 系统工作

组合逻辑设计法的编程步骤-一帆自动化

组合逻辑设计法适合于设计开关量控制程序,它是对控制任务进行逻辑分析和综合,将元件的通.断电状态视为以触点通.断状态为逻辑变量的逻辑函数,对经过化简的逻辑函数,利用PLC逻辑指令可顺利地设计出满足要求且较为简练的程序.这种方法设计思路清晰,所编写的程序易于优化,.用组合逻辑设计法进行程序设计一般可分为以下几个步骤:1)明确控制任务和控制要求,通过分析工艺过程绘制工作循环和检测元件分布图,取得电气执行元件功能表.2)详细绘制系统状态转换表.通常它由输出信号状态表.输入信号状态表.状态转换主令表和中间

LC滤波器简单设计法 - 一文读懂LC滤波器简单设计方法及原理介绍,LC值计算方法

LC滤波器概述 LC滤波器也称为无源滤波器,是传统的谐波补偿装置.LC滤波器之所以称为无源滤波器,顾名思义,就是该装置不需要额外提供电源.LC滤波器一般是由滤波电容器.电抗器和电阻器适当组合而成,与谐波源并联,除起滤波作用外,还兼顾无功补偿的需要. LC滤波器是利用电感.电容和电阻的组合设计构成的滤波电路,可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3.5.7)构成低阻抗旁路:单调谐滤波器.双调谐滤波器.高通滤波器都属于无源滤波器. LC滤波器的分类

基于OpenStack+Docker设计与实现CI/CD

基于Docker容器技术的OpenStack研发.测试.运维及其相关的CI/CD.DevOps等活动.思想是相通的,读者可以取其可用部分用于自己的业务需求中. IaaS云和容器云不是可有可无.相互竞争的关系,而是相互弥补彼此缺陷的关系.容器改变了应用部署和管理的模式,众所周知,IaaS云通过提供基本的计算.存储和网络来运行虚拟机(VM),在IaaS(基础设施即服务)之上,还有PaaS(平台即服务).SaaS(软件即服务).CaaS(容器即服务).OpenStack作为一个IaaS云的基础设施管理

移动开发中的极简设计

原文链接: The Art of Minimalism in Mobile App UI Design 原文作者 : Nick Babich 译文出自 : 掘金翻译计划 译者 : edvardhua 校对者 : owenlyn, jiaowoyongqi, Graning 文章结尾有英文原文 设计是一件用户驱动很强的工作.随着用户越来越偏好更简洁的交互界面,如何剔除多余的元素,保留最基础最重要的元素是极简设计的关键.极简设计形式和功能完美结合.它最大的优点是极简的表现形式,简洁的线条,大方的留白

【源代码】基于扩展贝叶斯方法融合的作战效能评估研究

%来源<基于扩展贝叶斯方法融合的作战效能评估研究> clear clc %定性指标T2 T7 T8 %以下Kcap和Ccap数据对应表6,将表6拆分为两个矩阵 %横坐标Kcap:知识度 %纵坐标Ccap:满意度 %Kcap和Ccap相同的位置组合起来对应信念图上的一个点 %Kcap和Ccap:行对应专家(3个专家),列对应指标(3个指标) Kcap=[0.8 0.78 0.85; 0.7 0.8 0.7; 0.65 0.7 0.6]; Ccap=[0.85 0.82 0.8; 0.75 0.7