Lösung 2.2.2

mProg
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 147
Registriert: 25. Apr 2015 00:10

Lösung 2.2.2

Beitrag von mProg » 18. Feb 2017 10:56

In der Lösung für 2.2.2 wird in dem Rule mkSimpleCounter die Maybe so getestet

Code: Alles auswählen

if(isValid(maybeIncr)) begin
incrVal = fromMaybe(?, maybeIncr);
end
Meine Frage ist, warum man nicht gleicht es als

Code: Alles auswählen

incrVal = fromMaybe(0, maybeIncr);
Das wäre doch kürzer und funktioniert

JHofmann
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 182
Registriert: 23. Apr 2015 10:43

Re: Lösung 2.2.2

Beitrag von JHofmann » 18. Feb 2017 10:58

Moin,

das war ein artifizielles Beispiel um die Funktionen zu zeigen :) Wurde in der Übungsbesprechung auch angesprochen iirc.

Viele Grüße,

mProg
BASIC-Programmierer
BASIC-Programmierer
Beiträge: 147
Registriert: 25. Apr 2015 00:10

Re: Lösung 2.2.2

Beitrag von mProg » 18. Feb 2017 11:10

Danke. Eine Frage noch dazu. Ich habe auch versucht so den Code zu schreiben, um das Ergebnis zu testen:

Code: Alles auswählen

	res + fromMaybe(?,incW.wget()) - fromMaybe(?,decrW.wget());
Jedoch kriege ich dasselbe Ergebnis, wenn ich anstelle ? den Wert 0 einsetze.
Das wundert mich, da ja wenn ich ein Register mit mkReg(?) initializiere, ich den Wert 10101010... (AAAA...) bekomme.
Warum funktioniert es dann mit "?" auch?

JHofmann
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 182
Registriert: 23. Apr 2015 10:43

Re: Lösung 2.2.2

Beitrag von JHofmann » 18. Feb 2017 11:13

bsv-reference-guide hat geschrieben:The programmer is encouraged to use don’t-care values where possible, both because it is useful
documentation and because the compiler can often choose values that lead to better circuits.

0b101101101
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 179
Registriert: 15. Apr 2015 18:24

Re: Lösung 2.2.2

Beitrag von 0b101101101 » 18. Feb 2017 15:21

Aber in diesem kann einem doch NICHT egal sein, welchen Wert man benutzt. Nur der Wert 0 macht Sinn, denn ansonsten ist die Rechnung falsch. Also müsste man

Code: Alles auswählen

res + fromMaybe(0, incW.wget()) - fromMaybe(0, decrW.wget());
.
machen, denn sonst könnte Bluespec für die ?, zb. den Wert 1 wählen.

Antworten

Zurück zu „Archiv“