Pinzuweisung VHDL

Pinnamen laden
Zum Board besteht ein board.tcl-Datei, mit den Pinnamen. Diese wird als erstes geladen (Tools/script tcl).
Um die Namen anzusehen geht man auf Assignments/Pin Planer

Die Pins werden in der Top Level-Entity zugewiesen.

ENTITY top_counter_verification IS
      PORT(    CLK_50: 			IN std_logic;
	       KEY_0: 			IN std_logic;
	       EX_IO[0]:		OUT std_logic  
		);
END top_counter_verification;

Die Zuweisung erfolgt, in dem der Portname, genau dem Namen in der Pinzuweisungsliste (*.tcl) entspricht. Vgl. EX_IO[0]

Pinplaner

Die Namen in der Pinliste, kann man über Assignment/Assignment Editor setzen.

Node Name:   selber setzen;    Name, der in Projekt verwendet wird
Direction:        Pinrichtung
Location:         Ort auf FPGA (wichtigste Angabe)
diverse:            Spezifikationen zum IO  (Einstellbar über Assignment Editor)

pinplaner_zugewiesen

Soft Core OS

Nachdem ein Soft-Core-Prozessor in ein FPGA geladen wurde, folgt das Aufsetzen des OS. Bei Altera ist dies Nios2, bei Xilinx MicroBlaze.

Remote Zugriff auf OS
Per SSH (bzw. Nios Shell) wird auf den Softcore zugegriffen.

Ordner und Programme
Baut man einen Softprozessor ein, bildet dieser im Synthese Ordner ein Unterordner Software

synthese/software/

In diesen Ordner kann man notwendige Scripts und Settings ablegen.

Board Support Packet erzeugen
Das Script create bildet die Support Packete (und Ordner dazu)

./create

Kompilieren

./compile

Programm auf FPGA laufen lassen

./run

Logikblocks einbauen und ändern

QSys (früher SOPC):
– Ist ein System Integration Tool
– QSys ermöglicht den Import von Logik-Blöcken.
– Die Logikblöcke werden nachher als Files in das Projekt gealden

Qsys: Designen von eigenen Blöcken
quartus: Tools/qsys         eigenes Fenster geht auf
– Als erstes muss neue qsys-Datei erstellt werden (*.qsys)
– Dies Datei liegt in synthese/outputfiles/<name>
– Über Library holt man mit add einen Block
– Block benennen (wird zu Titel im Blockschema)
– Unter Export sagen, Blockvariable setzen
– Speicherplatz dem Block zuweisen
– add: man fügt neue Elemente hinzu
– neues Element verdrahten
generate: beendet das Design
– die Datei (*.qip) liegt in outputfiles/<name>/synthese
– das Blockbild in outputfiles/<name> (*.bsf)

Quartus: Blöcke einbauen
– Neues, leeres *.bdf öffnen
– Über Block-Import den Block holen (*.bsf)
– Pin zuweisen
– Verdrahtungen benennen gemäss Export
– Kompilieren

 

low cost FPGA

Latice stellte einfachere FPGA her.

  • Der Clk ist weniger schnell, als bei High End FPGAs
  • Memory ist kleiner
  • Viele IP kostenlos

FPGA debuggen

Implementierte Logik
Tools/ Netlist Viewer/RTL Viewer:  zeigt die Logikbausteine

Blöcke und Verdrahtung
Tools/ Netlist Viewer/ Technology Map Viewer (Post-Mapping)

Pinzuweisung
– Um die Pin-Datei zu aktivieren, muss sie einmal gelaufen sein:
.  Tools/ Tcl Scripts/Run
– Pin Überprüfung:
.  Assignments/Pin Planer/
– Die Pin-Namen auf Schaltplan muss dem Name in der tcl-Datei entsprechen
– Abgespeichert wird die Pinzuweisung in der Datei boardname.tcl

Files in Projekt einbinden
Assignments/Settings/Files  auf add

Top-Level definieren
Links, im Projektnavigator, auf den Reiter Files.
Dort per rechte Maustaste eine Datei als Top-Level setezn

Raspdebian am Netz: Sicherheit

RSA-Keys für User erstellen

Login mit RSA-Key und ohne Passwort
Beim Login kommt man zu Root. Man muss das debian Passwort eingeben. Steht der Raspberry Pi im Netz, sollte der Login ohne Passwort sein!  Brut force attacken werden so verworfen, da das Eingeben eines Passwortes verboten ist.

Port Forwarding  <Dienstanfrage Server> führt direkt auf <Dienstplattform auf lokalem Gerät>
Der Raspberry Pi steht nicht im Internet, er steht im privaten Netz und kann aufs Internet. Vom Internet aus kann man nicht auf den Rasperry PI zugreiffen. (Nur Lokal über SSH) . Nur der Router steht im Internet.
Will man OwnCloud brauchen, muss man vom Internet darauf zugreiffen können. Gibt man  <Dienstanfrage Routers> ein, so gelangt man auf den <Raspery Pi>. Dies gilt nur für die eingestellten Dienste.

IP Throuput <ip Server> führt direkt zur <ip lokales Gerät>
Gibt man die <IP des Routers> ein so gelangt man auf den <Raspery Pi>.

Git <-> Github: Wo braucht man ein Passwort?

Git kümmert sich um die Versionierung.
Mit git status  sieht man, was geändert ist und kann es mit git add  git commit  auf auch auf eine Plattform ausserhalb senden.
Commits (und adds) sind nur lokal auf der Maschine. Sie brauchen keine Rechte. Denn Git muss nicht über eine Plattform gehen. Git kann auch nur lokal die Versionierung verwalten.

Github teilt Versionierung mit anderen
Will man Daten mit andern teilen, bietet sich eine Plattform wie Github an. Man braucht dazu jedoch Rechte von Gründer des Repositorys. Man hinterlegt seine Emailadresse sowie eine Form der Authentifizierung:
– per RSA-Key identifizieren (Github: Profile/Settings/SSH-Key) oder
– per Passwort.
Bei ersterem muss man beim Pushen nichts tun (der private Key authentifiziert), bei der Version mit dem Passwort, muss man immer das PW beim Pushen mitgeben.

FPGA Projekt einrichten

  1. Programme mit Lizenzen herunterladen (quartus, questasim)
  2. Projektordner erstellen (siehe Intro): synthese, vhdl, simulation, code
  3. Mit quartus Projektdatei erstellen (*.qpf), ablegen in synthese-ordner
  4. VHDL Code schreiben (*.vhd) oder Schema (*.bdf) über Menu Symbol Tool zeichnen. Pin müssen zugewiesen werden. Dateien ablegen in vhdl-odner
  5. Datein ins Projekt einbinden: Menu Assignments/Settings /Files
  6. Eine Datei muss Top-Level sein. Auswählen per rechte Maus > set as top-level
  7. Pinzuweisung (Laden datei.tcl aus ordner synthese) aktivieren über
    Tools/Tcl Script/ Run
  8. Kompilieren bzw. Synthese mit Processing/Start Compilation (*.sof)
  9. Projekt auf Board laden: (Schalter auf Board auf „RUN“)
    Tools/Programmer  (ev. Projektdatei.sof zufügen) start
    Fehlt die Lizenz, kann man nicht auf start drücken