⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 time_counter.v

📁 基于verilog的时钟定时器的硬件实现
💻 V
字号:
module TIME_COUNTER(CLK, HRS, MINS, SECS, HRS_OUT, MINS_OUT, AM_PM, RESET);
input CLK, HRS, MINS, SECS, RESET;
output HRS_OUT, MINS_OUT, AM_PM;
wire CLK, HRS, MINS, SECS, RESET;
reg [3:0] HRS_OUT;
reg [5:0] MINS_OUT, SECS_OUT;
reg AM_PM;
reg SECS_CARRY, MINS_CARRY, HRS_CARRY;
parameter AM = 0;parameter PM = 1;
   
always@(posedge CLK)
   begin      if(RESET==1)        begin           HRS_OUT<= 0;           MINS_OUT<= 0;
           SECS_OUT<= 0;           AM_PM<= AM;        end      else begin        if(SECS)
           begin 
            if(SECS_CARRY)
              begin
                 SECS_OUT<= 0;
                 MINS_OUT<= MINS_OUT + 1;
              end
            else 
                 SECS_OUT<= SECS_OUT+ 1;
            if(MINS_CARRY)
              begin
                 MINS_OUT<= 0;
                 HRS_OUT<= HRS_OUT+1;
              end
            
            if(HRS_CARRY)
              begin
                 HRS_OUT<= 0;
                 AM_PM<= ~AM_PM;
              end
          
          end
       else
          begin
             if(HRS)
               if(HRS_CARRY)
                  begin
                    HRS_OUT<= 0;
                    AM_PM<= ~AM_PM;
                  end
               else
                    HRS_OUT<= HRS_OUT+ 1;
             if(MINS)
               if(MINS_CARRY)
                  MINS_OUT<= 0;
               else
                  MINS_OUT<= MINS_OUT+ 1;
          end
      end   end
   
always@(posedge CLK)
   begin
      if(SECS)
        begin
            if(SECS_OUT== 58)
                SECS_CARRY<= 1;
            else
                SECS_CARRY<= 0;
            if(SECS_OUT== 58 && MINS_OUT== 59)
                MINS_CARRY<= 1;
            else
                MINS_CARRY<= 0;
            if(SECS_OUT==58 && MINS_OUT==59 && HRS_OUT==11)
                HRS_CARRY<= 1;
            else
                HRS_CARRY<= 0;
        end
      if(MINS)
           if(MINS_OUT==59)
                MINS_CARRY<= 1;
           else
                MINS_CARRY<= 0;
        
      if(HRS)
           if(HRS_OUT== 11)
                HRS_CARRY<= 1;
           else
                HRS_CARRY<= 0;
    end
    
endmodule                    
   
      
      
      
      
      
      
      
      
      
      
      
      
       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -