www.mikrocontroller.net

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


Autor: Andreas (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;


entity toplevel is

Port ( 
      -- global Control Signals
      clk:          in    std_logic;                  -- Clock
      VALID:        in    std_logic;
      rstn:          in    std_logic
      -- Command Control Signals  
   );
end toplevel;

architecture Behavioral of toplevel is


component toplevel_decode

Port ( 
      -- global Control Signals
      clk:          in    std_logic;          -- Clock
      rstn:          in    std_logic;
      ADDR:          out   std_logic_vector(3 downto 0);
      HDATA:        inout  std_logic_vector(15 downto 0);
      JDATA:        out  std_logic_vector(7 downto 0);
      IRQ:          in    std_logic;
      VALID:        in    std_logic;
      HOLD:          inout   std_logic:= '0';
      RAM_ACK:        out    std_logic;
      ACK:          in    std_logic;
      RD,WE,CS:      out  std_logic:= '0';
      send_data :      in  STD_LOGIC;
      received_data :  out STD_LOGIC;
      data_line:       in  STD_LOGIC_VECTOR(15 downto 0);
      -- Command Control Signals
      clk_pin:        out std_logic
      );
end component;

component  toplevel_encode
Port ( 
      -- global Control Signals
      clk:          in    std_logic;                  -- Clock
      rstn:          in    std_logic;
      ADDR:          out   std_logic_vector(3 downto 0);
      HDATA:        inout  std_logic_vector(15 downto 0);
      IRQ:          in    std_logic;
      VALID:        in    std_logic;
      HOLD:          inout   std_logic:= '0';
      ACK:          in    std_logic;
      RAM_ACK:        in    std_logic;
      RD,WE,CS:      out  std_logic:= '0';
      received_data  : in  STD_LOGIC;
      send_data     : out STD_LOGIC;
      data_line    : out STD_LOGIC_VECTOR(15 downto 0)
      -- Command Control Signals
    );
end component;    

SIGNAL  s_RAM_ACK:         std_logic;
SIGNAL  s_send_data :      STD_LOGIC;
SIGNAL  s_received_data :  STD_LOGIC;
SIGNAL  s_data_line:        STD_LOGIC_VECTOR(15 downto 0);
SIGNAL   s_ADDR1:             std_logic_vector(3 downto 0);
SIGNAL  s_HDATA1:          std_logic_vector(15 downto 0);
SIGNAL  s_JDATA1:          std_logic_vector(7 downto 0);
SIGNAL   s_IRQ1:              std_logic;
--SIGNAL  s_VALID1:            std_logic;
SIGNAL  s_HOLD1:             std_logic:= '0';
SIGNAL  s_RAM_ACK1:            std_logic;
SIGNAL  s_ACK1:            std_logic;
SIGNAL  s_RD1,s_WE1,s_CS1:        std_logic:= '0';
SIGNAL   s_ADDR2:             std_logic_vector(3 downto 0);
SIGNAL  s_HDATA2:          std_logic_vector(15 downto 0);
SIGNAL  s_JDATA2:          std_logic_vector(7 downto 0);
SIGNAL   s_IRQ2:              std_logic;
--SIGNAL  s_VALID2:            std_logic;
SIGNAL  s_HOLD2:             std_logic:= '0';
SIGNAL  s_RAM_ACK2:            std_logic;
SIGNAL  s_ACK2:            std_logic;
SIGNAL  s_RD2,s_WE2,s_CS2:        std_logic:= '0';

begin

component1: toplevel_decode

port map(
    clk => clk,
    rstn => rstn,
    RAM_ACK => s_RAM_ACK,
    send_data => s_send_data,
    received_data =>  s_received_data,
    data_line => s_data_line,
    ADDR => s_ADDR1,
    HDATA  => s_HDATA1,
    JDATA => s_JDATA1,
    IRQ => s_IRQ1,
  --  VALID => s_VALID1,
    VALID => VALID,
    HOLD=> s_HOLD1,
    ACK => s_ACK1,
    RD => s_RD1,
    WE => s_WE1,
    CS => s_CS1
    
  );  
  
component2: toplevel_encode

port map(
    clk => clk,
    rstn => rstn,
    RAM_ACK =>s_RAM_ACK,
    send_data => s_send_data,
    received_data =>  s_received_data,
    data_line => s_data_line,
    ADDR => s_ADDR2,
    HDATA  => s_HDATA2,
    IRQ => s_IRQ2,
  --  VALID => s_VALID2,
    VALID => VALID,
    HOLD=> s_HOLD2,
    ACK => s_ACK2,
    RD => s_RD2,
    WE => s_WE2,
    CS => s_CS2
  );    
end Behavioral;

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.