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
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
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
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.
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...
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.
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.
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?
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; |
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
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
... abgesehen davon lässt es sich mit SynplifyPro nicht kompilieren.
Joe schrieb: > ... abgesehen davon lässt es sich mit SynplifyPro nicht kompilieren. Hast du eine alte Version? Welchen Fehler bekommst du?
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; |
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.