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 ;)
1) Ob reg oder wire hat mit "Übergabe" nichts zu tun. Es sind auch keine Parameter sondern Ports. 2) Ich nix Quartus Ahnung. 3) Daumenregel: Blocking in kombinatorischen always Blöcken, always @(Signalliste) Non-Blocking in getakteten. always @(posedge Clock) 4) Bei einem einfachen Design ist die Frequenzangabe der einzigen Clock alles was es braucht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.