Gast
#3162697
Bin seit einigen Tagen hobbymäßig mit Verilog unterwegs. Es gibt paar Fragen, zu denen ich bisher noch keine erschöpfenden Antworten ergoogeln konnte. Auf die Gefahr einer RTFM Antwort frag ich diese Fragen hier einfach mal, teilweise mit (spekulativen) Antworten: 1) Wie entscheidet man bei den Übergabeparametern eines module ob sie als 'reg' oder 'wire' definiert werden müssen? In den meisten Beispielen, aber nicht immer, sehe ich dass im mudule alle inputs als wire und alle outputs als reg definiert sind. Wohingegen es aus der sicht des aufrufenden Moduls meist genau andersherum definiert ist. Ist das eine Regel die immer gilt, oder gibt es Abweichungen? 2) Pinbelegung: bisher hab ich treudoof für jedes neue Projekt die Pinnbelegung neu gemacht. Jemand hatte neulich mal erwähnt dass man sowas einmal komplett macht und dann künftig recyclen kann. Hört sich gut an. Welche Datei müsste ich mir bei der Quarkus ][ Software schnappen um sie zu als Pinbelegung für künftige Projekte zu recyclen? 3) Nonblocking vs. blocking Zuweisung von Registern. Bei dem Thema schwimme ich total. Bei Codebeispielen wird sehr oft die "nonblocking" Variante verwendet. Aber so richtig gründlich ist mir nicht klar was wann richtig ist. Bisher verwende ich immer "blocking" Assignment wenn ich meine, eine Zuweisung hängt von dem Ergebnis einer Zuweisung darüber ab. Und innerhalb eines "begin end" Blocks verwende ich dann immer nur eine Art von assignment... 4) Timing constraints: in den Tutorials von altera wird das als Teil des Entwicklungsprozesses dargestellt. Aber wie man selber zu einer sinnvollen Datei mit Timing contraints kommt, bleibt dort ziemlich nebulös. Ich vermute dass man bei "lahmen" Hobbyprojekten wie etwa dem Nachbau eines Intel 8080 ganz drauf verzichten kann? Hoffe diese Fragen waren jetzt nicht zu doof. Ich bin Autodidakt, hab also keinen Studienhintergrund zu dem Thema. Daher bitte ich um Nachsicht ;)