Forum: FPGA, VHDL & Co. Aufgabe: VHDL-Code zu einer RTL-Schematic erstellen


von Patrick R. (uxle_g)


Angehängte Dateien:

Lesenswert?

Hallo
Ich benötige Hilfe bei einer Aufgabe die darin besteht aus einer
RTL-Schematic (siehe Anhang) einen VHDL-Code zu erstellen. Also meine 
Frage wie sieht dieser VHDL-Code aus?

Gruss Patrick

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


Lesenswert?

Patrick Rehm schrieb:
> Ich benötige Hilfe bei einer Aufgabe die darin besteht aus einer
> RTL-Schematic (siehe Anhang) einen VHDL-Code zu erstellen.
Hausaufgaben nicht gemacht?

> Also meine Frage wie sieht dieser VHDL-Code aus?
Sind das synchrone oder ein asynchrone Set- und Reset-Eingänge?
Und was ist das für ein Symbol dort am Enable-Anschluss?

Asynchron und mit Dauer-Enable wäre das eine Lösung:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
4
entity ff is
5
   port ( a,b,c : in std_logic;
6
          q : out std_logic);
7
end ff;
8
9
architecture behave of ff is
10
begin
11
   q <= '1' when a='1' else b when rising_edge(c);
12
end behave;
Allerdings wird dein Lehrer davon nicht begeistert sein (obwohl das 
Richtige herauskommt). Denn diese Schreibweise steht nicht in seinem 
Lehrbuch...  :-o

von eugler (Gast)


Lesenswert?

Lothar Miller schrieb:
> Allerdings wird dein Lehrer davon nicht begeistert sein (obwohl das
> Richtige herauskommt). Denn diese Schreibweise steht nicht in seinem
> Lehrbuch...  :-o

LoL

von Patrick R. (uxle_g)


Lesenswert?

Danke schon mal für die Antwort. Ob die Set- und Reset-Eingänge synchron 
oder asynchron sind weiss ich nicht und das Signal am Enable scheint mir 
auf power gelegt zu sein. Ich kann leider nichts genaueres sagen da ich 
nur diese RTL-Schematic gegeben habe und sonst nichts.

von berndl k. (bernd_l)


Lesenswert?

also nach dem was du da schreibst wuerde ich folgendermassen antworten:
1
--
2
-- Meine Hausaufgabe
3
-- Erwin Mustermann
4
-- 2011/06/05
5
--
6
--
7
--       VHDL zu einer RTL schematic erstellen
8
--
9
10
library ieee;
11
use ieee.std_logic_1164.all;
12
--use ieee.numeric_std.all;      -- Brauchen wir hier nicht, wir tun ja eh' nix...
13
14
entity beschaltung_rosa_kasten is
15
    port ( a : in std_logic;
16
           b : in std_logic;
17
           c : in std_logic;
18
           immer_hi : std_logic;
19
           immer_lo : std_logic;
20
           y : out std_logic
21
          );
22
end beschaltung_rosa_kasten;
23
24
architecture beschreibung of beschaltung_rosa_kasten is
25
26
begin
27
28
   rosa_kasten : rosa_kasten_beschreibung
29
   port map (
30
      s => a,
31
      d => b,
32
      ce => immer_hi,
33
      takt => c,
34
      r => immer_lo,
35
      q => y
36
   );
37
38
end beschreibung;
Mehr ist da nicht ersichtlich, es sei denn du verschweigst uns was...

von Patrick R. (uxle_g)


Lesenswert?

Bei diesem Code kommt der Fehler: Use of undeclared identifier 
'rosa_kasten_beschreibung'. Sorry für die wahrscheinlich dumme Frage 
aber ich hab von dem Programm nicht so viel Ahnung, was muss ich jetz 
ändern damit dieser Fehler verschwindet? Ich verschweige nichts, habe 
wie gesagt nur dieses Bild und soll dazu den VHDL_Code erstellen keine 
Angaben zu den Eingängen oder sonst was.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Und worin besteht Dein eigener Anteil bei der Lösung dieser Hausaufgabe?

Wenn Du nicht bereit oder in der Lage bist, selbst herumzuprobieren oder 
mittels Studium der entsprechenden Literatur systematisch an die Sache 
heranzugehen, solltest Du das Fach wechseln. Ernsthaft.

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


Lesenswert?

Patrick Rehm schrieb:
> Bei diesem Code kommt der Fehler: Use of undeclared identifier
> 'rosa_kasten_beschreibung'. Sorry für die wahrscheinlich dumme Frage
> aber ich hab von dem Programm nicht so viel Ahnung, was muss ich jetz
> ändern damit dieser Fehler verschwindet?
Du mußt eine Komponente beschreiben, die die Funktion des rosa Kastens 
beinhaltet. Aber das musst du sowieso...

Drehen wir den Spieß doch einfach mal rum:
Ganz ohne alles wirst du die Aufgabe nicht bekommen haben, du hast also 
schon wenigstens ein Grundwissen zu VHDL. Und jetzt zeig doch DU erst 
mal, was DU da machen würdest, und was nicht funktioniert. Und: es ist 
wirklich so einfach, wie ich es oben beschrieben habe.

Alternativ könnte man mit synchronem Set so schreiben:
1
library IEEE;
2
use IEEE.STD_LOGIC_1164.ALL;
3
4
entity ff is
5
   port ( a,b,c : in std_logic;
6
          q : out std_logic);
7
end ff;
8
9
architecture behave of ff is
10
begin
11
   process begin
12
      wait until rising_edge(c);
13
      q <= b;
14
      q <= '1' when a='1';
15
end behave;

Patrick Rehm schrieb:
> aus einer RTL-Schematic (siehe Anhang) einen VHDL-Code zu erstellen.
> Also meine Frage wie sieht dieser VHDL-Code aus?
Du kannst die Aufgabe nicht lösen, wenn du nicht weißt, ob das ein 
synchroner oder asynchroner Set-Einange ist! Ich meine, das bereits 
erwähnt zu haben...  :-/
Kurz: welche FPGA-Architektur ist das?

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


Lesenswert?

Lothar Miller schrieb:
> q <= '1' when a='1';
> end behave;
Kleiner Nachtrag, der eingebaute Syntax-Check hat nicht funktioniert, da 
fehlt was:
1
   :
2
   :
3
      q <= '1' when a='1';
4
   end process;
5
end behave;

Natürlich ginge das auch so:
1
   process begin
2
      wait until rising_edge(c);
3
      if a='1' then 
4
         q <= '1' 
5
      else
6
         q <= b;
7
      end if;
8
   end process;

Oder so:
1
   process (c) begin
2
      if rising_edge(c) then
3
         if a='1' then 
4
            q <= '1' 
5
         else
6
            q <= b;
7
         end if;
8
      end if;
9
   end process;

Aber ich denke, dein Lehrer will das hier sehen:
1
   process (c,a) begin
2
      if a='1' then
3
         q <= '1' 
4
      elsif rising_edge(c) then
5
         q <= b;
6
      end if;
7
   end process;

von Uwe (Gast)


Lesenswert?

Man muß solche Symbole lesen können. Kein Tabellenbuch oder so ?
Normalerweise sind die Eingänge oben und unten Asynchrone Set und Reset 
um ein Preset oder Reset nach dem Anschalten zu ermöglichen.
Das heißt es ist ein Flip Flop das Asynchron mit logisch 1 an Eingang A 
gesetzt werden kann und Synchron mit logisch 1 an Eingang B. Es kann nur 
durch eine logische 0 an  B und eine positive Flanke an C zurückgesetz 
werden.

A  B  C  Q
0  0  0  Qn-1
1  0  0  1
0  1  0  Qn-1
1  1  0  Qn-1

0  0  1  Qn-1
1  0  1  1
0  1  1  Qn-1
1  1  1  Qn-1

0  1  PF 1
0  0  PF 0
0  1  NF Qn-1
0  0  NF Qn-1

1  1  PF 1
1  0  PF 1
1  1  NF 1
1  0  NF 1


*PF = Positive Flanke
 NF = Negative Flanke

Aber den VHDL code lass ich dir

von Joe (Gast)


Lesenswert?

1
architecture behave of ff is
2
begin
3
   process begin
4
      wait until rising_edge(c);
5
      q <= b;
6
      q <= '1' when a='1';
7
   end process;
8
end behave;

Aus welchem Horror-Film ist denn diese Beschreibung entsprungen ?


Joe

von Joe (Gast)


Lesenswert?

... abgesehen davon lässt es sich mit SynplifyPro nicht kompilieren.

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


Lesenswert?

Joe schrieb:
> ... abgesehen davon lässt es sich mit SynplifyPro nicht kompilieren.
Hast du eine alte Version?
Welchen Fehler bekommst du?

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


Lesenswert?

Ok, blöd gelaufen... :-/
Im jugendlichen Eifer eine Concurrent-Beschreibung in den Prozess 
reingebracht...
Aber so geht das:
1
   process begin
2
      wait until rising_edge(c);
3
      q <= b;
4
      if a='1' then  q <= '1'; end if;
5
   end process;

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


Angehängte Dateien:

Lesenswert?

Hier noch die RTL-Schematic aus Xilinx XST zum obigen Code...

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.