Ausdenken, zeichnen, bauen – kein Problem mit PSoC Creator

Werbung
Ausdenken, zeichnen, bauen – kein Problem mit PSoC Creator
Von Mark Saunders, Product Marketing Manager, Cypress Semiconductor Corp.
Embedded-Systems-Designer haben eigentlich besseres verdient als die heute üblichen, mit Features geizenden und nur auf
einen Aufgabenbereich beschränkten Tools. Auch sollten Embedded-Designs mehr sein als nur eine Kombination aus
Mikrocontrollern und diskreten Bauelementen, zusammengewürfelt mit Leiterplattendesign- und Softwareentwicklungs-Tools,
die voneinander nichts wissen – von einer Integration ganz zu schweigen.
Programmierbare Bauelemente sind nichts Neues und auch Embedded-Software ist älter als die meisten unter uns. Bei einem
Großteil des Embedded-Designs geht es außerdem ganz gezielt um spezifische Interaktionen zwischen Software und
Peripherie. Man muss sich deshalb wirklich fragen, weshalb es nicht schon längst Tools gibt, die all dies zu einem Ganzen
verbinden und den Designern ein einfacheres, produktiveres Arbeiten ermöglichen.
Als Antwort auf diese Frage präsentierte Cypress Semiconductor im September 2009 das Embedded-Design-Tool PSoC
Creator für seine neuen PSoC-Architekturen (Programmable System-on-Chip) PSoC 3 und PSoC 5. PSoC Creator kombiniert
die Unterstützung für die programmierbare PSoC-Hardware mit einer komplett ausgestatteten Software-IDE (Integrated
Development Environment). Das Tool abstrahiert die Hardware so, dass man kein Experte für den jeweils verwendeten
Baustein sein muss. Auch von den inneren Abläufen der Peripherie, mit der man die Hardware programmiert, benötigt man
keine Detailkenntnisse. Chip-interne Verbindungen und I/Os werden automatisch geroutet. Außerdem generiert das Tool APIs
(Application Programming Interfaces) für die Peripherie und für On-Chip-Funktionen (Komponenten), um eine fehlerfreie
Interaktion seitens der Software zu gewährleisten.
Was diese Aussagen bedeuten, soll nachfolgend an einem Beispiel erläutert werden. Verschiedene analoge und digitale
Komponenten werden dabei in kurzer Zeit in einem PSoC 3 Baustein konfiguriert und zu einer ebenso einfachen wie
nützlichen Applikation kombiniert, die einen Pin auf etwaige Überspannungen überwacht, eine als Warnmelder dienende LD
ansteuert und die Zahl der Überspannungs-Phänomene sowie die maximale Dauer dieser Zustände protokolliert.
Man muss dazu weder die verwendete CPU-Architektur kennen noch wissen, wie der analoge Komparator oder der digitale
Timer implementiert sind. Was über den Chip bekannt sein muss, sind lediglich die Nummern der als I/Os zu verwendeten
Pins (obwohl das Tool einem selbst diese Zuordnung abnehmen könnte).
Bild:
PSoC 3 Baustein, montiert auf einem PSoC Developers Kit Prozessormodul
Das Designprojekt gliedert sich in drei Abschnitte. Der erste besteht aus der Spannungsvergleicher-Schaltung, die
Überspannungen an einem Pin mithilfe eines Komparators erkennt. Der zweite Schaltungsteil steuert die Warn-LED an. Die
Leuchtiode blinkt bei zu hoher Spannung und geht in Dauerlicht über, sobald die Spannung wieder auf einen unkritischen Wert
zurückgegangen ist. Auf diese Weise wird signalisiert, dass eine Störung vorgelegen hat. Der dritte Abschnitt des Designs
schließlich führt eine Statistik über die Vorkommnisse. Ein Zähler erfasst, wie lange die überhöhte Spannung anlag, sodass
sowohl die Häufigkeit als auch die maximale Dauer der Überspannungs-Phänomene aufgezeichnet wird.
“Think it – Draw it – Build it” with PSoC Creator
Elektronik Journal
Page 1 of 6
January 2010
[+] Feedback
Bild:
Schema der Überspannungs-Überwachung in PSoC Creator
Zunächst zur Spannungsvergleicher-Schaltung, für die ein analoger Eingangs-Pin, ein Spannungs-D/A-Wandler zum
Erzeugen einer Referenzspannung und ein Komparator benötigt werden. Letzterer zeigt mit einem digitalen High/Low-Signal
den Spannungspegel an. Zum Erstellen des Designs werden zunächst die benötigten Komponenten in ein leeres Arbeitsblatt
gezogen. Diese Komponenten sind in einem Katalog aufgelistet, den das Tool auf der rechten Seite darstellt. Es gibt eine
Suchfunktion, und außerdem sind die Komponenten der Übersichtlichkeit wegen in einer vertrauten Baumstruktur angeordnet,
aufgeteilt in Ordner namens Analog, Digital, Communication usw. Den analogen Pin findet man schnell im Ordner ‚Ports and
Pins‘, und nach dem Anklicken dieses Elements wird das entsprechende Symbol und der Link zum zugehörigen Datenblatt
angezeigt.
Bild:
Komponentenkatalog mit angewähltem Analog-Pin
Soll dieser Pin verwendet werden, muss man ihn nur noch in das Design ziehen. Auf die gleiche Weise geht man mit dem
DAC und dem Komparator vor, sodass die Grundelemente der Schaltung in Sekundenschnelle zusammengestellt sind. Jetzt
stellt sich die Frage, wie die Referenzspannung festgelegt wird. Hier kommen die Komponenten-Parameter ins Spiel. Nach
einem einfachen Doppelklick auf die Komponente im Schaltplan öffnet sich der Parameter-Editor als Dialogfenster. Da die
Komponenten parametriert sind, lassen sie sich mit den jeweils gewünschten Attributen konfigurieren. Dabei sind die
Parameter mit Bedacht so gewählt, dass sich die Konfiguration auf eine für den Designer sinnvolle Weise darstellen lässt,
während die zugrunde liegende Implementierung abstrahiert wird. Im Fall des DAC wird nach der Entscheidung zwischen
einem hohen und einem niedrigen Spannungsbereich (0..1 V bzw. 0..4 V) die gewünschte Spannung festgelegt. Man muss
nicht die chip-interne Ressource für den DAC auswählen, es müssen keine Register eingestellt, keine Bitfelder geprüft und
keine Masken angewandt werden. Man schließt einfach das Dialogfenster und hat alles erledigt, was für das Einrichten einer
Spannungsreferenz im Design erforderlich ist.
Links neben dem Arbeitsblatt erscheint eine Palette nützlicher Designwerkzeuge, zu denen auch das Wiring-Tool gehört. Ein
einfacher Klick dient zum Zeichnen einer einzelnen Leitung, und mit einem Doppelklick ruft man den Multiple-WireZeichenmodus auf. Man zeichnet jetzt nur noch die Leitungen zwischen den Komponenten und ist schon fertig. Nur etwa eine
Minute hat es gedauert, eine Spannungsprüfungs-Schaltung zu entwerfen und zu implementieren.
“Think it – Draw it – Build it” with PSoC Creator
Elektronik Journal
Page 2 of 6
January 2010
[+] Feedback
Jetzt muss entschieden werden, wie auf eine Überspannungs-Situation reagiert werden soll. Das Vorliegen einer zu hohen
Spannung soll durch eine blinkende Leuchtdiode angezeigt werden. Kehrt die Spannung anschließend wieder auf einen
normalen Wert zurück, soll dieses Phänomen jedoch nicht in Vergessenheit geraten, sondern durch Dauerlicht gemeldet
werden. Hierfür bietet sich ein D-Flipflop an, das in den Schaltplan gezogen und an seinem Takteingang mit dem
Komparatorausgang verbunden wird. Die Leitungen erscheinen in verschiedenen Farben. Analoge Leitungen werden orange
dargestellt, digitale dagegen automatisch in grüner Farbe. An den D-Eingang wird eine Logisch-High-Komponente (1) gelegt.
Wenn also am Komparatorausgang erstmals logisch High liegt, wechselt der Flipflop-Ausgang in den High-Status und behält
diesen bei. Auf diese Weise wird man an das Überspannungs-Ereignis erinnert und es besteht keine Notwendigkeit zum
Zurücksetzen des Flipflops. Eine digitale MUX-Komponente dient zum Selektieren zwischen den verschiedenen Signalen, die
die LED ansteuern (über einen digitalen Ausgangs-Pin). Solange die Überspannung anliegt, sorgt eine auf 10 Hz eingestellte
Takt-Komponente für das Blinken der LED, während der Flipflop-Ausgang ein zurückliegendes Überspannungs-Ereignis
anzeigt.
Im abschließenden Teil des Designs kommt eine Zähler-Komponente mit einem Takt von 1 kHz ins Spiel. Mit dieser
Kombination wird ermittelt, wie viele Millisekunden lang die Überspannung andauert. Der Komparator kommt auch hier zum
Einsatz: er setzt den internen Zähler auf Null zurück, wenn die Spannung zurückgeht, und gibt ihn wieder frei, sobald wieder
eine zu hohe Spannung anliegt. Ein Capture-Eingang zeichnet den Zählerwert bei der fallenden Flanke des
Komparatorsignals auf und löst einen ISR aus, um die Überspannungs-Ereignisse zu zählen und die längste Dauer zu
erfassen.
Bild:
Konfiguration eines 16-Bit-Aufwärtszählers mit 1 ms Periodendauer und Erfassung bei fallenden Flanken
Jetzt ist das Design so weit ausgearbeitet, dass es gebaut werden kann. Ein Klick auf den ‚Build‘-Button in der Werkzeugleiste
reicht, um die gesamte Applikation – also die Schaltung und die Software – in ein einziges flash-fähiges Image zu verwandeln.
Ein Teil dieses Build-Prozesses dient dazu, die APIs für die Komponenten und die Stub-Handler für den Interrupt zu
generieren. Diese sind recht nützlich, denn wie in jedem Design muss nun ein wenig Software geschrieben werden.
PSoC Creator Projekte enthalten von sich aus den gesamten Boot-Code zum Hochfahren des Bausteins, sodass sich die
Programmierarbeit auf die eigentliche Applikation beschränkt, die in der Datei main.c gestartet wird. Man muss nichts weiter
tun, als die APIs zum Initialisieren und Starten der Komponenten DAC, Komparator und Zähler zu verwenden. Anschließend
wird die ISR installiert und die Interrupts freigegeben. Der Code hierfür sieht so aus:
/* Init and start the components */
RefV_Start();
Comp_Start();
OverVoltageTimer_Start();
/* Install and enable the ISR handler */
VoltageLo_isr_Start();
CYGlobalIntEnable;
“Think it – Draw it – Build it” with PSoC Creator
Elektronik Journal
Page 3 of 6
January 2010
[+] Feedback
Der Interrupthandler hat seine eigene Quelldatei (VoltageLo_isr.c), in deren vom Anwender editierbare Abschnitte der
Handler-Code wie folgt zwischen die Kommentarzeilen ‚#START‘ und ‚#END‘ eingefügt wird:
/* `#START VoltageLo_isr_Interrupt` */
/* Read status register to clear interrupt source */
uint32 val = OverVoltageTimer_ReadStatusRegister();
/* Get capture time and set globals as necessary */
val = OverVoltageTimer_ReadCapture();
if( val > over_max_time )
over_max_time = val;
over_count++;
/* `#END` */
Bild:
Auswahl der Pins am PSoC 3 Baustein
Vor einem erneuten Build können jetzt die Pins festgelegt werden. An einem PSoC 3 Baustein kann jede beliebige Funktion
jedem beliebigen Pin zugewiesen werden und man ist an keine Vorgaben des Herstellers gebunden. Nach Öffnen der
Resources-Datei lassen sich die Pins auf jeden gewünschten I/O-Pin ziehen.
Wird jetzt der Build-Prozess erneut durchlaufen, so wird ein ‚Bitstream‘ des Designs erzeugt. Außerdem werden die APIs
generiert, die aus der oben beschriebenen Software heraus aufgerufen werden. Als nächstes wird die Software kompiliert und
in ein einziges Image (eine Hex-Datei) gelinkt. Von hier aus kann der Baustein einfach geflasht werden, und nach einem
Reset beginnt das Programm zu laufen. Sollte ein Design tatsächlich einmal nicht auf Anhieb funktionieren, hilft der in PSoC
Creator eingebaute Debugger, der mit C- und Assembler-Ansichten Einblicke in das Design bietet und eine reichhaltige
Auswahl an Debug-Fenstern, Hardware-Breakpoints und Codeverarbeitungs-Funktionen mitbringt – alles vollständig in die
IDE integriert.
“Think it – Draw it – Build it” with PSoC Creator
Elektronik Journal
Page 4 of 6
January 2010
[+] Feedback
Bild:
Mehr als der preisgünstige MiniProg3 Programmer/Debugger ist nicht erforderlich, um PSoC-Bausteine
per JTAG oder SWD (Serial Wire Debug) zu debuggen
Damit ist der Entwicklungszyklus mit PSoC Creator abgeschlossen. Das Design wurde gezeichnet, APIs wurden generiert, ein
wenig C-Code wurde geschrieben und die Pins ausgewählt, bevor das Image in den Flash-Speicher des Bausteins geladen
werden konnte. Änderungen lassen sich ebenso schnell vornehmen: es muss nur das modifizierte Image geflasht werden –
fertig.
Vielleicht ist genau dies das wichtigste Merkmal des Tools: es ermutigt zum Experimentieren und zum Lernen. Die Ergebnisse
eines Versuchs liegen umgehend vor, und mit dem Umsetzen eigener Vorstellungen sind keine Kosten verbunden. Jeder
Designer kann seine Kreativität damit frei entfalten.
Kastentext: Das Erstellen der Image-Datei
Auf das Anklicken des Build-Buttons hin nutzt PSoC Creator eine Reihe von Tools, um das Design und den Applikations-Code
in eine flash-fähige Image-Datei zu verwandeln.
Elaboration (Ausarbeitung)
Da alle Designs hierarchisch gegliedert sind, bedarf es als erstes einer Elaboration: das TopDesign wird dazu in die einzelnen
Komponenten gegliedert, die ihrerseits wiederum in ihre Bestandteile zerlegt werden, bis schließlich eine vollständig
ausgearbeitete, auf eine Hierarchieebene reduzierte Version des Designs vorliegt.
HDL-Generierung
Als nächster Schritt schließt sich das Generieren der HDL (Hardware Description Language) an. Auf der untersten Ebene
werden sämtliche Komponenten in Verilog implementiert, und das Design wird in eine HDL-Netzliste übersetzt.
Synthese
Dieser Prozess gliedert sich in einen logischen und einen physischen Schritt. Der logische Schritt optimiert das Design
(Entfernung aller nicht benötigten Elemente) und generiert eine einfachere RTL-Darstellung (Register Transfer Level) der
Grundkomponenten (Primitives) und Booleschen Gleichungen. Der physische Schritt identifiziert die Primitives und ordnet sie
der physischen Hardware des Bausteins zu, um anschließend die Signale über das ‚Switch Fabric‘ bzw. das Routing-Netzwerk
zu verbinden.
API-Generierung
Nun folgt die Erzeugung des Boot-Codes und der API-Files, die daraufhin zum Workspace Explorer hinzugefügt werden. APIFiles werden als Teil der jeweiligen Komponente definiert, und die generierten Dateien besitzen den Namen der
Komponenten-Instanz als Namens-Präfix. Damit hat jede Instanz ihre eigenen APIs (es gibt keine Zeiger auf RAM-basierte
Datenstrukturen).
Kompilieren und Linken
PSoC 3 und PSoC 5 nutzen die industriestandardgemäßen CPU-Architekturen 8051 bzw. ARM Cortex-M3, sodass jeder
Designer seinen bevorzugten Compiler wählen kann. Für PSoC 3 enthält die Distribution ein kostenloses Keil CA51
Compilerpaket mit uneingeschränktem Funktionsumfang. Um eine bestmögliche Optimierung zu erzielen, kann ein Upgrade
auf die professionelle Version von Keil zugekauft werden. Für PSoC 5 ist der GNU GCC-Compiler enthalten. Zusätzlich wird
der von ARM Ltd. verfügbare RealView-Compiler unterstützt.
“Think it – Draw it – Build it” with PSoC Creator
Elektronik Journal
Page 5 of 6
January 2010
[+] Feedback
Generieren der Hex-Datei
Den Abschluss des gesamten Ablaufs bildet das Generieren des Flash-Images in einer Hex-Datei. Dieses File enthält die
Software-Applikation und den Bitstream, den die physische Synthese des Designs generiert hat.
Cypress Semiconductor
198 Champion Court
San Jose, CA 95134-1709
Phone: 408-943-2600
Fax: 408-943-4730
http://www.cypress.com
© Cypress Semiconductor Corporation, 2007. The information contained herein is subject to change without notice. Cypress Semiconductor Corporation assumes no responsibility for the
use of any circuitry other than circuitry embodied in a Cypress product. Nor does it convey or imply any license under patent or other rights. Cypress products are not warranted nor intended
to be used for medical, life support, life saving, critical control or safety applications, unless pursuant to an express written agreement with Cypress. Furthermore, Cypress does not authorize
its products for use as critical components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of
Cypress products in life-support systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
PSoC Designer™, Programmable System-on-Chip™, and PSoC Express™ are trademarks and PSoC® is a registered trademark of Cypress Semiconductor Corp. All other trademarks or
registered trademarks referenced herein are property of the respective corporations.
This Source Code (software and/or firmware) is owned by Cypress Semiconductor Corporation (Cypress) and is protected by and subject to worldwide patent protection (United States and
foreign), United States copyright laws and international treaty provisions. Cypress hereby grants to licensee a personal, non-exclusive, non-transferable license to copy, use, modify, create
derivative works of, and compile the Cypress Source Code and derivative works for the sole purpose of creating custom software and or firmware in support of licensee product to be used
only in conjunction with a Cypress integrated circuit as specified in the applicable agreement. Any reproduction, modification, translation, compilation, or representation of this Source Code
except as specified above is prohibited without the express written permission of Cypress.
Disclaimer: CYPRESS MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. Cypress reserves the right to make changes without further notice to the materials described
herein. Cypress does not assume any liability arising out of the application or use of any product or circuit described herein. Cypress does not authorize its products for use as critical
components in life-support systems where a malfunction or failure may reasonably be expected to result in significant injury to the user. The inclusion of Cypress’ product in a life-support
systems application implies that the manufacturer assumes all risk of such use and in doing so indemnifies Cypress against all charges.
Use may be limited by and subject to the applicable Cypress software license agreement.
“Think it – Draw it – Build it” with PSoC Creator
Elektronik Journal
Page 6 of 6
January 2010
[+] Feedback
Herunterladen