Variablen-Zuweisung
a = 5
ist sequentiell
.
Signal-Zuweisung
a <= ’01‘ b <= ’00‘
kann parallel sein (in 2 Prozessen) -> Concurrency; Gleichzeitigkeit
Will man einen Pfad in einem Latex-Dokument angeben, braucht man den \textbackslash
Ziel
cd ..\TVtestSystem\bin\interface dist\hardwareInterface.exe
Latex-Code
cd ..\textbackslash TVtestSystem \textbackslash bin \textbackslash interface dist \textbackslash hardwareInterface.exe
Stahlwolle und Tippy (Spitzenpflege)
Damit die Lötspitze nicht schnell oxidiert: Stahlwolle zum Abstreichen und Tippy zur Pflege.
– Lötkolben nicht anlassen.
– Muss vorne immer verzinnt sein
Verzinnnen
Ziel: Wenig Lot, das noch glänzt (hat Flussmittel)
Vorgehen:
– Lötkolben direkt neben Verzinnstelle
– Frisches Lot an Lötkolben (hat noch Flussmittel)
– Kolben mit ständig neuem gespiesenem Lot über die Stelle ziehen
Matte Lötstelle
– Flussmittel ist weg -> An Lötkolben neues Lot (mit Flussmittel)
und dann Stelle neu „beloten“. Sie glänzt nun
Handling: Kein Lot in der Hand: Verzinnen und Lot in der Luft für Frischzufuhr
– Lot steht aufgestellt in der Luft und wird kurz vor Arbeit genommen
– Lot ist auf der Platine (bzw. jedes Bauteil ist vorverzinnt, mit FRISCHEM LOT)
– Bauteil wird mit Pinzette gehalten
– Lotkolben mit frischem Lot aktivieren und dem Lot auf dem Bauteil
oder der Platine zugefügt.
-> das zweite Bauteil wird plaziert
– Mit Pinzette Bauteil gut nach unten drücken
Temperaturen
So niedrig wie möglich. Wenn möglich um die 350°.
Schlechte Lötstellen müssen heisser gelötet werden 350 °
SMD wird ebenfalls heisser gelötet
Ebenso bleifreier Zinn
Schwarze Lötspitze !
– Ist nicht mehr brauchbar, sie nimmt kein Lot an (nicht mehr benetzbar)
– Grund: verkohltes Flussmittel bei z.B. bleifreies Lot (ist aggressiv)
– Hilfe:
– Reinigung:
Neuverzinnung der Lötspitze
Lot ist zu schwach.
Bleifrei Tippy: Dies ist ein spezieller Lötspitzenreiniger für die bleifreie Handlötung und verzinnt die Spitze
Nachlesen von Änderungen rückgängig machen
https://www.atlassian.com/git/tutorials/undoing-changes
File aus Ordner löschen
Die Datei bleibt physisch da, wird aber aus der Versionierung (aus git) genommen. Git sieht das File nicht mehr.
git rm <file>
Lokale Änderung nicht comitten
– <untracked files> können mit gitignore vom committen ausgeschlossen werden
– wurde eine Datei bereits <add> so kann man git reset HEAD <file> das File aus der commit-Liste nehmen. (es wird dann wieder rot)
File auf alte Version zurücksetzen
git checkout -- <file> // falscherweise commited git checkout <commit-nr> <file> // altes File holen git reset <file> // falscherweise <add>
Der erste Befehl bezieht sich auf den letzten commit. Der zweite auf einen füheren. Achtung: in beiden Fällen wird das lokale File überschrieben!
Int
– Zuweisung erfolgt ohne Hochkomma
variable cnt: integer range 0 to 255 := 0;
Standard_Logic
– Zuweisung erfolgt über Hochkommas
signal s_reset: std_logic := '0';
Variable
– Leben nur innerhalb eines Prozesses.
– Ihr Zustand kann nicht gespeichert werden.
– Sie müssen im Prozess, vor dem begin definiert werden
– Zuweisung erfolgt sofort (asynchron)
– Wird die Variable auch ausserhalb des Prozesses gebraucht, wird sie einem Signal zugewiesen.
read_file: process(all)
variable token_note: std_logic_vector(7 downto 0) :=(OTHERS => '0');
variable token_velocity: std_logic_vector(7 downto 0) :=(OTHERS => '0');
begin
// token einlesen (muss variable sein)
read(line_in, token_type_n, good);
// variable signal übergeben
s_token_type <= token_type;
Signale
– Verbinden Blöcke miteinander und/oder werden innerhalb Block gebraucht
– Sie werden ausserhalb von Prozessen definiert
– Ihr Wert kann in einem FF gespeichert werden (muss aber nicht)
architecture rtl of counter is signal s_token_typ std_logic_vector(7 downto 0) := (others => '0'); begin execute_file: process (all) begin end
..
– Das Top-Level ist die äusserste Hülle eines VHDL-Blocks.
– Im Top-Level müssen die Blockeingänge mit den FPGA-Pins verbunden werden.
. Dies geschieht über die Pinplanung.
Der Name der Top-Level-Entitiy muss der Name der Datei sein!
CLK und Reset muss nicht mit einem Signal intern angebunden werden, sondern alle alle Komponenten können mit dem Top-Level Port verbunden werden.
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]
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)
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
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