集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1462|回复: 2

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

[复制链接]
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 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-6-23 12:42 , Processed in 0.064964 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表