Metastabilität bei Flip-Flop

Wechselt das Inputsignal eines Flip-Flops zur falschen Zeit, ist das Ausgangssignal unsicher. Im besten Fall nimmt der Ausgang dann einen selbst gewählten Wert an (Q ode Q), im schlechten Fall „hängt“ sich das Flip-Flop „auf“ und toggelt permanent zwischen Q und Q.

Kritische Zeit beim Eingang
t_setup:   so lange müssen Daten vor dem Clock da sein
.                  (3 bis 12 ns. Cyclone IV: 8 – 10 ns)
t_hold:     so lange müssen Daten nach dem Clock anliegen  (0 bis 1 ns)
.                  Diese Zeit muss grösser sein, als die Durchlaufverzögerung des FF.
t_pd:         Durchlaufverzögerung: Zeit der Daten, bis sie am Ausgang anliegen.
kritscheZeit_FF

 

Treffen neue Daten vor der minimalen Haltezeit ein, so ist unklar, was am Ausgang anliegt.

Ursache für das Nichteinhalten der t_su
Die Clk-Frequenz hängt vom längsten Verzögerungspfad ab. Ist der eingestellte CLK schneller, so  kommt bei mindestens einem FF die Daten zu spät an. Die t_su kann dort nicht eingehalten werden.

Warum ist (nur ein) FF  bereits ein Problem?
Weil das FF im schlimmsten Fall zu Toggeln beginnt. Dadurch erhalten alle nachfolgenden FF toggelnde Signale und die ganze Linie ist unbrauchbar.
Ein metastabiles FF zieht die anderen FF mit sich.

Artikel 1

Systempfad und Umgebungsvariabl setzen

Programme werden von ihrem Ordner aus gestartet.
Will man Programme von überall her ausführen können,
muss der Pfad der Pfadvariable  übergeben werden.

Pfad der Pfadvariable zufügen

PATH=$PATH:/home/katrin/bin	

– Der Pfad wird immer vom root aus angegeben
– Pfade werden voneinander durch  : getrennt
– Die alte PATH-Variable ($PATH) muss  genannt werden.
Der neue Pfad wird nach Doppelpunkt angehängt

Pfad in .bashrc setzen

#include programm-paths 
export PATH=$PATH:/opt/altera/13.0sp1/quartus/bin

.bashrc liegt im home als versteckte Datei

Variable (in Windows) als Systemvariable setzen

System und Sicherheit/ System /Erweiterte Systemeinstellungen
In diesem Popup hat es ein Button: Umgebungsvariablen

Anklicken und der Variable einen Namen geben: LM_LICENSE:blabla_5
Der Variable einen Wert geben:  blaba@blume.aus.ch: 563

Script Linux

Ablegeort

home/katrin/bin


Ausführen (bei Ablageort)

./<script>.sh

Im Verzeichnis selbst wird mit ./ das Script ausgeführt.


Script der PATH-Variable zuweisen

PATH=$PATH:/home/katrin/bin

Mit gesetzer Pfadvariable kann das Script von überall her aufgerufen werden.


Ausführen Script überall

<script>.sh


Inhalt

#!/bin/bash

# add programm to global path
PATH=$PATH:/opt/ACA_166

# go to directory
cd /opt/ACA_166/

# open programm
java -jar ./QDAca.jar

Hier wird nicht der Script-Pfad, sondern das auszuführende Programm dem Pfad zugeteilt.

Script als ausführbar definieren

chmod +x name.sh

Parameter per Konsole mitgeben

#!/bin/bash

# Ausgabe in Konsole
echo $1 "anzahl_messungen"
echo $2 "anzahl_wiederholungen"

for o in `seq 1 $1`
do
    # packetlength ist eine lokale Variable
    for packetlength in 100 400 1400 1500 \        
    do
         # Ausgabe Konsole aktuelle Paketlänge
         echo $l
         for i in `seq 1 $2`
         do
            iperf3 -c 10.4.30.50 -l $ packetlength
         done
    done
done

– echo gibt string an Konsole aus
– $.. sind Variablen
– echo $.. fordert eine Eingabe per Konsole mit whitespace (Enter oder Abstand)

script.sh  5  2

Wenn man die Parmeter vergisst, fragt das Programm beim Start danach
// ]]>

Aliases in Linux

– Alias ersetzen Befehle durch ein Keywort
– Der Aufruf des Keyworts startet den Befehlt- Aliase müssen im home/.bashrc  eingetragen werden
– Aliase können nicht nur die Argumente enthalten (ohne Programm)

Syntax

// keyword = endocsope, Befehl = ssh
alias endoscope = "ssh root@192.168.17"

// Aufruf des Befehlts
endoscope

Alias setzen

gedit   home/katrin/.bashrc
# Aliase
alias endoscope='ssh root@192.168.17'

source ~/.bashrc

Pfadvariable

Info
Neue Module müssen der Pfadvarible zugefügt werden.

Suchbegriffe
set python path

Pfad hinzufügen
>> sys.path                    Gesetzte Pfade werden ausgegeben
sys.path.append(‚../../ pfad von Ort aus, in der Konsole gestartet wurde‘)

Hintergrund
Wenn man ein Modul z.B. abc importiert, sucht der Interpreter nach abc.py in der folgenden Reihenfolge
1. Im aktuellen Verzeichnis
2. PYTHONPATH                                                              >> sys.pat
3. Falls PYTHONPATH nicht gesetzt ist,
wird gesucht in                                                         /usr/lib/python2.7