chenhaoyumax 发表于 2011-5-26 16:01:33

求解答~大伙过来瞧瞧 吧~

LIBRARY IEEE;
USE IEEE.std_logic_1164.ALL;
USE IEEE.std_logic_arith.ALL;
USE IEEE.std_logic_signed.ALL;

ENTITY refund IS
       PORT (clk            : IN      std_logic;
             rst            : IN      std_logic;
             cancel         : IN      std_logic;
             ok             : IN      std_logic;
             clear          : INOUT   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      : IN      integer RANGE 0 TO 15;
             Rsum_50      : IN      integer RANGE 0 TO 15;
             Rsum_100       : IN      integer RANGE 0 TO 15;
             en_deliver   : OUT   std_logic;
             RC10         : OUT   std_logic;
             RC50         : OUT   std_logic;
             RC100          : OUT   std_logic);
END refund;


ARCHITECTURE Behavioral OF refund IS
      CONSTANT value      : integer :=13;
      SIGNAL   sum2,i,m,n   : integer RANGE 20 DOWNTO 0;
      SIGNAL   cash_out_flag : std_logic;
BEGIN
         PROCESS(rst,clk,cancel,ok)
         BEGIN
            IF (rst='1') THEN
               RC10 <= '0';
               RC50 <= '0';
               RC100 <= '0';
               en_deliver <= '0';
               i <= 0;
               m <= 0;
               n <= 0;
               clear <= '0';
               sum2 <= 0;
               cash_out_flag <= '0';
             ELSE
                IF (cancel='1') THEN
                  i <= sum_10;
                  m <= sum_50;
                  n <= sum_100;
                END IF;
                IF (ok='1') THEN
                  cash_out_flag<='1';
                  i <= Rsum_10;
                  m <= Rsum_50;
                  n <= Rsum_100;
                END IF;
                IF (rising_edge(clk)) THEN
                  sum2 <= sum;
                  IF ((sum = value AND cash_out_flag ='1') OR(sum =0 AND sum2 /= 0)) THEN

                         clear <= '1';
                         cash_out_flag<='0';
                  ELSE
                        clear <= '0';
                  END IF;
                  IF (i > 0) THEN
                        i <= i-1;
                        RC10 <= '1';
                  ELSE
                        RC10 <= '0';
                  END IF;
                  IF (m > 0) THEN
                        m <= m-1;
                        RC50 <= '1';
                  ELSE
                        RC50<='0';
                  END IF;
                  IF (n > 0) THEN
                        n<=n-1;
                        RC100<='1';
                  ELSE
                        RC100<='0';
                  END IF;
                  IF (ok='1' AND sum>= value) THEN
                     en_deliver<='1';
                  ELSE
                     en_deliver<='0';
                  END IF;
                END IF;
         END IF;
       END PROCESS;
END Behavioral;

至芯兴洪 发表于 2011-5-26 21:42:33

解答什么啊,翻译吗?

chenhaoyumax 发表于 2011-5-26 21:53:06

回复 2# 至芯兴洪


   不是啊~是这里面的错误。。。呵呵
页: [1]
查看完整版本: 求解答~大伙过来瞧瞧 吧~