Hallo Zusammen, ich habe mir ein Programm geschrieben, was ein SRAM
ansprechen soll. Dieses Programm klappt auch einwandfrei, jedoch erhalte
ich eine menge Warnungen, die ich mir nicht erklären kann.
Ich habe mal einen Synthesefähigen Ausschnitt hier eingestellt:
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 | use IEEE.STD_LOGIC_ARITH.ALL;
|
4 | use IEEE.STD_LOGIC_UNSIGNED.ALL;
|
5 |
|
6 |
|
7 | entity test is
|
8 | port (
|
9 |
|
10 | write_wrt_1 : in std_logic;
|
11 | write_adr_1 : in std_logic_vector(17 downto 0);
|
12 | write_dat_1 : in std_logic_vector (15 downto 0);
|
13 | read_adr_1 : in std_logic_vector(17 downto 0);
|
14 |
|
15 | write_sel_1 : in std_logic;
|
16 | clk50 : in std_logic;
|
17 |
|
18 | sram_adr : out std_logic_vector (17 downto 0);
|
19 | sram_oe : out std_logic;
|
20 |
|
21 | sram_1_ce : out std_logic;
|
22 | sram_1_io : inout std_logic_vector (15 downto 0);
|
23 |
|
24 | sram_2_ce : out std_logic;
|
25 | sram_2_io : inout std_logic_vector (15 downto 0));
|
26 |
|
27 | end test;
|
28 |
|
29 | architecture Behavioral of test is
|
30 |
|
31 | begin
|
32 |
|
33 | process (clk50) begin
|
34 | if rising_edge (clk50) then
|
35 | if write_wrt_1 = '1' then -- in den Speicher schreiben
|
36 | sram_adr <= write_adr_1; -- Adresse zum schreiben
|
37 | sram_oe <= '1'; -- schreiben beschleunigen durch
|
38 | if write_sel_1 = '0' then -- abschalten der sram ausgänge
|
39 | sram_1_ce <= '0'; -- schreiben in
|
40 | sram_2_ce <= '1'; -- sram 1 oder sram 2
|
41 | sram_1_io <= write_dat_1; -- Daten schreiben
|
42 | sram_2_io <= (others => 'Z');
|
43 | else
|
44 | sram_1_ce <= '1'; -- Sram 2
|
45 | sram_2_ce <= '0';
|
46 | sram_1_io <= (others => 'Z');-- Daten schreiben
|
47 | sram_2_io <= write_dat_1;
|
48 | end if;
|
49 |
|
50 | else -- Aus speicher lesen
|
51 | sram_adr <= read_adr_1; -- Adresse zum Lesen
|
52 | sram_1_io <= (others => 'Z'); -- IO auf Treestate
|
53 | sram_2_io <= (others => 'Z');
|
54 | sram_oe <= '0';
|
55 |
|
56 | if write_sel_1 = '1' then
|
57 | sram_1_ce <= '0'; -- lesen von
|
58 | sram_2_ce <= '1'; -- sram 1
|
59 | else
|
60 | sram_1_ce <= '1'; -- Sram 2
|
61 | sram_2_ce <= '0';
|
62 | end if;
|
63 | end if;
|
64 | end if;
|
65 | end process;
|
66 | end Behavioral;
|
und hier die Warnungen, die ich bekomme, eigentlich ist es nur eine
Warnung und eine info, die aber für jedes bit von sram_io:
INFO:Xst:2261 - The FF/Latch <Mtridata_sram_1_io_0> in Unit <test> is
equivalent to the following FF/Latch, which will be removed :
<Mtridata_sram_2_io_0>
WARNING:Xst:638 - in unit test Conflict on KEEP property on signal
Mtridata_sram_1_io<0> and Mtridata_sram_2_io<0> Mtridata_sram_2_io<0>
signal will be lost.
hier wiederholt sich die warnung/info bis Mtridata_sram_2_io<15>
Wieso entstehen diese Warnungen ?
und was bedeutet Mtri ?
Michael Sauron