找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4507|回復(fù): 0
收起左側(cè)

vhdl秒計(jì)時器

[復(fù)制鏈接]
ID:326073 發(fā)表于 2018-5-9 16:54 | 顯示全部樓層 |閱讀模式
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY second IS
PORT( clk,reset,setmin:STD_LOGIC;
                 enmin:OUT STD_LOGIC;
                 daout:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END ENTITY second;
ARCHITECTURE fun OF second IS
SIGNAL count:STD_LOGIC_VECTOR(6 DOWNTO 0);
SIGNAL enmin_1,enmin_2:STD_LOGIC;   ——enmin_1為59秒時的進(jìn)位信號
  BEGIN                     ——enmin_2由clk調(diào)制后的手動調(diào)分脈沖信號串
    daout<=count;
    enmin_2<=(setmin and clk); ——setmin為手動調(diào)分控制信號,高電平有效
    enmin<=(enmin_1 or enmin_2); ——enmin為向分進(jìn)位信號
  PROCESS(clk,reset,setmin)
   BEGIN
    IF(reset='0')THEN count<="0000000"; ——若reset為0,則異步清零
     ELSIF(clk 'event and clk='1')then  ——否則,若clk上升沿到
       IF(count(3 downto 0)="1001")then   ——若個位計(jì)時恰好到“1001”即9
         IF(count<16#60#)then  ——又若count小于16#60#,即60H
IF(count="1011001")then   ——又若已到59D
             enmin_1<='1';count<="0000000";——則置進(jìn)位為1及count復(fù)0
          ELSE   ——未到59D
            count<=count+7; ——則加7,而+7=+1+6,即作“加6校正”
          END IF;
         ELSE    ——若count不小于16#60#(即count等于或大于16#60#)
            count<="0000000";    ——count復(fù)0
         END IF;                 ——END IF(count<16#60#)
        ELSIF(count<16#60#)then  ——若個位計(jì)數(shù)未到“1001”則轉(zhuǎn)此句再判
          count<=count+1;         ——若count<16#60#則count加1
          enmin_1<='0'after 100 ns; ——沒有發(fā)生進(jìn)位  
        ELSE                 ——否則,若count不小于16#60#
          count<="0000000";    ——則count復(fù)0
        END IF;               ——END IF(count(3 DOWNTO 0)=“1001”)
    END IF;                   ——END IF(reset=‘0’)
END PROCESS;
END fun;

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表