Dinatos synchrone vs asynchrone Zuweisungen

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von andre_w »

Hallo,

habe noch eine Frage^^. Beim Dinatos-Zustandsdiagramm bei den ausgeführten Befehlen wird ja meist ein synchroner Operator <- verwendet (Zuweisung an Register) und einmal bei Zustand 5 (STA) der asynchrone Operator := (Zuweisung an Speicher).
Weiß jemand wieso dieser Unterschied gemacht wird? Und ich nehme mal an das sich das synchrone Verhalten hier nur darauf bezieht was innerhalb eines Zustands passiert, wieso ist synchron oder asynchron dann überhaupt von Bedeutung solange nur eine Anweisung ausgeführt wird?

Danke^^ VG Andre
let's be friends on twitter studivz facebook - my blog

Benutzeravatar
seth2k1
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 29. Sep 2006 00:53
Wohnort: Darmstadt - Eberstadt

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von seth2k1 »

Naja, du musst bedenken, dass bei der Synchronen Zuweisung der Wert in den Master geschrieben wird, wohingegen der Slave noch weiterhin seinen alten Wert besitzt. Erst in der zweiten Phase erhält der Slave den neuen Wert.
Probleme gibt es beispielsweise bei Rückkopplungen, wenn du asynchron speichern wolltest. (bspw statt a := a + 1 immer a <- a + 1)

edit: War etwas voreilig. Warum dort unterschieden wird kann ich dir nicht sagen. Sorry.
"Hallo, ich verkaufe diese modischen Lederjacken!"

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von andre_w »

hm ok. Zu deiner Anmerkung wegen Rückkopplung: überträgt sich das auch auf Verilog, also die Operatoren <= und =? Dachte bislang, der Unterschied zwischen diesen sei lediglich ob die Anweisung blockt (=) oder nicht (<=), also ob gleich mit der Ausführung der nächsten Anweisung begonnen wird.
let's be friends on twitter studivz facebook - my blog

Christoph-D
Computerversteher
Computerversteher
Beiträge: 325
Registriert: 11. Dez 2005 13:14
Wohnort: Darmstadt

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von Christoph-D »

andre_w hat geschrieben:hm ok. Zu deiner Anmerkung wegen Rückkopplung: überträgt sich das auch auf Verilog, also die Operatoren <= und =? Dachte bislang, der Unterschied zwischen diesen sei lediglich ob die Anweisung blockt (=) oder nicht (<=), also ob gleich mit der Ausführung der nächsten Anweisung begonnen wird.
Ja, das mit der Rückkopplung gilt auch in Verilog.
"I believe in the fundamental interconnectedness of all things." (Dirk Gently)

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von andre_w »

ok danke. Das heißt ein folgendermaßen programmierter Counter würde nicht funktionieren?

Code: Alles auswählen

module counter(clk, enable, count);
input clk, enable;
output [3:0] count;
reg [3:0] count;
initial count = 0;
always @(posedge clk)
if (enable) count = count + 4’b1;
endmodule
Was würde er denn machen statt zu zählen? Sorry wenn ich etwas langsam beim Verstehen hier bin ;)
let's be friends on twitter studivz facebook - my blog

Benutzeravatar
seth2k1
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 29. Sep 2006 00:53
Wohnort: Darmstadt - Eberstadt

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von seth2k1 »

zählen würde er schon, es ist eher die frage wie die daraus resultierende hardware aussieht ;)
"Hallo, ich verkaufe diese modischen Lederjacken!"

Christoph-D
Computerversteher
Computerversteher
Beiträge: 325
Registriert: 11. Dez 2005 13:14
Wohnort: Darmstadt

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von Christoph-D »

andre_w hat geschrieben:ok danke. Das heißt ein folgendermaßen programmierter Counter würde nicht funktionieren?

Code: Alles auswählen

module counter(clk, enable, count);
input clk, enable;
output [3:0] count;
reg [3:0] count;
initial count = 0;
always @(posedge clk)
if (enable) count = count + 4’b1;
endmodule
Was würde er denn machen statt zu zählen? Sorry wenn ich etwas langsam beim Verstehen hier bin ;)
Du musst unterscheiden zwischen Simulation und Synthese. Was die Simulation mit dem Code machen würde, kann ich gerade nicht testen. Synthese-fähig ist der Code aber sicherlich nicht, weil du durch count = count + 1; eine asynchrone Rückkopplung hast.

Allgemein ist die Faustregel: Bei flankengesteuerten always-Blöcken immer <= verwenden, bei pegelgesteuerten immer =.
"I believe in the fundamental interconnectedness of all things." (Dirk Gently)

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von andre_w »

Christoph-D hat geschrieben:Allgemein ist die Faustregel: Bei flankengesteuerten always-Blöcken immer <= verwenden, bei pegelgesteuerten immer =.
Faustregeln sind immer gut, vielen Dank :)
let's be friends on twitter studivz facebook - my blog

Wolfgang
Dozentin/Dozent
Beiträge: 359
Registriert: 21. Apr 2004 17:54

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von Wolfgang »

Hallo zusammen,

der Code des Zählers läßt sich auch so (mit =) synthetisieren und die Hardware ist identisch.
In diesem einfachen Beispiel spielt es für das Syntheseprogramm keine Rolle ob Ihr = oder <= verwendet.
Solltet Ihr aber eine Pipeline beschreiben, z.B. in der Form
R1 <= R0;
R2 <= R1;
usw.
muß das non-blocking Statement verwendet werden.
Wenn Ihr
R1 = R0;
R2 = R1;
schreibt, wird daraus
R2 = R0;
Für weitere Infos/Beispiele sei auf die CMS-Folien verwiesen.

Viel Erfolg morgen
Wolfgang

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von andre_w »

Vielen Dank für die Aufklärung! Mein Anfangspost ist damit zwar noch nicht geklärt aber ich denke mal das wird auch nicht so entscheidend sein.
let's be friends on twitter studivz facebook - my blog

Wolfgang
Dozentin/Dozent
Beiträge: 359
Registriert: 21. Apr 2004 17:54

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von Wolfgang »

Hallo,

ja richtig.
Entschuldigung.
Ich hab Prof. Hoffmann auch mal danach gefragt, weil mir das letztens (ich glaube Silvia hatte mich gefragt)
aufgefallen ist. Er konnt´s mir auch nicht erklären. Ich werde meinen Kollegen nochmal darauf ansprechend.
Evt. wird´s dann korrigieren oder ausführlich erläutern.

Würde ich mir keinen Kopf drum machen.

Wolfgang

Benutzeravatar
seth2k1
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 153
Registriert: 29. Sep 2006 00:53
Wohnort: Darmstadt - Eberstadt

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von seth2k1 »

hi, ich weiss nich ob du das noch vor der klausur liest.. es wird aber glaub au nich allzu relevant sein, aber ich hab mir gestern nochma gedanken drüber gemacht. es wird in den speicher immer asynchron geschrieben, nur das speichern in register erfolgt synchron. im speicher muss der wert ja sofort verfügbar sein, damit er von anderen prozessen direkt genutzt werden kann. so würde ich mir das erklären.

greetz und viel erfolg
"Hallo, ich verkaufe diese modischen Lederjacken!"

andre_w
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 125
Registriert: 14. Okt 2007 14:59
Wohnort: Kriftel
Kontaktdaten:

Re: Dinatos synchrone vs asynchrone Zuweisungen

Beitrag von andre_w »

danke habs nicht mehr vorher gelesen aber kam ja auch nicht dran :D
let's be friends on twitter studivz facebook - my blog

Antworten

Zurück zu „Archiv“