LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY ADD_SUB_LOAD_16 IS
PORT (CLK,RST,ADD_EN,SUB_EN,LOAD : IN STD_LOGIC; DATA : IN STD_LOGIC_VECTOR(15 DOWNTO 0) ; CQ : OUT STD_LOGIC_VECTOR(15 DOWNTO 0) ;
COUT : OUT STD_LOGIC);
END ENTITY ADD_SUB_LOAD_16;
ARCHITECTURE A_S_16 OF ADD_SUB_LOAD_16 IS
BEGIN
PROCESS(CLK,RST,ADD_EN,SUB_EN,LOAD)
VARIABLE CQI: STD_LOGIC_VECTOR(15 DOWNTO 0);
--VARIABLE LS_LOAD : STD_LOGIC;
BEGIN --LS_LOAD:=LOAD;
IF RST = '1' THEN CQI:=(OTHERS => '0');--计数器异步复位
ELSIF LOAD = '1' THEN CQI:=DATA;--LS_LOAD:='0'; --计数器异步复位
ELSIF CLK'EVENT AND CLK='1' THEN --检测时钟上升沿
IF ADD_EN='1'THEN --检测是否允许计数(同步他能)
IF CQI<16#FFFF# THEN CQI:=CQI+1; --允许计数,检测是否小于65535
ELSE CQI:=(OTHERS => '0'); --大于65535,计数值清零
END IF;
IF CQI=16#FFFF# THEN COUT<='1'; --计数大于9,输出进位信号
ELSE COUT <= '0';
END IF;
END IF;
IF SUB_EN='1'THEN --检测是否允许计数(同步他能)
IF CQI>0 THEN CQI:=CQI-1; --允许计数,检测是否小于65535
ELSE CQI:=(OTHERS => '1'); --大于65535,计数值清零
END IF;
IF CQI=0 THEN COUT<='1'; --计数大于9,输出进位信号
ELSE COUT <= '0';
END IF;
END IF;
END IF;
CQ<=CQI; --将计数值向端口输出
END PROCESS;
END ARCHITECTURE A_S_16;
我要赚赏金打赏帖 |
|
|---|---|
| 低功耗超声波液位测距仪(ESP32S3)被打赏¥27元 | |
| 在K230DBOX上实现多时段语音提示功能被打赏¥14元 | |
| 使K230DBOX实现相机持续拍照功能被打赏¥12元 | |
| 基于K230DBOX的文本管理器设计被打赏¥14元 | |
| 基于K230DBOX的彩色画板功能实现被打赏¥15元 | |
| 在K230DBOX上实现音乐播放器功能被打赏¥15元 | |
| NXP MCU系列开发板MCULink固件升级方法【VSCode】被打赏¥28元 | |
| 三分钟快速搭建NXP MCU开发环境(VSCode)被打赏¥22元 | |
| 为遥控小车巧添功能被打赏¥26元 | |
| 【S32K3XX】FlexCAN 模块配置使用被打赏¥30元 | |
我要赚赏金
