verilog检测闰年

  • 算法:输入十进制四位年份的BCD二进制码,共16位,表示为ABCD。闰年包含以下几种情况
    • 能被400整除:CD全为0,且AB能被4整除
    • 可以被4整除且不能被100整除:CD不全为0,且CD能被4整除
    • 所以只要判断两位十进制数AB或CD能否被4整除:
      若十位数为偶数,则只有个位为0、4、8时能被4整除,即高四位最低位为0,低四位的末两位为00;
      若十位数为奇数,则只有个位为2、6时能被4整除,即高四位最低位为1,低四位的末两位为10;
  • 代码
module quar(high,low,q);
input [3:0]high,low;
output q;

reg q;

always @(high or low)
if(low[0]==1'b1)
    q = 1'b0;
else if(((low[1]==1'b0)&&(high[0]==1'b0))||((low[1]==1'b1)&&(high[0]==1'b1)))
    q = 1'b1;
else
    q = 1'b0;
    
endmodule
module leap(year,q);
input [15:0]year;
output q;

wire q1,q2;

quar U1(year[7:4],year[3:0],q1);
quar U2(year[15:12],year[11:8],q2);

assign q = (year[7:0]==8'b0)?q2:q1;

endmodule
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。