Shop OBEX P1 Docs P2 Docs Learn Events
PropCade: Propeller computer for emulation, gaming, RS485 networking, more (Joysticks, IR, see p5) — Parallax Forums

PropCade: Propeller computer for emulation, gaming, RS485 networking, more (Joysticks, IR, see p5)

Bill HenningBill Henning Posts: 6,445
edited 2010-10-01 10:49 in Propeller 1
Hi guys,

I am trying something different this time. I am not waiting for production boards before introducing my new product, and I'll document my testing of the prototype so you can see what kind of issues can pop up.

PropCade was inspired by VMCOG - I wanted a nice, self-contained, platform for emulating:

- old computers (Z80, 6809, etc)
- old game consoles
- arcade games
- terminals
- virtual machines (ZOG, Java)

I also wanted it to be capable of self-hosted development under SphinxOS, and later, Largos. It should also be a great FemtoBasic platform!

Once I finalized the design, and hand-wired a preliminary prototype, Sapieha kindly offered to lay it out for me, and once again he did an extremely nice job laying out the board - it is a work of art!

(As you might have guessed, 'PropCade' is short for 'Propeller Arcade' - I thoroughly enjoyed reading about OBC's project with Jon's and GG's boards to make an arcade cabinet, and Ben Heck's Propeller based pinball machine is also inspiring)

PropCade Features:

- 6.800''x2.800' double sided, solder masked, silk-screened PCB
- Propeller DIP 40 chip
- 32KB or 64KB EEPROM
- PCF8563 RTC with battery backup
- 2x RJ45 for easy RS485 daisy-chained networking (SP485) - NEW: now independent, can be used at the same time as RS232!
- IR receiver (38Khz)
- IR transmitter
- two Sega/Atari DB9M joystick ports using a MCP23S17 running at 5VDC (or two 10 pin expansion connectors)
- built-in 'SerPlug' MAX3232 with DB9F
- uSD socket (one of two types)
- six sockets for SPI RAM/FRAM/FLASH (SOIC8 pattern under DIP8 socket)
- VGA output (demo board compatible)
- Video output (demo board compatible)
- S-Video output
- Stereo audio out via RCA jacks
- PS/2 keyboard jack (demo board compatible)
- PS/2 mouse jack (demo board compatible)
- DC 2.1mm power jack
- push on / push off power switch
- power LED
- 2 user LED's
- PropPlug/SerPlug header (there is a jumper to choose between on-board RS232, RS485 and the hcomm header)
- a partridge and a pear tree (just kidding)

Future Expansion:

- up to seven more MCP23S17's for up to 112 more digital I/O's
- I2C expansion header for anything you care to hook up to it

Features tested and working:

- voltage regulation
- PropPlug/SerPlug interface
- EEPROM
- Real Time Clock
- VGA
- TV Out (RCA)
- keyboard
- mouse
- built in RS232 programming port (works at 1Mbps with ViewPort using FTDI RS232 adapter)
- audio output
- S-Video output
- uSD
- 74HC138 SPI device selection
- SPI RAM
- Joystick ports
- IR Receive
- IR Transmit
- RS485 networking (up to 10Mbps, 5MBPS will be the 'standard' speed)

This thread with be the 'Official' PropCade thread, and I will be uploading photo's, and documenting my progress in debugging the prototype.

Please feel free to ask any questions you may have!

www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com
My products: Morpheus / Mem+ / PropCade / FlexMem / VMCOG / Propteus / Proteus / SerPlug
and 6.250MHz Crystals to run Propellers at 100MHz & 5.0' OEM TFT VGA LCD modules
Las - Large model assembler Largos - upcoming nano operating system

Post Edited (Bill Henning) : 8/2/2010 6:44:16 PM GMT
800 x 383 - 214K
800 x 438 - 126K
800 x 392 - 117K
1200 x 677 - 308K
«1345

Comments

  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 04:27
    FAQ


    Q1: Why no USB interface?

    A1: I wanted to use this board as a low cost terminal - and you can buy a $3 USB<->serial cable on Ebay if you need USB


    Q2: Why RS485 and not Ethernet?

    A2: The SP485 is much less expensive, needs less software support, and allows cheap networking for up to 32 PropCade's (or 300 with low bus loading SP485R's)


    Q3: Why RJ45?

    A3: Because the "RJ11's" I purchased in bulk are actually unshielded RJ45's, and I have a LOT of them (approx. 1000 pieces)


    Q4: Why S-Video?

    A4: S-Video allows MUCH higher quality video output on TV's which makes text much easier to read


    Q5: Why RCA audio output?

    A5: One of the main purposes of PropCade is to be hooked up to the family entertainment system for retro gaming


    Q6: Why Sega/Atari joysticks?

    A6: They use a nice, cheap, readily available DB9M connectors, and joysticks are readily available.


    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system

    Post Edited (Bill Henning) : 4/13/2010 12:21:36 AM GMT
  • Cluso99Cluso99 Posts: 18,069
    edited 2010-03-31 04:47
    Sounds good Bill smile.gif

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Links to other interesting threads:

    · Home of the MultiBladeProps: TriBlade,·RamBlade,·SixBlade, website
    · Single Board Computer:·3 Propeller ICs·and a·TriBladeProp board (ZiCog Z80 Emulator)
    · Prop Tools under Development or Completed (Index)
    · Emulators: CPUs Z80 etc; Micros Altair etc;· Terminals·VT100 etc; (Index) ZiCog (Z80) , MoCog (6809)·
    · Prop OS: SphinxOS·, PropDos , PropCmd··· Search the Propeller forums·(uses advanced Google search)
    My cruising website is: ·www.bluemagic.biz·· MultiBlade Props: www.cluso.bluemagic.biz
  • Dr_AculaDr_Acula Posts: 5,484
    edited 2010-03-31 05:06
    Nifty!

    Is this the one where you use SPI ram with a local cache in hub? Have you got code written?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.smarthome.viviti.com/propeller
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 05:17
    Cluso99:

    Thanks!

    Dr_Acula:

    Yep! That's the one - and code is >50% written, and I am working to make that 100% written [noparse]:)[/noparse]

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Mike GreenMike Green Posts: 23,101
    edited 2010-03-31 05:24
    Please include a 64K byte EEPROM rather than a 32K one. If it's socketed, that's not so much of an issue.
  • pullmollpullmoll Posts: 817
    edited 2010-03-31 05:54
    That sounds interesting. Do you think that one Propeller will suffice? I can imagine that some emulations simply require more space for things running at the same time. As an example I looked at the TRS80 floppy disk emulation I've written in C. The sheer amount of code would be very difficult to squeeze into one Propeller together will all the other code that is needed.

    Just a thought,
    Juergen

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    He died at the console of hunger and thirst.
    Next day he was buried. Face down, nine edge first.
  • Dr_AculaDr_Acula Posts: 5,484
    edited 2010-03-31 06:01
    Ah, RS485 is a very good choice. www.lammertbies.nl/comm/info/RS-485.html

    Not just for longer distances, but also for a multipoint network. See the diagram a little further down that page. It would be a little different to RS232 in that data that goes out a port is immediately "echoed" back into the inport. I never could quite work out a way to handle that in software - possibly you disable the input then output a byte then turn the input back on? Or maybe all bytes going through the network are packets rather than individual bytes and then you know the packet came from yourself so you ignore it.

    I suspect RS485 is the simplest and cheapest network. No routers needed and termination resistors not needed for short runs. And good choice re connectors too.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.smarthome.viviti.com/propeller
  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2010-03-31 07:01
    RS485 is so easy to implement and more modern chips are 1/4 or 1/8 load so you can have up to 256 devices on the bus. However don't try to use FDX or anything like that as although it will work it is very inefficient for this. I have various objects that handle this in proper half-duplex fashion and so are able to work at over 1M baud easily. Hardware wise you only need 2 I/O so that you have a common Rx and Tx tied to pins 1&4 of the 485 chip plus a TE signal which you can connect to pins 2&3.

    If you are running longer distances or high speed (1M) you will need termination at either "end" of the line. I understand why you would use RJ11s but as soon as you do you should really then have 2 on each board so that you can connect up more units easily. For shorter runs I have used 10 way IDC cable so that you can just crimp on a new IDC plug onto the cable at the point you want to tap off from. The IDC header is very compact. Alternatively it is common in the industry to use screw terminals of some kind and this makes it easy to also splice in other cables.

    One thing to look out for with RS485 is that it is really a 2-wire connection and not a three wire connection (A+B+GND) as many would have you believe. The ground connection comes about because of the difference in ground potentials due to earthing etc and the attempt to balance it out (with it's own problems). If you isolate your RS485 or run from batteries you will never need the third wire.

    BTW there are a lot of errors in the lammertbies link, it's written by PLC people for PLC people.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    *Peter*
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 12:53
    Hi Mike,

    The EEPROM is socketed smile.gif

    The idea is that PropCade will have a boot loader in the EEPROM, and run images off the uSD.
    Mike Green said...
    Please include a 64K byte EEPROM rather than a 32K one. If it's socketed, that's not so much of an issue.
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 13:00
    Hi Juergen,

    Thanks!

    You might want to take a look at my Morpheus product for emulations that need more than one Propeller. Morpheus has a parallel expansion bus (MorphBus) with 24 address, 8 data, and several control lines. Mem+ stacks on top of Morpheus.

    I designed PropCade to be a simpler, less expensive platform than Morpheus, while providing the ability to use VMCOG to add up to 192KB of SPI RAM, or up to 768KB of FRAM. Granted, VMCOG is going to be slower than parallel memory expansions such as Morpheus, TriBlade, RamBlade etc., but it is also a simpler (from the hardware point of view) solution. Heater will re-target ZiCog and ZOG to VMCOG, so both will run on PropCade. I expect it to be slower than parallel solutions, but I believe it should be fast enough for a LOT of CP/M software (Wordstar, TurboPascal, Visicalc etc).
    pullmoll said...
    That sounds interesting. Do you think that one Propeller will suffice? I can imagine that some emulations simply require more space for things running at the same time. As an example I looked at the TRS80 floppy disk emulation I've written in C. The sheer amount of code would be very difficult to squeeze into one Propeller together will all the other code that is needed.

    Just a thought,
    Juergen
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 13:04
    Hi Dr_Acula,

    Thanks - I chose RS485 precisely because it is simple and very inexpensive to implement.

    I am actually using half-duplex communications to simplify it even more. Normally all stations will listen. When the net is quiet, any station may try to send a message. If it does not receive a reply within a specified timeout, it can assume the message did not get through (due to collision or corruption), and it can wait a small random time interval, wait for the net to be quiet, and try again. This simplified algorithm will handle packet collisions, and corrupted packets - mind you, if the packet does not get through after a minute, it is probably safe to report the destination station as not being available [noparse]:)[/noparse]
    Dr_Acula said...
    Ah, RS485 is a very good choice. www.lammertbies.nl/comm/info/RS-485.html

    Not just for longer distances, but also for a multipoint network. See the diagram a little further down that page. It would be a little different to RS232 in that data that goes out a port is immediately "echoed" back into the inport. I never could quite work out a way to handle that in software - possibly you disable the input then output a byte then turn the input back on? Or maybe all bytes going through the network are packets rather than individual bytes and then you know the packet came from yourself so you ignore it.

    I suspect RS485 is the simplest and cheapest network. No routers needed and termination resistors not needed for short runs. And good choice re connectors too.
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 13:14
    Hi Peter,

    Agreed - RS485 is very easy to implement.

    I am currently using the SP485 from Sipex; they have an SP485R that is 1/10th load and supports over 300 devices on the bus.

    Totally agreed, I am using a half duplex configuration, Rx tied to Tx, and /RE tied to DE, and there is a termination resistor on board, with a 2 pin jumper to enable/disable it. I did not use screw terminals for this board as simplicity and ease of use were major design criteria.

    Your point is an excellent one, and my goal of simplicity would be better served by having two RJ11's.

    I considered using two RJ11's, but there was simply no room on the target board size without using a significantly more expensive vertical two port RJ11 jack, so I was thinking of using phone line splitters to add nodes, under the theory than in most cases the RS485 link is likely to be used as a point to point link.

    I think I will bite the bullet, and make the board wider to accommodate a second RJ11 - as you point out, it will make it MUCH easier to easily daisy chain it.

    Your objects sound great... are they in Obex?
    Peter Jakacki said...
    RS485 is so easy to implement and more modern chips are 1/4 or 1/8 load so you can have up to 256 devices on the bus. However don't try to use FDX or anything like that as although it will work it is very inefficient for this. I have various objects that handle this in proper half-duplex fashion and so are able to work at over 1M baud easily. Hardware wise you only need 2 I/O so that you have a common Rx and Tx tied to pins 1&4 of the 485 chip plus a TE signal which you can connect to pins 2&3.

    If you are running longer distances or high speed (1M) you will need termination at either "end" of the line. I understand why you would use RJ11s but as soon as you do you should really then have 2 on each board so that you can connect up more units easily. For shorter runs I have used 10 way IDC cable so that you can just crimp on a new IDC plug onto the cable at the point you want to tap off from. The IDC header is very compact. Alternatively it is common in the industry to use screw terminals of some kind and this makes it easy to also splice in other cables.

    One thing to look out for with RS485 is that it is really a 2-wire connection and not a three wire connection (A+B+GND) as many would have you believe. The ground connection comes about because of the difference in ground potentials due to earthing etc and the attempt to balance it out (with it's own problems). If you isolate your RS485 or run from batteries you will never need the third wire.

    BTW there are a lot of errors in the lammertbies link, it's written by PLC people for PLC people.
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Oldbitcollector (Jeff)Oldbitcollector (Jeff) Posts: 8,091
    edited 2010-03-31 13:24
    I like it... A most excellent addition to the Propeller gaming family.


    Is it too soon to add my wish list for version 2?

    I wish someone would incorporate dual propeller with addon ram into a design like this geared for gaming...


    OBC

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Are you Propeller Powered? PropellerPowered.com
    Visit the: PROPELLERPOWERED SIG forum kindly hosted by Savage Circuits.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 13:33
    Thank you!

    A Morpheus variant for gaming? <wink>

    We'll talk at UPEW smile.gif
    Oldbitcollector said...
    I like it... A most excellent addition to the Propeller gaming family.

    Is it too soon to add my wish list for version 2?

    I wish someone would incorporate dual propeller with addon ram into a design like this geared for gaming...


    OBC
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • SapiehaSapieha Posts: 2,964
    edited 2010-03-31 13:33
    Hi Oldbitcollector

    Nonthing IS to SOON - It is only what People will have that decide it. And how many off them.
    BUT that needs bigger PCB to fit it.

    Regards

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


    Sapieha
  • Oldbitcollector (Jeff)Oldbitcollector (Jeff) Posts: 8,091
    edited 2010-03-31 13:43
    Ok, you've got me started now..

    How about going from 9pin interfaces to Wii pcb connections? (cheaper too!)

    [noparse]:)[/noparse]

    OBC

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Are you Propeller Powered? PropellerPowered.com
    Visit the: PROPELLERPOWERED SIG forum kindly hosted by Savage Circuits.
  • SapiehaSapieha Posts: 2,964
    edited 2010-03-31 13:47
    Hi Oldbitcollector

    That Can be implemented already as small ADD ON PCB's as we have bottom on DB9 same connector holes as EXT1-2 on Morpheus.

    Regards

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


    Sapieha
  • heaterheater Posts: 3,370
    edited 2010-03-31 14:42
    pullmoll: Does your TRS80 floppy driver need to be doing things at the same time as the Z80 emulation?

    If it's just a case of lots of C code that does not need to run fantastically fast I'm planning on using Zog to run stuff compiled with GCC. The ZPU byte codes that Zog executes will be in a SPI RAM probablly with Bill virtual memory cache driving it. So far I think Zog is the smallest easiest way to get C code running amongst a collection of existing objects in an existing project. Not so fast but Bill and I are going to work on that. Perhaps you would have some ideas for it as well.

    Bill: When you say "six sockets for SPI RAM/FRAM/FLASH" Are they all going to be sitting on the same SPI bus or is it possible to drive them independently or in parallel for speed?

    Actually what I'm getting at, prompted by PullMoll's question, is this:

    If I have two or more BIG lumps of C code that I'd like to run independently and they both need the space provided by external RAM, currently with parallel bus RAMs that is a pain as a) Most Prop pins get used for a RAM device. b) I would have to share the RAM bus between both C processes.

    Given SPI RAMs on different Prop pins it becomes possible to run these two big C blobs independently.

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    For me, the past is not over yet.
  • SapiehaSapieha Posts: 2,964
    edited 2010-03-31 14:54
    Hi heather.

    On PropCade this is 6 IC sockets on one SPI bus decoded by 74HC138 3to8 decoder.
    On same bus are 2x8 Pararell IC and uSD card decoded.

    Regards

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


    Sapieha
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 14:56
    As Sapieha says, it can be added on... plus the board has a 4 pin I2C expansion port as well [noparse]:)[/noparse]
    Oldbitcollector said...
    Ok, you've got me started now..

    How about going from 9pin interfaces to Wii pcb connections? (cheaper too!)

    [noparse]:)[/noparse]

    OBC
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system

    Post Edited (Bill Henning) : 3/31/2010 3:04:46 PM GMT
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 15:01
    Hi Heater,

    As Sapieha says, the SPI devices share CLK/MOSI/MISO, and /CS is decoded by a 74HC138

    I did pull one cute trick so that the uSD drivers don't need to be changed - there are 3 SPI "address" bits, and the /CS pin enables the 74HC138, thus decoding 8 SPI devices in a way that is 100% compatible with existing uSD, SPI Flash, SPI ram, and MCP23S17 objects that expect a simple 4 pin (/CS, CLK, MOSI, MISO) interface - just set the address bits before accessing the device with the 4 pin interface!

    Since you asked about a parallel SPI ram solution... look at the "Introducing FlexMem" thread I am about to start [noparse]:)[/noparse]
    heater said...
    pullmoll: Does your TRS80 floppy driver need to be doing things at the same time as the Z80 emulation?

    If it's just a case of lots of C code that does not need to run fantastically fast I'm planning on using Zog to run stuff compiled with GCC. The ZPU byte codes that Zog executes will be in a SPI RAM probablly with Bill virtual memory cache driving it. So far I think Zog is the smallest easiest way to get C code running amongst a collection of existing objects in an existing project. Not so fast but Bill and I are going to work on that. Perhaps you would have some ideas for it as well.

    Bill: When you say "six sockets for SPI RAM/FRAM/FLASH" Are they all going to be sitting on the same SPI bus or is it possible to drive them independently or in parallel for speed?

    Actually what I'm getting at, prompted by PullMoll's question, is this:

    If I have two or more BIG lumps of C code that I'd like to run independently and they both need the space provided by external RAM, currently with parallel bus RAMs that is a pain as a) Most Prop pins get used for a RAM device. b) I would have to share the RAM bus between both C processes.

    Given SPI RAMs on different Prop pins it becomes possible to run these two big C blobs independently.
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 20:49
    Progress Report:

    1) After spending too much time searching for my IR detector and LED, and not finding them, I decided I will populate that section of PropCade later.

    2) The board powers up fine without any IC's, power LED came on.

    3) I added a Propeller, and using PropPlug it detected the Prop! PropCade is at least minimally alive!

    4) EEPROM works

    5) Real time clock works

    6) VGA works

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system

    Post Edited (Bill Henning) : 3/31/2010 9:26:46 PM GMT
  • HannoHanno Posts: 1,130
    edited 2010-03-31 20:52
    Looking good Bill! I love the combination of joystick access+memory expansion+rs485 over phone cable+s-video output+keyboard/mouse.
    Curious- why the real time clock?
    Hanno

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Co-author of the official Propeller Guide- available at Amazon
    Developer of ViewPort, the premier visual debugger for the Propeller (read the review here, thread here),
    12Blocks, the block-based programming environment (thread here)
    and PropScope, the multi-function USB oscilloscope/function generator/logic analyzer
  • SapiehaSapieha Posts: 2,964
    edited 2010-03-31 20:57
    Hi Hanno


    My goal on LAYOUT is always to be posible to RUN propeller as fast as posible.
    Most of Propellers CAN run as fast as 14.318.318MHz crystal with PLL8 - some Can run 15MHz and litle more with PLL8.

    Regards
    Christoffer J

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    Nothing is impossible, there are only different degrees of difficulty.
    For every stupid question there is at least one intelligent answer.
    Don't guess - ask instead.
    If you don't ask you won't know.
    If your gonna construct something, make it·as simple as·possible yet as versatile as posible.


    Sapieha
  • pullmollpullmoll Posts: 817
    edited 2010-03-31 21:02
    heater said...
    pullmoll: Does your TRS80 floppy driver need to be doing things at the same time as the Z80 emulation?

    If it's just a case of lots of C code that does not need to run fantastically fast I'm planning on using Zog to run stuff compiled with GCC. The ZPU byte codes that Zog executes will be in a SPI RAM probablly with Bill virtual memory cache driving it. So far I think Zog is the smallest easiest way to get C code running amongst a collection of existing objects in an existing project. Not so fast but Bill and I are going to work on that. Perhaps you would have some ideas for it as well.

    The floppy driver needs to emulate some memory mapped I/O locations, so it has to react whenever these are changed. But it doesn't need to run in parallel with the Z80 as in "parallel on another cog". It may be easier to port the existing C code to probable constraints (memory?) of the ZPU than to rewrite it in LMM PASM.

    I'd be willing to give it a try. What version of GCC is able to produce ZPU binaries? I guess right now the code must live in hub RAM, not in external RAM? Or would it be possible to use the other 64K pages of e.g. DracBlade's external RAM for ZOG code?

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    He died at the console of hunger and thirst.
    Next day he was buried. Face down, nine edge first.
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 21:07
    Thanks Hanno!

    I think all real computers need an RTC [noparse]:)[/noparse]

    Basically it is there for:

    - date/time stamps on files
    - potential for triggering actions at specific times - one example: using the IR transmitter to change channels on the tv, then trigger recording on a DVD recorder
    Hanno said...
    Looking good Bill! I love the combination of joystick access+memory expansion+rs485 over phone cable+s-video output+keyboard/mouse.
    Curious- why the real time clock?
    Hanno
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 21:11
    pullmoll,

    PropCade supports up to 192KB of SPI SRAM (inexpensive) or up to 768KB of FRAM (very expensive) and ZOG (ZPU) will be able to use all that space (initially only 64KB) as code/data space!

    See http://forums.parallax.com/showthread.php?p=878382 for the VMCOG information.
    pullmoll said...


    The floppy driver needs to emulate some memory mapped I/O locations, so it has to react whenever these are changed. But it doesn't need to run in parallel with the Z80 as in "parallel on another cog". It may be easier to port the existing C code to probable constraints (memory?) of the ZPU than to rewrite it in LMM PASM.

    I'd be willing to give it a try. What version of GCC is able to produce ZPU binaries? I guess right now the code must live in hub RAM, not in external RAM? Or would it be possible to use the other 64K pages of e.g. DracBlade's external RAM for ZOG code?
    heater said...
    pullmoll: Does your TRS80 floppy driver need to be doing things at the same time as the Z80 emulation?

    If it's just a case of lots of C code that does not need to run fantastically fast I'm planning on using Zog to run stuff compiled with GCC. The ZPU byte codes that Zog executes will be in a SPI RAM probablly with Bill virtual memory cache driving it. So far I think Zog is the smallest easiest way to get C code running amongst a collection of existing objects in an existing project. Not so fast but Bill and I are going to work on that. Perhaps you would have some ideas for it as well.
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-03-31 22:27
    An interesting observation:

    - PropCade has independent VGA and Video/SVideo outputs
    - PropCade has two PS/2 inputs, nominally for keyboard and mouse
    - PropCade can have 192KB of memory available through VMCOG

    Once ZiCog can run MP/M on PropCade it could support two users at the same time!

    - User #1 on VGA + keyboard port
    - User #2 on Video or SVideo + keyboard in mouse port

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system
  • Peter JakackiPeter Jakacki Posts: 10,193
    edited 2010-04-01 03:07
    Bill,

    I have a newer multi-purpose serial communications object (UNICOM) that is designed for inclusion in the obex for April but without any pressure that might be 2011.
    http://forums.parallax.com/showthread.php?p=867266

    There would be no reason then to use the various modified serial communications objects that are currently in the obex. The goal is simple, let the object default to an FDX like state but with a superset of modes and methods available for more advanced communications. RS485 is one of them but not only the physical layer but also the networking layer as well which can work just like FDX to the application if need be. The number of data bits sent or received in each character can be up to 32 and I use 9-bits for networking addresses and commands. One method I use for collision detection is simply by issuing a single address character to establish a connection to the target. If the target responds with it's own address and no other garbage on the line within the connection establishment period I then assume that the connection is now point-to-point and data traffic can just flow normally between the connected units. If a proper response is not received then the initiator does a random timeout before trying again, as long as the bus is still free. There is a maximum timeout for the connection though but in the meantime all other nodes just mark the bus as being busy and continue to monitor the bus for a DISCONNECTED command (address zero). Group and global addresses are also allowed but without feedback until queried individually.

    The object also includes XON/XOFF or RTS/CTS handshaking built-in for full duplex modes.

    So, a couple of quick questions and observations then Bill.

    1) Does your RS485 use 2 or 3 I/O pins? (BTW standard load 485 chip is ok, let all the external stuff be lighter loading if need be.)

    2) You could still put screw terminal footprints under the "RJ11" jack.

    3) When I saw your "RJ11" was the same as an "RJ45" I realized why it took up so much room, I thought you might of had a 4P4C RJ11 which is smaller. In regards to semantics these days too I think if you say RJ11 in the industry it usually means the 4/6 way modular jacks whereas RJ45 refers to the 8P8C jack such as Ethernet. I know that is not 100% historically correct but it's the de facto terminology for these jacks.

    4) What is the strange footprint you have under the SPI devices? I'm referring to the large via and case pad.

    5) I personally avoid any DB9 connectors due to their bulk plus the fact that you normally use only 4 pins. External adaptors are easy and cart the bulky cables away from the pcb.

    6) Did you design the pcb to fit an enclosure? This should always be taken into account when designing any pcb. I usually build a meticulous mechanical footprint for enclosures as part of my pcb library.

    7) The IR receiver really needs an RC filter in it's supply line as they are very sensitive to supply noise but what is the problem with getting hold of a receiver?

    8) You can make room for your extra RS485 connector by putting the microSD connector under the pcb and connectors in a suitable and accessible position (or scrub the DB9s).

    9) I like to bring out the I2C pins on the unused pins of the PS/2 connector. This proves useful for many special devices that I can plug in and with 4 pins I can even interface an SD/SDIO card (SCL=card CLK, SDA=card SDI).

    10) Double digit remark, last one! RCA connections do take up a lot of room and it seems a shame when there are so many 3.5mm jack to RCA cables and connections in use that it is almost common.

    Bill said...
    I am currently using the SP485 from Sipex; they have an SP485R that is 1/10th load and supports over 300 devices on the bus.

    Totally agreed, I am using a half duplex configuration, Rx tied to Tx, and /RE tied to DE, and there is a termination resistor on board, with a 2 pin jumper to enable/disable it. I did not use screw terminals for this board as simplicity and ease of use were major design criteria.

    Your point is an excellent one, and my goal of simplicity would be better served by having two RJ11's.

    I considered using two RJ11's, but there was simply no room on the target board size without using a significantly more expensive vertical two port RJ11 jack, so I was thinking of using phone line splitters to add nodes, under the theory than in most cases the RS485 link is likely to be used as a point to point link.

    I think I will bite the bullet, and make the board wider to accommodate a second RJ11 - as you point out, it will make it MUCH easier to easily daisy chain it.

    Your objects sound great... are they in Obex?
    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    *Peter*
  • Bill HenningBill Henning Posts: 6,445
    edited 2010-04-01 03:14
    All games that run on the Propeller demo board - or ProtoBoard - will run "as is" on PropCade as VGA, TV, keyboard and mouse are on the same pins [noparse]:)[/noparse]

    The unique features of PropCade are all confined to P0-P11, and I plan on making a joystick object for easily reading the joysticks.

    I am currently thinking of the following simple joystick API:

    js.init() - initialize joystick interface
    js.read(n) - return state of joystick N buttons (more below) as a LONG
    js.pressed(n,button) - return 1 if specified button is pressed, 0 otherwise

    BIT 0 = UP
    BIT 1 = RIGHT
    BIT 2 = LEFT
    BIT 3 = DOWN
    BIT 4 = FIRE
    BIT 6 = START
    BIT 7 = A
    BIT 8 = B
    BIT 9 = C
    BIT 10 = X
    BIT 11 = Y
    BIT 12 = Z
    BIT 13..31 = reserved

    so in a bit of code, you might go:

    p := js.read(0)
    
    if p & js#UP
       move_up
    
    if p & js#FIRE
       fire_missle
    
    etc.
    
    which could also be written as:
    
    if js.pressed(0,js#FIRE)
      fire_missle
    
    

    ▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔
    www.mikronauts.com E-mail: mikronauts _at_ gmail _dot_ com 5.0" VGA LCD in stock!
    Morpheus dual Prop SBC w/ 512KB kit $119.95, Mem+2MB memory/IO kit $89.95, both kits $189.95 SerPlug $9.95
    Propteus and Proteus for Propeller prototyping 6.250MHz custom Crystals run Propellers at 100MHz
    Las - Large model assembler Largos - upcoming nano operating system

    Post Edited (Bill Henning) : 4/1/2010 3:19:26 AM GMT
Sign In or Register to comment.