Pi Pico auf einer ISA-Karte (Pi Pico on an ISA Board) - PicoMEM - kennt das jemand?

  • Siehe https://forum.vcfed.org/index.…-on-an-isa-board.1241199/ ,

    oder auch https://www.vogons.org/viewtopic.php?f=46&t=94320 ...


    Nennt sich "PicoMEM" und soll Speicherkarten (EMS-Speicher, DOS plus 64KB, usw.) und Laufwerke (à la XT-IDE) emulieren.

    Kennt jemand das Projekt von FreddyV genauer?

  • Hab' ich gelesen, fand ich interessant. "Nur" für Speichererweiterungen fast schon ein bißchen zu aufwendig. Aber alles andere ist ja "nur" Sache der Pico-Software - Sehr vielversprechend.


    Allerdings: Eine überschlagsmäßige Rechnung, ob der Pico denn auch bei einem Bus-Interface zu einem (z.B.) V20 mit 8 MHz noch nachkommen könnte, hat da ein paar Zweifel aufkommen lassen. Wie der Designer schreibt, hat er nur mit der Original-Busfrequenz von 4.77 MHz bisher getestet.

  • [...]

    Allerdings: Eine überschlagsmäßige Rechnung, ob der Pico denn auch bei einem Bus-Interface zu einem (z.B.) V20 mit 8 MHz noch nachkommen könnte, hat da ein paar Zweifel aufkommen lassen. Wie der Designer schreibt, hat er nur mit der Original-Busfrequenz von 4.77 MHz bisher getestet.

    Gibt es (bin Laie bzgl. Raspberry Modelle) nur ein Pi Pico (mit nur einer Geschwindigkeit) ?

    Ansonsten käme es doch auf ein Versuch an, oft kann man auch mit Software-Optimierung noch was herausholen...


    P.S.: Vielleicht hätte man einen Espressif ESP32-PICO-KIT (ESP32-S3 Dual Core bis 240MHz mit mindestens 8MB Flash, max. 32MB) nehmen sollen...

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • [...]

    Allerdings: Eine überschlagsmäßige Rechnung, ob der Pico denn auch bei einem Bus-Interface zu einem (z.B.) V20 mit 8 MHz noch nachkommen könnte, hat da ein paar Zweifel aufkommen lassen. Wie der Designer schreibt, hat er nur mit der Original-Busfrequenz von 4.77 MHz bisher getestet.

    Gibt es (bin Laie bzgl. Raspberry Modelle) nur ein Pi Pico (mit nur einer Geschwindigkeit) ?

    Ansonsten käme es doch auf ein Versuch an, oft kann man auch mit Software-Optimierung noch was herausholen...

    Den Pico gibt's nur mit nominal nur mit max. 133MHz. Es gibt allerdings skrupellose Leute, die das Ding mit leichter Überspannung mit bis zu 250MHz betreiben und damit anscheinend sogar durchkommen....

  • Überspannung? Das wird eigentlich in der Firmware festgelegt. Die PicoMite ( https://geoffg.net/picomite.html ) kann mit einem einfachen Befehl übertaktet werden.

    Auszug aus dem Manual:


    "Clock Speed


    By default the clock speed for the PicoMite is 133MHz which is the recommended maximum for the Raspberry

    Pi Pico. However, by using the OPTION CPUSPEED command, the CPU can be overclocked up to 378MHz

    or run slower to a minimum of 48MHz. Nearly all tested Raspberry Pi Picos have worked correctly at 378MHz

    so overclocking can be useful."


    :)Franky

  • Anscheinend laufen die Dinger übertaktet stabiler, wenn man ihnen ein bißchen mehr Saft zukommen lässt. Das kann man natürlich nicht per Register festlegen.

  • Den Pico gibt's nur mit nominal nur mit max. 133MHz. Es gibt allerdings skrupellose Leute, die das Ding mit leichter Überspannung mit bis zu 250MHz betreiben und damit anscheinend sogar durchkommen....

    In der Arduino-IDE nutze ich am Pico fuer RunCPM auch 250Mhz ohne eine hoehere Spannung anzugeben.
    Da gibt es im Menue zwar hoehere Taktraten, aber die werden nicht unterstuetzt - d.h. der Pico startet dann nicht.


    Bei 250Mz merkt man aber auch keine hoehere Erwaermung der CPU (wird nicht mal Handwarm), deshalb mach ich mir bei 250Mhz keine Sorgen - auch wenn es fast die doppelte Rate ist wie vorgegeben.

  • Immer wieder interessant, wie ein Mikrocontroller mit der vielfachen Leistung des gesamten Computers nicht genug Leistung hat und nur einen Bruchteil des PCs zu emulieren.

    8 MHz und 133 Mhz hätte ich erwartet, dass das funktioniert

    ::solder::Ich "darf" beruflich basteln...

  • Anscheinend laufen die Dinger übertaktet stabiler, wenn man ihnen ein bißchen mehr Saft zukommen lässt. Das kann man natürlich nicht per Register festlegen.

    Aber wo willst Du die Spannung erhöhen? Auf den Boards ist ein 3V3 Regler - den müsstest Du ja dann manipulieren. Am Eingang liegen ja ohnehin 5V an...


    Hier sind ein paar Erfahrungsberichte zum Übertakten der PicoMite: https://www.thebackshed.com/fo…opic.php?FID=16&TID=16020


    :)Franky

  • Kleinen Widerstand / Shottky/Silizium-Diode zwischen dem GND-Bein des Längsreglers und GND und schon hat das Ding +0,2V/+0,7V. Das hat schon beim LM78xx geklappt.

    ::solder::Ich "darf" beruflich basteln...

  • Kleinen Widerstand / Shottky/Silizium-Diode zwischen dem GND-Bein des Längsreglers und GND und schon hat das Ding +0,2V/+0,7V. Das hat schon beim LM78xx geklappt.

    "Fast" eine gute Idee - das Teil hat aber KEINEN Längsregler, sondern einen Schaltregler (RT6150B-33GQW) mit einem festen Ausgang von 3V3. Man kann zwischen PFM- und PWM-Mode umschalten und den ganzen Regler enablen oder disablen, die Ausgangsspannung aber nicht ohne weiteres verändern. Abgesehen davon hat das Ding ein "WDFM" Package, also keine herausgeführten Pins, sondern nur Pads unterhalb des Gehäuses...


    :)Franky

  • Aha, wieder ein Projekt "ich bastele mal was, weiß aber nicht, wozu" ;)

    Wenn ich das lese, erschließt sich mir der Sinn dieses Teils überhaupt nicht. Man kann definitiv keine altbekannten I/O-Karten damit emulieren, sonder ist darauf angewiesen, auf PC-Seite passende Treiber zu schreiben.

    On this board, I did put:

    - Connection to the full Memory and I/O BUS

    - One IRQ

    - No DMA

    - MicroSD Connector

    - 8Mb of PSRAM


    Vor allem die Einschränkungen bezüglich IRQ und DMA sind ein k.o.-Kriterium für alles außer Speicher.

    Echte Laufwerke kann es nicht emulieren. Es ist darauf angewiesen, einen eigenen BIOS-Code mitzuliefern, um das ganze dann per Polling (uff, das auf einem XT) in den Hauptspeicher zu überführen. Also nix mit XT-IDE, Floppy und Co.

  • Eigentlich verstehe ich deine Kritik nicht ganz. Ein IRQ reicht eigentlich, um von der Karte aus dem PC ein "kuck mal" zu signalisieren - Polling ist dann nicht notwendig. Der Pico kann ein Register zur verfügung stellen, das dem PC nach einem IRQ signalisiert, was genau zu tun ist.


    Genauso sehe ich keinen Grund für einen DMA-Kanal zur Karte: Wenn der gesamte Memory- und I/O- Adressraum für den Pico zugänglich ist, sehe ich keinen Grund, "langsame" PC-DMA zu verwenden, wenn der Pico sich kurz den Bus greift und dann wesentlich schneller schreiben und lesen kann.


    Das ganze "widerspricht" ein bißchen dem klassischen Konzept einer ISA-Erweiterungskarte, das stimmt. Aber wenn man schon einen modernen Controller auf der Karte hat, sollte man ihn auch verwenden. Treiber auf der PC-seite sind dann zwar vollständig anders als im "klassischen" Ansatz, aber u.U. auch wesentlich einfacher. Die SOftware auf der Pico-Seite wird halt komplexer.

  • Als was Neues ist das ok. Man kann damit aber wie gesagt nichts Bekanntes emulieren. Das Ding wird kein moderner FDC-, HDC- oder Netzwerkkartenersatz sein können. Auch Standard-I/O (seriell, parallel) geht nicht. Das Ding heißt nicht umsonst wohl PicoMEM, nur Speichergeschichten sind wohl halbwegs implementierbar. Und dann ist auch nur EMS und ggf. ROM sinnvoll. Aber dazu braucht es wiederum nicht unbedingt einen µC.

  • Kleinen Widerstand / Shottky/Silizium-Diode zwischen dem GND-Bein des Längsreglers und GND und schon hat das Ding +0,2V/+0,7V. Das hat schon beim LM78xx geklappt.

    "Fast" eine gute Idee - das Teil hat aber KEINEN Längsregler, sondern einen Schaltregler (RT6150B-33GQW) mit einem festen Ausgang von 3V3. Man kann zwischen PFM- und PWM-Mode umschalten und den ganzen Regler enablen oder disablen, die Ausgangsspannung aber nicht ohne weiteres verändern. Abgesehen davon hat das Ding ein "WDFM" Package, also keine herausgeführten Pins, sondern nur Pads unterhalb des Gehäuses...


    :)Franky

    Bin von einem Arduino-Design ausgegangen und dachte nicht, dass hier ein Schaltregler von 5V auf 3,3V zum EInsatz kommt. Dann musst du natürlich einen Spannungsteiler an die Feedback-Schaltung bauen

    ::solder::Ich "darf" beruflich basteln...

  • Um was wetten wir?
    Feedbackleitung ist markiert (glücklicherweise ist die nicht unterm Chip verbunden, sondern mit großer Schlaufe. Die schneide ich dir auf und packe dir 2 SMD-Kondensatoren hin (rechts sollte GND sein), fertig ist der Spannungsteiler.

    ::solder::Ich "darf" beruflich basteln...

  • Nachtrag:


    Hab' mir schon gedacht, dass es Blödsinn ist einfach nur die Versorgungsspannung des Chips zu erhöhen. Die Core-Spannung ist das Ausschlaggebende! ...und die erzeugt sich der RP2040 selber und kann in Firmware eingestellt werden. So wird es wohl bei der PicoMite gemacht:

    Code
    if(Option.CPU_Speed>200000)vreg_set_voltage(VREG_VOLTAGE_1_25);  // Std default @ boot is 1_10

    :)Franky

  • Einen internen Spannungsregler und eine zusätzliche Core-Spannung? Beachtlich für so ein kleines Teil. Benötigen bei erhöhtem Takt die anderen nicht-Core-Bestandteile nicht auch mehr Spannung?

    ::solder::Ich "darf" beruflich basteln...

  • Wenn für den RP2040 die Core-Spannung und auch die Frequenz per Software erhöht werden kann, wieso wurde dass dann nicht für die PicoMEM-Karte in Betracht gezogen, um auch noch die 7,1 oder 8 MHz ISA-Bus Frequenz zu schaffen?

    "The biggest communication problem is we do not listen to understand. We listen to reply." - Stephen Covey


    Webseite und Blog ist immer noch - seit fast 20 Jahren - online.

  • Wenn für den RP2040 die Core-Spannung und auch die Frequenz per Software erhöht werden kann, wieso wurde dass dann nicht für die PicoMEM-Karte in Betracht gezogen, um auch noch die 7,1 oder 8 MHz ISA-Bus Frequenz zu schaffen?

    Hi,


    I did it, it is running at 270MHz.

    The problem I highlightes was for the ISA bus Frequency, not the CPU one. The PicoMEM can work on 8MHz 8086/V20 as they use a 4MHz ISA.

    This limitation is there because I did not have time to test it yet.

  • Hi,


    Sorry to write in English, I am french :)


    I am the PicoMEM author, and I see lot of question here that only me can answer.

    I will answer to some here and to other individually.


    Overclock the Pi Pico is really simple, there is a register to set different frequency and the core voltage is also configurable by Software.

    The PicoGUS successfully work with the cores at 400MHz.....

    Thi Pico has no problem at all at 240/270MHz.


    By Board does not emulate an HDD or a Floppy, it is doing "Better", it does emulate the int13h almost entirely, the PicoMEM BIOS send the registry values to the Pi Pico, the Pi Pico give orders to the PC BIOS (Memory block copy) then return the registry result.

    Then, my Board can act as a "Pure" hardware emulator with I/O and MEM access control, or Interrupt "emulation" with DOSBOX Code...


    If somebody want to emulate an MFM Controller with the PicoMEM, why not.... but I will not spend time on this as just execute DOSBOX Code give acces to much more easily.


    I saw somebody writing that "It is not good, it does not emulate the hardware itself"

    The PicoMEM has no "Real Goal", anything can be done as it is software.

    It can't emulate a Floppy controller, just because the Floppy controller ALREADY exist on the PC....

    Also, nobody complain that an XTIDE does not emulate in hardware an MFM Controller....

    Then, XTIDE is "Better"

    But... XTIDE is First an int13h BIOS that give access to an IDE interface HDD.

    The PicoMEM is the same, but further, because the Int13h code is in the Pico, not in the PC ROM...


    I did read about Serial port and other... But what for ? Why emulate a serial port when we can do Wifi, Serial through USB or plus directly any USB HID (Mouse/KB/Joystick)


    The idea for the picoMEM come from simple frustration :

    We see TI99, AtariST, Amiga, C64 or ZXSpectrum with SDCard reader, but the PC XT had only the XTIDE that is really complex to use...

    Then, came the PiSTORM, when a 4 core 4GHz CPU is used to emulate a 68000 through a FPGA.....


    I did think it was time for the PC to enter the 21th century :)


    Something that was not explained is that the PicoMEM has its own BIOS interface/Menu, then, everything is automatic.

    It detect the Real RAM/ROM MAP and can automatically extend the PC.

    For the HDD/Floppy "Emulation" the images can be selected from .IMG files stored on a MicroSD.

    and everything can be disabled...

    We can have the PicoMEM doing nothing, only Part of the RAM extention, EMS, Floppy or disk

    If there is a problem because the PicoMEM Memory does not support DMA, it can be disabled if you need to use a floppy (And the software place its buffer in the PicoMEM RAM) It take some seconds only :)


    The Board is named PicoMEM because it is the first one that is interfacing with the full ISA MEMORY address space.

    The main goal was to do Memory entention, but it can do much more....

  • Das ist genial, verfolge den Thread schon einen Augenblick. Theoretisch kann man darüber jede Art von ISA-Karten emulieren, also z.B. auch eine VGA- oder Soundkarte.

    Hi,


    To emulate a board, the equivalent output need to be present, VGA connector for Video emulation or Audio Jack for sound.

    There is a limitation in the Pi Pico I/O, so all can not be there.

    Anyway, for example, video frame buffer can be captured and sent through network... so a Minimal video emulation, for debug can be done.

    For Audio, If you check the board carefully, you can see a connector on the top of the Board... :)

    It can do Midi as well, or other things.

  • P.S.: Vielleicht hätte man einen Espressif ESP32-PICO-KIT (ESP32-S3 Dual Core bis 240MHz mit mindestens 8MB Flash, max. 32MB) nehmen sollen...

    Hi,


    I used the Pico because I wanted initially to use a Pi, but it was not available, need an FPGA and was overkill....

    The Pico run in Dual Core 270MHz and Do PSRAM at 133MHz, MicroSD at 30MHz at the same time. So, it is more than sufficient :)

  • Immer wieder interessant, wie ein Mikrocontroller mit der vielfachen Leistung des gesamten Computers nicht genug Leistung hat und nur einen Bruchteil des PCs zu emulieren.

    8 MHz und 133 Mhz hätte ich erwartet, dass das funktioniert

    I don't understand what you mean...

    The problem is not the CPU power of the Core, but the Reaction time of the GPIO to be able to react in some nano seconds delay/Signals.

    If you check the PiSTORM, they used an expensive FPGA to manage the I/O, because the Pi3 and Pi4 "Can't" do it reliably.

    Then, what the PicoMEM does with a 0.8€ CPU without FPGA is quite good.


    Also, the Pi Pico has an M0 ARM Core, it even does not have division instructions. It is not "As fast" as this.

  • Hab' ich gelesen, fand ich interessant. "Nur" für Speichererweiterungen fast schon ein bißchen zu aufwendig. Aber alles andere ist ja "nur" Sache der Pico-Software - Sehr vielversprechend.


    Allerdings: Eine überschlagsmäßige Rechnung, ob der Pico denn auch bei einem Bus-Interface zu einem (z.B.) V20 mit 8 MHz noch nachkommen könnte, hat da ein paar Zweifel aufkommen lassen. Wie der Designer schreibt, hat er nur mit der Original-Busfrequenz von 4.77 MHz bisher getestet.

    Hi,


    I tested on a 8086 8MHz PC, with a 4MHz ISA Bus, I did not talk about the CPU frequency, as it is an ISA Board.

    Even a 486 can have a 8/10MHz ISA.


    I checked on a 16MHz 286, it is working, not totally yet because the 286 can read/Write 16Bit with only one ALE Signal.

    It is again only a matter of software, not a timing problem.

  • Hi,


    I know what I am doing.

    When available, everybody will be able to do what they want with it, I don't force anybody.


    With an IRQ and a ROM Emulation/Its own ROM the board can use any Hardware and Software IRQ.

    So, there is no limitation there.


    The abscence of DMA signal does not mean it can't do DMA...

    The board can capture what is sent to the DMA controller and emulate a DMA cycle through the IRQ and the BIOS.


    See what I wrote above for the Floppy emulation and XTIDE...

    My board do exactly like an XTIDE, but emulate the BIOS itself :)

    The XTIDE does not emulate an MFM because it does not have to.

    Why the PicoMEM should emulate an IDE, that did not exist on XT back in the day ? It is only a waste of time and risk of bug added.