RAM Verständnis

Gast #5638958
Lesenswert?

Hallo,

ich lerne gerade VHDL und habe eine Verständnisfrage.
Ich habe die "Code-Seite" von Lothar Miller gefunden und bin dort über 
den ram Code gestolpert. Nun meine Frage: Wenn ich diesen Code so nehme 
und bei mir implementiere: Woher genau "weiß" meine 
Entwicklungsumgebung, dass ich einen Ram beschreibe und nicht etwa z.B. 
ganz viele FlipFlops o.ä.? Ist es sichergestellt, dass ein RAM verwendet 
wird? Muss ich mich darauf verlassen oder gibt es irgendein 
"Schlüsselwort", das ich jetzt übersehe?

Außerdem gibt es Eingänge, die aber auf keinen Pin führen, weil sie ja 
"intern" verdrahtet sind. Wie gehe ich damit um?

Hier ein Codeausschnitt von o.g. Seite, damit jeder weiß worüber ich 
spreche (http://www.lothar-miller.de/s9y/archives/20-RAM.html):
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
use IEEE.NUMERIC_STD.ALL;
4

5
entity RAM is
6
    Generic (
7
           Addrbreite  : natural := 8;  -- Speicherlänge = 2^Addrbreite
8
           Wortbreite  : natural := 8
9
           );
10
    Port ( clk   : in  STD_LOGIC;
11
           A     : in  STD_LOGIC_VECTOR (Addrbreite-1 downto 0);
12
           Write : in  STD_LOGIC;
13
           Din   : in  STD_LOGIC_VECTOR (Wortbreite-1 downto 0);
14
           Dout  : out STD_LOGIC_VECTOR (Wortbreite-1 downto 0)
15
         );
16
end RAM;
17

18
architecture BlockRAM of RAM is
19
type speicher is array(0 to (2**Addrbreite)-1) of STD_LOGIC_VECTOR(Wortbreite-1 downto 0);
20
signal memory : speicher;   
21
begin
22
  process begin
23
    wait until rising_edge(CLK);
24
    if (Write='1') then
25
      memory(to_integer(unsigned(A))) <= Din;
26
    end if;
27
    Dout <= memory(to_integer(unsigned(A)));
28
  end process;
29
end BlockRAM;
Gast #5639540
Lesenswert?

Anfänger schrieb:
> Es macht doch immer wieder Spaß, als Anfänger in einem Forum für eine
> Frage beleidigt zu werden...

Dazu musst du nicht unbedingt Anfänger sein, glaub mir.


Zu deiner Frage: Die Syntesetools sind darauf optimiert, 
synthetisierbare Arrays immer als Blockrams zu modellieren, wenn sie 
bestimmte Eigenschaften haben. Z.B. dürfen sie keinen globalen Reset 
haben (weil Blockrams keinen Reset haben), die maximale und minimale 
Größe eingehalten wird und die Anzahl der Schreib- und Leseports nicht 
zu groß ist.
Wenn du selbst bestimmen willst, ob FFs oder BRAMs verwendet werden, 
kannst Du auch z.B. bei Xilinx den RAM-Generator verwenden und eine 
Komponente erzeugen lassen.
#5639549
Lesenswert?

Anfänger schrieb:
> Es macht doch immer wieder Spaß, als Anfänger in einem Forum für eine
> Frage beleidigt zu werden...

ich kann da keine Beleidigung erkennen. Das war die kürzest mögliche, 
absolut korrekte und hilfreiche Antwort auf deine Frage.

Die ultimative Informationsquelle für die Umsetzung von HDL in Logik 
sind nun mal die Handbücher der Synthesetools. Zumindest die Stellen mit 
den "recommended HDL coding styles" sollte man auswendig hersagen 
können...
Gast #5639653
Lesenswert?

Ich danke Euch.

Markus F. schrieb:
> ich kann da keine Beleidigung erkennen. Das war die kürzest mögliche,
> absolut korrekte und hilfreiche Antwort auf deine Frage.

In der Tat war die Antwort sehr hilfreich. Ich hatte diese Information 
bisher nicht gefunden. Ich persönlich antworte jedoch jemanden nicht mit 
dem einleitenden Satz "lies die verf***te Anleitung"... Aber einen rauen 
Umgangston bin ich mittlerweile gewohnt. Von daher: Schwamm drüber, 
schließlich hat mir Post wirklich weiter geholfen.
Gast #5640875
Lesenswert?

Anfänger schrieb:
> Es macht doch immer wieder Spaß, als Anfänger in einem Forum für eine
> Frage beleidigt zu werden...


Nein, das war keine Beleidung, aber deine Antwort ist eine!

Schau, da hat man dir das passende dokument rausgesucht, verifiziert ob 
das gesuchte drin steht, die Seitennummer rausgeschrieben und noch in 
kürzest möglicher Form nämlich als Abkürzung eine Bedienungsanleitung 
dazu gelegt, nämlich eine Aufforderung zum Lesen.
Und das ganze keine Stunde nach Fragestellung ohne Beifügung eine 
Rechnung über die aufgewandte Arbeitszeit....

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren