ich habe versucht die Fragen zu beantworten , aber ich kann mir vorstellen , dass die Frage 2 ist falsch oder etwas fehlt noch , Danke im Voraus LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; entity KOMPARATOR_1_BIT is port ( E,A,B: in std_logic; Z2,Z1,Z0: out std_logic ) end entity KOMPARATOR_1_BIT ; architecture VERGLEICHER of KOMPARATOR_1_BIT is begin Z2 <= E AND A AND (NOT (B) ); Z1 <= ( E AND ( NOT (A)) AND (NOT (B))) OR ( E AND A AND B ); Z0 <= E AND (NOT (A) AND B); end VERGLEICHER ; A ) entity KOMPARATOR_4_BIT is port ( X,Y : in std_logic_vector (3 downto 0); GROESSER. KLEINER , GLEICH : out std_loic ; ) ; end entity KOMPARATOR_4_BIT ; architecture VERGLEICHER of KOMPARATOR_4_BIT is component KOMPARATOR_1_BIT is port ( E,A,B: in std_logic; Z2,Z1,Z0: out std_logic ; ); end component KOMPARATOR_1_BIT ; signal C : std_logic_vector(3 downto 0); signal GR: std_logic_vector ( 3 downto 0); sinal Kl : std_logic_vector ( 3 downto 0); begin 1: KOMPARATOR_1_BIT portmap (‚1 ‚), X(3) , Y(3) , GR(3), C(0),Kl(3)); 2: KOMPARATOR_1_BIT portmap ( C(0), X(2) , Y(2) , GR(2) , C(1), K(2)); 3: KOMPARATOR_1_BIT portmap ( C(1), X(1), Y(1), GR(1), C(2), K(1)); 4: KOMPARATOR_1_BIT portmap ( C(2) , X(0), Y(0), GR(0), GLEICH , Kl(0)); b ) mit einer n Bit Schleife am Anfang die generic Anweisung generic ( N: natural :=6 ); begin E <= ‚1‘; SCHLEIFE: for I in 0 to N-1 generate KO: KOMPARATOR_N_BIT port map ( C(I), X( I), Y(I), GR(I), C(I-1), Kl(I)); end generate ; GLEICH <= C( 3); KLEIN <= GR(2) OR GROESSER <= end architecture VERHALTEN ;
:
Verschoben durch Moderator
Ehrlich gesagt, hätte ich jetzt mal den n-Bit Komparator in RTL hinschreiben können. Der scheint mir aber so plausibel, wenngleich ich gerne wüsste, wie der E genau verrechnet wird und warum der beim obersten auf 1 liegen muss. Was die Schleife angeht, hätte ich keine VHDL-Schleife erwartet, die eine Struktur aufbaut, sondern eine auszuführende Schleife, die die Aufgabe sequenziell löst. Was gemeint war, weis aber nur der Aufgabensteller. Ob die Schleife funktioniert, sagt dir der Simulator deines Vertrauens. Der zieht diese gesamte Struktur auf und zeigt sie auch explizit. Und natürlich kann er es durchsimulieren.
Du solltest mit Simulator oder Synthesetool zumindest schon mal die groben Schreib- bzw. Syntaxfehler finden und korrigieren. Das sollte wenigstens Fehler wie die folgenden beheben: Jele D. schrieb: > 1: KOMPARATOR_1_BIT portmap (‚1 ‚), X(3) , Y(3) , GR(3), C(0),Kl(3)); Jele D. schrieb: > E <= ‚1‘; Ansonsten: wenn deine for-Schleife von 0 bis N-1 läuft, dann wird das generate bei I=0 nicht funktionieren: Jele D. schrieb: > KO: KOMPARATOR_N_BIT port map ( C(I), X( I), Y(I), GR(I), > C(I-1), Kl(I)); Denn dort tritt ein C(0-1) auf, das in deinem std_logic_vector C nicht existiert. Du musst ggf. eine Sonderehandlung für das "nullte Element" der Schleife machen.
Achim S. schrieb: > die > groben Schreib- bzw. Syntaxfehler finden und korrigieren. Da sind noch sehr viel mehr drinnen ... Jele D. schrieb: > Z2,Z1,Z0: out std_logic > ) > end entity KOMPARATOR_1_BIT ; ; nach Klammer fehlt. Jele D. schrieb: > GROESSER. KLEINER Statt . sollte ; stehen. Aber mache doch bitte getrennte Einträge: GROESSER : out std_logic; KLEINER : out std_logic; GLEICH : out std_logic; Und lass auch gleich Leerzeichen weg am Ende vor dem ;. Jele D. schrieb: > out std_loic ; Sollte wohl std_logic werden ... Jele D. schrieb: > sinal Kl ... und hier signal. Achim S. schrieb: > Du musst ggf. eine Sonderehandlung für das "nullte Element" > der Schleife machen. Dafür kann man gut den Vector für das Carry um 1 Bit erweitern und das statisch auf '1' festlegen. Achim S. schrieb: > Du solltest mit Simulator Exakt! Das ist doch das schöne an so kleinen Aufgaben: Man kann sie gut simulieren und noch durch Hingucken in der Simulation erkennen was da passiert und ob das korrekt ist. Mork vom Ork schrieb: > Was die Schleife angeht, hätte ich keine VHDL-Schleife erwartet, die > eine Struktur aufbaut, sondern eine auszuführende Schleife, die die > Aufgabe sequenziell löst. Was gemeint war, weis aber nur der > Aufgabensteller. An der Schaltung ist nichts sequenziell. Ja, das Carry huscht da durch, das sieht man auch an den Spikes in der Simulation, aber das ist reine Kombinatorik ohne Takt. Eine Schleife muss nicht sein (und ist vom Aufgabensteller auch verboten worden), man kann immer Alles auch ausführlich hinschreiben, aber eine Schleife erleichtert die Arbeit drastisch. Im Anhang wie man das mit einer Schleife lösen kann, samt Testbench. Das jetzt ohne Schleife zu schreiben, also die Indizes durch Zahlen zu ersetzen, das wird die TO schon schaffen. Alles Gute, Alles Liebe (-:
:
Bearbeitet durch User
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.