 |
|
 |
| Parallax Forums > Public Forums > Propeller Chip > Morpheus: 256 color VGA, 0.5-7.5MB **NEW** 256 color per pixel 256x192 VGA mode photos - see p.10 | Forum Quick Jump
|
 |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 6/30/2009 4:24 PM (GMT -8) |   | Kuroneko asked me about some details on the 20MB/sec burst mode, and as I replied to him, I realized I should post the information here too. Here's how I burst data at 20MB/sec:
I built a 3 cog burst engine that you give the following information:
- hub address - xmm address
It then takes 12.8us to read 256 bytes from XMM into the cog, and 6.4us to write it to the main memory; the 6.4us is available for other cogs to use the bus.
The address cog first latches the 16 bit page address into the two 74HC574's, then generates the byte address by outputting to P8-15 (lowest eight bits of the 24 bit address bus), the two other cogs just pick up the data and write it to the hub
(and the reverse when burst writing)
Theoretically, 99% of the 20MB/sec bus bandwidth can be achieved by using five cogs, by overlapping the second set of cogs with the time spent by the first set to update the hub; only the "set page register" (3-5 instructions depending on weather you already have the next page address in a cog register) time is unavoidable overhead once the cogs are synchronized.
3/256 = 1.1718%, so 98.8% (99% between friends) bus bandwidth efficiency, for a sustainable 19.765MB/sec reading or writing - rounds to 20MB/sec  www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally fullPost Edited (Bill Henning) : 7/1/2009 12:30:59 AM GMT | | Back to Top | | |
    |  Tubular Registered Member

       Date Joined Feb 2008 Total Posts : 232 | Posted 6/30/2009 8:20 PM (GMT -8) |   | Bill, Morpheus looks awesome, well done.
I'm thinking that your form factor could drive the PSP screen on the top layer very nicely (4.15" x 2.65"). I has very lean porches, good for writing to Sram in between scans...
You said you had some nice stacking connectors... what kind of stack pitch are we looking at per layer?
tubular | | Back to Top | | |
 |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 7/1/2009 5:25 AM (GMT -8) |   | Hi Tubular,
Thank you! I agree, the Sony and Sharp LCD's used for PSP'2 would be a very good match, and fit nicely - I was reading their data sheets a couple of months ago. The only real snag is the very fine pitch surface mount connector, so I'd probably have to sell that board with the connector already mounted.
I'll be buying a nice small oven shortly, as I need a reflow oven for my SOJ36DIP32 memory modules.
We are looking at <1" per layer, I think .75" is doable if all the 7805 is mounted on the bottom and I don't use a >470uF electrolytic capacitor for the RTC backup power.
Bill
Tubular said... Bill, Morpheus looks awesome, well done.
I'm thinking that your form factor could drive the PSP screen on the top layer very nicely (4.15" x 2.65"). I has very lean porches, good for writing to Sram in between scans...
You said you had some nice stacking connectors... what kind of stack pitch are we looking at per layer?
tubular www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally full | | Back to Top | | |
 |  Baggers Registered Member

       Date Joined Mar 2007 Total Posts : 1773 | Posted 7/1/2009 5:42 AM (GMT -8) |   | | | |
 |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 7/1/2009 6:07 AM (GMT -8) |   | Hi Baggers,
Baggers said... Hey Bill have you posted any vids of your board in action? :D
No, I have not had time to do a cool demo yet, but its pretty high on the TODO list 
So far I've unpacked, slept, made the data sheet for my crystals, added the Morpheus/Mem+ specs to my site, answered questions here, and took some orders 
As far as Morpheus software, here is what I am doing over the next week or so:
I have to finish the XGA mode first, I'll probably post the sources for that today or tomorrow on my site (as they are GPL, not MIT). Basically I have to get it to synchronize better, right now I have to restart it two-three times before its all in sync... I followed Chip's hirez text drivers method for syncing so I don't know exactly why it does not work 100% of the time the first time. More eyes on it will probably help me fix it ASAP, but I could not very well post it before I spilled the beans 
Then I have to add the code to read the unique palette long per scan line, that's easy, just did not have time before the show, and allow the screen update routines to use the VFP/VSYNC/VBP time for updates as well as the HFP/HSYNC/HBP time slot - of which only 25% is used now.
Currently the XGA mode uses six cogs:
Cog 0: Slave kernel, communicates with CPU#1
Cog 1: Addressing Cog, generates addresses for the Reader Cogs
Cog 2,3: Reader cogs, burst read a page (256 bytes) at a time into the hub memory
Cog 4: VGA sync generation cog
Cog 5,6: VGA display cogs, displays scan line buffers from hub memory
Cog 7: Draw engine, draws into the XMM following commands from the slave kernel
It will be easy to combine #1 & #4, as currently #4 sends a message to #1 when it starts a scan line - that will drop the cog count to five cogs for XGA.
Once I free up the current SYNC cog, I plan to use it to implement some sprites - for mouse pointers, text overlay, etc
Basically in XGA mode CPU #2 becomes a dedicated GPU with a very pipelined, tightly synchronized design.
Then comes the fun part...
256x192 by 256 colors gaming mode!
I designed this mode at the same time I designed the XGA mode, and it will re-use that code base, but use fewer cogs.
Cog 0: Slave kernel, communicates with CPU#1
Cog 1: Addressing + Sync Cog, generates addresses for the Reader Cogs and HSYNC/VSYNC for video
Cog 2,3: Reader cogs, burst read a page (256 bytes) at a time into the hub memory
Cog 4,5: VGA display cogs, displays scan line buffers from hub memory
Cog 6,7: Sprite/Draw engine, draws into the hub and/or XMM following commands from the slave kernel
For this lower resolution mode, I may later be able to combine cogs 2,3,4,5 into just two cogs, leaving two more cogs for user code. Cog 0 also has a lot of CPU time left for generating text or sprites.
This design will leave approx. 80% of the bus bandwidth open for updating the screen 
There is more than enough memory to do double, triple or even quad buffering, so screen updates should be silky smooth.
(Having a BLAST!)
Bill www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally fullPost Edited (Bill Henning) : 7/1/2009 2:35:23 PM GMT | | Back to Top | | |
 |  Baggers Registered Member

       Date Joined Mar 2007 Total Posts : 1773 | Posted 7/1/2009 7:49 AM (GMT -8) |   | | | |
   |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 7/2/2009 9:03 AM (GMT -8) |   | Hi,
Sorry, I had to spend a bit of catch up time with wifey so she won't kill me... now THAT would have delayed things!
Parts list will be up sometime today (probably by dinner time), I just have to verify it against the board and add some part numbers instead of "female 15 pin VGA PCB mount" type descriptions.
The only rework needed on Morpheus is to use screw terminals instead of the original power jack idea, and to drill three small holes as the drill size was wrong on the 3.5mm stereo jack (or run three wires... personally I'm hooking it up to stereo RCA jacks as it is line level output).
After the parts list is up, I will start posting detailed build instructions, but the only hint you really need is to put all the passives on the bottom of the board - I found it made building a LOT easier. All sockets but one go on top (the optional eeprom socket for CPU#2 has to go on the bottom). 5V voltage regulator on the bottom, 3.3V can go there too. Most electrolytic caps can go on the top, except for the ones for the CPU's. Crystals on the bottom.
Follow the above and you will have a fairly easy build.
Ok, now I'll go work on the parts list so I can post it in a few hours 
Bill
jazzed said... Bill,
Can you please provide a parts-list so I can start building my boards? Pin-outs for devices are of course necessary in lieu of schematic or block diagrams. If there is any rework instruction, that would also be appreciated.
Thanks. www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally full | | Back to Top | | |
 |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 7/2/2009 9:07 AM (GMT -8) |   | Here is the back of the envelope:
The 68000 ran at 7.16MHz, and it took multiple cycles for each instruction. The addressing modes are complex, but I keep thinking if it was split into two cogs, one for address decoding that presented decoded addresses, and another for instruction decoding, it might be doable. Possibly a pipelined design with a fetch cog, multiple decode cogs, execute cog, and writeback cog.... I could be wrong though. Basically I was thinking that emulating the pipeline with multiple cogs might get ok speed.
Ofcourse another idea is a JIT - just in time translation to LMM code.
Frankly, I am looking forward to playing with ZiCog and MoCog when I have a breather :)
Best,
Bill
heater said... Bill: "Personally I hope someone tries to make an Amiga emulator that will run on Morpheus, my calculations show it may be possible."
Interested to know what kind of calculations you made there.
I'm having some trouble getting any speed out of the MoCog 6809 emulator, it's down to about 250 thousand instructions per second. First problem is all the complex addressing modes. Fetching and decoding the indexed addressing post bytes and arriving at the effective address is long winded. Similarly the TFR and EXG post bytes.
Second problem is I'm having to move a lot of instructions into overlays as there is not enough room. Things like the pushes and pops are huge.
The 68000 has a similar set of addressing modes and will have similar issues. Not saying it can't be done just can't see where to get the speed from at the moment.
I think I'm done for emulators in this lifetime, love to see someone give it a try though. www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally full | | Back to Top | | |
  |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 7/2/2009 12:35 PM (GMT -8) |   | Yeah, multi-cog synchronization is a pain in the posterior - my XGA driver currently sync's six cogs.
I read about the 4 COG Z80, thought it was an impressive effort - but there is a huge "neat" factor to having it run in just one cog.
As soon as I have time, I will play with them... thanks for the compliment... I did a LOT of work in the past under CPM with TurboPascal, MixC etc etc etc - and you are right, we have to get them running on Morpheus, and later under Largos.
Morpheus would run ZiCog/Terminal on one board for a nice little CPM solution on one board :)
heater said... I have thought about pipe lining emulator operations from time to time but have yet to come up with a solution. I get stuck on the messy business of coordinating multiple COGs and sharing resources amongst them.
You may know I tried a 4 COG Z80 emulation, not pipelined, just so I could get all the required code as native PASM. Getting them coordinated and sharing registers resulted in a slower emulation than my original 1 COG with LMM version.
Adding external memory access into the mix was just to daunting and I resolved to take on the challenge of doing the whole emulation in one COG, hence the name ZiCog
Do have fun playing with ZiCog/MoCog. I have a feeling if you look at them you may come up with the multi-cog turbo emulation we are looking for. At least we have to get them running as the are on Morpheus. Perhaps under Largos as well. www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally fullPost Edited (Bill Henning) : 7/2/2009 8:49:50 PM GMT | | Back to Top | | |
 |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 7/2/2009 12:42 PM (GMT -8) |   | Here is a preliminary version of the parts list, with DigiKey (and one Jameco) part numbers for suggested parts.
What part goes where on the board will be part of the build documentation, which I am working on next :)
You can ofcourse make substitutions in cases where you are confident of them, but I suggest you leave the chips, voltage regulators, crystals alone... I also suggest you socket all the chips. I do not yet have pricing for the nice stacking headers I have, so for the time being either use standard ones, or wait for a parts list update.
I will be checking the board against the list, and updating if I find any erros, but I'd appreciate it if you let me know of any problems you find with the list.
Now I will check the list, and start the assembly instructions. I will build a couple of boards and take a lot of photo's, and I will keep expanding the assembly documentation as I have more material for it, and I will ofcourse update it as your feedback comes in. I want this to be the best kit, with the best manual around. Morpheus deserves it 
I will be making "full kits" available sometime next week if you want "one stop" shopping. My prices will be similar to Parallax's for parts, ie a bit higher than DigiKey, as I have to build in a margin to cover distribution, packaging, handling and inventory costs. Currently I have enough stock to ship 15 kits, and I will be ordering more as people buy kits. Kit prices will be posted probably on Monday. Obviously, I can better support my kits than diverse purchases, as I will have exactly the same parts running here.
For those that don't want to assemble the kits, I will later offer assembled&tested units for zero headache Propellering. Currently it takes me less than two hours to build and test each board, I expect that time to decrease as I start "assembly line" operations on them. www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally fullPost Edited (Bill Henning) : 7/2/2009 9:07:58 PM GMT
File Attachment : morpheus-parts.pdf 40KB (application/pdf)This file has been downloaded 44 time(s). | | Back to Top | | |
  |  waltc Registered Member
        Date Joined Jul 2008 Total Posts : 145 | Posted 7/2/2009 1:03 PM (GMT -8) |   | Don't forget if you want to emulate a Amiga you have to reverse engineer its rather complex chip set as well.
Not a easy task. | | Back to Top | | |
   |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 7/2/2009 3:09 PM (GMT -8) |   | Hi Jazzed,
I should have the Morpheus parts list re-verified and Mem+ posted before Monday.
The SD pinout is the same as on an SD card, looking top down onto the board it goes:
Pin8 Pin7 Pin6 Pin5 Pin4 Pin3 Pin2 Pin1 Pin9 <-- referring to SD card pin#'s as per Rockiki's original doc; P8, P1 and P9 are silk-screened onto the board.
You can use either a Molex right angle male/male connector like I did, with the card pointing towards the back of the board, or the Sparkfun SD module can be used, one pin offset to the left as I recall, with the card pointing to the front. I use the Molex, and a microSD card in an adapter.
The SD circuit was buzzed out with multi-meter as being correct, however I have not tried to use it yet. Ditto for serial and SPI I/O, the memory circuit was both buzzed and verified to run... I'd have practically killed for another week before UPEW! Now that the Morpheus parts list is up, I will start the build doc, and make the Mem+ BOM and build doc as well. By monday I should have had time to try the fsrw code, SPI I/O expander and serial port, and post any errata that may be needed. Initially Mem+ was going to be just Mem - but I could not leave all that PCB real eastate blank, so I squeezed in SD, SPI I/O and RS232 :)
The SPI RAM is there for Largos to use as text edit buffers in case CPU#2 is extremely loaded with a high resolution VGA driver; it is not needed until Largos arrives, and even then Largos would run - but perhaps editors may not. It can also be used for an additional SPI Flash device, or an SPI FRAM chip, or Michael could use it for code generation for Sphinx.
I will be writing a backup and restore command for Largos that will save or load the Winbond based root FS as a single file onto an SD card - imagine, a ton of image backups on a 2GB SD card!
I also have some small test programs that I will be posting for verifying the various subsystems - keyboard, mouse, ram, vga. The keyboard and mouse test code needs some LED's plugged into P0-P7 with 270R current limiting resistors to ground. (anode towards propeller for the LED's). That's how I test the boards I build (including the ones I showed at UPEW)
jazzed said... Bill, it's 3PM on July 2 here. July 3rd is a holiday in the US, so I won't be chasing parts until Monday. Can you provide details on your interpretation of the SDCARD adapter (which has no refrence in the parts list)? Also, what is the SDIO serial SRAM for? Is it necessary for the kernel like the WD flash chip? www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally fullPost Edited (Bill Henning) : 7/2/2009 11:20:30 PM GMT | | Back to Top | | |
 |  waltc Registered Member
        Date Joined Jul 2008 Total Posts : 145 | Posted 7/2/2009 4:03 PM (GMT -8) |   | Bill
FWIW it would be easier to replicate the Amiga chip set in a FPGA. That's how it was done with the minimig. The verilog sources are also public domain so anyone can replicate the chip set if they are so inclined. Of course since it was coupled to a real 68000 bus structure there would be quite a bit of reworking before you could bolt on a Prop or two.
Though I must admit to being curious as to how well a total software emulation of the OCS or ACS on the Prop will work and if it can equal or exceed a Amiga 500 in terms of video performance. | | Back to Top | | |
  |  Bill Henning Registered Member

       Date Joined Sep 2006 Total Posts : 962 | Posted 7/3/2009 2:39 PM (GMT -8) |   | I've posted a MUCH better parts list for Morpheus. I've added PCB silk screening cross reference, so you know where the parts go 
http://mikronauts.com/products/morpheus/morpheus-parts-list/
Next on my "TODO" list is doing a list like this for the Mem+ board, after which I will (slowly) build each board and make nice build documentation.
I already have partial build doc for Morpheus, I'll clean that up a bit and post it too.
BUILD HINTS:
- add the passives first - all resistors should go on the bottom of the board - all ceramic caps should go on the bottom (some do fit on the top, including within sockets, but for now, I'll give blanket advice) - some of the Electrolytic caps fit nicely on top, however the 10uF Electrolytics (you can substitute Tantalums) for each Propeller must go on the bottom due to lack of space - you can put on the bottom 8 pin dip socket for the CPU2, but it is not needed. If you want it, solder it before the top sockets. - I'd put on all the IC top sockets next (YOU MUST MOUNT THE RESISTORS AND CERAMIC CAPS FIRST if you want a painless build) - voltage regulators next, I'd put the 7805 at least on the bottom - check for short between the +3.3 trace and GND, anything below 300R is trouble - mount the power switch (or bridge it if you don't want a switch) - mount the two-terminal screw connector in place of normal 2.1mm jack - sorry, +/- reversed (this is Errata#1) (long story short - first test board had it reversed, I fixed it late at nice - TWICE - once at the socket, once at the voltage regulator) - Errata #2 - holes for stereo 3.5mm (1/8th) audio jack too small, drill larger holes closer to the back of the board behind each hole, bend pins a bit, solder to thruholes (personally, I like to put RCA audio jacks there, just run three wires, GND to both outsides, one to Left and one to Right. - mount PS/2 jacks, VGA jack - mount programming headers (HCOMM1 & HCOMM2) - mount EXP1, EXP2, MORPHBUS connectors last, after testing board
I'll be posting some test programs and drivers this weekend, as well as starting the full, official manual, with very detailed build instructions. It will take a couple of weeks to finish the manual as I'd like feedback from you guys on what I write, and I'll happily take suggestions on how to improve the manual.
Basically I'll take my parts lists, the rough instructions above, and assemble a couple of each type of boards, documenting each step, and taking photo's for the manual.
After that, I'll add a "Morpheus Architecture" section with block diagrams, pin definitions etc., and much more. www.mikronauts.com - my site my 6.250MHz custom Crystals for running Propellers at 100MHz Las - Large model assembler for the Propeller Largos - a feature full nano operating system for the Propeller Please use mikronauts _at_ gmail _dot_ com to contact me off-forum, my PM is almost totally full
File Attachment : morpheus-bom.pdf 44KB (application/pdf)This file has been downloaded 49 time(s). | | Back to Top | | |
 | 230 posts in this thread. Viewing Page : 1 2 3 4 5 6 7 8 9 10 | | Forum Information | Currently it is Saturday, November 21, 2009 11:29 AM (GMT -8) There are a total of 393,855 posts in 55,536 threads. In the last 3 days there were 84 new threads and 706 reply posts. View Active Threads
| | Who's Online | This forum has 17692 registered members. Please welcome our newest member, old guy. 64 Guest(s), 16 Registered Member(s) are currently online. Details heater, Siri, MichelB, Kenny Gardner, keith_kw, Jay Kickliter, mctrivia, Alsowolfman, Shawn Lowe, dMajo, Harprit, Rick Brooks, Beau Schwabe (Parallax), SRLM, Leon, MicroDirk |
Forum powered by dotNetBB v2.42EC SP2.02 dotNetBB © 2000-2009 |
|
|