首页> 中国专利> 一种百年星期自动计算电路

一种百年星期自动计算电路

摘要

本实用新型提供一种百年星期自动计算电路,包括闰年判断模块、码值转换模块、除4运算模块、月份修正译码模块、求和计算模块、对7求余模块,所述百年星期自动计算电路对输入的年值year、月值month、日值day进行运算,输出该天对应的星期值week。本实用新型的百年星期自动计算电路,通过对各类逻辑电路及计算模块的组合,能够实现2000~2099百年之内的星期值的计算。

著录项

  • 公开/公告号CN219552976U

    专利类型实用新型

  • 公开/公告日2023-08-18

    原文格式PDF

  • 申请/专利权人 杭州晶华微电子股份有限公司;

    申请/专利号CN202221019202.7

  • 发明设计人 任勇;邵金莎;赵双龙;

    申请日2022-04-29

  • 分类号G06F7/57(2006.01);G06F7/575(2006.01);

  • 代理机构杭州中港知识产权代理有限公司 33353;

  • 代理人裴大牛

  • 地址 310052 浙江省杭州市滨江区长河街道长河路351号4号楼5层A座501室

  • 入库时间 2023-09-08 19:21:41

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2023-08-18

    授权

    实用新型专利权授予

说明书

技术领域

本实用新型属于星期值计算技术领域,尤其是涉及一种百年星期自动计算电路。

背景技术

目前市售的实时时钟芯片或者片上内置了实时时钟功能模块的MCU或SoC芯片,有些型号是提供星期值的,有些型号不提供星期值。即便是提供星期值的芯片,也需要首先对相应的年、月、日、星期、时、分、秒等寄存器设定正确的初始值,完成初始化工作后才能正常运行。年、月、日、时、分、秒寄存器的设置不需要进行复杂计算就可以进行,实现起来比较简单。但是星期的值和具体的年、月、日值是有关联的,是一一对应的。设置星期值时软件开发人员可能需要查询纸质日历或者具有存储日历功能的手机、电脑,或人工计算。人工计算时必须掌握一定的方法,而且计算麻烦,容易出错。

实用新型内容

本实用新型旨在解决上述技术问题,提供一种百年星期自动计算电路。

为了达到上述目的,本实用新型采用如下技术方案:

一种百年星期自动计算电路,包括闰年判断模块、码值转换模块、除4运算模块、月份修正译码模块、求和计算模块、对7求余模块;

闰年判断模块输入年值year,并输出闰年标志leap,leap输出为1或0;

月份修正译码模块输入月值month和闰年判断模块输出的闰年标志leap,输出一个对应的修正译码值;

所述码值转换模块输入年值year、日值day,将年值year、日值day的BCD码值转换为自然二进制码值;

所述除4运算模块输入年值year的自然二进制码值,进行除4运算后输出商值;

所述求和计算模块输入年值year的自然二进制码值、所述月份修正译码模块输出的修正译码值、日值day的自然二进制码值、所述除4运算模块输出的商值,进行求和运算后输出和值;

所述对7求余模块输入所述求和计算模块输出的和值,进行除以7求余后输出余数。

 作为一种优选的技术方案,闰年判断模块的输入的年值year取年份的后两位,并转换为8位BCD码,表示为year[7:0],通过逻辑电路对year[7:0]中的year[4]、year[1]、year[0] 三位信号进行逻辑运算:year[4]&year[1]&!year[0]或者year[4]|year[1]|year[0],当逻辑表达式year[4]&year[1]&!year[0]的结果为真时,或者当逻辑表达式year[4]|year[1]|year[0]的结果为假时,该年份为闰年,否则不是闰年。

作为一种优选的技术方案,所述闰年判断模块的逻辑电路包括非门一、非门二、与门一、与门二、或门一、或门二、或门三,非门一的输入端输入year[0],非门一的输出端连接与门一的第一输入端,与门二的两个输入端输入year[1]、year[4],与门二的输出端连接与门一的第二输入端,与门一的输出端连接或门三的第一输入端,或门一的两个输入端输入year[0]、year[1],或门一的输出端连接或门二的第一输入端,或门二的第二输入端输入year[4],或门二的输出端连接非门二的输入端,非门二的输出端连接或门三的第二输入端,或门三的输出端输出闰年标志leap。

 作为一种优选的技术方案,闰年判断模块输入的年值year为经过所述码值转换模块转换的年值year的自然二进制码值,通过逻辑电路判断自然二进制数码值末尾2 bit位是否都为0,如果都是0,则该年份是闰年,否则不是闰年。

 作为一种优选的技术方案,所述闰年判断模块的逻辑电路包括或门四、非门三,年值year的自然二进制数码值末尾2 bit位表示为year_c[1]、year_c [0],或门四的两个输入端输入year_c[1]、year_c [0],或门四的输出端连接非门三的输入端,非门三的输出端输出闰年标志leap。

作为一种优选的技术方案,所述码值转换模块包括加法器一和加法器二,年值year/日值day的BCD码值的高4位向左移一位得到的值和年值year/日值day的BCD码值的高4位向左移三位得到的值作为加法器一的输入,年值year/日值day的BCD码值的低4位和加法器一的输出值作为加法器二的输入,加法器二输出转换得到的自然二进制码值。

采用上述技术方案后,本实用新型具有如下优点:

本实用新型的百年星期自动计算电路,通过对各类逻辑电路及计算模块的组合,能够实现2000~2099百年之内的星期值的计算。本实用新型相对比传统常规的查询纸质日历或者具有存储日历功能的手机、电脑,或人工计算方式,或操作星期查询机械盘来讲,提供了一种新的星期值获取方式,即通过数字电路以硬件的方式来自动计算得到星期值。当该电路被集成到实时时钟电路后可以获得的优势是:不需要为星期进行初始化设置,避免人工计算的麻烦;不需要开发星期计算软件,能够节省一些程序空间;星期值由硬件电路实时自动计算,计算速度比软件计算快;星期计算电路规模约在百余门量级即可实现,消耗逻辑资源较少。

附图说明

图1为一种百年星期自动计算电路的示意图;

图2为实施例1的一种百年星期自动计算电路的逻辑原理图;

图3为图2中各输入输出值的时序波形图;

图4为实施例1的闰年判断模块的闰年判定逻辑电路;

图5为码值转换模块的计算原理图;

图6为码值转换模块的逻辑电路图;

图7为一种可实施的月份修正译码逻辑电路图;

图8为一种对7求余模块的结构图;

图9为实施例2的一种百年星期自动计算电路的逻辑原理图;

图10为实施例2的闰年判断模块的闰年判定逻辑电路。

具体实施方式

 以下结合附图及具体实施例,对本实用新型作进一步的详细说明。

实施例1

如图1-3所示,一种百年星期自动计算电路,包括闰年判断模块、码值转换模块、除4运算模块、月份修正译码模块、求和计算模块、对7求余模块,所述百年星期自动计算电路对输入的年值year、月值month、日值day进行运算,输出该天对应的星期值week。电路的输入、输出信号均为BCD码。输出信号week的有效值为0x0、0x1、0x2、0x3、0x4、0x5、0x6,分别表示周日、周一、周二、周三、周四、周五、周六。

所述闰年判断模块为一闰年判定逻辑电路,所述闰年判断模块的输入端输入年值year,所述闰年判断模块输出一位指示信号:闰年标志leap,如果为闰年,leap输出1,如果不是,leap输出0。因为年份的头两位固定为20,所以闰年判断的规则可以简化为:如果年份的后两位数值是4的倍数则是闰年,否则不是闰年。闰年判断模块的输入的年值year取年份的后两位,并转换为8位BCD码,表示为year[7:0],通过逻辑电路对year[7:0]中的year[4]、year[1]、year[0]三位信号进行逻辑运算:year[4]&year[1]&!year[0]或者year[4]|year[1]|year[0],当逻辑表达式year[4]&year[1]&!year[0]的结果为真时,或者当逻辑表达式year[4]|year[1]|year[0]的结果为假时,该年份为闰年,否则不是闰年。

本实施例中,所述闰年判断模块的闰年判定逻辑电路如图4所示。所述闰年判断模块的逻辑电路包括非门一、非门二、与门一、与门二、或门一、或门二、或门三,非门一的输入端输入year[0],非门一的输出端连接与门一的第一输入端,与门二的两个输入端输入year[1]、year[4],与门二的输出端连接与门一的第二输入端,与门一的输出端连接或门三的第一输入端,或门一的两个输入端输入year[0]、year[1],或门一的输出端连接或门二的第一输入端,或门二的第二输入端输入year[4],或门二的输出端连接非门二的输入端,非门二的输出端连接或门三的第二输入端,或门三的输出端输出闰年标志leap。

所述码值转换模块为一BCD码-二进制码转换器,所述码值转换模块用于将年year/日day的BCD码值转换为自然二进制码值。所述码值转换模块对年year/日day的BCD码值的高4位乘以10再加上其BCD码的低4位,所得之和在电路中存储为自然二进制数。为了节省实现资源,本实施例中将乘10运算替换为对BCD码的高4位分别先进行左移1位和3位以分别实现乘2、乘8的功能,然后再将两者相加得到乘10的结果。

码值转换模块的计算原理图如图5所示。所述码值转换模块包括加法器一和加法器二,年值year/日值day的BCD码值的高4位向左移一位得到的值和年值year/日值day的BCD码值的高4位向左移三位得到的值作为加法器一的输入,年值year/日值day的BCD码值的低4位和加法器一的输出值作为加法器二的输入,加法器二输出转换得到的自然二进制码值。操作数1:BCD码的十位code_in[7:4]左移3位,实现乘8的功能;操作数2:BCD码的十位code_in[7:4]左移1位,实现乘2的功能;操作数3:BCD码的个位code_in[3:0];三个操作数相加,得到转换后的码值输出值code_out[6:0]。

 码值转换模块的逻辑电路图如图6所示。该电路的核心是两个加法器。加法器可选用Synopsys公司DesignWare IP库中的DW01_add加法器模块,其输入A、B和输出SUM的位宽可配置。这里将它们均配置为7位宽度。被转换的信号code_in[6:0]作为输入信号,转换后的信号code_out[6:0]为输出信号。电路连接关系:加法器ADDR1的进位输入端口CI接逻辑0,即接地;加法器ADDR1的输入端口A[6:3]接code_in[7:4], A[2:0]均接逻辑0,即接地;加法器ADDR1的输入端口B[4:1]接code_in[7:4], B[6]、B[5]、B[0]均接逻辑0,即接地;加法器ADDR2的进位输入端口CI接加法器ADDR1的进位输出端口CO;加法器ADDR2的输入端口A[6:0]接加法器ADDR1的求和输出端SUM;加法器ADDR2的进位输出端口CO悬空不使用;加法器ADDR2的求和输出端SUM即为码值转换模块的输出code_out[6:0]。

所述除4运算模块对经过所述码值转换模块转换的年值year进行除4运算,结果是一个整数,结果只取商值,丢弃余数。为了节省实现资源,本实施例中所述除4运算模块除法使用对被除数进行逻辑右移两位的方式实现。使用逻辑右移的方式实现除法功能,是数字设计领域最基础的数字运算,属于公知技术。

所述月份修正译码模块为一BCD码修正电路,所述月份修正译码模块包括两个输入端,其中一个输入端输入月值month,另一个输入端输入所述闰年判断模块输出的闰年标志leap值,所述月份修正译码模块根据月份以及闰年指示,分别对不同的月份输出一个对应的码值,当年份为闰年时,1~12月的修正译码值分别为5、1、2、5、0、3、5、1、4、6、2、4,当年份为非闰年时,1~12月的修正译码值分别为6、2、2、5、0、3、5、1、4、6、2、4。

 月份修正译码模块,输入信号有闰年标志leap以及月month 值month[4:0],输出为mc[2:0]信号。mc的逻辑实现,可依据表1进行处理。

 表1 为月份修正译码真值表:

一种可实施的月份修正译码逻辑电路图如图7所示。其中,sel[5:0]作为选通控制信号,sel[5]接leap输入信号,sel[4:0]接month[4:0] 输入信号。sel[5:0]的所有组合情况可划分为7组:选通控制组0 ~选通控制组6。被选择的信号有7组,用二进制表示分别为:000、001、010、011、100、101、110,它们是月份修正值的所有元素。选通控制组1的集合为{0x08、0x22、0x28};选通控制组2的集合为{0x02、0x03、0x11、0x23、0x31};选通控制组3的集合为{0x06、0x26};选通控制组4的集合为{0x09、0x12、0x29、0x32};选通控制组5的集合为{0x04、0x07、0x21、0x24、0x27};选通控制组6的集合为{0x01、0x10、0x30};选通控制组0的集合为{0x05、0x25、其它值};当由leap和month[4:0]所组成的选通信号sel[5:0]值落入某选通控制组,则对应的被选择输入信号作为相应月份的修正值输出到mc端口上。例如,leap=1,month[4:0]为0x11,则sel[5:0]为0x31,那么sel值落入选通控制组2,则对应的输入信号010被选择并输出到mc,即闰年11月份的月份修正值为2。

 所述求和计算模块对经过所述码值转换模块转换的年值year、经过所述码值转换模块转换的日值day、所述月份修正译码模块输出的修正译码值、所述除4运算模块输出的年份除4取整结果进行求和,得到sum[7:0]。求和计算模块使用加法器实现,求和计算模块可调用Synopsys公司DesignWare IP库中的DW01_add加法器IP模块。

所述对7求余模块对所述求和计算模块输出的值进行除以7求余处理,余数即为输出的该天对应的星期值week。

 如图8所示,对7求余模块可调用Synopsys公司DesignWare IP库中的DW_div除法器IP模块,其输入a和b的位宽可以进行配置。这里配置为a为8位宽,b为3位宽。a连接求和计算模块的输出sum[7:0],b固定为常数7。则DW_div IP的remainder输出端口输出值为模7结果值。

本百年星期自动计算电路的实现步骤是:

1、首先输入设定年、月、日信号值,它们均使用BCD码;

2、硬件电路自动计算并给出星期值,结果也是BCD码。

从年月日信号值设定完毕到星期值的给出,所需用时长短,取决于采用的具体的电路工艺。完全使用组合逻辑即可实现该百年星期自动计算电路,如此,便可依据年月日的值实时计算对应的星期值。同时,也能避免年月日所对应的星期不一致的情况出现。根据图2实现的星期自动计算电路,对2000年~2099年这一百年中的每一天都进行了星期计算,经逻辑仿真验证,每一天的星期值都是正确的。

例如想知道2015年7月23日对应的星期值,则输入信号year、month、day分别设置为0x15、0x07、0x23,经过星期自动计算电路的运算,得到的结果week为0x04,表示这天是星期四。

例如想知道2020年2月29日对应的星期值,则输入信号year、month、day分别设置为0x20、0x02、0x29,经过星期自动计算电路的运算,得到的结果week为0x06,表示这天是星期六。

 例如想知道2099年12月8日对应的星期值,则输入信号year、month、day分别设置为0x99、0x12、0x08,经过星期自动计算电路的运算,得到的结果week为0x02,表示这天是星期二。

实施例2

如图9所示,实施例2的一种百年星期自动计算电路,与实施例1的不同之处在于:先对年份的BCD码进行转换,得到年份的自然二进制数表示值,然后再对该自然二进制数判断年份是否为闰年,其余运算处理相同。该实施方式中,所述闰年判断模块输入的年值year表示为自然二进制数码值,所述闰年判断模块判断自然二进制数码值末尾2 bit位是否都为0,如果都是0,则该年份是闰年,否则不是闰年。

 实施例2的闰年判断模块的闰年判定逻辑电路如图10所示。所述闰年判断模块的逻辑电路包括或门四、非门三,年值year的自然二进制数码值末尾2 bit位表示为year_c[1]、year_c [0],或门四的两个输入端输入year_c[1]、year_c [0],或门四的输出端连接非门三的输入端,非门三的输出端输出闰年标志leap。

除上述优选实施例外,本实用新型还有其他的实施方式,本领域技术人员可以根据本实用新型作出各种改变和变形,只要不脱离本实用新型的精神,均应属于本实用新型所附权利要求所定义的范围。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号