Hier wurde der Pi Pico ja schon einmal vorgestellt: Beitrag "Raspberry Pi Pico: Mikrocontroller-Board mit Cortex M0+" Im Datenblatt https://datasheets.raspberrypi.org/rp2040/rp2040_datasheet.pdf ist ab Seite 331 die PIO beschrieben. Die PIO ist programmierbar und es findet sich folgender Satz: >Although not designed for computation, PIO is quite likely Turing-complete, >and it is conjectured that it could run DOOM,given a sufficiently high clock >speed Nun stellt sich also die Frage, wer es als erster schafft, einen Sigma-Delta-Modulator als DAC-Ersatz zu programmieren.
chris_ schrieb: > Nun stellt sich also die Frage, wer es als erster schafft, einen > Sigma-Delta-Modulator als DAC-Ersatz zu programmieren. Warum benötigt man dafür die PIO? Je nachdem, über welche Frequenzen wir reden, schafft das auch die CPU. Bei der Implementation im PIO wird es wohl eher ein Thema sein, dass es keine Möglichkeiten zur Addition gibt. Wahrcheinlich wäre es einfacher, die CPU einen Bitstream berechnen zu lassen, den die PIO dann ausgibt.
von Tim . (cpldcpu) 24.01.2021 11:36 >Warum benötigt man dafür die PIO? Je nachdem, über welche Frequenzen wir >reden, schafft das auch die CPU. Weil der Chip nur zwei Kerne hat. Anwendungsbeispiel: Mikropython auf Kern 1, Echtzeitaudio auf Kern 2 und DAC durch PIO. Schließlich will man keine wertvollen Zyklen für einen Peripheribaustein verschwenden. >Bei der Implementation im PIO wird es wohl eher ein Thema sein, dass es >keine Möglichkeiten zur Addition gibt. Wahrscheinlich wäre es einfacher, >die CPU einen Bitstream berechnen zu lassen, den die PIO dann ausgibt. Das habe ich beim Betrachten des Befehlssatzes auch zuerst gedacht: keinerlei Rechenoperationen. Aber wie beim Design Deiner *MininmalCPU gibt es doch meistens Möglichkeiten, die einem nicht sofort ins Auge springen: https://github.com/raspberrypi/pico-examples/blob/master/pio/addition/addition.pio Zugegebenermaßen reicht das möglicherweise aus Geschwindigkeitsgründen nicht für den Modulator. *MinimalCPU: https://github.com/cpldcpu/MCPU
Tim . schrieb: > Warum benötigt man dafür die PIO? Je nachdem, über welche Frequenzen wir > reden, schafft das auch die CPU. Nunja, genau das ist der Punkt: was mache ich, wenn's der MCU-Core halt nicht schafft. Oder auch nur, wenn er es zwar schaffen würde, aber eigentlich für was anderes benötigt wird, eine Sache, die seinen Fähigkeiten weit angemessener ist, nämlich die eigentliche Anwendung... Und, wie der Zufall so will (ich bezweifele, das es sich um einen Zufall handelt ;o), ist das Beispiel mit der Realisierung eines VGA-Displays ein sehr schönes Beispiel für genau so etwas. Das Display ist nur Mittel zum Zweck. Und man kann es realisieren, weil es genug Speicher gibt und die PIO-Einheit. Und man hat am Ende immer noch zwei M0+-Cores für die eigentliche Anwendung zur Verfügung. Genau diese Fähigkeit ist sehr attraktiv. Denn in sehr vielen Anwendungen will man zwar ein Display mit einer Größe jenseits dessen, was mit einem SPI-gesteuerten TFT sinnvoll möglich ist, aber man kann für die eigentliche Anwendung sehr gut mit relativ wenig RAM und der relativ bescheidener Rechenleistung auskommen. Bei dem bisher verfügbaren Angebot an µC musste man oft zwingend auf Dickschiffe wie M4 oder gar M7 ausweichen (ggf. mit angeflanschtem RAM), nur um genug RAM für das Display zu bekommen und eine Hardware, die es ansteuern kann. D.h.: man bezahlt für etwas, von dessen Leistung man nur einen Bruchteil wirklich benötigt, nur um dieses eine Feature realisieren zu können. Genau auf diese Lücke des Marktes zielt der PasPi Pico (bzw. der RP2040). Und ich wage vorherzusagen, dass er erfolgreich sein wird, weil es sehr viele alte Designs im Industriebereich gibt, deren Funktionalität im Kern erhalten bleiben soll, deren Anmutung und Bedienung für den potentiellen Käufer aber modernisiert werden soll. Nach all dem Lobgehudel muss ich aber auch noch eins sagen: Warum, zum Teufel, haben die Typen nicht alle 6 SRAM-Bänke mit 64k ausgestattet? Das würde noch eine Displayklasse höher erschließen (ohne Kunstgriffe). HIER wurde meiner Meinung nach am falschen Ende gespart. Kann aber auch sein, dass das sehr wohl bedacht wurde und irgendwann in nicht allzu ferner Zukunft noch ein entsprechender Chip folgt. Vermutlich sogar aus demselben Prozess, wenn er denn gut eingelaufen ist und die Ausbeute hinreichend hoch...
c-hater schrieb: > Und ich wage vorherzusagen, dass er erfolgreich sein wird, weil > es sehr viele alte Designs im Industriebereich gibt, deren > Funktionalität im Kern erhalten bleiben soll, deren Anmutung und > Bedienung für den potentiellen Käufer aber modernisiert werden soll. Aber dafür nehme ich doch keinen mini-Elefanten, dem man an allen Ecken und Enden das Fliegen beibringen muss. Ein STM32F730 oder H730 kostet nur wenig mehr, spart aber jede Menge Entwicklungszeit - gerade im industriellen Bereich. Wie ich es sehe, gibt es ein neues, billiges Spielzeug, und die 'ganze gelangweilte Entwicklerwelt' sucht jetzt nach Anwendungen dafür. Zum Beispiel VGA: Auch eine schöne Spielerei, aber wo gibt es dafür noch passende Monitore? TFT ist angesagt und dafür ist das Timing völlig unkritisch. Per DMA braucht es auch kaum CPU-Belastung. chris_ schrieb: > einen Sigma-Delta-Modulator als DAC-Ersatz zu programmieren. Du meinst wohl ADC? Das mag sicherlich dort interessant sein, wo hohe Stückzahlen gebraucht werden. Mag ja sein, daß der RP2040 mal als Chip verfügbar sein wird. Aber für UNS ist das doch eher belanglos. Man müßte mal den Transputer erfinden ;-)
Naja für mehr als ein QVGA Display taugt der interne RAM aber auch nicht. Und internes RAM macht den Chip teuer. Viel wird da nicht gehen. Die klassischen Hersteller bieten da auch was Skalierbarkeit angeht Vorteile. Das mag bei den Raspi Controllern aber noch kommen. So ganz verstehe ich die Motivation für einen eigenen Controller trotzdem nicht. Außer der Bindung der Nutzer. Beim Linux-Pi funktioniert das über die gute Software die eben erstmal nur auf dem Dingern läuft. Wenn sie einen beliebigen Controller verwendet hätten wäre am Serieneinsatz nix verdient. So ist der Controller der Dongle für die Software. Also genau wie beim großen Pi auch. Matthias
m.n. schrieb: > Zum > Beispiel VGA: Auch eine schöne Spielerei, aber wo gibt es dafür noch > passende Monitore? TFT ist angesagt und dafür ist das Timing völlig > unkritisch. Per DMA braucht es auch kaum CPU-Belastung. Naja, diese PIO-Einheit ist ja gerade dafür gut, DMA und MCU-Aktivitäten mit trivialen GPIO-Ausgaben zu verknüpfen. Das funktioniert für die Ausgabe an ein paralleles (DPI) LCD genauso, wie für das VGA aus dem Beispiel. Bloß, dass man nicht diese DA-Wandler für Arme benötigt, dafür aber ein zusätzliches Signal (DE oder HENAB oder wie auch der Display-Hersteller es nun gerade tituliert hat). That's the trick. Mindestens so wichtig aber die Verfügbarkeit von genug internem RAM für den Framebuffer. Der eine Aspekt wird in den bisher verfügbaren µC typisch von einer speziellen Einheit erledigt, die halt in den kleinen Teilen mit M0/M0+ nicht existiert. Und der andere Aspekt ist halt die Menge an RAM, die ebenfalls in den kleinen Teilen nicht hinreichend ist. Beides zwingt zu den grossen Schiffen, die aber ansonsten für die Anwendung meist völlig überdimensioniert (und zu teuer) sind. Das genau ist der Punkt.
>>Bei der Implementation im PIO wird es wohl eher ein Thema sein, dass es >>keine Möglichkeiten zur Addition gibt. Wahrscheinlich wäre es einfacher, >>die CPU einen Bitstream berechnen zu lassen, den die PIO dann ausgibt. > > Das habe ich beim Betrachten des Befehlssatzes auch zuerst gedacht: > keinerlei Rechenoperationen. > Was relativ offensichtlich ist, ist dass man mit der PIO einen TOGA-Computer realisieren kann. Der ist allerdings nur eine Bounded-storage machine und damit nicht Turing-vollständig. Was fehlt ist ein indirekter Adressiermodus. Ist der PIO-Code selbstmodifizierbar? https://esolangs.org/wiki/TOGA_computer > Aber wie beim Design Deiner *MininmalCPU gibt es doch meistens > Möglichkeiten, die einem nicht sofort ins Auge springen: Evtl. könnte man mit der PIO einen PWM-Ausgang realisieren, der per DMA nachgeladen wird? Dann würde man einige bits (ENOB) per PWM realisieren, wenn man mehr auflösung braucht, müsste die CPU noiseshaping machen und die resultierenden PWM-Daten im Speicher ablegen.
> So ganz verstehe ich die Motivation für einen eigenen Controller > trotzdem nicht. Sie wollten wohl etwas Arduino-artiges, das mit Python programmiert werden kann. > Beispiel VGA: Auch eine schöne Spielerei, aber wo gibt es dafür noch > passende Monitore? TFT ist angesagt Die PIOs sind halt flexible I/O-Blöcke. Damit kann man VGA-Ausgabe machen, genauso gut aber auch TFT oder WS2812 oder I2S oder schnelle externe ADCs[1] oder ... Sowas ist mir lieber als dutzende von festen HW-Blöcken. [1] Bin mal gespannt, wann das erste MiniScope mit 50MS/s auftaucht ;-)
> Evtl. könnte man mit der PIO einen PWM-Ausgang realisieren, der per DMA > nachgeladen wird? 8 DMA-fähige PWM-Kanäle sind bereits vorhanden - dafür brauchst du nichtmal die PIOs.
foobar schrieb: >> Evtl. könnte man mit der PIO einen PWM-Ausgang realisieren, der per DMA >> nachgeladen wird? > > 8 DMA-fähige PWM-Kanäle sind bereits vorhanden - dafür brauchst du > nichtmal die PIOs. Na dann braucht man die PIO in der Tat nicht, um einen DAC zu ersetzen. Also Logicanalyzer sollte sich der Block aber sehr gut eignen. Dagegen sieht der Low-End Saeleae mitsamt clones eher mager aus.
>Na dann braucht man die PIO in der Tat nicht, um einen DAC zu ersetzen.
Dann musst solltest Du fragen, warum bei Audio-DACs keine PWM eingesetzt
wird.
Beitrag #6561532 wurde von einem Moderator gelöscht.
chris_ schrieb: > Dann musst solltest Du fragen, warum bei Audio-DACs keine PWM eingesetzt > wird. Wird doch gemacht, z.B. bei Class-D Verstärkern. Sigma-Delta Wandler haben natürlich trotzdem den Vorteil, dass sie bei geringerer clock ein besseres SNR bieten. Man sollte natürlich berücksichtigen, dass dass bei einem Digital-IC wie dem RP2040 kaum eine brauchbar saubere Versorgungsspannung zu erreichen ist. Die 120dB Audio-CODEC lagert man da lieber aus.
:
Bearbeitet durch User
> Dann musst solltest Du fragen, warum bei Audio-DACs keine PWM eingesetzt > wird. Soviel ich weiß, ist der analoge Audioausgang beim RaspPi 3 und 4 über PWM und einen popeligen RC-Filter implementiert ;-)
foobar (Gast) >> Dann musst solltest Du fragen, warum bei Audio-DACs keine PWM eingesetzt >> wird. >Soviel ich weiß, ist der analoge Audioausgang beim RaspPi 3 und 4 über >PWM und einen popeligen RC-Filter implementiert ;-) Deshalb hatte schon der Raspberry 1 eine ziemlich schlechte Kritik des Audioausgangs in der CT bekommen. Tim . (cpldcpu) >Man sollte natürlich berücksichtigen, dass dass bei einem Digital-IC wie >dem RP2040 kaum eine brauchbar saubere Versorgungsspannung zu erreichen >ist. Die 120dB Audio-CODEC lagert man da lieber aus. Niemand sagt, dass man mit dem Chip eine High-End-Hifi Anlage bauen soll, wobei man den Digitalausgang auch an einen separat versorgten Treiber anschließen könnte. Der Parallax Propeller verwendet die Modulatoren für die DACs jedenfals ausgiebig und die Verwendung von PWM würde zu Mischprodukten im Frequenzbereich führen, wie hier im Forum von Jürgen S. schon mehrfach erörtert.
chris_ schrieb: > Der Parallax Propeller verwendet die Modulatoren für die DACs jedenfals > ausgiebig und die Verwendung von PWM würde zu Mischprodukten im > Frequenzbereich führen, wie hier im Forum von Jürgen S. schon mehrfach > erörtert. Ich kenne die Begründungen von Jürgen S. nicht, aber hier ist die Doktorarbeit von Karsten Nielsen: https://www.osti.gov/etdeweb/servlets/purl/10147859 In Kapitel 3 erklärt er die Grundlagen, um einen geeignetes Audio-PWM Signal zu erzeugen. Kapitel 7 und 9 sind bei nichtidealen Rekonstruktionsfiltern relevant. Auf Basis dieser Arbeit ist icepower.dk gegründet worden, die immer noch führend in Class-D Verstärkern sind. Übrigens eine außergewöhnlich gut geschriebene Doktorarbeit. (Wahrscheinlich sollte hier mal jemand eine Library für den Pi normal und Pico entwickeln...) Ein direkter Sigma-Delta DAC liefert bei vergleichbarer Taktrate immer noch bessere Ergebnisse, aber wenn man high-speed PWM aber dafür keinen freien Kern zur Verfügung hat, ist es vielleicht nicht der ideale Ansatz.
:
Bearbeitet durch User
Habe gerade gesehen, dass es neben der PIO noch ein Peripheral gibt, das für Audio nützlich ist: Den Interpolator (Sektion 2.3.1.6)
>Nun stellt sich also die Frage, wer es als erster schafft, einen >Sigma-Delta-Modulator als DAC-Ersatz zu programmieren. Hier das Ergebnis: https://github.com/tierneytim/Pico-USB-audio
foobar schrieb: > Bin mal gespannt, wann das erste MiniScope mit 50MS/s auftaucht ;-) Also ein 100 MHz Logikanalysator ist schonmal vorhanden: https://github.com/gusmanb/logicanalyzer
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.