Seite 1 von 1

Vollständigkeit von potentiellen Registern

Verfasst: 4. Jun 2009 13:57
von Steven
In der Musterlösung von Übung 5 wird "if (C1 = '1') C1 := '0';" als äquivalent zu "C1 := '0';" bezeichnet, damit ist C1 vollständig. Für C1 = 1 und C1 = 0 kann ich das nachvollziehen, wass passiert aber bei C1 = X? Dann evaluiert "if (C1 = '1')" zu false und die Zuweisung wird nicht ausgeführt. Schließt die Definition aus den Folien ("Ein potentielles Register ist vollständig, falls es bei jedem Durchlauf des process-Blocks nicht-redundant geschrieben wird") solche Fälle implizit aus?

Re: Vollständigkeit von potentiellen Registern

Verfasst: 4. Jun 2009 15:55
von Turing-Test
Steven hat geschrieben: Für C1 = 1 und C1 = 0 kann ich das nachvollziehen, wass passiert aber bei C1 = X? Dann evaluiert "if (C1 = '1')" zu false und die Zuweisung wird nicht ausgeführt.
C1 ist aber STD_LOGIC_VECTOR ( 0 downto 0 ) (was auch immer das soll...), also nur ein Bit breit. Damit kann es nur 0 oder 1 sein.

Re: Vollständigkeit von potentiellen Registern

Verfasst: 4. Jun 2009 16:11
von Jan R.
Laut dem auf der Vorlesungsseite verlinkten "Überblick über die Arithmetik Librarys" ist ja aber für STD_LOGIC (neben X und noch einigen anderen) auch Z (also hochohmig) ein zulässiger Wert, also nicht nur 0 oder 1. Insbesondere Z dürfte doch auch "synthesefähig" sein, sofern dies überhaupt als Initialwert auftreten kann. Ist natürlich auch die Frage, was bei der Synthese dann draus wird... Und wie ein hochohmiger Ausgangswert an einem Eingang interpretiert wird

Re: Vollständigkeit von potentiellen Registern

Verfasst: 4. Jun 2009 16:14
von Turing-Test
Oops. Hmm, was nun?

Re: Vollständigkeit von potentiellen Registern

Verfasst: 4. Jun 2009 18:41
von ChristianK
Hätte auch noch eine Frage zu der Aufgabe (Übung 5):

Warum ist Sum2 nicht unvollständig wie Sum3? Das wird ja auch nur bei aufsteigender Flanke geschrieben und nicht immer wenn sich s_C0 ändert...

Ist das A hier dann vollständig oder nicht?
process(clk)
begin
if(clk' event and clk='1') then
A <= '0';
end if;
end process;

Re: Vollständigkeit von potentiellen Registern

Verfasst: 5. Jun 2009 17:14
von Steven
Ich denke mal, das potentielle Register A in deinem Beispiel ist vollständig: Es ist teil eines synchronen Prozessblocks. Jedes Mal, wenn dieser durchlaufen wird (was per Definition nur bei der spezifizierten Taktflanke passiert, sonst wäre der Prozess nicht synchron), wird der Wert geschrieben.

Über eine bessere Betreuung dieses Forums durch die Tutoren / Assistenten würde ich mich sehr freuen :!:

Re: Vollständigkeit von potentiellen Registern

Verfasst: 6. Jun 2009 17:06
von AlexB
Steven hat geschrieben:Ich denke mal, das potentielle Register A in deinem Beispiel ist vollständig: Es ist teil eines synchronen Prozessblocks. Jedes Mal, wenn dieser durchlaufen wird (was per Definition nur bei der spezifizierten Taktflanke passiert, sonst wäre der Prozess nicht synchron), wird der Wert geschrieben.
Der Prozess wird auch durchlaufen, wenn die Bedingung "if(clk'event and clk='1')" nicht erfüllt ist, d.h. auch, obwohl der Inhalt der if-Abfrage nicht betreten wird. A ist daher im folgenden Beispiel nicht vollständig:

Code: Alles auswählen

process(clk)
begin
     if(clk' event and clk='1') then
          A <= '0';
     end if;
end process;
Beachten Sie jedoch bitte, dass der Begriff der Vollständigkeit in getakteten Prozessen sowieso unerheblich ist. Zur Bestimmung, ob in einem getakteten Prozess ein Flip-Flop oder Kombinatorik entsteht genügt eine Aussage zur Lokalität.
Steven hat geschrieben:Über eine bessere Betreuung dieses Forums durch die Tutoren / Assistenten würde ich mich sehr freuen :!:
Solche Fragen lassen sich idealerweise auch in den hierfür eingerichteten Übungsgruppen beantworten. Weiterhin stehen zur Klausurvorbereitung die Übungsgruppen am folgenden Montag und Dienstag zur Verfügung.