mikrocontroller.net

Forum: FPGA, VHDL & Co. Datenbus im RTL Viewer


Autor: Maik Ritter (kiamur)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Gestern habe ich diesen Thread hier gepostet:
<Beitrag "INOUTs von Component auf 'signal' von Top-Level Entity"

Leider habe ich es bis heute nicht geschafft einen bidirektionalen 
Datenbus meiner Component mit dem Top-Level Entity zu verbinden. Ich 
bekomme jetzt zwar keine Fehler beim Kompilieren mehr, aber die Logik 
sieht im RTL Viewer nicht so aus, wie ich mir das vorgestellt habe . . .

Jetzt mache ich es mal, wie es Christian und Kim im oberen Thread 
vorgeschlagen haben, und habe den bidirektionalen Datenbus meiner 
Component in zwei seperate Datenbusse für IN und OUT aufgeteilt, und 
verbinde diese nun mit meiner Top-Level Entity.

Der Code, wie ich beide miteinander verbunden habe sieht so aus (nur die 
essentiellen Teile):
component sram_interface is
  port(--logische Seite des Entities
  clk     : in std_logic;  -- Clock      
  we     : in std_logic;  -- Write Enable
  reset     : in std_logic;  -- Reset
  request_word: in std_logic;    -- Anforderung für nächstes Word aus Speicher
  word_read  : in std_logic;    -- Signal an Interface, dass Word gelesen wurde
  word_ready  : out std_logic;  -- Signal aus Interface, dass Word bereitsteht
  w_ready    : out std_logic;  -- Interface zum Schreiben bereit
  r_ready    : out std_logic;  -- Interface zum Lesen bereit
  sram_full  : out std_logic;    -- Beide SRAM Bausteine voll
  --data    : inout std_logic_vector(15 downto 0); -- Data in/out Bus
  data_in    : in std_logic_vector(15 downto 0);  -- Data in Bus
  data_out  : out std_logic_vector(15 downto 0); -- Data out Bus
      
  --  physikalische Seite des Entities
  sram_control  : out std_logic_vector(2 downto 0);  -- SRAM Control Bits
  address    : out std_logic_vector(17 downto 0); -- Adress Bus
  sram1_word_enable  : out std_logic_vector(1 downto 0);  -- Word Enable für SRAM 1
  sram2_word_enable  : out std_logic_vector(1 downto 0);  -- Word Enable für SRAM 2
  data1    : inout std_logic_vector(15 downto 0); -- Data Bus für SRAM 1
  data2    : inout std_logic_vector(15 downto 0)); -- Data Bus für SRAM 2
  end component;


-- logische Signale zu den externen Components
  signal sram_data_in  : std_logic_vector(15 downto 0);
  signal sram_data_out  : std_logic_vector(15 downto 0);
  signal c_sram_data_out  : std_logic_vector(15 downto 0);
  signal c_sram_data_in  : std_logic_vector(15 downto 0);
  signal is_clk_out_m  : std_logic := '0';
  signal is_sram_we    : std_logic := '0';
  signal is_sram_reset  : std_logic := '0';
  signal is_sram_request  : std_logic := '0';
  signal is_sram_word_read  : std_logic := '0';
  signal is_sram_word_ready  : std_logic := '0';
  signal is_sram_write_mode  : std_logic := '0';
  signal is_sram_read_mode  : std_logic := '0';
  signal is_sram_full  : std_logic := '0';
  signal is_taste_reset_sram  : std_logic := '0';
  signal is_taste_start  : std_logic := '0';


sram  : sram_interface port map(  
         clk  => c_clk,
  we  => is_sram_we,
  reset  => is_sram_reset,
  request_word => is_sram_request,
  word_read   => is_sram_word_read,
  word_ready => is_sram_word_ready,
  w_ready => is_sram_write_mode,
  r_ready => is_sram_read_mode,
  sram_full   => is_sram_full,
  --data => sram_data,
  data_in => sram_data_out,
  data_out  => sram_data_in,
  sram_control => c_sram_control,
  addressm => c_address,
  sram1_word_enable  => c_sram1_word_enable,
  sram2_word_enable  => c_sram2_word_enable,
  data1 => c_data1,
  data2 => c_data2);

-- Mappen der internen Signale auf die IOs
  sram_data_out  <= c_sram_data_out;

process(c_clk) is
  begin      
  -- Auf Tastendruck wird das Füllen der SRAM Bausteine mit den ADC Daten begonnen 
  if(init_done = '1' and taste_sram_reset = '1' and (taste_START = '0' or is_taste_start = '1') and is_sram_write_mode = '1') then
    if(is_taste_start = '0') then
      is_taste_start <= '1';
      is_sram_we <= '1';
    end if;
    if(is_clk_out_m = '1') then
      c_sram_data_out(11 downto 0) <= adc_data;
    end if;
  end if;
end process;

Die Logik ist natürlich noch verbesserungswürdig. Aber meine Frage 
bezieht sich nun auf das RTL Bild im Anhang:
Was ist das für ein "4'h0--" im rot Markierten Bereich? Eigentlich 
sollte doch nur der Datenbus an den data in vom sram_interface gehen. 
Ich Frage mich immer, was da bei der Synthese abgeht, dass solche für 
mich unidentifizierbaren Dinge erscheinben. Was hat dieses "4'h0--" für 
eine Auswirkung auf den data in Eingang?

(Sorry wegen dem Megapost für die kleine Frage, aber so ist es 
hoffentlich alles besser nachvollziehbar . . . )

Gruß
Maik

Autor: Kest (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich gebe meinen Tipp ab:

die 4'h0 bedeuten, dass Du vier Leitungen (Bits) auf Null hast. Und 
das ist verständlich, denn diese werden wegsynthetisiert:

- Du hast 15..0 Datenbus, weist aber

c_sram_data_out(11 downto 0) <= adc_data;

zu, wobei die restlichen, also Bits 15 downto 12 nicht beschaltet 
werden.


So einfach kann das manchmal sein :-)



Kest

Autor: Maik Ritter (kiamur)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Kest!

D*A*N*K*E !!!!

War ja wirklich ganz einfach, und das wird's wohl auch sein!

Gruß
Maik

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.