Hallo Lothar,
"IdR verwendet ISE automatisch den richtigen Buffer."
Das hört sich ja schon mal gut an. Danke.
Ich habe als Übung einen Zähler mit Takt/CLK1) und Reset(BTN1)
programmiert. Beide Pins(CLK1, BTN1) sind an globale Clock-Pins
angeschlossen (GCK0, GCK1). Der Zähler funktioniert. Warum bekommt nur
BTN1 bei der Synthese einen IBUF zugewiesen?
View Technoology Schematic:
CLK1 --- |I O| ---- |CLK der Flipflops|
BTN1 --- |IBUF| ---- |CLR Reset der Flipflops|
UCF-File:
NET "BTN1" LOC = "P77";
NET "CLK1" LOC = "P80";
NET "LED1" LOC = "P69";
NET "LED2" LOC = "P71";
NET "LED3" LOC = "P49";
NET "CLK1" TNM_NET = CLK1;
TIMESPEC TS_CLK1 = PERIOD "CLK1" 15 ns HIGH 50%;
VHDL-Code:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
---- Uncomment the following library declaration if instantiating
---- any Xilinx primitives in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity led_cnt is
Port ( CLK1 : in STD_LOGIC; -- 50MHz
BTN1 : in STD_LOGIC; -- button-1
LED1 : out STD_LOGIC; -- LED-1
LED2 : out STD_LOGIC; -- LED-2, P68, A4
LED3 : out STD_LOGIC); -- LED-2, P68, A4
end led_cnt;
architecture Behavioral of led_cnt is
signal counter: std_logic_vector(23 downto 0) :=
"0000"&"0000"&"0000"&"0000"&"0000"&"0000";
signal counter2: std_logic_vector(3 downto 0) := "0000";
signal abc: STD_LOGIC;
begin
process (CLK1, BTN1)
begin
if BTN1='1' then
counter <= "000000000000000000000000"; --null;
else
if CLK1='1' and CLK1'event then
counter <= counter + 1;
end if;
end if;
end process;
LED1 <= counter(23);
process (BTN1)
begin
if BTN1='1' and BTN1'event then
counter2 <= counter2 + 1;
end if;
end process;
LED2 <= counter2(0);
abc <= BTN1;
LED3 <= abc;
end Behavioral;