Forum: FPGA, VHDL & Co. Modellierung eines 32-Bit-Datenregisters in VHDL und Einbindung dieses Modells in eine Testbench


von Mathias (Gast)


Lesenswert?

Guten Tag, ich stelle kurz einmal mein Problem vor.

Studierte Ingeneuerwissenschaften bis 2008 und konnte damals mein 
Studium durch Probleme nicht abschließen.
Seit diesem Jahr versuchte ich alle Prüfungen abzuarbeiten was mir auch 
bis auf diese letzte hier gelang.

Da ich aber das letzte mal vor ca. 11 Jahren VHDL hatte bin ich wohl 
doch mit der Aufgabe überfordert und finde weder Literatur zu dem 
Problem oder ich verstehe es nur einfach nicht.

Wenn irgendwer mir da durchhelfen könnte das ich es schaffe das 
vorzuführen und zu erklären dann wär ich mehr als dankbar.

Ich spiele etwas mit modelsim herum und versuchte mir dadurch etwas 
Einblick zu verschaffen aber naja...

Vielen lieben dank

Google bietet keine hilfe.
Über Tips Hinweise einfach alles was mich der Lösung nahe bringen könnte 
wäre ich wie gesagt dankbar.

von Buch (Gast)


Lesenswert?

Hast du dir mal das Buch "VHDL Synthese" angeguckt? Da sollte alles 
enthalten sein, was du benötigst.

Zusätzlich könntest du dich bei einem FPGA Hersteller auf deren Homepage 
registrieren (Altera oder Xilinx) und dort Online Videos gucken wo eine 
Testbench erklärt wird.

Dass du bei Google nicht gefunden hast, kann ich nicht so recht glauben. 
Was hast du bei Google eingegeben?

von Bitwurschtler (Gast)


Lesenswert?

Mathias schrieb:

> Google bietet keine hilfe.

Sorry, mit allem Respekt, aber dann bist du zu doof zum Suchen. 
"Register in vhdl" by Google knallt als erstes diesen Link raus: 
http://stackoverflow.com/questions/21581556/register-design-in-vhdl

Wie man eine Testbench schreibt erklärt die Google auch, verstehen musst 
du es alleine.

PS:
Aber vielleicht hat dir ja noch keiner gesagt das heute Donnerstag und 
nicht Freitag ist. Die Beiträge unter dem Motto "Ich bin ein armes 
Schwein mit einer schweren Kindheit, schenkt mir Eure Aufmerksamkeit", 
werden hier traditionell freitags geschrieben.
SCNR,

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Mathias schrieb:
> Modellierung eines 32-Bit-Datenregisters in VHDL
Modelliere doch einfach mal 1 einziges Register:
1
library IEEE; 
2
use IEEE.STD_LOGIC_1164.ALL; 
3
entity Reg is 
4
    Port ( clk  : in  STD_LOGIC; 
5
           din  : in  STD_LOGIC; 
6
           dout : out  STD_LOGIC); 
7
end Reg; 
8
 
9
architecture Behavioral of Reg is 
10
begin 
11
   dout <= din when rising_edge(clk);
12
end Behavioral;


> Einbindung dieses Modells in eine Testbench
1
library IEEE; 
2
use IEEE.STD_LOGIC_1164.ALL; 
3
entity tb_Reg is 
4
               -- leere Entity --> Testbench
5
end tb_Reg; 
6
  
7
architecture behavior of tb_Reg is
8
   component Reg
9
    Port ( clk  : in  STD_LOGIC; 
10
           din  : in  STD_LOGIC; 
11
           dout : out  STD_LOGIC); 
12
   end component; 
13
    
14
   signal clk  : std_logic := '0'; -- lokale Signale der Testbench
15
   signal din  : std_logic;        -- werden an den Prüfling angeschlossen
16
   signal dout : std_logic;        -- 
17
18
begin
19
   uut: Reg                        -- der Prüfling wird verdrahtet
20
   port map ( clk  => clk, 
21
              dout => dout, 
22
              din  => din ); 
23
 
24
   clk <= not clk after 10 ns;     -- einen 50MHz Takt erzeugen
25
   
26
   process begin                   -- Stimuli üfr Dateneingang generieren
27
      din <= '0';
28
      wait for 87 ns;
29
      din <= '1';
30
      wait for 53 ns;
31
      din <= '0';
32
      wait for 44 ns;
33
      din <= '1';
34
      wait for 67 ns;
35
   end process;
36
end;

So, das war für 1 einziges Register. Für 32 Bits musst du dann nur noch 
an den geeigneten Stellen mit einem "_VECTOR(31 downto 0)" die 
Wortbreite aufbohren und die Default- und Stimuliwerte ebenfalls auf die 
nötige Wortbreite bringen...

: Bearbeitet durch Moderator
von Mathias (Gast)


Lesenswert?

WOW das so schnell Antworten kommen hätte ich nicht gedacht.

Das mit dem Buch ist ein guter Tip jedoch bietet meine Hochschul - 
Bibliothek das Buch nicht an und 40 Euro ist auch nicht gerade wenig, 
aber das kläre ich mal mit der Hochschule da fehlen genau solch Bücher 
wo auch mal Lösungsansätze drin stehen.
Eingegeben hatte ich die Überschrift und auch in vielen Variationen, zu 
Registern kam schon viel, konnte nur nichts mit dem Datenregister 
explizit finden.
Das dies nur den Wert vom Eingang am Ausgang halten sollte? Ich glaube 
da war ich in dem Augenblick ... . Daher vielen Dank für diesen Tip.


Nein das Google gar keine Dinge/Ergebnisse Anzeigt "(Bitwurschtler 
(Gast))" ist schon klar. (Aber ich mag auch Menschen nicht die andere 
gleich beleidigen). Ich habe viele Video-tuturials gefunden und 
angesehen. Ich habe in der Bibliothek Bücher ausgeliehen die aber leider 
schon so Alt waren das dort immer nur die Rede von Registern ist (mir 
fehlte der Bezug auf Datenregister).
Ich hatte in der Nacht vom ersten auf den zweiten den Erfolg das ich das 
auf Modelsym geschrieben habe mit 32Bit. Ich sitze ja auch schon mehrere 
Wochen an dem Thema und will da nur noch durch. Obwohl VHDL sehr 
Interessant erscheint um so einiges zu Lösen. Ich kannte bis damals nur 
die SPS, die ich erlernte.

Ich werde mir auf alle Fälle von Ihnen
"Lothar Miller (lkmiller) (Moderator)"
den Prozess-Bereich noch erarbeiten. Das gefällt mir doch sehr gut 
bisher habe ich die Werte direkt verändert und nicht automatisch laufen 
lassen.
Ich Bedanke mich Recht herzlich bei Ihnen allen für die 
Lösungsansätze/Tips, werde damit wohl jetzt auf alle fälle zum 
erwünschten Lösungziel kommen. Danke Sehr.

Noch mal zum Thema andere Beleidigen oder zu Belehren, wenn jemand keine 
Zeit hat oder der Meinung ist das es verschwendete Zeit ist zu Helfen. 
Dann doch bitte keine Zeit darin vergeuden zu Beleidigen / Belehren. 
Aber auch Ihnen danke ich für den Link---schaue mir das mal an so 
ähnlich hatte ich das auch erarbeitet aber das ist viel kürzer 
geschrieben als meins mit jedem Ein und Ausgang einzeln.

Damit Ist das Hier jetzt geschlossen der Fall ist erledigt. Nochmals 
DANKE an Sie ALLE.

von Fitzebutze (Gast)


Lesenswert?

Vielleicht hilft dir auch der Artikel hier weiter (eher was für 
Opensource/Linuxleute):

http://www.linux-magazin.de/Ausgaben/2012/02/FPGA-Simulation

von Schlumpf (Gast)


Lesenswert?

Ein Register dient dazu, Daten zu speichern..
EIN Register speichert EIN Bit
32 Register speichern 32 Bit..

und ein Datum kann EIN Bit lang sein oder 32 Bit (oder jede andere 
beliebige Größe)

Ein Register ist also immer ein Speicher für Daten .. also ein 
Datenregister.


Falls du aber mit "Datenregister" die Topologie des Registers an sich 
meinst (also ein D-FF und nicht ein RS-FF oder JK-FF), dann ist es so, 
dass in einem FPGA die Register alle D-FF sind..

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.