Forum: FPGA, VHDL & Co. RAM Verständnis


von Anfänger (Gast)


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;

von Kurz & Knapp (Gast)


Lesenswert?


von Anfänger (Gast)


Lesenswert?

>RTFM

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

Dennoch danke für den Link. Der hilft mir weiter.

von Vancouver (Gast)


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.

von Markus F. (mfro)


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...

von Anfänger (Gast)


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.

von Kurz & Knapp (Gast)


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....

von S. R. (svenska)


Lesenswert?

Kurz & Knapp schrieb:
> Nein, das war keine Beleidung, aber deine Antwort ist eine!

Ich glaube, statt "RTFM" wäre ein "Guck mal da" wesentlich besser 
angekommen. Ansonsten stimme ich dir zu.

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.