Thomas Eichstetter schrieb:
> werd ich mich nicht schäuen
Die Scheu --> scheuen ;-)
> Bitte gebt mir Verbesserungsvorschläge,
Soweit ein guter Anfang.
Aber ein paar Verbesserungsvorschläge häte ich doch noch... ;-)
Die Sensitivliste ist überbestimmt:
1 | --Zähler1: Zählprozess
|
2 | process ( clk, clk2) --Timer wird auf 5mm Weg/Periode gesetzt
|
Der Prozess Zähler1 ist nur auf clk sensitiv.
Grundsätzlich sollten Zähler besser als eingeschränkte integer
realisiert werden, denn dann würdest du solche Konstrukte nicht
brauchen:
1 | clk2 <= clk2+"000000000001"; --clk2 Zähl-Periode jetzt auf 25MHz
|
2 | :
|
3 | :
|
4 | if (ultra="1001110001") then -- 40kHz = 50MHz /(2* 625) [2mal wegen ein/aus]
|
5 | ein_aus <= ein_aus + 1;
|
6 | ultra <="0000000000";
|
Das wäre dann z.B. etwas übersichtlicher:
1 | clk2 <= clk2+1; --clk2 Zähl-Periode jetzt auf 25MHz
|
2 | :
|
3 | :
|
4 | if (ultra=625) then -- 40kHz = 50MHz /(2* 625) [2mal wegen ein/aus]
|
5 | ein_aus <= ein_aus + 1;
|
6 | ultra <= 0;
|
Am Rande: ich habe den Verdacht, dass du hier um 1 zu weit zählst, denn
0..624 sind schon 625 Zählschritte! Aber die knappen 2 Promille Fehler
wirst du nicht gleich merken... ;-)
Das ist ein wenig verwirrend:
1 | wegzaehler2:= wegzaehler1 + "0001110000"; --400 abziehen
|
Solche Überlauftricksereien müssten besser dokumentiert sein... :-/
Warum schreibst du da nicht einfach
1 | wegzaehler2:= wegzaehler1 - "0110010000"; --400 abziehen
|
Oder, wenn wegzähler2 ein integer wäre:
1 | wegzaehler2:= wegzaehler1 - 400; --400 abziehen
|
Und zum Schluss wäre auch eine kurze Ressourcenbetrachtung nicht
schlecht: wiviel Platz (LUTs, FFs) braucht das Design in einem FPGA?
Schreib doch bitte in den Text, dass das ein Anfängerprojekt ist, an dem
noch einiges verbessert werden könnte.
BTW:
Ein Komma zuviel oder ein Name zu wenig?
Beim Mentor: Dr.Ing., MBA Thomas Fuhrmann