Shop OBEX P1 Docs P2 Docs Learn Events
Prop2 Feature List — Parallax Forums

Prop2 Feature List

Hello all!
Did some cursory searching, and all of the lists I've found seem to be upwards of a couple of years old, is there a list anywhere of the current feature set?
«13

Comments

  • Sweet!
    Thanks!
  • Thank you so much for posting this! Fantastic info and I'm having a great time reading through it! Glad it's all in one place now.
  • cgraceycgracey Posts: 14,210
    DavidZemon wrote: »
    Thank you so much for posting this! Fantastic info and I'm having a great time reading through it! Glad it's all in one place now.

    David, thanks for going over the doc and making suggestions/edits. I'll get in there soon and process them all.
  • Very nice! I've been reading this. So, cog memory will be a slice of hub memory? If so, it will be ingenious, yet simple. Also, the smart pins are very powerful.
  • evanhevanh Posts: 16,045
    That's interesting, saving/printing to PDF now generates a file size of 243kB instead of the previous 842.5kB in middle of July. The content doesn't appear any different so I must conclude Google has revamped it's PDF generator to produce leaner output.
  • evanhevanh Posts: 16,045
    edited 2016-08-08 11:21
    samuell wrote: »
    Very nice! I've been reading this. So, cog memory will be a slice of hub memory? If so, it will be ingenious, yet simple. Also, the smart pins are very powerful.

    That might be a somewhat optimistic interpretation of memory spaces. Data accesses are still the same as the Prop1. Only the instruction pointer has that contiguous mapping arrangement. Also, to keep addressing consistent between data and code, there is no address translation on instruction fetches from HubRAM so it means the first 2kB/4kB (Is LUTRAM mapped in? I'm not sure.) (There is a slight word size trick that inherently reduces the address range. And yes, since it's 1024 addresses, LUTRAM is mapped.) 1kB of HubRAM is not executable space.

    SmartPins are indeed crazy powerful. It's gonna be decades of new uses in those. :)
  • potatoheadpotatohead Posts: 10,261
    edited 2016-08-08 23:55
    samuell wrote: »
    Very nice! I've been reading this. So, cog memory will be a slice of hub memory? If so, it will be ingenious, yet simple. Also, the smart pins are very powerful.

    They remain separate memory spaces. This is important because it allows for the COGS to operate independently, like P1 does. So we get that object benefit we find useful and easy.

    Interrupts, memory, the streamer, etc... are all local to a given COG. This means we can build more powerful objects and still use them together easily like we do in P1. Polling, non interrupt P1 style methods are there too. Not having this all be global avoids the need for an OS and the complex interrupt kernel type code associated often needed in other systems.

    The HUB memory and Cordic math is global as are the pins.

    A COG may run code in its local RAM, P1 style, or can run code from other memory, such as its look up table (LUT) RAM, or the HUB.

    In that case, instructions come from that RAM, making the COG RAM a big pile of registers!

    LMM, from the P1, is replaced by this ability, called HUBEXEC.

    Multiple COGS can run the same code from HUB directly, or copy it to their local RAM P1 style.

    This gives us big program capability with native hardware support. Instructions and addressing have been extended for this to all make sense.

  • Thanks potatohead for a nice summary!
  • :D You are welcome.

    Man, there is a whole lot more. This chip is gonna rock!

    I'm about to return to P2 land. Probably will on the next FPGA update. Want to try shared LUT and see if all my sprite and pixel code works. Also video. Think I have a good solution for color shimmer on composite.

    We are all gonna see increasingly good times from here.
  • Gotta thank you all too.

    First, for putting up with me. Second, all this chatter, games, language, programming, circuit fun really sunk in! When I started this Propeller adventure, I set IRIX aside, kept my retro computers and returned to embedded after 20 some years away.

    My P1 project is complex, driving inductive loads and requires a lot of timing and I2C.

    ...and the Spud is getting it done. Work project, not hobby. Several have been amazed at small SPIN and PASM code bits doing stuff that normally takes a lot more overall.

    Now I always have been convinced this P2 adventure is worth it, but it's nice to have some basic confirmation.

    Wish I had P2, just because, but I don't need it at all.

    Can't share, but I will when I can.


  • I wonder if someone can give me a "Dummies" run down regarding the dithered 16bit DAC / PWM, please?
  • potatohead wrote: »
    samuell wrote: »
    Very nice! I've been reading this. So, cog memory will be a slice of hub memory? If so, it will be ingenious, yet simple. Also, the smart pins are very powerful.

    They remain separate memory spaces. This is important because it allows for the COGS to operate independently, like P1 does. So we get that object benefit we find useful and easy.

    Interrupts, memory, the streamer, etc... are all local to a given COG. This means we can build more powerful objects and still use them together easily like we do in P1. Polling, non interrupt P1 style methods are there too. Not having this all be global avoids the need for an OS and the complex interrupt kernel type code associated often needed in other systems.

    The HUB memory and Cordic math is global as are the pins.

    A COG may run code in its local RAM, P1 style, or can run code from other memory, such as its look up table (LUT) RAM, or the HUB.

    In that case, instructions come from that RAM, making the COG RAM a big pile of registers!

    LMM, from the P1, is replaced by this ability, called HUBEXEC.

    Multiple COGS can run the same code from HUB directly, or copy it to their local RAM P1 style.

    This gives us big program capability with native hardware support. Instructions and addressing have been extended for this to all make sense.
    Thanks for clearing that! Also, I didn't know what HUBEXEC meant, although I've heard the term before, and I appreciate your explanation on this too.

    Kind regards, Samuel Lourenço
  • AribaAriba Posts: 2,690
    edited 2016-08-09 17:22
    Mickster wrote: »
    I wonder if someone can give me a "Dummies" run down regarding the dithered 16bit DAC / PWM, please?

    There is an 8 bit analog DAC for every pin. The LSB of this DAC gets PWMed with an 8bit value so that the resolution increases to 16bit (but at a lower frequency).
    You just write a 16bit value and the higher 7 bits go to the DAC and the lower 9 bits go to a PWM modulator that modulates the LSB.
    The PWM is either just 512 steps in PWM mode, or the PWM is modulated with a Noise signal in dithered mode, so that the 1/512 PWM frequency gets blurred. This may be better for Audio or for high sample frequencies, not synced to the PWM frequency.

    Andy
  • The features list has me very excited. but one thing in particular stood out: it can function as a USB 2.0 host or device. I don't know really anything about USB communication protocol, so i could be completely wrong about this, but does that mean the Propeller could function as a 4 port USB hub?

    If so, this could majorly cut down on the part requirements for one of my upcoming projects.
  • jmgjmg Posts: 15,175
    threadz wrote: »
    The features list has me very excited. but one thing in particular stood out: it can function as a USB 2.0 host or device. I don't know really anything about USB communication protocol, so i could be completely wrong about this, but does that mean the Propeller could function as a 4 port USB hub?

    If so, this could majorly cut down on the part requirements for one of my upcoming projects.

    USB code is still being tested, but P2 can (in theory) do Host and Device, on a one-per-COG basis.

    Whether you can call that a HUB, may depend on the details - Google suggests HUB should not delay by more than 36 bit times.
    I would expect 1 Device & 4 Hosts should be possible, using 5 COGs.

  • Ariba wrote: »
    Mickster wrote: »
    I wonder if someone can give me a "Dummies" run down regarding the dithered 16bit DAC / PWM, please?

    There is an 8 bit analog DAC for every pin. The LSB of this DAC gets PWMed with an 8bit value so that the resolution increases to 16bit (but at a lower frequency).
    You just write a 16bit value and the higher 7 bits go to the DAC and the lower 9 bits go to a PWM modulator that modulates the LSB.
    The PWM is either just 512 steps in PWM mode, or the PWM is modulated with a Noise signal in dithered mode, so that the 1/512 PWM frequency gets blurred. This may be better for Audio or for high sample frequencies, not synced to the PWM frequency.

    Andy

    Many thanks, Andy.

    What a spectacular spec :-)


  • RaymanRayman Posts: 14,768
    I think we have USB 1.1 low speed and full speed. No USB 2.0.
  • Apologies if this has been answered elsewhere but when the P2 shows up, what programming tools are expected to be available?
  • For programmiing tools, we already have a Spin to LMM/PASM compiler (the output is a lot like PropBASIC), Tachyon Forth, and a simple C compiler. I'm sure a traditional Spin interpreter will be forthcoming (actually there may already be a port of the P1 one).
  • jmgjmg Posts: 15,175
    Rayman wrote: »
    I think we have USB 1.1 low speed and full speed. No USB 2.0.

    Certainly No High Speed USB (480M), which is part of USB 2.0
    There are other USB 2.0 details, that could be supported by P2
    https://en.wikipedia.org/wiki/USB#USB_2.0

  • ersmith wrote: »
    For programmiing tools, we already have a Spin to LMM/PASM compiler (the output is a lot like PropBASIC), Tachyon Forth, and a simple C compiler. I'm sure a traditional Spin interpreter will be forthcoming (actually there may already be a port of the P1 one).
    LMM? Doesn't your P2 compiler use hubexec?

  • David Betz wrote: »
    ersmith wrote: »
    For programmiing tools, we already have a Spin to LMM/PASM compiler (the output is a lot like PropBASIC), Tachyon Forth, and a simple C compiler. I'm sure a traditional Spin interpreter will be forthcoming (actually there may already be a port of the P1 one).
    LMM? Doesn't your P2 compiler use hubexec?

    Sorry, yes, on P2 it uses hubexec. The LMM is on P1.

  • Wow, reading all of this I feel the same now as when I moved on from the BS2 to the Propeller.... Amazement, bewilderment, and a realization that I'd gone off the deep end again....
  • 3 prioritized interrupts that trigger on selected events
    Hidden debug interrupt for single-stepping, breakpoint, and polling

    It does have interrupts? So then a memory protection/management unit is possible?
  • m00tykins wrote: »
    3 prioritized interrupts that trigger on selected events
    Hidden debug interrupt for single-stepping, breakpoint, and polling

    It does have interrupts? So then a memory protection/management unit is possible?

    Nope. Not a true, hardware-enforced one, anyhow.
  • m00tykins wrote: »
    3 prioritized interrupts that trigger on selected events
    Hidden debug interrupt for single-stepping, breakpoint, and polling

    It does have interrupts? So then a memory protection/management unit is possible?
    For that you'd need a translation lookaside buffer (TLB) which is not present in the P2. You'd also need restartable instructions which are also not available.

  • Seairth wrote: »
    m00tykins wrote: »
    3 prioritized interrupts that trigger on selected events
    Hidden debug interrupt for single-stepping, breakpoint, and polling

    It does have interrupts? So then a memory protection/management unit is possible?

    Nope. Not a true, hardware-enforced one, anyhow.

    Can you explain the difference between a hardware-enforced interrupt and what the Prop 2 has? I've never heard of such a distinction before.
  • kwinnkwinn Posts: 8,697
    edited 2016-08-15 13:21
    DavidZemon wrote: »
    Seairth wrote: »
    m00tykins wrote: »
    3 prioritized interrupts that trigger on selected events
    Hidden debug interrupt for single-stepping, breakpoint, and polling

    It does have interrupts? So then a memory protection/management unit is possible?

    Nope. Not a true, hardware-enforced one, anyhow.

    Can you explain the difference between a hardware-enforced interrupt and what the Prop 2 has? I've never heard of such a distinction before.

    Prop2 has hardware interrupts. I think he means true hardware memory protection/management. That requires generating an interrupt when a program tries to access an address outside the assigned memory bounds.
  • kwinn wrote: »
    DavidZemon wrote: »
    Seairth wrote: »
    m00tykins wrote: »
    3 prioritized interrupts that trigger on selected events
    Hidden debug interrupt for single-stepping, breakpoint, and polling

    It does have interrupts? So then a memory protection/management unit is possible?

    Nope. Not a true, hardware-enforced one, anyhow.

    Can you explain the difference between a hardware-enforced interrupt and what the Prop 2 has? I've never heard of such a distinction before.

    Prop2 has hardware interrupts. I think he means true hardware memory protection/management. That requires generating an interrupt when a program tries to access an address outside the assigned memory bounds.

    Okay. Makes more sense.
Sign In or Register to comment.