yygyyygy 发表于 2011-2-23 13:17:25

VHDL程序求解---LED闪烁

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY led IS
PORT
(
clk:IN STD_LOGIC;
yout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)
);
END;
ARCHITECTURE behave OF led IS
BEGIN
PROCESS(clk)
VARIABLE temp:STD_LOGIC_VECTOR(31 DOWNTO 0);
VARIABLE way:STD_LOGIC_VECTOR(7 DOWNTO 0):="00000000";
BEGIN
        IF (clk'EVENT AND clk='1')
                THEN temp := temp + 1;
                        IF (temp=5)
                                THEN way := way XOR "11111111";temp:=(OTHERS=>'0');
                        END IF;
        END IF;
        yout<= way;
END PROCESS;
END;

这是程序是正确的,但将
        IF (clk'EVENT AND clk='1')
                THEN temp := temp + 1;
                        IF (temp=5)
                                THEN way := way XOR "11111111";temp:=(OTHERS=>'0');
                        END IF;
        END IF;

改成:
        IF (clk'EVENT AND clk='1')
                THEN temp := temp + 1;
        END IF;
        IF (temp=5)
                THEN way := way XOR "11111111";temp:=(OTHERS=>'0');
        END IF;
则不能正常工作(能通过编译,但输出不取反)
小弟百思不得其解

yl604922959 发表于 2011-2-23 14:47:13

IF (clk'EVENT AND clk='1')
THEN temp := temp + 1;
END IF;

end if 了就完了;下面的判断和上面的就没有关系了
你应该看看rtl图,就知道了

zym_0826 发表于 2011-2-23 16:18:59

temp是变量。
页: [1]
查看完整版本: VHDL程序求解---LED闪烁