Witam
Mam problem z implementacją układu opisanego w VHDLu gdy jeden z sygnałów wykorzystywanych jako zegar NIE jest podłączny do linii zegara globalnego (SPARTAN II XC2S50).
Poniższy fragment programu ma służyć do zatrzaskiwania młodszej części adresu z multipleksowanej szyny adres/dane mikrokontrolera 8051.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Test is Port ( uP_DA: in std_logic_vector (7 downto 0); -- dane adres z uP uP_ALE: in std_logic; -- sygnal ALE z uP (NIE jest podłączony do jednej z globalnych lini CLK) SEG: out std_logic_vector (7 downto 0) -- wyswietlacz ); end Test;
architecture Behavioral of Test is
signal ale_n: std_logic;
begin ale_n <= uP_ALE;
LACH_ADDR: process (ale_n) begin if (ale_n'event and ale_n = '0') then SEG(7 downto 0) <= uP_DA (7 downto 0); end if; end process;
end Behavioral;
niestety podczas procesu implementacji otrzymuję błąd Using target part "2s50tq144-5". ERROR:MapLib:93 - Illegal LOC on IPAD symbol "uP_ALE" or BUFGP symbol "uP_ALE_BUFGP" (output signal=uP_ALE_BUFGP), IPAD-IBUFG should only be LOCed to GCLKIOB site.
natomiast poniższy przykład implementuje się już poprawnie. Zmieniono jedynie: ale_n <= uP_ALE; na ale_n <= uP_ALE and NOTHING; gdzie linia NOTHING zawsze w stanie '1'.
library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;
entity Test is Port ( NOTHING: in std_logic; uP_DA: in std_logic_vector (7 downto 0); -- dane adres z uP uP_ALE: in std_logic; -- sygnal ALE z uP (NIE jest podłączony do jednej z globalnych lini CLK) SEG: out std_logic_vector (7 downto 0) -- wyswietlacz ); end Test;
architecture Behavioral of Test is
signal ale_n: std_logic;
begin
ale_n <= uP_ALE and NOTHING;
LACH_ADDR: process (ale_n) begin if (ale_n'event and ale_n = '0') then SEG (7 downto 0) <= uP_DA (7 downto 0); end if; end process;
end Behavioral;
Pozdrwiam Jarek