10进制和60进制计数器
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
十进制计数器
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT10IS
PORT(CLK,RST,EN:IN STD_LOGIC; CQ:OUT STD_LOGIC_VECTOR(3DOWNTO 0);
COUT:OUT STD_LOGIC);
END CNT10;
ARCHITECTURE behav OF CNT10IS
BEGIN
PROCESS(CLK,RST,EN)
VARIABLE CQI: STD_LOGIC_VECTOR(3DOWNTO0);
BEGIN
IF RST='1'THEN CQI:=(OTHERS =>'0');--计数
ELSIF CLK'EVENT AND CLK='1'THEN
IF EN='1'THEN
IF CQI<9THEN CQI:=CQI+1; --允许计数,
ELSE CQI:=(OTHERS=>'0'); --大于9,
END IF;
END IF;
END IF;
IF CQI=9THEN COUT<='1';--计数大于9,输出进位信号
ELSE COUT<='0';
END IF;
CQ<=CQI;--将计数值向端口输出
END PROCESS;
END behav;六十进制计数器源程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity cnt60is
port(clk,rst,en:in std_logic;
cq:out std_logic_vector(7downto0);
cout:out std_logic);
end cnt60;
architecture behav of cnt60is
begin
process(clk,rst,en)
variable cqi:std_logic_vector(7downto0); begin
if rst='1'then cqi:=(others=>'0');
elsif clk'event and clk='1'then
if en='1'then
if cqi<59then cqi:=cqi+1;
else cqi:=(others=>'0');
end if;
end if;
end if;
if cqi=59then cout<='1';
else cout<='0';
end if;
cq<=cqi;
end process;
end behav;