|
LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_signed.ALL;
ENTITY calculator IS
PORT(rst :IN std_logic;
ok :IN std_logic;
clear :IN std_logic;
sum :IN integer RANGE 0 TO 20;
sum_10 :IN integer RANGE -10 TO 15;
sum_50 :IN integer RANGE -10 TO 15;
sum_100 :IN integer RANGE -10 TO 15;
Rsum_10 :OUT integer RANGE 0 TO 15;
Rsum_50 :OUT integer RANGE 0 TO 15;
Rsum_100 :OUT integer RANGE 0 TO 15);
END calculator;
ARCHITECTURE Behavioral OF calculator IS
CONSTANT valus :integer :=13;
BEGIN
PROCESS(sum,rst,ok,clear,sum_10,sum_50,sum_100)
VARIABLE s,x,y,z: integer RANGE 20 DOWNTO 0;
BEGIN
s:=sum;
IF(rst='1' OR clear='1')THEN
Rsum_10<=0;
Rsum_50<=0;
Rsum_100<=0;
x:=0;
y:=0;
z:=0;
ELSIF (ok='1')THEN
IF (sum<valus)THEN
Rsum_10<=sum_10;
Rsum_50<=sum_50;
Rsum_100<=sum_100;
elsIF (sum=valus)THEN
Rsum_10<=0;
Rsum_50<=0;
Rsum_100<=0;
elsIF (sum>valus)THEN
if s>valus then
IF ((s-5) > valus) THEN
x:=x+1;
s:=s-10;
ELSIF((s-5) >=valus) THEN
y:=y+1;
s:=s-5;
ELSIF((s-1) >=valus) THEN
z:=z+1;
s:=s-1;
END IF;
Rsum_100<=x;
Rsum_50<=y;
Rsum_10<=z;
END IF;
END IF;
end if;
END PROCESS;
END Behavioral; |
|