建议你要先搞懂阻塞赋值与非阻塞赋值区别,阻塞赋值就是你用的:= 赋
值,是在这个时钟的上升沿直接变化的,非阻塞赋值是在下一个上升沿值
才发生变化,建议使用非阻塞赋值;还有就是一般使用signal,不使用变量。
根据你之前的程序这样就对了
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
entity fenpin is
generic(pin : integer := 1);
port (clk , reset : in std_logic;
output : inout std_logic);
end fenpin;
architecture Behavioral of fenpin is
signal a : integer range 0 to pin;
begin
process(clk , reset)
begin
if(reset = '1') then
a <= 0;
output <= '0';
elsif(clk ' event and clk = '1') then
if ( a < pin ) then
a <= a + 1;
else
a <= 0 ;
end if ;
if(a = pin) then
output <= not output;
else
output <= output ;
end if;
end if;
end process;
end Behavioral;