设计一个含有异步清零和计数使能的16位二进制加减可控的计数器
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
28. 设计一个含有异步清零和计数使能的16位二进制加减可控计数器。P91- 3.
1.程序
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY cnt16 IS
PORT(EN,RST,UPD,CLK : IN STD_LOGIC;
OUT1: OUT STD_LOGIC_VECTOR(15 DOWNTO 0));
END cnt16;
ARCHITECTURE bhv OF cnt16 IS
SIGNAL QQ:STD_LOGIC_VECTOR(15 DOWNTO 0);
BEGIN
PROCESS(EN,RST,UPD)
BEGIN
IF RST='1' THEN
QQ<=(OTHERS=>'0'); --有复位信号清零
ELSIF EN='1' THEN --EN位高电平开始计数
IF CLK'EVENT AND CLK='1' THEN
IF UPD='1' THEN --当UDP为1加计数
QQ<=QQ+1;
ELSE --当UDP不为1减计数
IF QQ > "0" THEN --当减到0时
QQ<=QQ-1; --给QQ全1
ELSE
QQ<=(OTHERS=>'1');
END IF;
END IF;
END IF;
END IF;
END PROCESS;
OUT1<=QQ;
END bhv;