Gast
#1849544
Hallo,
wer kann mir bei meinem Anfängerfehler helfen ?
Ich möchte bei auftreten eines Signals "ale" eine Adresse aus einem
"inout"-Vector und einem "in"-Vector zusammensetzen, speichern und an
einem Ausgang zur Verfügung stellen. Synthese klappt leider nicht:
Xst:1710 - FF/Latch <addr_19> (without init value) has a constant value
of 0 in block <bus_couple>. This FF/Latch will be trimmed during the
optimization process.
Xst:1895 - Due to other FF/Latch trimming, FF/Latch <addr_18> (without
init value) has a constant value of 0 in block <bus_couple>. This
FF/Latch will be trimmed during the optimization process.
.
.
.
für den gesamten Vector...
entity bus_couple is
port ( din : out std_logic_vector (15 downto 0);
clk : in std_logic;
cpu_rd_n : in std_logic;
cpu_wd_n : in std_logic;
ale : in std_logic;
dout : in std_logic_vector (15 downto 0);
addr : buffer std_logic_vector (19 downto 0);
addr_a : in std_logic_vector (3 downto 0);
bus_out : inout std_logic_vector (15 downto 0));
end bus_couple;
architecture BEHAVIORAL of bus_couple is
signal shiftAle : std_logic_vector (2 downto 0);
signal setAddr : std_logic;
begin
process (clk)
begin
if (rising_edge(clk)) then
if (shiftAle = "011") then -- Positive Flanke von ale erfassen
addr <= addr_a & bus_out; -- nach 2 Zyklen Adresse von
Bus und Adressleitungen
zusammensetzen
else
addr(19 downto 0) <= addr(19 downto 0);
end if;
end if;
end process;
shiftAle <= shiftAle(1 downto 0) & ale; -- ale Signal shiften und auf
shiftAle abbilden
bus_out <= dout when (cpu_rd_n='0') else -- cpu_rd_n legt dout auf Bus
(others => 'Z');
din <= bus_out when (cpu_wd_n='0') else -- cpu_wd_n legt Bus auf din
(others => 'Z');
end BEHAVIORAL;
Vielen Dank !