Das virtuelle Oszilloskop

Für das Grundlagenlabor im dritten und vierten Semester wurde eine virtuelles Oszilloskop entwickelt und um eine Lernumgebung ergänzt.

Das virtuelle Oszilloskop kann auch direkt über einen in die Lernumgebung integrierten Funktionsgenerator angesteuert werden um die Funktionsweise auch ohne die vorgegebennen Aufgaben zu analysieren.

Das virtuelle Oszilloskop ist für den Einsatz in der Lehre kostenlos nutzbar.
Über folgenden Link, kann die Software heruntergeladen werden.

Die Programme wurden mittels Java erstellt. Daher ist eine aktuelle Java Laufzeitumgebung erforderlich. Nach dem entpacken ist zum Starten entweder die bat Datei zu verwenden, oder die TutorialGUI.jar.

Ausschnitt aus der Lernumgebung
Das virtuelle Oszilloskop

 

 

Word Vorlage für Studienarbeiten

Im Rahmen der Vorlesung wissenschaftliches Arbeiten habe ich für die Studierenden der Elektrotechnik an der DHBW Mannheim das angehängte Word Dokument erstellt und mit dem Professoren und Professorinnen des Studiengangs Elektrotechnik abgestimmt.

Studienarbeitsvorlage für Word (getestet mit Version 2013)  Version vom 20.10.2017

Letzte Änderung: Deckblatt angepasst

Hinweise zu geeigneten Hilfsprogrammen Version vom 16.06.2015

Die Nutzung ist mit dem jeweiligen Betreuer zu diskutieren.

Die Hinweise zur Formatierung, Literaturverzeichnis und Datensicherung können auch für Bachelorarbeiten hilfreich sein.

Cameralink FMC Module (LPC)

For machine vision applications we need to connect industrial cameras to the zedboard. These cameras often use Camera Link interfaces. Therefore we develop a FMC Module (LPC) with a Camera Link interface for the zedboard. Currently only the base configuration is supported. The second Camera Link connector on the board is a pusher for camera simulation and used for testing.

Board

Board_PhotoWe tested the image data receiver successfully at clock rate of 85 MHz with the pusher output and with a AViiVA® SC2 CL Color linescan camera. The camera control signals work correctly, too.

The serial interface of Camera Link was only tested with a input output test. A timing test and the full integration into the operating system will follow in October.

Most of the development were done by students in there student research projects. Substantial contribution came from Nils Lindenthal (left) and Sascha Karmann (right).

StudentTeam

Their documentations give detailed information about the hardware, firmware and software. The final work was done by Nils Lindenthal. Documentations are only available in German.

Karmann, S.: Link to document

Lindenthal, N.:  Link to document

The layout was designed with CadSoft EAGLE PCB.

All source files can be downloaded from https://github.com/roy77/Cameralink-LPC-FMC-Module.

 

 

 

Dynamic testbench for VHDL testing

I developed a dynamic tester for VHDL beginners. This video gives an overview.

 

Features:

  • Develop VHDL code and test it with a 32 In/Out Test interface
  • Beginner environment for BCD2SevenSegment Decoder development
    • Pattern generator with BCD code
    • Seven-segment display output
  • Beginner environment for Gray2Binary Decoder development
    • Pattern generator with Gray code

The tester is based on GHDL and developed in C#.

Download tester with source code: VHDLSimulator

Start the program: VHDLSimulator\bin\Debug\VHDLSimulator.exe

Edit the VHDL soruce file: VHDLSimulator\bin\Debug\Inverter.vhdl

 

 

Portable VDHL Simulation Enviroment

For simulation of VHDL Code the FPGA ventors Xilinx and Altera provide free “Web Editions” of there products. The packets are very big and complex. GHDL is the only simple and open source VHDL simulator.

GHDL is a command line tool for simulation and generate a VCD (value change dump) file as result. gtkWave allow a visualization of the VCD file.

I set up a simple IDE based on Notepad++ for our students. The IDE allow VHDL code development and simulation without knowledge of GHDL or gtkWave.

VHDL_IDE

The usage is simple. Open Notepad++Portable.exe in Notepad++Portable Folder. Select a project. Open a vhdl File an press F6 for simulation.

New projects and files can be added by pressing right mouse button on “Workspace” treeview element. Important is to copy “run.bat” to the new project.

A easier way is to copy and rename the folder of an existing project and running “setProjectFile.bat” in Notepad++Portable Folder to update the workspace file. Restart Notepad++ or “Reload Workspace” to update the Notepad++ view.

Download a the simulation system with two sample projects: VHDL_Simulation1

 

 

 

 

Integration von MSPSim in das Code Composer Studio

Ein Video um die Integration zu demonstrieren ist unter MSP430F5438 Experimenter Board Simulation with MSPSim zu finden.

Folgende Komponente ist vorab zu installieren

  • Java Runtime 7 oder neuer
  • Code Composer Studio 5 oder neuer

Die Datei mspsimheintz ist herunterzuladen und zu entpacken.

Das Code Composer Studio erlaubt es über die” Toolbar” externe Programme zu starten. Über diese Funktion kann der Simulator derart eingebunden werden, dass bei betätigen des Knopfs “External Tools” die Simulation mit den Daten des aktuellen Projektes gestartet wird. Hierzu muss zunächst der Eintrag in die “Toolbar” sichtbar werden. Dazu im Menü mittels “Windows”=>”Customize Perspective…” den Dialog öffnen und bei “External Tools” den Haken setzen.

Aktivieren des "Toolbar" Eintrags zu den "External Tools"

Aktivieren des “Toolbar” Eintrags zu den “External Tools”

Nun ist das “Toolbar” Icon für “External Tools” sichtbar.

"Toolbar" Eintrag zu den "External Tools"

“Toolbar” Eintrag zu den “External Tools”

Zur Konfiguration der externen Anwendung ist der kleine Pfeil rechts des Knopfes die Einstellungen zu betätigen und “External Tools Configurations…” auszuwählen.

Folgender Eintrag ist notwendig um das Simulationsprogramm einzubinden. Es ist zu beachten, dass bei “Working Directory” der Ordner mit den Simulationsdateien anzugeben ist. Zudem ist bei “Location” der korrekte Pfad zur java.exe einzutragen.

Einstellungen zur Simulation

Einstellungen zur Simulation

Um die Simulation zu beenden genügt es nicht alle Fenster zu schließen, sondern mittels Kommando “quit” müsste auch die Konsole beendet werden. Um dies zu vereinfachen, kann ein Befehl zum Beenden der gesamten Simulation als externes Programm eingebunden werden.

Einstellungen zur beenden der Simulation

Einstellungen zur beenden der Simulation

Bevor die Simulation gestartet wird, sollte das Projekt neu erzeugt werden, damit sicher der aktuelle Projektstand simuliert wird. Um dies zu erreichen ist “Build before lauch” auf der “Build” Registerkarte für die Simulation zu aktivieren.

Build Einstellungen für die Simulation

Build Einstellungen für die Simulation

Eine neue Erzeugung ist beim Stoppen der Simulation nicht sinnvoll, daher ist für “Stop” die “Build before lauch” Einstellung zu deaktivieren.

Des Weiteren sollte bei beiden externen Anwendungen unter der Registerkarte “Common” der Haken bei “Display in favorites menu” gesetzt werden, damit passende Einträge im aufgeklappten “External Tools” Menü erscheinen.

Aktivieren der Favoritenanzeige

Aktivieren der Favoritenanzeige

Zum Starten der Simulation eines Projektes, muss bei der Projektliste das Projekt ausgewählt sein, dann kann über den “External Tools” Eintrag Simulation die Simulationsumgebung gestartet werden.

 

MSP430F5438 Experimenter Board Simulation with MSPSim

In our microcontroller lab course we using the MSP430F5438 Experimenter Board. Some students want to use the board for private studies. The lab is not opened for private studies and the board is to expensive for most of the students. Therefore I developed a simulation of the MSP430F5438 Experimenter Board which can be integrated in Code Composer Studio.

MSPSim_Ubersicht

Features:

  • Source Code View
  • Breakpoints in Source Code
  • Single Assembler Steps
  • Component View (developed by Andreas Seidel)
  • Support of buttons, joystick and display

The simulation environment is based on MSPSim. MSPSim is a Java-based open source project for instruction level emulation of MSP430 microcontrollers.

This video show the simulator in action.

The current source code is accessible under https://github.com/roy77/mspsim.

A package with compiled version and quick start instructions are available under  mspsimheintz. Java Runtime 7 or newer is needed.

Instructions to integrate the simulation in Code Composer Studio under Integration von MSPSim in das Code Composer Studio (currently only in german).

 

Clone second screen into first screen

For presentations I extend the laptop screen to the beamer. So I can use presenter view in powerpoint. But when I want to show other programs on beamer screen I have to switch to clone mode or look backward on the beamer screen.

A better solution is to clone the second screen in a window on the first screen. The freeware MultiMonitor TaskBar has such a feature, but the framerate is to slow.

Therefore I write a solution based on the codeproject article Capturing the Desktop Screen with the Mouse Cursor Image.

Usage is very simple. When the mouse is on the first screen the program is minimized and has no effect. When the mouse enter the second screen, the program change to fullscreen in first screen and all actions on the beamer are visible in first screen.

Source Code with binaries can be downloaded under ScreenshotCaptureWithMouse. The program is portable, installation is not needed. The program is written in C# and tested with Windows 7 and Windows 8 with 32 and 64 bit. Net Framework 4.0 ore higher is needed.

History:

Version 1.1

  • Bug fix: Stop minimizing window when mouse cursor appearance is changed

Version 1.0

  • Jump list support with
  • version number
  • set second screen to black

Version 0.9

  • Initial version

 

Auswertung Wechselstromersatzschaltbild am Beispiel der Basisschaltung

Im Grundlagenlabor kommt immer wieder die Frage auf, wie mittels Kleinsignalersatzschaltbild/Wechselstromersatzschaltbild die Formeln für die Wechselstromparameter wie Verstärkung, Eingangswiderstand, Ausgangswiderstand bestimmt werden können.

In Standardwerken wie Tietze Schenk wird dies als Trivial angesehen und nicht weiter darauf eingegangen. Aus diesem Grund möchte ich für eine einfache Basisschaltung das Vorgehen erläutern.

Basisschaltung

Ziel ist nun den dynamischen Ausgangswiderstand ohne RL zu bestimmen. Zunächst benötigen wir das Wechselstrom-Ersatzschaltbild der Schaltung. Dazu wird das Wechselstrom-Ersatzschaltbild des Transistors (Spannungsrückwirkung vernachlässigt) um die in der Schaltung enthaltenen Bauteile erweitert.

Hierzu gelten folgende Regeln:

  • Nicht gesteuerte Spannungsquellen sind für Wechselspannung als Kurzschluss anzusehen
  • Nicht gesteuerte Stromquellen sind für Wechselspannung als Leerlauf anzusehen
  • Zusätzlich betrachten wir auch alle Kondensatoren als Kurzschluss für Wechselspannung. Somit entfallen RB1 und RB2. Später wird noch diskutiert, wie diese in das Modell zu integrieren sind.

Wir erhalten folgendes Ergebnis.

BasisWechselstromMit den angegebenen Maschen und Knoten, ergeben sich folgende Gleichungen:

  1. \inline \bg_white i_{A}-\beta \cdot i_{B}-i_{CE}-i_{C}=0
  2. \inline \bg_white i_{B}+i_{CE}+\beta \cdot i_{B}-i_{GE}=0
  3. \inline \bg_white i_{C}\cdot R_{C}+i_{B}\cdot r_{BE}-i_{CE}\cdot r_{CE}=0
  4. \inline \bg_white -i_{B}\cdot r_{BE}-i_{GE}\cdot R_{GE}=0 \: \: \: \: \: \: mit \:\: R_{GE}=R_{G}||R_{E}

Bevor wir nun Anfangen, die Formeln umzustellen, sollte überlegt werden, was zu bestimmen ist. Wir wollen den Ausgangswiderstand in Abhängigkeit der Widerstände und β.

\inline \bg_white r_{A}=f(R_{GE},r_{BE},r_{CE},R_{C},\beta )

In den Formeln haben wir die Unbekannten \inline \bg_white i_{A},i_{B},i_{CE},i_{C},i_{GE}, wir benötigen aber \inline \bg_white r_{A}. Zunächst müssen wir einen Zusammenhang zu \inline \bg_white r_{A} herstellen.

\inline \bg_white r_{A}=\frac{u_{A}}{i_{A}}=R_{C}\frac{i_{C}}{i_{A}}

Somit müssen nur die Unbekannten\inline \bg_white i_{B},i_{CE},i_{GE} entfernt werden.

iGE eliminieren, da nur in 4 und 2 enthalten

4. nach iGE umstellen und in 2. einsetzen liefert

4. \inline \bg_white i_{GE}=-\frac{i_{B}\cdot r_{BE}}{r_{GE}}

2. \inline \bg_white i_{B}+i_{CE}+\beta \cdot i_{B}+\frac{i_{B}\cdot r_{BE}}{R_{GE}}=0

iB eliminieren

2. nach iB umstellen und in 1. und 3. einsetzen

2. \inline \bg_white i_{B}(1+\beta+\frac{r_{BE}}{R_{GE}}))=-i_{CE} \rightarrow i_{B}=-\frac{i_{CE}}{1+\beta+\frac{r_{BE}}{R_{GE}}}

1. \inline \bg_white i_{A}+\beta \cdot \frac{i_{CE}}{1+\beta+\frac{r_{BE}}{R_{GE}}}-i_{CE}-i_{C}=0

3. \inline \bg_white i_{C}\cdot R_{C}-\frac{i_{CE}}{1+\beta+\frac{r_{BE}}{R_{GE}}}\cdot r_{BE}-i_{CE}\cdot r_{CE}=0

 iCE eliminieren

3. iCE umstellen und in 1. einsetzen

3. \bg_white i_{C}\cdot R_{C}=i_{CE}(\frac{1}{1+\beta+\frac{r_{BE}}{R_{GE}}}\cdot r_{BE}+r_{CE})\rightarrow i_{CE}=\frac{i_{C}\cdot R_{C}}{\frac{1}{1+\beta+\frac{r_{BE}}{R_{GE}}}\cdot r_{BE}+r_{CE}}\rightarrow i_{CE}=\frac{i_{C}\cdot R_{C}\cdot(1+\beta+\frac{r_{BE}}{R_{GE}}))}{r_{BE}+r_{CE}\cdot(1+\beta+\frac{r_{BE}}{R_{GE}})}

1.\bg_white i_{A}+\frac{\beta \cdot i_{C}\cdot R_{C}}{r_{BE}+r_{CE}\cdot(1+\beta+\frac{r_{BE}}{R_{GE}})}-\frac{i_{C}\cdot R_{C}\cdot(1+\beta+\frac{r_{BE}}{R_{GE}}))}{r_{BE}+r_{CE}\cdot(1+\beta+\frac{r_{BE}}{R_{GE}})}-i_{C}=0\rightarrow i_{A}-\frac{i_{C}\cdot R_{C}\cdot(1+\frac{r_{BE}}{R_{GE}}))}{r_{BE}+r_{CE}\cdot(1+\beta+\frac{r_{BE}}{R_{GE}})}=i_{C}

 rA bestimmen

\bg_white i_{A}=i_{C}\cdot(1+\frac{R_{C}\cdot(1+\frac{r_{BE}}{R_{GE}})}{r_{BE}+r_{CE}\cdot(1+\beta+\frac{r_{BE}}{R_{GE}})})\rightarrow \frac{i_{C}}{i_{A}}=\frac{1}{1+\frac{R_{C}(1+\frac{r_{BE}}{R_{GE}})}{r_{BE}+r_{CE}(1+\beta+\frac{r_{BE}}{R_{GE}})}}\rightarrow r_{A}=R_{C}\cdot\frac{i_{C}}{i_{A}}=\frac{R_{C}}{1+\frac{R_{C}(1+\frac{r_{BE}}{R_{GE}})}{r_{BE}+r_{CE}(1+\beta+\frac{r_{BE}}{R_{GE}})}}=\frac{1}{\frac{1}{R_{C}}+\frac{1+\frac{r_{BE}}{R_{GE}}}{r_{BE}+r_{CE}(1+\beta+\frac{r_{BE}}{R_{GE}})}}

Es ist eine Parallelschaltung zu erkennen. Zur Vereinfachung können wir ansetzen\bg_white r_{A}=R_{C}||D \:\:\: mit\:\:D=\frac{r_{BE}+r_{CE}(1+\beta+\frac{r_{BE}}{R_{GE}})}{1+\frac{r_{BE}}{R_{GE}}}

Wir könnten an dieser Stelle abbrechen, nach Tietze Schenk wird noch rC als Fakor herausgezogen.

\bg_white D=\frac{r_{BE}+r_{CE}(1+\beta+\frac{r_{BE}}{R_{GE}})}{1+\frac{r_{BE}}{R_{GE}}}=r_{CE}\cdot \frac{\frac{r_{BE}}{r_{CE}}+1+\beta +\frac{r_{BE}}{R_{GE}}}{1+\frac{r_{BE}}{R_{GE}}} \\D=r_{CE}\cdot (1+\frac{\frac{r_{BE}}{r_{CE}}+\beta }{1+\frac{r_{BE}}{R_{GE}}})=r_{CE}\cdot (1+\frac{R_{GE}}{r_{CE}}\cdot \frac{r_{BE}+\beta\cdot r_{CE} }{R_{GE}+r_{BE}})\rightarrow \\r_{A}=R_{C}||[r_{CE}\cdot (1+\frac{R_{GE}}{r_{CE}}\cdot \frac{r_{BE}+\beta\cdot r_{CE} }{R_{GE}+r_{BE}})]

Maxima

Natürlich kann das erstellte Gleichungssystem auch mittels eines Computer Algebra System (CAS) gelöst werden. Als Beispiel habe ich die Berechnungen mittels Maxima realisiert. Hier das Skript Ausgangswiderstand Basisschaltung.

 Ausblick

Zur Bestimmung anderer Kennwerte muss das Kleinsignalersatzschaltbild angepasst werden. So ist für die Spannungsverstärkung der Eingang wieder einzufügen und der Generatorwiderstand ist dazu in Reihe. Danach ist das Vorgehen zur Berechnung ähnlich.

Sind die Kondensatoren nicht zu vernachlässigen ist mit deren Blindwiderstand zu rechnen. Durch die imaginären Werte wird die Lösungen der Gleichungen sehr aufwändig, weshalb hier CAS eingesetzt werden sollten. Man erhält eine Lösung in Abhängigkeit der Frequenz, kann also die Verstärkung mit einer Zahl beschreiben sondern muss den Frequenzgang usw. angeben.

 

Development with Zynq – Part 5 – Programmable Logic projects with Vivado

This blog series describe the selection, set-up and usage of a development environment for Zynq.

Template project with AXI Lite support

The ARM architecture provide different processor interfaces. Zynq support AHB (Advanced High-performance Bus) and AXI (Advanced eXtensible Interface Bus).

Xilinx provide AXI Lite for setting and getting parameters of  PL components. AXI Lite a reduced AXI interface.
Xilinx XPS include a nice Create or Import Peripheral (CIP) wizard. This wizard generate VDHL code for bus connections. For AXI Lite the CIP provide a register connection to read and write PL Registers from PS.

In Vivado 2013.2 the CIP Wizard was missing. Therefore I use Xilinx XPS to design a custom IP. With the newer Vivado Version it is possible to generate custom IPs under “Create and Package IP ” => “Create new AXI4 peripherial”.

Weiter lesen