60进制BCD码计数器

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

60进制BCD码计数器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY counter60 IS

PORT(

CLK1HZ : IN STD_LOGIC;

EN : IN STD_LOGIC;

ENOUT : OUT STD_LOGIC;

LOW : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);

HIGH : OUT STD_LOGIC_VECTOR(3 DOWNTO 0)

);

END counter60;

ARCHITECTURE rtl OF counter60 IS

SIGNAL LOW_REG : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";

SIGNAL HIGH_REG : STD_LOGIC_VECTOR(3 DOWNTO 0):="0000";

BEGIN

--个位计数

LOW_PROC:PROCESS(CLK1HZ,EN)

BEGIN

IF rising_edge(CLK1HZ) THEN

IF EN ='1' THEN

IF LOW_REG ="1001" THEN

LOW_REG <= "0000";

ELSE LOW_REG <= LOW_REG + '1'; --注意:不同位数可以相加END IF;

END IF;

END IF;

END PROCESS;

LOW <= LOW_REG; --将值赋给输出LOW

--十位计数

HIGH_PROC:PROCESS(CLK1HZ,EN)

BEGIN

IF rising_edge(CLK1HZ) THEN

IF EN = '1' THEN

IF LOW_REG = "1001" THEN

IF HIGH_REG = "0101" THEN

HIGH_REG <= "0000";

ELSE

HIGH_REG <= HIGH_REG + '1';

END IF;

END IF;

END IF;

END IF;

END PROCESS;

HIGH <= HIGH_REG; --将值赋给输出HIGH

ENOUT <= '1' WHEN LOW_REG = "1001" AND HIGH_REG = "0101" ELSE '0'; --进位输出END rtl;

相关文档
最新文档