EDA与VHDL作业(5)- 2

题目:给出含有异步清零和计数使能的16位二进制加减可控计数器的VHDL描述

LIBRARY IEEE; 
USE IEEE.STD_LOGIC_1164.ALL; 
USE IEEE.STD_LOGIC_UNSIGNED.ALL; 
ENTITY CNT16 IS 
    PORT(CLK, RST, EN : IN STD_LOGIC; 
        CHOOSE : IN BIT; 
        SETDATA : BUFFER INTEGER RANCE 65535 DOWNTO 0; 
        COUT : BUFFER INTEGER RANCE 65535 DOWNTO 0); 
END CNT16; 

ARCHITECTURE ONE OF CNT16 IS 
BEGIN 
    PROCESS(CLK,RST,SDATA) 
    VARIABLE QI : STD_LOGIC_VECTOR(15 DOWNTO 0);--或者  INTEGER RANCE 65535 DOWNTO 0)
    BEGIN 
        IF RST = '1' THEN --计数器异步复位
            QI := (OTHERS=>'0'); 
        ELSIF SET = '1' THEN--计数器异步置位
            QI := SETDATA; 
        ELSIF CLK'EVENT AND CLK = '1' THEN --检测时钟上升沿
            IF EN = '1' THEN --检测是否允许计数
                IF CHOOSE = '1' THEN --选择加法计数
                    QI := QI+1; --计数器加一
                ELSE QI := QI-1;--计数器减一
                END IF; 
            END IF; 
        END IF; 
        COUT <= QI;--将计数值向端口输出
    END PROCESS; 
END ONE;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值