Microchip CLB – Messung des Propagationsdelays und Ausblick

Die ersten Experimente mit dem PIC16F13145 und seiner CLB-Funktionseinheit haben die „Struktur des Codes“ und die Bedienung des Synthesesystems demonstriert. Nun ist es an der Zeit, die CLB en Vivant vorzuführen.

Rekapitulation.

Der unter Beitrag “Microchip CLB – erste Versuche zur „FPGA-Zelle“ im Achtbitter” bereitstehende erste Teil der Analyse führte die „softwareseitigen“ Aspekte der CLB vor: Eine Art Mini-FPGA, die direkt auf die modernen 8 Bit-PICs wie beispielsweise dem PIC16F13145A aufgepfropft ist.

Bildquelle: Microchip

Spezifischerweise hatten wir uns für das Inverter-Design entschieden: Es ergreift einen Eingangs-Pin bzw. das ihm anliegende Signal und leitet es zum Ausgang weiter.

Bildquelle: Autor

Praktische Inbetriebnahme.

Aufgrund der erwähnten und etwas haarigen Verfügbarkeit der Chips musste der Autor auf ein Sample zurückgreifen, dass er – wie in der Abbildung gezeigt – mit einem SMD-Adapter und einem Interface für das PicKit4 ausstattete. Erfreulicherweise sind auch „ältere“ PicKits zu Kombination mit dem 16F13145 befähigt – Microchip widersteht der Versuchung, seine Entwicklerschaft zum Upgraden zu zwingen.

Bildquelle: Autor.

Im nächsten Schritt bot sich das Aufbauen einer Messschaltung an. Der Danaher-AWG erregte das Gesamtsystem und diente auch als Triggersignal für den DSO. Das Ausgabesignal der FPGA-Zelle erscheint dann als Kanal eins am DSO.

Synchronisation und Bekämpfung von Glitches.

In der Theorie arbeitet der CLB „alleinstehend“ und vom Rest des Kerns unabhängig. In der Praxis bietet sich allerdings die Betrachtung der in der Abbildung gezeigten Option an, die eine „Synchronisation“ zwischen dem CLB-Block und dem Rest des Mikrocontrollers ermöglicht.

Bildquelle: Autor.

Fürs erste wollen wir diese Option aktiviert lassen, und den Rechen-Kern über den HFINTOSC-Oszillator mit einem Arbeitstakt von 1MHz versorgen. Aus der in der PIC-Architektur immanenten Teilung der Instruktionstaktrate durch den Faktor vier ergibt dies eine Arbeitsgeschwindigkeit von 250KHz.
Am Oszilloskop lässt sich das „Propagations-Delay“ des in der CLB lebenden Inverters dann wie in der Abbildung ermitteln.

Bildquelle: Autor.

Als nächster Versuch bietet sich eine Beschleunigung des Takts auf 32 MHz an. Erwartungsgemäß führt dies bei „synchronisiertem“ Eingang – wie in der Abbildung gezeigt – zu einer wesentlichen Beschleunigung der Reaktionszeit, die das zu der Beaufsichtigung verwendete LeCroy-Digitalspeicheroszilloskop fast an die Grenzen bringt (die Aktivierung der Kanal-Merging wurde hier aus Bequemlichkeitsgründen unterlassen, weil es eine Umsiedelung der Phaenomene auf CH2 und CH3 erfordert).

Bildquelle: Autor.

Als „Nächstes“ bietet sich eine abermalige Verlangsamung des Oszillator-Takts auf 1 MHz an, die Checkbox wird nun aber deaktiviert. Angemerkt sei, dass MCC auf das deaktiviert-sein immer mit Ausgabe einer Warnmeldung mit Bezug auf Metastabilität reagiert – es würde Microchip gut anstehen, hier eine Option zum „Stopfen des Maules“ unterzubringen.
In diesem Betriebsmodus „verbessert“ sich die Stabilität der Wellenform dann, wie in der Abbildung gezeigt, noch mehr.

Bildquelle: Autor.

Fortgeschrittene Anwendungsmöglichkeiten der CLB.

Zur „Dokumentation weiterer Einsatzmöglichkeiten sei im ersten Schritt abermals auf den CLB Synthesizer verwiesen. Er enthält unter anderem auch das in der Abbildung gezeigte Beispiel, das eine softwaregesteuerte MUX realisiert.

Bildquelle: Autor.

Hervorzuheben ist hier, dass sowohl die Eingänge als auch die Ausgänge der in der CLB lebenden Gatter-Schaltung nicht unbedingt mit realen ein- oder Ausgängen verbunden sein müssen. Wie hier durch demonstriert, ist es legitim, „die beiden Steuerregister“ als Quelle oder Senke zu benutzen. Ein lustiges Beispiel hierfür wäre die Realisierung eines Siebensegment-Decoders, der seinen „Eingang“ und/oder Ausgang aus Speicherregistern bezieht und so etwas Rechenzeit einzusparen hilft.
Apropos Siebensegment-Decoder: MicroChip ist sich der „Popularität“ dieser Aufgabe durchaus bewusst, und bietet unter https://github.com/microchip-pic-avr-examples/pic16f13145-7-segment-decoder-mplab-mcc zwei vollständig durchimplementierte Siebensegment-Decoder auf Basis der CLB an. Einer der beiden nutzt dabei die Eingabe in Logikgattern, während der andere eine der in den Engines ebenfalls implementierten Look Up-Tabels zur Erfüllung der Gefechtsaufgabe heranzieht.

Unter der URL https://mplab-discover.microchip.com/v2?dsl=CLB bietet Microchip dann – wie in der Abbildung gezeigt – „höherwertige“ Implementierungen an, die den CLB beispielsweise zur Ansteuerung von Neopixeln verwenden.

Bildquelle: Autor

Microchip CLB – Messung des Propagationsdelays und Ausblick.
Die ersten Experimente mit dem PIC16F13145 und seiner CLB-Funktionseinheit haben die „Struktur des Codes“ und die Bedienung des Synthesesystems demonstriert. Nun ist es an der Zeit, die CLB en Vivant vorzuführen.

Rekapitulation.

Der unter Beitrag “Microchip CLB – erste Versuche zur „FPGA-Zelle“ im Achtbitter” bereitstehende erste Teil der Analyse führte die „softwareseitigen“ Aspekte der CLB vor: Eine Art Mini-FPGA, die direkt auf die modernen 8 Bit-PICs wie beispielsweise dem PIC16F13145A aufgepfropft ist.

Bildquelle: Microchip

Spezifischerweise hatten wir uns für das Inverter-Design entschieden: Es ergreift einen Eingangs-Pin bzw. das ihm anliegende Signal und leitet es zum Ausgang weiter.

Bildquelle: Autor

Praktische Inbetriebnahme.

Aufgrund der erwähnten und etwas haarigen Verfügbarkeit der Chips musste der Autor auf ein Sample zurückgreifen, dass er – wie in der Abbildung gezeigt – mit einem SMD-Adapter und einem Interface für das PicKit4 ausstattete. Erfreulicherweise sind auch „ältere“ PicKits zu Kombination mit dem 16F13145 befähigt – Microchip widersteht der Versuchung, seine Entwicklerschaft zum Upgraden zu zwingen.

Bild. 1
Bildquelle: Autor.

Im nächsten Schritt bot sich das Aufbauen einer Messschaltung an. Der Danaher-AWG erregte das Gesamtsystem und diente auch als Triggersignal für den DSO. Das Ausgabesignal der FPGA-Zelle erscheint dann als Kanal eins am DSO.

Synchronisation und Bekämpfung von Glitches.

In der Theorie arbeitet der CLB „alleinstehend“ und vom Rest des Kerns unabhängig. In der Praxis bietet sich allerdings die Betrachtung der in der Abbildung gezeigten Option an, die eine „Synchronisation“ zwischen dem CLB-Block und dem Rest des Mikrocontrollers ermöglicht.

Bild. 2
Bildquelle: Autor.

Fürs erste wollen wir diese Option aktiviert lassen, und den Rechen-Kern über den HFINTOSC-Oszillator mit einem Arbeitstakt von 1MHz versorgen. Aus der in der PIC-Architektur immanenten Teilung der Instruktionstaktrate durch den Faktor vier ergibt dies eine Arbeitsgeschwindigkeit von 250KHz.
Am Oszilloskop lässt sich das „Propagations-Delay“ des in der CLB lebenden Inverters dann wie in der Abbildung ermitteln.

Bild.
Bildquelle: Autor.

Als nächster Versuch bietet sich eine Beschleunigung des Takts auf 32 MHz an. Erwartungsgemäß führt dies bei „synchronisiertem“ Eingang – wie in der Abbildung gezeigt – zu einer wesentlichen Beschleunigung der Reaktionszeit, die das zu der Beaufsichtigung verwendete LeCroy-Digitalspeicheroszilloskop fast an die Grenzen bringt (die Aktivierung der Kanal-Merging wurde hier aus Bequemlichkeitsgründen unterlassen, weil es eine Umsiedelung der Phaenomene auf CH2 und CH3 erfordert).

Bild.
Bildquelle: Autor.

Als „Nächstes“ bietet sich eine abermalige Verlangsamung des Oszillator-Takts auf 1 MHz an, die Checkbox wird nun aber deaktiviert. Angemerkt sei, dass MCC auf das deaktiviert-sein immer mit Ausgabe einer Warnmeldung mit Bezug auf Metastabilität reagiert – es würde Microchip gut anstehen, hier eine Option zum „Stopfen des Maules“ unterzubringen.
In diesem Betriebsmodus „verbessert“ sich die Stabilität der Wellenform dann, wie in der Abbildung gezeigt, noch mehr.

Bild.
Bildquelle: Autor.

Fortgeschrittene Anwendungsmöglichkeiten der CLB.

Zur „Dokumentation weiterer Einsatzmöglichkeiten sei im ersten Schritt abermals auf den CLB Synthesizer verwiesen. Er enthält unter anderem auch das in der Abbildung gezeigte Beispiel, das eine softwaregesteuerte MUX realisiert.

Bild.
Bildquelle: Autor.

Hervorzuheben ist hier, dass sowohl die Eingänge als auch die Ausgänge der in der CLB lebenden Gatter-Schaltung nicht unbedingt mit realen ein- oder Ausgängen verbunden sein müssen. Wie hier durch demonstriert, ist es legitim, „die beiden Steuerregister“ als Quelle oder Senke zu benutzen. Ein lustiges Beispiel hierfür wäre die Realisierung eines Siebensegment-Decoders, der seinen „Eingang“ und/oder Ausgang aus Speicherregistern bezieht und so etwas Rechenzeit einzusparen hilft.
Apropos Siebensegment-Decoder: MicroChip ist sich der „Popularität“ dieser Aufgabe durchaus bewusst, und bietet unter https://github.com/microchip-pic-avr-examples/pic16f13145-7-segment-decoder-mplab-mcc zwei vollständig durchimplementierte Siebensegment-Decoder auf Basis der CLB an. Einer der beiden nutzt dabei die Eingabe in Logikgattern, während der andere eine der in den Engines ebenfalls implementierten Look Up-Tabels zur Erfüllung der Gefechtsaufgabe heranzieht.

Unter der URL https://mplab-discover.microchip.com/v2?dsl=CLB bietet Microchip dann – wie in der Abbildung gezeigt – „höherwertige“ Implementierungen an, die den CLB beispielsweise zur Ansteuerung von Neopixeln verwenden.

Bild. 7.png
Bildquelle: Autor

Zu guter letzt sei dann auch noch auf die unter https://onlinedocs.microchip.com/oxy/GUID-6054136A-5DF1-4573-908F-EDF0A7D9E067-en-US-1/GUID-A838B6F7-9A78-40D5-9E96-3404F3A6E032.html#GUID-A838B6F7-9A78-40D5-9E96-3404F3A6E032 bereitstehende online-Dokumentation des CLB Synthesizer hingewiesen. Die dortige Dokumentation beschreibt zwar „vor allem“ das Handling des für die Schaltungseingabe verantwortlichen Werkzeugs, liefert allerdings auch Hintergrundinformationen und Anwendungsbeispiele für all jene, die sich tiefer mit dieser FPGA-Zelle auseinandersetzen wollen.

r

Zu guter letzt sei dann auch noch auf die unter https://onlinedocs.microchip.com/oxy/GUID-6054136A-5DF1-4573-908F-EDF0A7D9E067-en-US-1/GUID-A838B6F7-9A78-40D5-9E96-3404F3A6E032.html#GUID-A838B6F7-9A78-40D5-9E96-3404F3A6E032 bereitstehende online-Dokumentation des CLB Synthesizer hingewiesen. Die dortige Dokumentation beschreibt zwar „vor allem“ das Handling des für die Schaltungseingabe verantwortlichen Werkzeugs, liefert allerdings auch Hintergrundinformationen und Anwendungsbeispiele für all jene, die sich tiefer mit dieser FPGA-Zelle auseinandersetzen wollen.

Zuerst erschienen bei Mikrocontroller.net News

Quelle: Read More