Forum: FPGA, VHDL & Co. fehlende Verbindungen in RTL Schematic


von Andreas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

hab ein Problem mit einen Programm und weiss nicht genau wo der Fehler 
liegt.

Die Aufgabe ist einen RAM zu beschreiben und wieder auszulesen, die 
ausgelesenen Daten sollen wiederum in einen 2ten RAM geschrieben werden 
und wiederum ausgelesen werden.

Die beiden Projektteile funktionieren auch einzeln wunderbar, nun wollte 
ich die Projekte zusammenfassen und gemeinsam auf einen FPGA testen.

Nachdem ich die beiden Teile zusammengefügt habe, hat es soweit 
funktioniert, dass der 1.RAM beschrieben und ausgelesen wird und der 
2.RAM beschrieben wird.

Das Problem ist, dass der 2.RAM nicht mehr ausgelesen werden kann bzw. 
beim auslesen nur "U" ausgelesen werden.

Der Fehler ist das es keine Verbindung zwischen den 2.RAM und den 
Ausgabeports mehr gibt. Das hab ich festgestellt als ich mir die RTL 
Schematics angesehen hab.

Ich hab mal die 3 Schematics angehangen, damit man es besser sehen kann.

Im "BAP_RAM_decode.ngr" sieht man den RAM und es gibt eine Verbindung 
zw. dem RAM und dem Ausgangsport "BAP_RAM_out".

Im "toplevel_decode.ngr" sieht man ebenfalls das der RAM eine Verbindung 
zu  dem Ausgangsport "BAP_RAM_out" hat.

Im "toplevel.ngr" sind dann beide Elemente (toplevel_encode & 
toplevel_decode) zusammengebunden. Die Verbindung existiert auf der 
Encode Seite auch, nur nicht auf der Decode-Seite.

Ich hab zum zusammenfügen der beiden Module nur folgendes Toplevel 
geschrieben, finde aber nirgends den Grund, dass die Verbindung auf der 
einen Seite existiert und auf der anderen Seite nicht.

Vielleicht kennt ja jemand den Grund des Problems und kann mir sagen, wo 
der Fehler liegt.

An den weiteren Programmcode kann es fast nicht liegen, da die beiden 
Teile einzeln wie gesagt Problemlos funktionieren.

Vielen Dank schonmal im Vorraus.

Andreas
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 toplevel is
8
9
Port ( 
10
      -- global Control Signals
11
      clk:          in    std_logic;                  -- Clock
12
      VALID:        in    std_logic;
13
      rstn:          in    std_logic
14
      -- Command Control Signals  
15
   );
16
end toplevel;
17
18
architecture Behavioral of toplevel is
19
20
21
component toplevel_decode
22
23
Port ( 
24
      -- global Control Signals
25
      clk:          in    std_logic;          -- Clock
26
      rstn:          in    std_logic;
27
      ADDR:          out   std_logic_vector(3 downto 0);
28
      HDATA:        inout  std_logic_vector(15 downto 0);
29
      JDATA:        out  std_logic_vector(7 downto 0);
30
      IRQ:          in    std_logic;
31
      VALID:        in    std_logic;
32
      HOLD:          inout   std_logic:= '0';
33
      RAM_ACK:        out    std_logic;
34
      ACK:          in    std_logic;
35
      RD,WE,CS:      out  std_logic:= '0';
36
      send_data :      in  STD_LOGIC;
37
      received_data :  out STD_LOGIC;
38
      data_line:       in  STD_LOGIC_VECTOR(15 downto 0);
39
      -- Command Control Signals
40
      clk_pin:        out std_logic
41
      );
42
end component;
43
44
component  toplevel_encode
45
Port ( 
46
      -- global Control Signals
47
      clk:          in    std_logic;                  -- Clock
48
      rstn:          in    std_logic;
49
      ADDR:          out   std_logic_vector(3 downto 0);
50
      HDATA:        inout  std_logic_vector(15 downto 0);
51
      IRQ:          in    std_logic;
52
      VALID:        in    std_logic;
53
      HOLD:          inout   std_logic:= '0';
54
      ACK:          in    std_logic;
55
      RAM_ACK:        in    std_logic;
56
      RD,WE,CS:      out  std_logic:= '0';
57
      received_data  : in  STD_LOGIC;
58
      send_data     : out STD_LOGIC;
59
      data_line    : out STD_LOGIC_VECTOR(15 downto 0)
60
      -- Command Control Signals
61
    );
62
end component;    
63
64
SIGNAL  s_RAM_ACK:         std_logic;
65
SIGNAL  s_send_data :      STD_LOGIC;
66
SIGNAL  s_received_data :  STD_LOGIC;
67
SIGNAL  s_data_line:        STD_LOGIC_VECTOR(15 downto 0);
68
SIGNAL   s_ADDR1:             std_logic_vector(3 downto 0);
69
SIGNAL  s_HDATA1:          std_logic_vector(15 downto 0);
70
SIGNAL  s_JDATA1:          std_logic_vector(7 downto 0);
71
SIGNAL   s_IRQ1:              std_logic;
72
--SIGNAL  s_VALID1:            std_logic;
73
SIGNAL  s_HOLD1:             std_logic:= '0';
74
SIGNAL  s_RAM_ACK1:            std_logic;
75
SIGNAL  s_ACK1:            std_logic;
76
SIGNAL  s_RD1,s_WE1,s_CS1:        std_logic:= '0';
77
SIGNAL   s_ADDR2:             std_logic_vector(3 downto 0);
78
SIGNAL  s_HDATA2:          std_logic_vector(15 downto 0);
79
SIGNAL  s_JDATA2:          std_logic_vector(7 downto 0);
80
SIGNAL   s_IRQ2:              std_logic;
81
--SIGNAL  s_VALID2:            std_logic;
82
SIGNAL  s_HOLD2:             std_logic:= '0';
83
SIGNAL  s_RAM_ACK2:            std_logic;
84
SIGNAL  s_ACK2:            std_logic;
85
SIGNAL  s_RD2,s_WE2,s_CS2:        std_logic:= '0';
86
87
begin
88
89
component1: toplevel_decode
90
91
port map(
92
    clk => clk,
93
    rstn => rstn,
94
    RAM_ACK => s_RAM_ACK,
95
    send_data => s_send_data,
96
    received_data =>  s_received_data,
97
    data_line => s_data_line,
98
    ADDR => s_ADDR1,
99
    HDATA  => s_HDATA1,
100
    JDATA => s_JDATA1,
101
    IRQ => s_IRQ1,
102
  --  VALID => s_VALID1,
103
    VALID => VALID,
104
    HOLD=> s_HOLD1,
105
    ACK => s_ACK1,
106
    RD => s_RD1,
107
    WE => s_WE1,
108
    CS => s_CS1
109
    
110
  );  
111
  
112
component2: toplevel_encode
113
114
port map(
115
    clk => clk,
116
    rstn => rstn,
117
    RAM_ACK =>s_RAM_ACK,
118
    send_data => s_send_data,
119
    received_data =>  s_received_data,
120
    data_line => s_data_line,
121
    ADDR => s_ADDR2,
122
    HDATA  => s_HDATA2,
123
    IRQ => s_IRQ2,
124
  --  VALID => s_VALID2,
125
    VALID => VALID,
126
    HOLD=> s_HOLD2,
127
    ACK => s_ACK2,
128
    RD => s_RD2,
129
    WE => s_WE2,
130
    CS => s_CS2
131
  );    
132
end Behavioral;

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.