Forum: FPGA, VHDL & Co. Ein paar HDL Anfängerfragen


von Micha (Gast)


Lesenswert?

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 ;)

von Lattice User (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.